您好,登錄后才能下訂單哦!
出錯環(huán)境: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');
初步處理:
因為我寫的程序,在執(zhí)行insert語句,如果失敗了,我把SQL語句寫到了日志中。
所以,我在日志中,將這個執(zhí)行失敗的sql語句,手動復制到sqlserver 2008 中執(zhí)行,成功了。
--------
那么問題就來了,為什么明明成功的sql語句,自己寫程序會執(zhí)行報錯呢?
問題查詢:
第一肯定是搜索問題,如果你搜索 ERROR [42000],很多大神會告訴你,這是保留字問題。
但是sql語句我手動復制到sqlserver2008能執(zhí)行,所以排除。
深入思考:
到這里我們就得開始考慮字符問題了,畢竟表面上我們看到的沒有任何問題,而且復制到sqlserver中也能執(zhí)行。很多浮躁的哥們,肯定又開始罵微軟,或者開始考慮是不是sqlserver的bug了。
1,我將日志的sql語句【日志寫出來的sql不能編輯,否則看不到原始的字符編碼】,用UltraEdit打開,發(fā)現(xiàn)電話號碼的字符既然有00,如圖:
再來看看 文本文檔顯示的情況:
在文本文檔中,00顯示既然和空格無異。
【ps:00在windows表示中斷,如果對00有更深的描述,歡迎留言指正】
解決問題:
既然問題發(fā)現(xiàn)了,那么解決就好辦了,只需要把電話號碼中的00編碼去掉,即可。
替換方法[寫的一個替換方法]
如有其他問題或建議,也歡迎企鵝號指教2446681809
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。