当前位置: 首页 > 面试题库 >

将二进制数据插入MySQL(不带PreparedStatement)

钦枫
2023-03-14
问题内容

我试图在不使用准备好的语句的情况下将一些Binary数据插入MySQL数据库。原因是我将成千上万条语句连接到一个插入中,一次运行一次。(MySQL转储和导入的工作原理)

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

插入my_table值(1,’g = F| }X ‘,2);

插入my_table值(1,CAST(’g = F| }X ‘as BINARY),2);

插入my_table值(1,CONVERT(’g = F| }X ‘,BINARY),2);

插入my_table值(1,BINARY’g = F| }X ‘,2)

我得到的错误是:

com.mysql.jdbc.MysqlDataTruncation:数据截断:第1行的’binary_data’列数据太长

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

conn.createStatement()。executeUpdate(sql);

PreparedStatement可以正常工作(但是在这种情况下太慢了)

数据库中的实际String I显示了一点区别:

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

二进制视图:67 3d 81 f7 19 f3 46 7c b8 7d 58 8c 10 a3 ec 5b

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

可能与编码有关吗?

任何暗示,Ro


问题答案:

找到了解决方法.....虽然我看不到任何地方记录的内容......

您可以通过写入转换为十六进制并以0x开头的字节直接插入二进制数据

例如:

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


 类似资料:
  • 问题内容: 我有一个带有VARBINARY列的表。我需要插入一个字符串,例如“ 4D2AFF”,它分别代表十六进制值0x4D,0x2A和0xFF。如何构造此语句? 问题答案: 您可以使用函数将具有十六进制对的十六进制字符串转换为二进制,然后反过来执行。 即 和

  • 可以将数字1、2、3、4、5插入到二进制堆中,以使生成的二进制堆为最小堆的方式有多少? 答案 = 8 ========================================================================== 我的观点是——因为这是一个Min堆,所以最小值将是根。 这将是最小堆 - - 共-1*4C3*1*2*1=8。这种方法正确吗?

  • 本文向大家介绍如何使用JDBC将二进制数据插入表中?,包括了如何使用JDBC将二进制数据插入表中?的使用技巧和注意事项,需要的朋友参考一下 SQL数据库在其中提供了一个名为Blob(二进制大对象)的数据类型,您可以存储诸如图像之类的大型二进制数据。 要将二进制(流)值存储到表中,JDBC在PreparedStatement接口中提供了一种称为setBinaryStream()的方法。 它接受一个整

  • 问题内容: 已关闭 。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 如何在MySQL中存储二进制数据? 问题答案: phpguy的答案是正确的,但我认为那里的其他细节存在很多混乱。 基本答案是在数据类型/属性域中。 BLOB 是Binary Large Object的缩写,该列数据类型专用于处理二进制数据。 请参见MyS

  • 我想实现一种将排序数组插入二叉搜索树的算法,但我不希望最终得到一棵只向一侧生长的树。 你有什么想法吗? 谢谢你。

  • 问题内容: 过去,这个网站对我有很大帮助,但现在我迷路了。在此先感谢您的指导。 我有一个包含Binary值的MySQL表,如下例所示。我不能改变桌子。 这是nid的示例值:( 不全部显示,但是所有16个都在那里) 现在,我想创建一个SQL查询来查找该值为true的行的ID。 …不起作用。任何的想法? 解决方案: 以HEX格式获取nid可以 解决问题 。结果是DE46C83E5A50CED70E6A