<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDatabase%2FTransation</id>
		<title>Java Tutorial/Database/Transation - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDatabase%2FTransation"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Database/Transation&amp;action=history"/>
		<updated>2026-04-10T09:07:40Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Database/Transation&amp;diff=4778&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Database/Transation&amp;diff=4778&amp;oldid=prev"/>
				<updated>2010-06-01T05:05:55Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:05, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Database/Transation&amp;diff=4777&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Database/Transation&amp;diff=4777&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Commit or rollback transaction in JDBC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.PreparedStatement;&lt;br /&gt;
import java.sql.ResultSet;&lt;br /&gt;
import java.sql.SQLException;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    String url = &amp;quot;jdbc:mysql://localhost/testdb&amp;quot;;&lt;br /&gt;
    String username = &amp;quot;root&amp;quot;;&lt;br /&gt;
    String password = &amp;quot;&amp;quot;;&lt;br /&gt;
    Class.forName(&amp;quot;com.mysql.jdbc.Driver&amp;quot;);&lt;br /&gt;
    Connection conn = null;&lt;br /&gt;
    try {&lt;br /&gt;
      conn = DriverManager.getConnection(url, username, password);&lt;br /&gt;
      conn.setAutoCommit(false);&lt;br /&gt;
      Statement st = conn.createStatement();&lt;br /&gt;
      st.execute(&amp;quot;INSERT INTO orders (username, order_date) VALUES (&amp;quot;java&amp;quot;, &amp;quot;2007-12-13&amp;quot;)&amp;quot;,&lt;br /&gt;
          Statement.RETURN_GENERATED_KEYS);&lt;br /&gt;
      ResultSet keys = st.getGeneratedKeys();&lt;br /&gt;
      int id = 1;&lt;br /&gt;
      while (keys.next()) {&lt;br /&gt;
        id = keys.getInt(1);&lt;br /&gt;
      }&lt;br /&gt;
      PreparedStatement pst = conn.prepareStatement(&amp;quot;INSERT INTO order_details (order_id, product_id, quantity, price) VALUES (?, ?, ?, ?)&amp;quot;);&lt;br /&gt;
      pst.setInt(1, id);&lt;br /&gt;
      pst.setString(2, &amp;quot;1&amp;quot;);&lt;br /&gt;
      pst.setInt(3, 10);&lt;br /&gt;
      pst.setDouble(4, 100);&lt;br /&gt;
      pst.execute();&lt;br /&gt;
      conn.rumit();&lt;br /&gt;
      System.out.println(&amp;quot;Transaction commit...&amp;quot;);&lt;br /&gt;
    } catch (SQLException e) {&lt;br /&gt;
      if (conn != null) {&lt;br /&gt;
        conn.rollback();&lt;br /&gt;
        System.out.println(&amp;quot;Connection rollback...&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    } finally {&lt;br /&gt;
      if (conn != null &amp;amp;&amp;amp; !conn.isClosed()) {&lt;br /&gt;
        conn.close();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Committing and Rolling Back Updates to a Database ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String driverName = &amp;quot;com.jnetdirect.jsql.JSQLDriver&amp;quot;;&lt;br /&gt;
    Class.forName(driverName);&lt;br /&gt;
    String serverName = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
    String portNumber = &amp;quot;1433&amp;quot;;&lt;br /&gt;
    String mydatabase = serverName + &amp;quot;:&amp;quot; + portNumber;&lt;br /&gt;
    String url = &amp;quot;jdbc:JSQLConnect://&amp;quot; + mydatabase;&lt;br /&gt;
    String username = &amp;quot;username&amp;quot;;&lt;br /&gt;
    String password = &amp;quot;password&amp;quot;;&lt;br /&gt;
    Connection connection = DriverManager.getConnection(url, username, password);&lt;br /&gt;
    // Disable auto commit&lt;br /&gt;
    connection.setAutoCommit(false);&lt;br /&gt;
    // Do SQL updates...&lt;br /&gt;
    // Commit updates&lt;br /&gt;
    connection.rumit();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Determine if a Database Supports Transactions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DatabaseMetaData;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] a) throws Exception {&lt;br /&gt;
    Connection conn = getConnection();&lt;br /&gt;
    DatabaseMetaData dbMetaData = conn.getMetaData();&lt;br /&gt;
    System.out.println(dbMetaData.supportsTransactions());&lt;br /&gt;
    conn.close();&lt;br /&gt;
  }&lt;br /&gt;
  private static Connection getConnection() throws Exception {&lt;br /&gt;
    Class.forName(&amp;quot;org.hsqldb.jdbcDriver&amp;quot;);&lt;br /&gt;
    String url = &amp;quot;jdbc:hsqldb:mem:data/tutorial&amp;quot;;&lt;br /&gt;
    return DriverManager.getConnection(url, &amp;quot;sa&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Determining If a Database Supports Transactions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DatabaseMetaData;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String driverName = &amp;quot;com.jnetdirect.jsql.JSQLDriver&amp;quot;;&lt;br /&gt;
    Class.forName(driverName);&lt;br /&gt;
    String serverName = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
    String portNumber = &amp;quot;1433&amp;quot;;&lt;br /&gt;
    String mydatabase = serverName + &amp;quot;:&amp;quot; + portNumber;&lt;br /&gt;
    String url = &amp;quot;jdbc:JSQLConnect://&amp;quot; + mydatabase;&lt;br /&gt;
    String username = &amp;quot;username&amp;quot;;&lt;br /&gt;
    String password = &amp;quot;password&amp;quot;;&lt;br /&gt;
    Connection connection = DriverManager.getConnection(url, username, password);&lt;br /&gt;
    DatabaseMetaData dmd = connection.getMetaData();&lt;br /&gt;
    if (dmd.supportsTransactions()) {&lt;br /&gt;
      // Transactions are supported&lt;br /&gt;
    } else {&lt;br /&gt;
      // Transactions are not supported&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Disable auto commit mode in JDBC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception{&lt;br /&gt;
    Connection connection = null;&lt;br /&gt;
    connection.setAutoCommit(false);&lt;br /&gt;
    connection.rumit();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  If database support transaction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DatabaseMetaData;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  private static final String DRIVER = &amp;quot;com.mysql.jdbc.Driver&amp;quot;;&lt;br /&gt;
  private static final String URL = &amp;quot;jdbc:mysql://localhost/yourDatabase&amp;quot;;&lt;br /&gt;
  private static final String USERNAME = &amp;quot;root&amp;quot;;&lt;br /&gt;
  private static final String PASSWORD = &amp;quot;&amp;quot;;&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Class.forName(DRIVER);&lt;br /&gt;
    Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);&lt;br /&gt;
    DatabaseMetaData metadata = connection.getMetaData();&lt;br /&gt;
    boolean isSupportTransaction = metadata.supportsTransactions();&lt;br /&gt;
    System.out.println(&amp;quot;Support Transaction = &amp;quot; + isSupportTransaction);&lt;br /&gt;
    connection.close();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  JDBC Transaction Isolation Levels ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Connection.setTransactionIsolation (level)&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
JDBC Defined ConstantDescriptionTRANSACTION_READ_UNCOMMITTEDAllows dirty reads, non-repeatable reads, and phantom reads to occur.TRANSACTION_READ_COMMITTEDEnsures only committed data can be read.TRANSACTION_REPEATABLE_READIs close to being &amp;quot;serializable,&amp;quot; however, &amp;quot;phantom&amp;quot; reads are possible.TRANSACTION_SERIALIZABLEDirty reads, non-repeatable reads, and phantom reads are prevented. Serializable.&lt;br /&gt;
&amp;lt;p&amp;gt;A &amp;quot;phantom&amp;quot; read occurs when one transaction reads all rows that satisfy a WHERE condition, and a second transaction inserts a row that satisfies that WHERE condition, the first transaction then rereads for the same condition, retrieving the additional &amp;quot;phantom&amp;quot; row in the second read.&lt;br /&gt;
(from book: JDBC Recipes A Problem-Solution Approach)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, JDBC defines an additional constant, TRANSACTION_NONE, which is used to indicate that the driver does not support transactions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Rollback to savepoint ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.Savepoint;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Connection conn = getConnection();&lt;br /&gt;
    conn.setAutoCommit(false);&lt;br /&gt;
    Statement st = conn.createStatement();&lt;br /&gt;
    st.executeUpdate(&amp;quot;create table survey (id int,myURL CHAR);&amp;quot;);&lt;br /&gt;
    st.executeUpdate(&amp;quot;insert into survey(id) values(01)&amp;quot;);&lt;br /&gt;
    st.executeUpdate(&amp;quot;insert into survey(id) values(02)&amp;quot;);&lt;br /&gt;
    Savepoint mySavepoint = conn.setSavepoint(&amp;quot;MYSAVEPOINT&amp;quot;);&lt;br /&gt;
    st.executeUpdate(&amp;quot;insert into survey(id) values(03)&amp;quot;);&lt;br /&gt;
    conn.rumit();&lt;br /&gt;
    &lt;br /&gt;
    conn.rollback (mySavepoint);&lt;br /&gt;
    &lt;br /&gt;
    st.close();&lt;br /&gt;
    conn.close();&lt;br /&gt;
  }&lt;br /&gt;
  private static Connection getConnection() throws Exception {&lt;br /&gt;
    Class.forName(&amp;quot;org.hsqldb.jdbcDriver&amp;quot;);&lt;br /&gt;
    String url = &amp;quot;jdbc:hsqldb:mem:data/tutorial&amp;quot;;&lt;br /&gt;
    return DriverManager.getConnection(url, &amp;quot;sa&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;Connection.releaseSavepoint() is used for removing a savepoint from a transaction.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;A rollback implicitly releases any savepoints that were defined after it.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Once a transaction is committed or completely rolled back, all defined savepoints are released.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;Once a savepoint has been removed, any reference to it will cause a SQLException to be thrown.&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;It is also possible to nest savepoints within transactions.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Transaction Isolation Level supported ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DatabaseMetaData;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Connection conn = getConnection();&lt;br /&gt;
    DatabaseMetaData dbMd = conn.getMetaData();&lt;br /&gt;
    if (dbMd.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED)) {&lt;br /&gt;
      System.out.println(&amp;quot;Transaction Isolation level &amp;quot;&lt;br /&gt;
          + &amp;quot;TRANSACTION_READ_COMMITTED is supported.&amp;quot;);&lt;br /&gt;
      conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);&lt;br /&gt;
    }&lt;br /&gt;
    conn.close();&lt;br /&gt;
  }&lt;br /&gt;
  private static Connection getConnection() throws Exception {&lt;br /&gt;
    Class.forName(&amp;quot;org.hsqldb.jdbcDriver&amp;quot;);&lt;br /&gt;
    String url = &amp;quot;jdbc:hsqldb:mem:data/tutorial&amp;quot;;&lt;br /&gt;
    return DriverManager.getConnection(url, &amp;quot;sa&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Turning On Autocommit Mode ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.ResultSet;&lt;br /&gt;
import java.sql.ResultSetMetaData;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Connection conn = getHSQLConnection();&lt;br /&gt;
    &lt;br /&gt;
    conn.setAutoCommit(true);&lt;br /&gt;
    &lt;br /&gt;
    Statement st = conn.createStatement();&lt;br /&gt;
    st.executeUpdate(&amp;quot;create table survey (id int,name varchar(30));&amp;quot;);&lt;br /&gt;
    st.executeUpdate(&amp;quot;insert into survey (id,name ) values (1,&amp;quot;nameValue&amp;quot;)&amp;quot;);&lt;br /&gt;
    st = conn.createStatement();&lt;br /&gt;
    ResultSet rs = st.executeQuery(&amp;quot;SELECT * FROM survey&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
    ResultSetMetaData rsMetaData = rs.getMetaData();&lt;br /&gt;
    int numberOfColumns = rsMetaData.getColumnCount();&lt;br /&gt;
    System.out.println(&amp;quot;resultSet MetaData column Count=&amp;quot; + numberOfColumns);&lt;br /&gt;
    rs.close();&lt;br /&gt;
    st.close();&lt;br /&gt;
    conn.close();&lt;br /&gt;
  }&lt;br /&gt;
  private static Connection getHSQLConnection() throws Exception {&lt;br /&gt;
    Class.forName(&amp;quot;org.hsqldb.jdbcDriver&amp;quot;);&lt;br /&gt;
    String url = &amp;quot;jdbc:hsqldb:mem:data/tutorial&amp;quot;;&lt;br /&gt;
    return DriverManager.getConnection(url, &amp;quot;sa&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using a database transaction with JDBC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.SQLException;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Connection connection = null;&lt;br /&gt;
    try {&lt;br /&gt;
      Class.forName(&amp;quot;com.microsoft.sqlserver.jdbc.SQLServerDriver&amp;quot;);&lt;br /&gt;
      connection = DriverManager.getConnection(&amp;quot;jdbc:sqlserver://MYSERVER;databaseName=MYDATABASE&amp;quot;,&lt;br /&gt;
          &amp;quot;USERID&amp;quot;, &amp;quot;PASSWORD&amp;quot;);&lt;br /&gt;
      connection.setAutoCommit(false);&lt;br /&gt;
      Statement statement = connection.createStatement();&lt;br /&gt;
      statement.executeUpdate(&amp;quot;UPDATE Table1 SET Value = 1 WHERE Name = &amp;quot;foo&amp;quot;&amp;quot;);&lt;br /&gt;
      statement.executeUpdate(&amp;quot;UPDATE Table2 SET Value = 2 WHERE Name = &amp;quot;bar&amp;quot;&amp;quot;);&lt;br /&gt;
      connection.rumit();&lt;br /&gt;
    } catch (SQLException ex) {&lt;br /&gt;
      connection.rollback();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using a Transaction in JDBC with Exception catching ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.ResultSet;&lt;br /&gt;
import java.sql.ResultSetMetaData;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Connection conn = getHSQLConnection();&lt;br /&gt;
    &lt;br /&gt;
    conn.setAutoCommit(false);&lt;br /&gt;
    Statement st = conn.createStatement();&lt;br /&gt;
    try {&lt;br /&gt;
      st.executeUpdate(&amp;quot;create table survey (id int,name varchar(30));&amp;quot;);&lt;br /&gt;
      st.executeUpdate(&amp;quot;insert into survey (id,name ) values (1,&amp;quot;nameValue&amp;quot;)&amp;quot;);&lt;br /&gt;
      st.executeUpdate(&amp;quot;insert into survey (id,name ) values (2,&amp;quot;nameValue&amp;quot;)&amp;quot;);&lt;br /&gt;
       // commits all the transactions&lt;br /&gt;
       conn.rumit();&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception e){&lt;br /&gt;
       //cancel (roll back) all the transactions&lt;br /&gt;
       conn.rollback();&lt;br /&gt;
       // to see what went wrong&lt;br /&gt;
       e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    st = conn.createStatement();&lt;br /&gt;
    ResultSet rs = st.executeQuery(&amp;quot;SELECT * FROM survey&amp;quot;);&lt;br /&gt;
    outputResultSet(rs);&lt;br /&gt;
    rs.close();&lt;br /&gt;
    st.close();&lt;br /&gt;
    conn.close();&lt;br /&gt;
  }&lt;br /&gt;
  private static void outputResultSet(ResultSet rs) throws Exception {&lt;br /&gt;
    ResultSetMetaData rsMetaData = rs.getMetaData();&lt;br /&gt;
    int numberOfColumns = rsMetaData.getColumnCount();&lt;br /&gt;
    for (int i = 1; i &amp;lt; numberOfColumns + 1; i++) {&lt;br /&gt;
      String columnName = rsMetaData.getColumnName(i);&lt;br /&gt;
      System.out.print(columnName + &amp;quot;   &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println();&lt;br /&gt;
    System.out.println(&amp;quot;----------------------&amp;quot;);&lt;br /&gt;
    while (rs.next()) {&lt;br /&gt;
      for (int i = 1; i &amp;lt; numberOfColumns + 1; i++) {&lt;br /&gt;
        System.out.print(rs.getString(i) + &amp;quot;   &amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      System.out.println();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private static Connection getHSQLConnection() throws Exception {&lt;br /&gt;
    Class.forName(&amp;quot;org.hsqldb.jdbcDriver&amp;quot;);&lt;br /&gt;
    String url = &amp;quot;jdbc:hsqldb:mem:data/tutorial&amp;quot;;&lt;br /&gt;
    return DriverManager.getConnection(url, &amp;quot;sa&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;ID   NAME   &lt;br /&gt;
----------------------&lt;br /&gt;
1   nameValue   &lt;br /&gt;
2   nameValue&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>