带有十六进制文字的 JDBC PreparedStatement

问题描述 投票:0回答:1

我有一个 Mysql 兼容的十六进制文字,例如 X'4D7953514C' 我如何使用 PreparedStatments 分配这样的值,我尝试了 setString 但该值被包裹在引号中。

目标是有一个看起来像这样的sql语句(col1是一个varchar):

insert into t1 (col1) values (x'4D7953514C'); 
mysql jdbc prepared-statement hex
1个回答
2
投票

不能像

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

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

© www.soinside.com 2019 - 2024. All rights reserved.