Vấn đề là cột của bạn được gọi là "khóa" là một từ dự trữ trong SQL. Bao quanh nó bằng các thanh chống lưng và mọi thứ sẽ hoạt động. Tốt hơn, hãy xem xét đổi tên cột thành một thứ không phải là từ dự trữ SQL. Tôi đã chứng minh điều này bằng cách sử dụng mã bên dưới:
Bảng MySQL:
create table keytable (name varchar(255) not null, `key` blob not null);
Mã Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class MySQLBlobInsert {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
byte[] bkey = "This is some binary stuff".getBytes();
String query = "INSERT INTO keytable (name, `key`) VALUES (?,?)";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, "test");
pstmt.setBytes(2, bkey);
pstmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try { conn.close(); } catch (SQLException e) {}
}
}
System.out.println("done :)");
}
}