MS Access - 小数列和映射到 .NET 小数值会导致“条件表达式中的数据类型不匹配”

发布于 2024-10-13 07:48:54 字数 446 浏览 4 评论 0原文

我正在尝试将 .NET 十进制值数据插入 MS Access 列“十进制”

MS Access 列被定义为数字小数 - 精度 18 标度 2

OleDbParameter 是这样创建的:

                var p3 = new OleDbParameter();
                p3.DbType = System.Data.DbType.Decimal;
                p3.Value = 10.12m;
                p3.Precision = 18;
                p3.Scale = 2;

执行命令后,我收到“条件表达式中的数据类型不匹配”例外。

我做错了什么?

MS Access 是 2007 年,但数据库是旧文件格式 *.mdb。

I'm trying to insert .NET decimal value data into MS Access column 'decimal'

MS Access column is defined as number decimal - precision 18 scale 2

OleDbParameter is created this way:

                var p3 = new OleDbParameter();
                p3.DbType = System.Data.DbType.Decimal;
                p3.Value = 10.12m;
                p3.Precision = 18;
                p3.Scale = 2;

After executing command I receive "Data type mismatch in criteria expression" exception.

What am I doing wrong?

MS Access is 2007 but the dababase is in old file format *.mdb.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青丝拂面 2024-10-20 07:48:54

我建议在您的值中添加一个 m 。在 C# 中,m 指定十进制值而不是双精度值。

            var p3 = new OleDbParameter();
            p3.DbType = System.Data.DbType.Decimal;
            p3.Value = 10.12m;//added the m here to specify the decimal value.
            p3.Precision = 18;
            p3.Scale = 2;

I would suggest adding an m to your value. In C# m specifies a decimal value instead of a double.

            var p3 = new OleDbParameter();
            p3.DbType = System.Data.DbType.Decimal;
            p3.Value = 10.12m;//added the m here to specify the decimal value.
            p3.Precision = 18;
            p3.Scale = 2;
神也荒唐 2024-10-20 07:48:54

尝试仅设置该值,看看它是否接受它:

var p3 = new OleDbParameter();
//p3.DbType = System.Data.DbType.Decimal;
p3.Value = 10.12;
//p3.Precision = 18;
//p3.Scale = 2;

或者尝试将该值设置为整数。我的猜测是问题出在 OleDbParameterSystem.Data.DbType.Decimal

try just setting the value and see if it takes it:

var p3 = new OleDbParameter();
//p3.DbType = System.Data.DbType.Decimal;
p3.Value = 10.12;
//p3.Precision = 18;
//p3.Scale = 2;

or try setting the value to a whole number. My guess is the problem's with either OleDbParameter or System.Data.DbType.Decimal

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文