请教大家,在用sql server参数传递时,转换 char 值 '41050005015291' 时溢出了整数列
语句如下:const string sSql = "update table set lsh=@lsh,sjhm=@sjhm,zt=@zt where recid=@recid ";
SqlParameter[] parameters = {
new SqlParameter("@lsh", SqlDbType.VarChar, 13),
new SqlParameter("@sjhm", SqlDbType.VarChar, 20),
new SqlParameter("@zt", SqlDbType.VarChar, 6),
new SqlParameter("@recid", SqlDbType.Char, 14)
};
parameters[0].Value = model.Lsh;
parameters[1].Value = model.Sjhm;
parameters[2].Value = model.Zt;
parameters[3].Value = model.RecId;
DbHelperSQL.ExecuteSql(sSql, parameters);
当model.RecId=41050005015291,执行的时候,抛错:
System.Data.SqlClient.SqlException: 转换 char 值 '41050005015291' 时溢出了整数列。
数据库中的recid也是char(14)的,请教大家,是哪里出的问题啊,先谢谢了 --------------------编程问答-------------------- 数据库length14?41050005015291十五,刚好多一个 --------------------编程问答--------------------
41050005015291也是14个啊 --------------------编程问答-------------------- 1楼没仔细看。明明就是14位。
41050005015291 你这个数据是什么类型? 估计转换char失败引起的, --------------------编程问答--------------------
model.RecId=41050005015291
model.RecId是string --------------------编程问答-------------------- model.RecId.ToCharArray()试试。
char[] cc = model.RecId.ToCharArray();
parameters[3].Value = cc ;
--------------------编程问答-------------------- parameters[3].Value = model.RecId.SubString(0,14);
这样估计就行了,是不是有空格之类的 --------------------编程问答-------------------- 还是数据库问题的,
提示都说明了整数列。仔细检查一下把。 --------------------编程问答-------------------- 你可以试试写 new SqlParameter("@recid", SqlDbType.Char, 15),如果报同样的错误,那么就不要纠缠在什么“14”这个数字上了。 --------------------编程问答-------------------- 可以看看没有有触发器之类的。
当你把一个整数跟一个char类型字段连接,sql server会自动把这个char转换为整数,然后计算合计。跟在c#中同样的代码的意义是不一样的。
补充:.NET技术 , C#