“MySql.Data.MySqlClient.MySqlException”型別的未經處理的例外在 MySql.Data.dll 中發生
其他資訊: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' " )' at line 1
相關代碼為
sqlCon.Open();
string ReceiveMessagecom1 = "INSERT INTO 歷史記錄 (時間,操作) VALUES('" + DateTime.Now.ToLocalTime().ToString() + "' ,\" " + ReceiveMessage + " \" )";
MySqlCommand com2 = new MySqlCommand(ReceiveMessagecom1, sqlCon);
com2.ExecuteNonQuery();
sqlCon.Close();
ReceiveMessage 的值是 UPDATE `旅大16-3` SET 桿件組對完成標志= '報檢中' WHERE 單管號 = 'DO-LDB01-35068-01' AND 焊口號 = 'FWS-1' AND 管線號 ='2\"-DO-35068-A2BZ-HT35' 這個報錯了,之前執行ReceiveMessage 的值是 SELECT * FROM `旅大16-3` where 圖紙批次號 IN (SELECT 圖紙 FROM 作業范疇 WHERE 帳號 = '1' ) and 焊口號 != ''and 桿件組對完成標志 = '' or 桿件組對完成標志 = '返修'
的時候就執行成功了并且報錯的那條陳述句放在MYSQL中執行是執行成功的,有人知道為啥報這個錯誤嗎,求大佬指點
uj5u.com熱心網友回復:
第一次發帖,有大佬來光顧不uj5u.com熱心網友回復:
insert里套了個update?沒見過這種寫法uj5u.com熱心網友回復:
這個是記錄每次對mysql執行的陳述句的,后面那里是記錄的純文本陳述句uj5u.com熱心網友回復:
并且這里不是嵌套,只是insert 進去了一串字串,只不過這個字串也是一個sql陳述句uj5u.com熱心網友回復:
1。如果是純文本,你這陳述句并沒有拼接上 '2。文本內帶有特殊字符 ' ,需要轉成 ''
uj5u.com熱心網友回復:
ReceiveMessagecom1 ="INSERT INTO 歷史記錄 (時間,操作) VALUES('2021-01-14 10:47:10' ,\" UPDATE `旅大16-3` SET 桿件組對完成標志= '報檢中' WHERE 單管號 = 'DO-LDB01-35068-02' AND 焊口號 = 'FW-10' AND 管線號 ='2\"-DO-35068-A2BZ-HT35' \" )"把這個陳述句放在mysql中執行的結果是這樣

但是陳述句在vs中
MySqlCommand com2 = new MySqlCommand(ReceiveMessagecom1, sqlCon);就會報錯,報的就是上面' " )的錯誤,這是什么原因,要怎么改
com2.ExecuteNonQuery();
不過ReceiveMessagecom1 ="INSERT INTO 歷史記錄 (時間,操作) VALUES('2021-01-14 10:47:10' ,\" SELECT * FROM `旅大16-3` where 圖紙批次號 IN (SELECT 圖紙 FROM 作業范疇 WHERE 帳號 = '1' ) and 焊口號 != ''and 桿件組對完成標志 = '' or 桿件組對完成標志 = '返修' \" )"這個就VS就沒有報錯
uj5u.com熱心網友回復:
列印下ReceiveMessagecom1 這個變數.檢查下列印出來的sql陳述句是否與預期一致,是否語法正確.
uj5u.com熱心網友回復:
我這個給的就是出現的VS執行出來的ReceiveMessagecom1的值
uj5u.com熱心網友回復:
斷點除錯ReceiveMessagecom1的值,然后將她放在資料庫里面執行看看是什么錯誤!應該是那串字串被MySql執行了,所以報錯的!uj5u.com熱心網友回復:

這個就是VS沒報錯的,但是插入上面那個update陳述句就會報錯
uj5u.com熱心網友回復:
我上面那個MYSQL的執行圖,給出的就是ReceiveMessagecom1的值在mysql中的執行情況,可以直接被執行成功uj5u.com熱心網友回復:
string ReceiveMessage = @"'UPDATE `旅大16-3` SET 桿件組對完成標志= ''報檢中'' WHERE 單管號 = ''DO-LDB01-35068-01'' AND 焊口號 = ''FWS-1'' AND 管線號 =''2 - DO - 35068 - A2BZ - HT35''' where LogID = '2A45E58C-A5A5-48F9-9738-01DE3C06AB16'"uj5u.com熱心網友回復:
string ReceiveMessage = @"'UPDATE `旅大16-3` SET 桿件組對完成標志= ''報檢中'' WHERE 單管號 = ''DO-LDB01-35068-01'' AND 焊口號 = ''FWS-1'' AND 管線號 =''2 - DO - 35068 - A2BZ - HT35''' where LogID = ''2A45E58C-A5A5-48F9-9738-01DE3C06AB16''";uj5u.com熱心網友回復:
列印出來跟看這個是有點區別的,列印出來的轉義符已經沒有了.有時候多一個符號少一個符號容易看花眼,所以建議你列印出來看.
uj5u.com熱心網友回復:
wtnu200老哥發的這句代碼是做啥的uj5u.com熱心網友回復:
什么是列印啊uj5u.com熱心網友回復:
這個是什么意思uj5u.com熱心網友回復:
你的陳述句報錯是因為 ReceiveMessage 的值有問題,我第1個回復都給你指出來啦。。。
uj5u.com熱心網友回復:
老哥跟我說一下怎么列印出來,我整出來看看
你的陳述句報錯是因為 ReceiveMessage 的值有問題,我第1個回復都給你指出來啦。。。
uj5u.com熱心網友回復:
Console.WriteLine(ReceiveMessagecom1);uj5u.com熱心網友回復:
Console.WriteLine(ReceiveMessagecom1);
我用的是winform 所以

你看看
uj5u.com熱心網友回復:
第一行就看到:中文通常應該用引號引起來后面看不下去了,各種引號嵌套的眼花繚亂,自己屢屢吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/248797.html
標籤:C#
上一篇:最近在弄一個排課系統 排課老是沖突 請各位大佬給點意見和參考
下一篇:關于軟體授權
