sql >> データベース >  >> RDS >> Mysql

Javaを使用してbyte[]をMySQLに挿入できません

    問題は、「key」という列がSQLの予約語であるということです。バックティックでそれを囲み、物事はうまくいくはずです。さらに良いことに、列の名前をSQL予約語ではない名前に変更することを検討してください。以下のコードを使用してこれを証明しました:

    MySQLテーブル:

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

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


    1. NHibernateでGuidをId列として使用すると、MySQLを使用するときにフォーマット例外が発生します

    2. コマンドラインを使用してLinux上にMySQLユーザーを作成する

    3. カスタムクエリページネーションCakephp

    4. idの意味=LAST_INSERT_ID(id)