| 
                         我试图在不使用预准备语句的情况下将一些二进制数据插入MySQL数据库.这样做的原因是我将数千个语句连接成一次运行一次. (究竟MySQL转储和导入的工作原理) 
我已经尝试了以下语句,但都失败了: 
INSERT INTO my_table VALUES (1,’g=F|}X’,2); 
INSERT INTO my_table VALUES (1,CAST( ‘g=F|}X’ AS BINARY),CONVERT( ‘g=F|}X’,BINARY),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 
 
这可能与编码有关吗? 
任何提示很多, 罗
最佳答案
找到解决方案….虽然不是我看到的任何地方记录的….. 
您可以通过写入转换为HEX且前面为0x的字节来直接插入二进制数据 
例如: 
INSERT INTO my_table VALUES (1,0x19c0300dc90e7cedf64703ed8ae8683b,2);
                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |