Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изпълним 2 заявки за актуализиране в една транзакция с JDBC

Ако искате да изпълните няколко оператора атомарно, трябва да използвате транзакция. 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL CONCAT(низ, дълъг текст) води до шестнадесетичен низ

  2. Научете основни SQL заявки с помощта на MySQL

  3. CONV() функция в снежинка

  4. Код на грешка:1062. Дублиран запис „1“ за ключ „PRIMARY“

  5. Можем ли да импортираме SQL от S3 bucket в AWS ec2 (екземпляр)?