请教大家,在用sql server参数传递时,转换 char 值 '41050005015291' 时溢出了整数列

daoyinchen 2013-12-20 09:32:18
语句如下:
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)的,请教大家,是哪里出的问题啊,先谢谢了
...全文
222 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
c02645 2013-12-21
  • 打赏
  • 举报
回复
parameters[3].Value = model.RecId.SubString(0,14); 这样估计就行了,是不是有空格之类的
  • 打赏
  • 举报
回复
可以看看没有有触发器之类的。 当你把一个整数跟一个char类型字段连接,sql server会自动把这个char转换为整数,然后计算合计。跟在c#中同样的代码的意义是不一样的。
  • 打赏
  • 举报
回复
你可以试试写 new SqlParameter("@recid", SqlDbType.Char, 15),如果报同样的错误,那么就不要纠缠在什么“14”这个数字上了。
yinghuigu 2013-12-21
  • 打赏
  • 举报
回复
还是数据库问题的, 提示都说明了整数列。仔细检查一下把。
蝶恋花雨 2013-12-20
  • 打赏
  • 举报
回复
model.RecId.ToCharArray()试试。 char[] cc = model.RecId.ToCharArray(); parameters[3].Value = cc ;
daoyinchen 2013-12-20
  • 打赏
  • 举报
回复
引用 3 楼 kongwei521 的回复:
1楼没仔细看。明明就是14位。 41050005015291 你这个数据是什么类型? 估计转换char失败引起的,
model.RecId=41050005015291 model.RecId是string
蝶恋花雨 2013-12-20
  • 打赏
  • 举报
回复
1楼没仔细看。明明就是14位。 41050005015291 你这个数据是什么类型? 估计转换char失败引起的,
daoyinchen 2013-12-20
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
数据库length14?41050005015291十五,刚好多一个
41050005015291也是14个啊
江湖评谈 2013-12-20
  • 打赏
  • 举报
回复
数据库length14?41050005015291十五,刚好多一个

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧