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

JDBCを使用して1つのトランザクションで2つの更新クエリを実行する方法

    複数のステートメントをアトミックに実行する場合は、トランザクションを使用する必要があります。 JDBC接続のデフォルトは「自動コミット」モードです。これは、各ステートメントが独自のトランザクションで実行されることを意味します。したがって、最初に、 Connection.setAutoCommit(false)

    自動コミットモードを無効にすると、実行されたステートメントが現在のトランザクションで実行されます。現在のトランザクションがない場合は、トランザクションが開始されます。このトランザクションは、 Connection.commit() または、Connection.rollback()

    次のようなことをする必要があります:

    try (Connection connection = DriverManager.getConnection(...)) {
        connection.setAutoCommit(false);
        try (Statement stmt = connection.createStatement()) {
            stmt.executeUpdate(<your first update>);
            stmt.executeUpdate(<your second update>);
    
            connection.commit();
        } catch (SQLException e) {
            connection.rollback();
            throw e;
        }
    }
    

    詳細については、JDBCチュートリアルの章トランザクションの使用 を参照してください。 。

    そして、プリペアドステートメントについて学んでください。値をクエリ文字列に連結すると、値をエスケープするのを忘れた場合にSQLインジェクションや奇妙なエラーが発生する可能性があるため、正しくありません。 JDBCチュートリアルの章プリペアドステートメントの使用 も参照してください。 。




    1. PGAdminからCSVファイルをインポートしようとしたときにアクセスが拒否されました

    2. SQL ServerのOBJECTPROPERTY()とOBJECTPROPERTYEX():違いは何ですか?

    3. SQLステートメントでパラメーターを使用することを常に好むのはなぜですか?

    4. 一般的なSQLiteの問題を解決するのに役立つ方法はありますか?