出错环境: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
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。