我正在嘗試編寫一個處理數據庫與mysql服務器交互的類。 爲此,我使用'mysql-connector-java-5.1.30.jar'。準備語句中的剩餘'x'
我遇到了這種行爲,我不確定我是否犯了錯誤或發現了錯誤。 測試的語句讀取這樣的:
"INSERT INTO test.database.EncryptedClass (eMail) VALUES (?);"
我插入在字節[]形式的加密值。
statement.setBytes(iterator, encryptedValue); // (iterator = 1)
結果是以下錯誤:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的」 .EncryptedClass(電子郵件)VALUES(X‘63EEAAA2F3CE444C9F1256FA8052F287CD96D67D29E2EB’在行1
正如你可以看到正確的語法手冊,有前面的X實際值,我相信這個變量應該是用實際值代替,但是由於某些未知的原因,這個失敗了,而是附加了這個值。 如果這是一個bug,它是不是謊言與連接器庫或服務器本身有關 我知道這一點:值實際上是在數據庫中注入的,但我不確定該值是否已經傳輸爲false,或者數據庫函數是否替換'?'值這樣做失敗。
「x」表示接下來是一個十六進制字符串;你的問題在你的查詢中要早得多(就在mysql告訴你「_near_」) –
如果你把這個語句寫到mysql命令行界面會發生什麼?我相信'x'標記下面的值是十六進制編碼的字節。 – Kayaman