mysql - 带有十六进制文字的 JDBCPreparedStatement

标签 mysql jdbc prepared-statement hex

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

目标是拥有如下所示的 sql 语句(col1 是 varchar):

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

最佳答案

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

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

关于mysql - 带有十六进制文字的 JDBCPreparedStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17689826/

相关文章:

php - 使用图表制作私有(private)网站的最佳 CMS

php - 如何在 PHP 中为两个日期/时间之间的 SELECT BETWEEN mysql 查询编写准备好的语句?

jdbc - EJB、XA 事务和错误处理

MySQL 准备好的语句我还需要使用 mysql_escape_string

mysql - 更改 FROM_UNIXTIME(0) 的行为

php - mysqli 准备语句错误 - 过程样式

php - PDO 方法可以失败并且不抛出 PDOException 吗?

mysql - 如何用 Ruby 编写跨平台设置脚本

java - 每当 MySQL 表更新时更新 JFrame

java - 使用java在访问表中搜索值