Я пытаюсь вставить некоторые двоичные данные в базу данных MySQL без использования подготовленных операторов. Причиной этого является то, что я объединяю тысячи операторов в одну вставку, которая запускается один раз. (Точно как MySQL дамп & импорт работ)Вставка двоичных данных в MySQL (без PreparedStatement)
Я попытался следующие утверждения, но все неудачу:
INSERT INTO my_table VALUES (1, 'г = F |} Х», 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 ЗНАЧЕНИЯ (1, Бинарные 'г = F |} X', 2)
Ошибки я получаю:
усечение данных: com.mysql.jdbc.MysqlDataTruncation данных слишком долго для столбца «binary_data» в строке 1
код я использую, чтобы выполнить оператор просто:
conn.createStatement(). ExecuteUpdate (sql);
PreparedStatements работают отлично (но слишком медленно, в данном случае)
Фактическая строка I в базе данных показывает немного гладкошерстных:
г = ÷ ПОРАЖЕНИЯ | ¸} X £ ì [
Двоичный Вид: 67 3d 81 f7 19 f3 46 7c 7d b8 58 8с 10 а3 ес 5b
Java Б: 103, 61, -127, -9, 25, -13, 70, 124, -72, 125, 88, -116, 16, -93, -20, 91
Это может быть связано с кодированием?
Любые намеки много apprecaited, Ro
двоичные данные могут быть вставлены только через 'PreparedStatement' ИЛИ' CallableStatement' и не возможно, используя простой 'Statement'. –
Вы знаете, что «оптимизация», которую вы сделали, вероятно, бесполезна? Точка подготовленных заявлений состоит в том, что они «предварительно скомпилированы» MySQL, и вы просто загружаете MySQL параметры. Если вы объединяете заявления или нет, вы все равно отправляете тысячи значений. И, естественно, это оказалось проблемой, поскольку вы не можете легко вставить двоичные данные. –
Как вы генерируете заявления 'INSERT'? Кодирование, вероятно, имеет значение, но вам также нужно беспокоиться о правильном экранировании (например, если в двоичных данных есть '' '). Также вы проверяете свои JDBC [параметры подключения] (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html), такие как 'useUnicode' и' characterEncoding '? –