By: Vimala in JDBC Tutorials on 2007年10月13日 [フレーム]
The JDBC 3.0 API adds the method Connection.setSavepoint, which
sets a savepoint within the current transaction. The Connection.rollback
method has been overloaded to take a savepoint argument.
The example below inserts a row into a table, sets the savepoint svpt1,
and then inserts a second row. When the transaction is later rolled back to svpt1,
the second insertion is undone, but the first insertion remains intact. In other
words, when the transaction is committed, only the row containing ?FIRST?
will be added to TAB1:
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("INSERT INTO TAB1 (COL1) VALUES " +
"(?FIRST?)");
// set savepoint
Savepoint svpt1 = conn.setSavepoint("SAVEPOINT_1");
rows = stmt.executeUpdate("INSERT INTO TAB1 (COL1) " +
"VALUES (?SECOND?)");
...
conn.rollback(svpt1);
...
conn.commit();
The method Connection.releaseSavepoint takes a Savepoint
object as a parameter and removes it from the current transaction.
Once a savepoint has been released, attempting to reference it in a rollback
operation causes an SQLException to be thrown. Any savepoints that
have been created in a transaction are automatically released and become invalid
when the transaction is committed, or when the entire transaction is rolled
back. Rolling a transaction back to a savepoint automatically releases and makes
invalid any other savepoints that were created after the savepoint in question.
As mentioned earlier, calling the method rollback aborts a
transaction and returns any values that were modified to their previous values.
If you are trying to execute one or more statements in a transaction and get an SQLException,
you should call the method rollback to abort the transaction and
start the transaction all over again. That is the only way to be sure of what
has been committed and what has not been committed. Catching an SQLException
tells you that something is wrong, but it does not tell you what was or was not
committed. Since you cannot count on the fact that nothing was committed,
calling the method rollback is the only way to be sure.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Most Viewed Articles (in JDBC )
Data Access Technologies in Java
Calling a Stored Procedure from JDBC in Java
What is Referential Integrity in databases?
JDBC and Tomcat context settings
TEXT datatype SPLIT in MSSQL - to solve the 8000 limit set by varchar
setSavepoint and releaseSavepoint Example in Java
java.lang.NoClassDefFoundError and java.lang.NoSuchMethodError
Handling CSV in Stored Procedures
How connection pooling works in Java and JDBC
Using JDBC to connect to MySQL from Java Program
Using the DriverManager Class vs Using a DataSource Object for a connection
Latest Articles (in JDBC)
Data Access Technologies in Java
JDBC and Tomcat context settings
TEXT datatype SPLIT in MSSQL - to solve the 8000 limit set by varchar
What is Referential Integrity in databases?
Handling CSV in Stored Procedures
java.lang.NoClassDefFoundError and java.lang.NoSuchMethodError
Calling a Stored Procedure from JDBC in Java
setSavepoint and releaseSavepoint Example in Java
Result Sets, Cursors and Transactions in SQL
Stored Procedures example in SQL
Using the DriverManager Class vs Using a DataSource Object for a connection
Data Access Technologies in Java
JDBC and Tomcat context settings
TEXT datatype SPLIT in MSSQL - to solve the 8000 limit set by varchar
What is Referential Integrity in databases?
Handling CSV in Stored Procedures
java.lang.NoClassDefFoundError and java.lang.NoSuchMethodError
Calling a Stored Procedure from JDBC in Java
setSavepoint and releaseSavepoint Example in Java
Result Sets, Cursors and Transactions in SQL
Stored Procedures example in SQL
Using the DriverManager Class vs Using a DataSource Object for a connection
© 2023 Java-samples.com
Tutorial Archive: Data Science React Native Android AJAX ASP.net C C++ C# Cocoa Cloud Computing EJB Errors Java Certification Interview iPhone Javascript JSF JSP Java Beans J2ME JDBC Linux Mac OS X MySQL Perl PHP Python Ruby SAP VB.net EJB Struts Trends WebServices XML Office 365 Hibernate
Latest Tutorials on: Data Science React Native Android AJAX ASP.net C Cocoa C++ C# EJB Errors Java Certification Interview iPhone Javascript JSF JSP Java Beans J2ME JDBC Linux Mac OS X MySQL Perl PHP Python Ruby SAP VB.net EJB Struts Cloud Computing WebServices XML Office 365 Hibernate