Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wykonać 2 zapytania aktualizacyjne w jednej transakcji z JDBC

Jeśli chcesz wykonać wiele instrukcji niepodzielnie, musisz użyć transakcji. Połączenie JDBC domyślnie działa w trybie „automatycznego zatwierdzania”, co oznacza, że ​​każda instrukcja jest wykonywana we własnej transakcji. Więc najpierw musisz wyłączyć tryb automatycznego zatwierdzania, używając Connection.setAutoCommit(false) .

Przy wyłączonym trybie auto-commit wykonane wyciągi zostaną wykonane w bieżącej transakcji, jeśli nie ma bieżącej transakcji, zostanie uruchomiona. Tę transakcję można następnie zatwierdzić za pomocą Connection.commit() lub wycofane za pomocą Connection.rollback() .

Musisz zrobić coś takiego:

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

Więcej informacji znajdziesz w samouczku JDBC Korzystanie z transakcji .

I proszę zapoznać się z przygotowanymi oświadczeniami. Łączenie wartości w ciągu zapytania jest złe, ponieważ może prowadzić do wstrzyknięcia SQL lub dziwnych błędów, jeśli zapomnisz o ucieczce wartości. Zobacz także rozdział samouczka JDBC Korzystanie z przygotowanych instrukcji .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ponownie połączyć utracone połączenia za pomocą EclipseLink?

  2. MySQL - Jak usunąć z tabeli, gdy zagnieżdżony wybór używa tej tabeli?

  3. Pięć najlepszych aplikacji umożliwiających dostęp do serwerów MySQL/MariaDB

  4. czy mogę użyć zmiennej do określenia OUTFILE w mysql

  5. Aplikacja zawiesza się podczas wywoływania bazy danych