Winform项目,引用的webservice,将SQL语句直接在数据库里执行的话是没问题的,在项目运行至执行SQL语句总是提示服务器无法处理请。-->将截断字符串或二进制数据。
你先讲能在数据库执行成功的sql直接粘贴到VS上,Format的时候直接替换,有''的保留'' 没有的不要
insert into table values('abc',1,18)
String.Format("insert into table values('{0}',{1},{2})",......)
你说的应该是类型问题,你可以先适当的把非空的datetime字段去掉 在insert试试
贴出表结构和插入语句。
SqlCommand cmd = new SqlCommand(
string.Format("INSERT INTO IdCardInfo (Name, Sex, Ethnic, Birthday, Accdress,Idcard,IssuedUnit,StartTime,EndTime,Generation,CollectTime) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')"
, name, gender, ethnic, bith, accdress, idcard, issuedunit, starttime, endtime, generation, DateTime.Now), conn);
@Philomena: 里面有个text数据类型,不要搞varchar(5000)了。
@荒野的呼唤:
您好,按照您说的,我改了一下,SQL语句没变,结果返回这个错误,求指教~
如果用的是存储过程,可能是超过了存储过程定义的参数长度。
木有用存储过程
@Philomena: 那就是在ADO.NET代码中传参时
@dudu: 是WinFrom程序,
将截断字符串或二进制数据。
这个错误只能是长度设置短了,我以前遇到过这个问题。
可是设很长也是这个问题,在SQL数据库里直接执行SQL语句是可以的,就是在客户端引用Webservice之后老提醒那个错误,有人说是配置文件的问题,但不会改~
问题定位是否错了 确定是sql语句的问题? 不会是Webservice代码里面类型转换的问题?
SqlCommand cmd = new SqlCommand(
string.Format("INSERT INTO IdCardInfo (Name, Sex, Ethnic, Birthday, Accdress,Idcard,IssuedUnit,StartTime,EndTime,Generation,CollectTime) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')"
, name, gender, ethnic, bith, accdress, idcard, issuedunit, starttime, endtime, generation, DateTime.Now), conn);,您看SQL语句是不是有错,但是在数据库里直接执行是对的~
@Philomena: 你打个断点跟一下 看看跑到这一步 这几个参数name, gender, ethnic, bith, accdress, idcard, issuedunit, starttime, endtime, generation, DateTime.Now分别是什么值 是什么类型
@Philomena: 很有可能是starttime或者endtime 这两个参数传错了 无法转换为DateTime导致的 仅仅猜测 你看下~~
1、直接IE打开Webservice,调用方法传简单参数看看是否报错?
2、在控制台把SQL命令输来看看 具体执行的是什么语句;
3、时间参数是否需要全部进行转换 ToString("yyyy-MM-dd HH:mm:ss")
路过~~~~~~~~~~~~
将dateTime的字段类型改为datetime2格式试一次。