我有一个Mysql兼容的十六进制文字,例如X'4D7953514C'我如何用PreparedStatments分配这样的值,我尝试了setString,但值被 Package 成引号。目标是有一个看起来像这样的sql语句(col1是一个varchar):
insert into t1 (col1) values (x'4D7953514C');
ffx8fchx1#
不能直接使用JDBC设置像x'4D7953514C'这样的十六进制字符串。您需要使用setString()和实际的预期值(MySQL),或者使用setBytes()和具有正确值的字节数组(例如new byte[] {0x4D, 0x79, 0x53, 0x51, 0x4C },尽管我不能100%确定这适用于MySQL Connector/J)。X'...'是二进制文字的SQL语法。当使用参数化查询时,您使用的不是文字,而是参数,因此文字语法不适用。
x'4D7953514C'
setString()
MySQL
setBytes()
new byte[] {0x4D, 0x79, 0x53, 0x51, 0x4C }
X'...'
1条答案
按热度按时间ffx8fchx1#
不能直接使用JDBC设置像
x'4D7953514C'
这样的十六进制字符串。您需要使用setString()
和实际的预期值(MySQL
),或者使用setBytes()
和具有正确值的字节数组(例如new byte[] {0x4D, 0x79, 0x53, 0x51, 0x4C }
,尽管我不能100%确定这适用于MySQL Connector/J)。X'...'
是二进制文字的SQL语法。当使用参数化查询时,您使用的不是文字,而是参数,因此文字语法不适用。