首页 > 代码库 > ERROR [42000]杂谈

ERROR [42000]杂谈

出错环境:windows server 2003+sqlserver2008 r2+odbc32

出错详情:System.Data.Odbc.OdbcException:ERROR [42000] [Microsoft][ODBC SQL Server Driver]

[SQL Server]字符串‘7‘后的引号不完整

如图:

技术分享

SQL语句如右:insert into 测试(‘张三‘,‘7 7 7 7 0 6 8‘,‘13580891274‘);

初步处理:

因为我写的程序,在执行insert语句,如果失败了,我把SQL语句写到了日志中。

所以,我在日志中,将这个执行失败的sql语句,手动复制到sqlserver 2008 中执行,成功了。

--------

那么问题就来了,为什么明明成功的sql语句,自己写程序会执行报错呢?

问题查询:

第一肯定是搜索问题,如果你搜索 ERROR [42000],很多大神会告诉你,这是保留字问题。

但是sql语句我手动复制到sqlserver2008能执行,所以排除。

深入思考:

到这里我们就得开始考虑字符问题了,毕竟表面上我们看到的没有任何问题,而且复制到sqlserver中也能执行。很多浮躁的哥们,肯定又开始骂微软,或者开始考虑是不是sqlserver的bug了技术分享

1,我将日志的sql语句【日志写出来的sql不能编辑,否则看不到原始的字符编码】,用UltraEdit打开,发现电话号码的字符既然有00,如图:

技术分享

再来看看 文本文档显示的情况:

技术分享

在文本文档中,00显示既然和空格无异。

【ps:00在windows表示中断,如果对00有更深的描述,欢迎留言指正】

解决问题:

既然问题发现了,那么解决就好办了,只需要把电话号码中的00编码去掉,即可。

替换方法[写的一个替换方法]

如有其他问题或建议,也欢迎企鹅号指教2446681809



本文出自 “小飞牛” 博客,请务必保留此出处http://blackstorm.blog.51cto.com/5528935/1599354

ERROR [42000]杂谈