Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible d'insérer byte [] dans MySQL en utilisant Java

Le problème est que votre colonne appelée "clé" est un mot de réserve en SQL. Entourez-le de backticks et les choses devraient fonctionner. Mieux encore, envisagez de renommer la colonne en quelque chose qui n'est pas un mot de réserve SQL. J'ai prouvé cela en utilisant le code ci-dessous :

Table MySQL :

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

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