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

时间:2011-01-23 12:52:55

标签: c# ms-access ado.net ms-access-2007

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

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,但dababase是旧文件格式* .mdb。

2 个答案:

答案 0 :(得分:0)

我建议在你的价值中添加一个m。在C#中,m指定十进制值而不是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;

答案 1 :(得分:0)

尝试设置值并查看是否需要它:

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

或尝试将值设置为整数。我的猜测是OleDbParameterSystem.Data.DbType.Decimal

的问题