2
我有一個與Mysql兼容的十六進制文字,例如X'4D7953514C' 如何用PreparedStatments分配這樣一個值,我試過setString,但是這個值被換成了引號。帶有十六進制文字的JDBC PreparedStatement
的目標是有一個SQL語句,看起來像這樣(COL1是一個varchar):
insert into t1 (col1) values (x'4D7953514C');
我有一個與Mysql兼容的十六進制文字,例如X'4D7953514C' 如何用PreparedStatments分配這樣一個值,我試過setString,但是這個值被換成了引號。帶有十六進制文字的JDBC PreparedStatement
的目標是有一個SQL語句,看起來像這樣(COL1是一個varchar):
insert into t1 (col1) values (x'4D7953514C');
您不能設置像x'4D7953514C'
十六進制字符串直接使用JDBC。您需要使用setString()
與實際預期值(MySQL
),或使用帶有正確值的字節數組(new byte[] {0x4D, 0x79, 0x53, 0x51, 0x4C }
,儘管我不能100%確定這適用於MySQL連接器/ J)使用setBytes()
。
X'...'
是二進制文字的SQL引入語法。當您使用參數化查詢時,您沒有使用文字,因此您使用的是參數,因此導入器語法不適用。
那麼你正在設置一個字符串...我的意思是如果你插入一個十六進制字符串到一個字符串字段它是一個字符串。這個問題令人困惑,你試圖將一個字符串插入到一個字符串中,而不希望它是一個字符串?請稍微改善一下你的問題。 – Namphibian
我希望現在更清楚。 – DED