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