【问题标题】:JDBC PreparedStatement with Hexadecimal Literals带有十六进制文字的 JDBC PreparedStatement
【发布时间】:2013-07-17 01:52:32
【问题描述】:

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

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

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

【问题讨论】:

  • 嗯,你正在设置一个字符串......我的意思是如果你将一个十六进制字符串插入到一个字符串字段中,它就是一个字符串。这个问题令人困惑,您试图将字符串插入字符串并且不希望它成为字符串?请把你的问题重新表述得更好一点。
  • 我希望现在更清楚了。

标签: mysql jdbc prepared-statement hex


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-09-08
    • 2016-04-22
    • 1970-01-01
    • 2013-08-05
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多