java - 将二进制数据插入 MySQL(没有 PreparedStatement)

标签 java mysql jdbc

我试图在不使用准备好的语句的情况下将一些二进制数据插入 MySQL 数据库。这样做的原因是我将数以千计的语句连接成一个插入并运行一次。 (MySQL 转储和导入的确切工作原理)

我尝试了以下语句,但都失败了:

INSERT INTO my_table VALUES (1,'g=���F|�}X���',2);

INSERT INTO my_table VALUES (1,CAST( 'g=���F|�}X���' AS BINARY),2);

INSERT INTO my_table VALUES (1,CONVERT( 'g=���F|�}X���', BINARY),2);

INSERT INTO my_table VALUES (1,BINARY 'g=���F|�}X���',2)

我得到的错误是:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'binary_data' at row 1

我用来执行语句的代码很简单:

conn.createStatement().executeUpdate(sql);

PreparedStatements 工作正常(但在这种情况下太慢)

数据库中的实际 String I 显示有点不同:

g=÷óF|¸}X£ì[

Binary View: 67 3d 81 f7 19 f3 46 7c b8 7d 58 8c 10 a3 ec 5b

Java Bytes: 103, 61, -127, -9, 25, -13, 70, 124, -72, 125, 88, -116, 16, -93, -20, 91

这可能与编码有关吗?

非常感谢任何提示, 罗

最佳答案

找到了解决方案....虽然我在任何地方都没有看到任何记录......

可以直接插入Binary数据,将字节转换为HEX后加0x写入即可

例如:

INSERT INTO my_table VALUES (1,0x19c0300dc90e7cedf64703ed8ae8683b,2);

关于java - 将二进制数据插入 MySQL(没有 PreparedStatement),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139521/

相关文章:

java - 使用 Eclipse 插件检测 git 存储库中的代码气味?

php - Laravel 的 whereHas 表现不佳

java - 代码抛出 SEVERE : No value specified for parameter 1 excetion

java - 如何在一条语句中将多行插入到 DB2 中?

java - 将整个目录内容复制到另一个目录?

java - 如何将正则表达式扩展到实际值

java - Jenkins 中的 Groovy Postbuild,解析日志中的字符串并计算它们

mysql - 从 MySQL 导出/导入 WordPress 元数据?

php - SQL 错误 : Every derived table must have its own alias

Java 数据库连接 (JDBC) session 处理?