当前位置:编程学习 > C#/ASP.NET >>

请教大家,在用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十五,刚好多一个 --------------------编程问答--------------------
引用 1 楼 tangyanzhi1111 的回复:
  数据库length14?41050005015291十五,刚好多一个


41050005015291也是14个啊 --------------------编程问答-------------------- 1楼没仔细看。明明就是14位。
41050005015291 你这个数据是什么类型? 估计转换char失败引起的, --------------------编程问答--------------------
引用 3 楼 kongwei521 的回复:
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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,