问题描述
数据库字段为Decimal精度18,小数位为2,添加数据的时候前台赋值的时候,用0,总是异常:0.00超出范围。。。不知道是什么意思用0M,0.00都不行。
解决方案
解决方案二:
小数位数为2?如果每一分钱都有误差,随便进行一点除法、乘法等等,很快误差就扩大到元了。
解决方案三:
先别管我的小数位是几位好吗?能告诉我为什么会出现这个错误吗?引用1楼sp1234的回复:
小数位数为2?如果每一分钱都有误差,随便进行一点除法、乘法等等,很快误差就扩大到元了。
解决方案四:
你插入前转换为Decimal类型了没
解决方案五:
你是否转换类型了?还是直接把INT插入进去呢?0.00这样才能!
解决方案六:
我是直接用0,用0.00都不行啊。但用120又可以。引用4楼hou306010849的回复:
你是否转换类型了?还是直接把INT插入进去呢?0.00这样才能!
解决方案七:
引用5楼dowoocn的回复:
我是直接用0,用0.00都不行啊。但用120又可以。引用4楼hou306010849的回复:你是否转换类型了?还是直接把INT插入进去呢?0.00这样才能!
那直接在数据库插入0或者0.00都不行吗?如果行写代码插进去也行的
解决方案八:
手动输入数据,没有任何问题啊。引用6楼chinajiyong的回复:
引用5楼dowoocn的回复:我是直接用0,用0.00都不行啊。但用120又可以。引用4楼hou306010849的回复:你是否转换类型了?还是直接把INT插入进去呢?0.00这样才能!那直接在数据库插入0或者0.00都不行吗?如果行写代码插进去也行的
解决方案九:
引用7楼dowoocn的回复:
手动输入数据,没有任何问题啊。引用6楼chinajiyong的回复:引用5楼dowoocn的回复:我是直接用0,用0.00都不行啊。但用120又可以。引用4楼hou306010849的回复:你是否转换类型了?还是直接把INT插入进去呢?0.00这样才能!那直接在数据库插入0或者0.00都不行吗?如果行写代码插进去……
我想看代码
解决方案十:
publicintInsert(ClickDatamodel){StringBuilderstrSql=newStringBuilder();strSql.Append("insertintoClickData(");strSql.Append("PId,Ip,Area,AddTime,state,iscore)");strSql.Append("values(");strSql.Append("@PId,@Ip,@Area,@AddTime,@state,@iscore)");strSql.Append(";select@@IDENTITY");SqlParameter[]parameters={newSqlParameter("@PId",SqlDbType.Int),newSqlParameter("@Ip",SqlDbType.VarChar,50),newSqlParameter("@Area",SqlDbType.VarChar,50),newSqlParameter("@AddTime",SqlDbType.DateTime),newSqlParameter("@state",SqlDbType.Int),newSqlParameter("@iscore",SqlDbType.Decimal)};parameters[0].Value=model.PId;parameters[1].Value=model.Ip;parameters[2].Value=model.Area;parameters[3].Value=model.AddTime;parameters[4].Value=model.State;parameters[5].Value=model.IScore;parameters[5].Scale=2;objectobj=DbHelperSQL.GetSingle(strSql.ToString(),parameters);if(obj==null){return0;}else{returnConvert.ToInt32(obj);}}
就是第五个参数。执行:DbHelperSQL.GetSingle(strSql.ToString(),parameters);就出错了。前面断点数据都正常。
解决方案十一:
decimal.Zero呢
解决方案十二:
看下表设置了什么条件没。比如约束之类。
解决方案十三:
引用9楼dowoocn的回复:
C#codepublicintInsert(ClickDatamodel){StringBuilderstrSql=newStringBuilder();strSql.Append("insertintoClickData(");strSql.Append("PI……
设置parameters[5].Precision=10;//设置Precision的值
解决方案十四:
好像是可以了,但还没有在真实的环境中测试,晚上回去试下。能说下为什么要设置这个Precision吗?我以前都没有设啊,也没出问题。引用12楼chinajiyong的回复:
引用9楼dowoocn的回复:C#codepublicintInsert(ClickDatamodel){StringBuilderstrSql=newStringBuilder();strSql.Append("insertintoClickData(");strSql.Append("PI……设置parameters[5].P……
解决方案十五:
引用13楼dowoocn的回复:
好像是可以了,但还没有在真实的环境中测试,晚上回去试下。能说下为什么要设置这个Precision吗?我以前都没有设啊,也没出问题。引用12楼chinajiyong的回复:引用9楼dowoocn的回复:C#codepublicintInsert(ClickDatamodel){StringBuilderstrSql=newSt……
Precision用于表示Value属性的最大位数。默认值为0,它表示数据提供程序设置Value的精度。不验证Decimal参数值的Precision或Scale。这会导致在数据源处插入截断数据看看吧
解决方案:
晕,非常奇怪。在家里执行:parameters[5].Precision=10;这一句的时候就异常了。。。。这是怎么回事啊,然后看到Perecision的值为1引用14楼chinajiyong的回复:
引用13楼dowoocn的回复:好像是可以了,但还没有在真实的环境中测试,晚上回去试下。能说下为什么要设置这个Precision吗?我以前都没有设啊,也没出问题。引用12楼chinajiyong的回复:引用9楼dowoocn的回复:C#codepublicintInsert(ClickDatamodel){Str……