Masalahnya adalah kolom Anda yang disebut "kunci" adalah kata cadangan dalam SQL. Kelilingi dengan backticks dan semuanya akan berfungsi. Lebih baik lagi, pertimbangkan untuk mengganti nama kolom menjadi sesuatu yang bukan kata cadangan SQL. Saya telah membuktikannya menggunakan kode di bawah ini:
Tabel MySQL:
create table keytable (name varchar(255) not null, `key` blob not null);
Kode 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 :)");
}
}