Tôi đang cố gắng chèn một số dữ liệu nhị phân vào cơ sở dữ liệu MySQL mà không sử dụng câu lệnh đã chuẩn bị. Lý do cho điều này là tôi nối vào hàng nghìn câu lệnh thành một lần chèn một lần chạy một lần. (Chính xác như thế nào MySQL đổ & công trình nhập khẩu)Chèn dữ liệu nhị phân vào MySQL (không có PreparedStatement)
Tôi đã thử những điều khoản sau đây, nhưng tất cả các thất bại:
INSERT INTO GIÁ TRỊ my_table (1, 'g = F |} X ', 2);
INSERT INTO giá trị my_table (1, CAST ('g = F | } X ' NHƯ NGÂN HÀNG), 2);
INSERT INTO my_table VALUES (1, CONVERT ('g = F | } X ', BINARY), 2);
INSERT INTO GIÁ TRỊ my_table (1, Binary 'g = F |} X', 2)
Các lỗi tôi nhận được là:
com.mysql.jdbc.MysqlDataTruncation: Cắt dữ liệu: Dữ liệu quá dài cho cột 'binary_data' ở hàng 1
Mã tôi sử dụng để thực hiện câu lệnh đơn giản là:
conn.createStatement(). ExecuteUpdate (sql);
PreparedStatements làm việc tốt (nhưng là quá chậm trong trường hợp này)
Các chuỗi thực tế I trong cơ sở dữ liệu sẽ hiển thị một chút differet:
g = ÷ của | ¸} ì X £ [
Binary Xem: 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
Điều này có liên quan gì đến Mã hóa không?
Bất kỳ gợi ý nhiều apprecaited, Ro
Dữ liệu nhị phân có thể được chèn chỉ qua 'PreparedStatement' hoặc' CallableStatement' và không có thể sử dụng 'Statement' đơn giản. –
Bạn biết rằng "tối ưu hóa" bạn đã làm có lẽ vô giá trị? Điểm của các câu lệnh chuẩn bị là chúng được "biên dịch trước" bởi MySQL và bạn chỉ cần cung cấp các tham số cho MySQL. Cho dù bạn có ghép nối hay không, bạn vẫn gửi hàng nghìn giá trị. Và tự nhiên, điều này hóa ra là một vấn đề vì bạn không thể dễ dàng chèn dữ liệu nhị phân. –
Bạn tạo các câu lệnh 'INSERT' như thế nào? Mã hóa các vấn đề có thể xảy ra, nhưng bạn cũng phải lo lắng về việc thoát đúng (ví dụ: nếu dữ liệu nhị phân có ''' trong đó). Bạn cũng kiểm tra JDBC [tham số kết nối] (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html), chẳng hạn như 'useUnicode' và' characterEncoding '? –