Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Byte[] kann mit Java nicht in MySQL eingefügt werden

Das Problem ist, dass Ihre Spalte mit dem Namen "Schlüssel" ein Reservewort in SQL ist. Umgeben Sie es mit Backticks und die Dinge sollten funktionieren. Besser noch, erwägen Sie, die Spalte in etwas umzubenennen, das kein SQL-Reservewort ist. Ich habe dies anhand des folgenden Codes bewiesen:

MySQL-Tabelle:

create table keytable (name varchar(255) not null, `key` blob not null);

Java-Code:

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 :)");
    }
}