带有十六进制文字的JDBC PreparedStatement

时间:2013-07-17 01:52:32

标签: mysql jdbc prepared-statement hex

我有一个兼容Mysql的Hexadecimal Literal,例如X'4D7953514C' 如何使用PreparedStatments分配这样的值,我尝试了setString但是值被包装成引号。

目标是让sql语句看起来像这样(col1是varchar):

insert into t1 (col1) values (x'4D7953514C'); 

1 个答案:

答案 0 :(得分:1)

您不能直接使用JDBC设置像x'4D7953514C'这样的十六进制字符串。您需要将setString()与实际预期值(MySQL)一起使用,或者将setBytes()与具有正确值的字节数组一起使用(例如new byte[] {0x4D, 0x79, 0x53, 0x51, 0x4C },尽管我不是100%确定这适用于MySQL Connector / J)。

X'...'是二进制文字的SQL介绍人语法。当您使用参数化查询时,您没有使用文字,而是使用参数,因此介绍人语法不适用。