sql >> Database >  >> RDS >> Mysql

COMMIT OF conn.setAutoCommit(true)

Over het algemeen moet u Connection.commit() . gebruiken en niet Connection.setAutoCommit(true) om een ​​transactie vast te leggen, tenzij u wilt overschakelen van het gebruik van transactie naar het 'transactie per afschrift'-model van autoCommit.

Dat gezegd hebbende, het aanroepen van Connection.setAutoCommit(true) terwijl in een transactie de transactie wordt uitgevoerd (als de driver voldoet aan sectie 10.1.1 van de JDBC 4.1-specificatie). Maar je zou dat eigenlijk alleen moeten doen als je daarna in autoCommit wilt blijven, omdat het in-/uitschakelen van autoCommit op een verbinding een hogere overhead op een verbinding kan hebben dan alleen maar vast te leggen (bijvoorbeeld omdat het moet schakelen tussen transactiemanagers, doe extra controles , enz.).

Gebruik ook Connection.commit() en gebruik niet het native SQL-commando COMMIT . Zoals beschreven in de aansluitdocumentatie:

Het punt is dat commando's zoals commit() en setAutoCommit(boolean) kan meer werk op de achtergrond doen, zoals het sluiten van ResultSets en afsluiten of resetten van Statements . Met behulp van het SQL-commando COMMIT zal dit omzeilen en mogelijk uw stuurprogramma / verbinding in een onjuiste staat brengen.



  1. operand moet 1 kolommen bevatten

  2. Jokertekens in kolomnaam voor MySQL

  3. JDBC-verbindingstime-out kan niet opnieuw verbinding maken

  4. Java SQL-datum is 1 dag verschoven