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

JDBC-mysqlデータベースの値を取得してテーブルを削除することはできません

    あなたが何か違うことをしていることは承知していますが、挿入に関するいくつかの小さなヒント:

    Javaには、データベースに依存せずにINSERTの生成されたキーをフェッチする方法があります。これは、マルチユーザー環境で、MAXを後でまたは前に取得するよりもはるかに安全です。

    間違ったIDのシナリオ:

    1. 最初の挿入
    2. 2番目の挿入
    3. 最初のSELECT
    4. 2番目のSELECT

    また、セキュリティ(SQLインジェクション)とエスケープ(名前に一重引用符や円記号などが含まれている場合)のために、PreparedStatementを使用します。

    そして、try-withresourcesは、リターンや例外が発生した場合でも、常に物事を閉じます。

    String sql = "INSERT INTO account (name, balance) VALUES (?, 0)";
    try (PreparedStatement stmt = conn.prepareStatement(sql,
            Statement.RETURN_GENERATED_KEYS)) {
        stmt.setString(1, name);
        int updateCount = stmt.executeUpdate(); // 1
        try (ResultSet id = stmt.getGeneratedKeys()) {
            id_user = 0;
            if (id.next()) { // 'if' as just 1 row inserted.
                id_user = id.getInt(1); // 1 key per row.
            }
        }
        System.out.println(id_user);
    }
    


    1. PostgreSQLで文字列をタイムスタンプに変換する方法

    2. CodeIgniterActiveRecord-グループORステートメント

    3. CASEおよびINNERJOINでのMySQLクエリエラー

    4. phpMyAdminでのインポートと同等のプログラム