sql >> Database >  >> RDS >> Mysql

Hoe u 2 update-query's in één transactie uitvoert met JDBC

Als u meerdere verklaringen atomair wilt uitvoeren, moet u een transactie gebruiken. Een JDBC-verbinding staat standaard in de 'auto-commit'-modus, wat betekent dat elke instructie in zijn eigen transactie wordt uitgevoerd. U moet dus eerst de auto-commit-modus uitschakelen met behulp van Connection.setAutoCommit(false) .

Als de auto-commit-modus is uitgeschakeld, worden uitgevoerde instructies uitgevoerd in de huidige transactie, als er geen huidige transactie is, wordt er een gestart. Deze transactie kan vervolgens worden vastgelegd met behulp van Connection.commit() of teruggedraaid met Connection.rollback() .

U moet iets doen als:

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;
    }
}

Zie voor meer details het JDBC-zelfstudiehoofdstuk Transacties gebruiken .

En leer alstublieft over voorbereide verklaringen. Het samenvoegen van waarden in een queryreeks is slecht, omdat het kan leiden tot SQL-injectie of vreemde fouten als u vergeet waarden te escapen. Zie ook het hoofdstuk JDBC-zelfstudie Voorbereide verklaringen gebruiken .




  1. MySQL LOG() Functie – Retourneer de natuurlijke logaritme van een waarde

  2. Hoe u de huidige datum (zonder tijd) in T-SQL kunt krijgen

  3. PostgreSQL-vensterfunctie:partitie in vergelijking

  4. 6 manieren om dubbele rijen met een primaire sleutel in SQLite te verwijderen