首页 新闻 会员 周边 捐助

高手请进,无论数据库里字段设多大,都提示将截断字符串或二进制数据

0
悬赏园豆:50 [已解决问题] 解决于 2012-07-12 09:31

Winform项目,引用的webservice,将SQL语句直接在数据库里执行的话是没问题的,在项目运行至执行SQL语句总是提示服务器无法处理请。-->将截断字符串或二进制数据。

问题补充:

表结构d

Philomena的主页 Philomena | 初学一级 | 园豆:154
提问于:2012-06-15 10:44
< >
分享
最佳答案
0

你先讲能在数据库执行成功的sql直接粘贴到VS上,Format的时候直接替换,有''的保留''  没有的不要

 

insert into table values('abc',1,18)

String.Format("insert into table values('{0}',{1},{2})",......)

 

你说的应该是类型问题,你可以先适当的把非空的datetime字段去掉  在insert试试

收获园豆:20
大傻蛋啊 | 菜鸟二级 |园豆:292 | 2012-06-15 15:54
其他回答(7)
0

贴出表结构和插入语句。

收获园豆:10
写代码的小2B | 园豆:4377 (老鸟四级) | 2012-06-15 10:51

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);

支持(0) 反对(0) Philomena | 园豆:154 (初学一级) | 2012-06-15 11:28

@Philomena: 里面有个text数据类型,不要搞varchar(5000)了。

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2012-06-15 11:31

@荒野的呼唤:

您好,按照您说的,我改了一下,SQL语句没变,结果返回这个错误,求指教~

支持(0) 反对(0) Philomena | 园豆:154 (初学一级) | 2012-06-15 13:33
0

如果用的是存储过程,可能是超过了存储过程定义的参数长度。

dudu | 园豆:29568 (高人七级) | 2012-06-15 11:03

木有用存储过程

支持(0) 反对(0) Philomena | 园豆:154 (初学一级) | 2012-06-15 11:31

@Philomena: 那就是在ADO.NET代码中传参时

支持(0) 反对(0) dudu | 园豆:29568 (高人七级) | 2012-06-15 13:28

@dudu: 是WinFrom程序,

支持(0) 反对(0) Philomena | 园豆:154 (初学一级) | 2012-06-15 13:33
0

将截断字符串或二进制数据。

这个错误只能是长度设置短了,我以前遇到过这个问题。

悟行 | 园豆:12559 (专家六级) | 2012-06-15 11:13

可是设很长也是这个问题,在SQL数据库里直接执行SQL语句是可以的,就是在客户端引用Webservice之后老提醒那个错误,有人说是配置文件的问题,但不会改~

支持(0) 反对(0) Philomena | 园豆:154 (初学一级) | 2012-06-15 11:32
0

问题定位是否错了 确定是sql语句的问题? 不会是Webservice代码里面类型转换的问题?

子夜一梦 | 园豆:213 (菜鸟二级) | 2012-06-15 13:24

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语句是不是有错,但是在数据库里直接执行是对的~

支持(0) 反对(0) Philomena | 园豆:154 (初学一级) | 2012-06-15 13:31

@Philomena: 你打个断点跟一下 看看跑到这一步 这几个参数name, gender, ethnic, bith, accdress, idcard, issuedunit, starttime, endtime, generation, DateTime.Now分别是什么值 是什么类型

支持(0) 反对(0) 子夜一梦 | 园豆:213 (菜鸟二级) | 2012-06-15 13:38

@Philomena: 很有可能是starttime或者endtime 这两个参数传错了 无法转换为DateTime导致的 仅仅猜测 你看下~~

支持(0) 反对(0) 子夜一梦 | 园豆:213 (菜鸟二级) | 2012-06-15 13:46
0

1、直接IE打开Webservice,调用方法传简单参数看看是否报错?

2、在控制台把SQL命令输来看看 具体执行的是什么语句;

3、时间参数是否需要全部进行转换 ToString("yyyy-MM-dd HH:mm:ss")

收获园豆:20
八戒的师傅 | 园豆:1472 (小虾三级) | 2012-06-15 14:07
0

路过~~~~~~~~~~~~

落幕残情 | 园豆:34 (初学一级) | 2012-06-15 16:56
0

   将dateTime的字段类型改为datetime2格式试一次。

Proxima | 园豆:120 (初学一级) | 2012-06-30 23:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册