समस्या यह है कि "कुंजी" नामक आपका कॉलम SQL में एक आरक्षित शब्द है। इसे बैकटिक्स से घेरें और चीजों को काम करना चाहिए। बेहतर अभी तक, कॉलम का नाम बदलने पर विचार करें जो SQL आरक्षित शब्द नहीं है। मैंने नीचे दिए गए कोड का उपयोग करके इसे साबित कर दिया है:
MySQL तालिका:
create table keytable (name varchar(255) not null, `key` blob not null);
जावा कोड:
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 :)");
}
}