<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDatabase_SQL_JDBC%2FTransaction</id>
		<title>Java/Database SQL JDBC/Transaction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FDatabase_SQL_JDBC%2FTransaction"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Transaction&amp;action=history"/>
		<updated>2026-04-21T14:57:01Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Transaction&amp;diff=6989&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Transaction&amp;diff=6989&amp;oldid=prev"/>
				<updated>2010-06-01T06:35:07Z</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;Версия 06:35, 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://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Transaction&amp;diff=6988&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Database_SQL_JDBC/Transaction&amp;diff=6988&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</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;== Demo MySql 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;
 &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 MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Connection connection = null;&lt;br /&gt;
    Statement statement = null;&lt;br /&gt;
    try {&lt;br /&gt;
      Class.forName(&amp;quot;org.gjt.mm.mysql.Driver&amp;quot;).newInstance();&lt;br /&gt;
      String url = &amp;quot;jdbc:mysql://localhost/hrapp&amp;quot;;&lt;br /&gt;
      connection = DriverManager.getConnection(url, &amp;quot;username&amp;quot;, &amp;quot;password&amp;quot;);&lt;br /&gt;
      statement = connection.createStatement();&lt;br /&gt;
      String employees1SQL = &amp;quot;UPDATE employees SET &amp;quot; + &amp;quot;num_dependants = 4 &amp;quot;&lt;br /&gt;
          + &amp;quot;WHERE employee_id = 123456&amp;quot;;&lt;br /&gt;
      statement.executeUpdate(employees1SQL);&lt;br /&gt;
      String employees2SQL = &amp;quot;UPDATE employees SET &amp;quot; + &amp;quot;num_dependants = 4 &amp;quot;&lt;br /&gt;
          + &amp;quot;WHERE employee_id = 123457&amp;quot;;&lt;br /&gt;
      statement.executeUpdate(employees2SQL);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    } finally {&lt;br /&gt;
      if (statement != null) {&lt;br /&gt;
        try {&lt;br /&gt;
          statement.close();&lt;br /&gt;
        } catch (SQLException e) {&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (connection != null) {&lt;br /&gt;
        try {&lt;br /&gt;
          connection.close();&lt;br /&gt;
        } catch (SQLException e) {&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;/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 ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
MySQL and Java Developer&amp;quot;s Guide&lt;br /&gt;
Mark Matthews, Jim Cole, Joseph D. Gradecki&lt;br /&gt;
Publisher Wiley,&lt;br /&gt;
Published February 2003, &lt;br /&gt;
ISBN 0471269239&lt;br /&gt;
*/&lt;br /&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.SQLException;&lt;br /&gt;
import java.sql.Statement;&lt;br /&gt;
import java.sql.Timestamp;&lt;br /&gt;
public class Transaction {&lt;br /&gt;
  Connection connection;&lt;br /&gt;
  public Transaction() {&lt;br /&gt;
    try {&lt;br /&gt;
      Class.forName(&amp;quot;com.mysql.jdbc.Driver&amp;quot;).newInstance();&lt;br /&gt;
      connection = DriverManager&lt;br /&gt;
          .getConnection(&amp;quot;jdbc:mysql://192.168.1.25/accounts?user=spider&amp;amp;password=spider&amp;quot;);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.err.println(&amp;quot;Unable to find and load driver&amp;quot;);&lt;br /&gt;
      System.exit(1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void doWork() {&lt;br /&gt;
    try {&lt;br /&gt;
      java.util.Date now = new java.util.Date();&lt;br /&gt;
      connection.setAutoCommit(false);&lt;br /&gt;
      Statement statement = connection.createStatement(&lt;br /&gt;
          ResultSet.TYPE_SCROLL_INSENSITIVE,&lt;br /&gt;
          ResultSet.CONCUR_UPDATABLE);&lt;br /&gt;
      ResultSet rs = statement&lt;br /&gt;
          .executeQuery(&amp;quot;SELECT * FROM acc_add WHERE acc_id = 1034055 and ts = 0&amp;quot;);&lt;br /&gt;
      // set old row ts = current time&lt;br /&gt;
      rs.next();&lt;br /&gt;
      rs.updateTimestamp(&amp;quot;ts&amp;quot;, new Timestamp(now.getTime()));&lt;br /&gt;
      rs.updateRow();&lt;br /&gt;
      rs.moveToInsertRow();&lt;br /&gt;
      rs.updateInt(&amp;quot;add_id&amp;quot;, rs.getInt(&amp;quot;add_id&amp;quot;));&lt;br /&gt;
      rs.updateInt(&amp;quot;acc_id&amp;quot;, rs.getInt(&amp;quot;acc_id&amp;quot;));&lt;br /&gt;
      rs.updateString(&amp;quot;name&amp;quot;, rs.getString(&amp;quot;name&amp;quot;));&lt;br /&gt;
      rs.updateString(&amp;quot;address1&amp;quot;, &amp;quot;555 East South Street&amp;quot;);&lt;br /&gt;
      rs.updateString(&amp;quot;address2&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      rs.updateString(&amp;quot;address3&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      rs.updateString(&amp;quot;city&amp;quot;, rs.getString(&amp;quot;city&amp;quot;));&lt;br /&gt;
      rs.updateString(&amp;quot;state&amp;quot;, rs.getString(&amp;quot;state&amp;quot;));&lt;br /&gt;
      rs.updateString(&amp;quot;zip&amp;quot;, rs.getString(&amp;quot;zip&amp;quot;));&lt;br /&gt;
      rs.updateTimestamp(&amp;quot;ts&amp;quot;, new Timestamp(0));&lt;br /&gt;
      rs.updateTimestamp(&amp;quot;act_ts&amp;quot;, new Timestamp(now.getTime()));&lt;br /&gt;
      rs.insertRow();&lt;br /&gt;
      connection.rumit();&lt;br /&gt;
      rs.close();&lt;br /&gt;
      statement.close();&lt;br /&gt;
      connection.close();&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      try {&lt;br /&gt;
        connection.rollback();&lt;br /&gt;
      } catch (SQLException error) {&lt;br /&gt;
      }&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Transaction trans = new Transaction();&lt;br /&gt;
    trans.doWork();&lt;br /&gt;
  }&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;
== Test 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;
 &lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DatabaseMetaData;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
import java.sql.SQLException;&lt;br /&gt;
public class TestSupportsTransactions {&lt;br /&gt;
  public static boolean supportsTransactions(Connection conn) throws SQLException {&lt;br /&gt;
    if (conn == null) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    DatabaseMetaData dbMetaData = conn.getMetaData();&lt;br /&gt;
    if (dbMetaData == null) {&lt;br /&gt;
      // metadata is not supported&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    return dbMetaData.supportsTransactions();&lt;br /&gt;
  }&lt;br /&gt;
  public static Connection getOracleConnection() throws Exception {&lt;br /&gt;
    String driver = &amp;quot;oracle.jdbc.driver.OracleDriver&amp;quot;;&lt;br /&gt;
    String url = &amp;quot;jdbc:oracle:thin:@localhost:1521:scorpian&amp;quot;;&lt;br /&gt;
    String username = &amp;quot;userName&amp;quot;;&lt;br /&gt;
    String password = &amp;quot;pass&amp;quot;;&lt;br /&gt;
    Class.forName(driver); // load Oracle driver&lt;br /&gt;
    Connection conn = DriverManager.getConnection(url, username, password);&lt;br /&gt;
    return conn;&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args)throws Exception {&lt;br /&gt;
    Connection conn = getOracleConnection();&lt;br /&gt;
    try {&lt;br /&gt;
      System.out.println(&amp;quot;conn=&amp;quot; + conn);&lt;br /&gt;
      System.out.println(&amp;quot;Transaction Support:&amp;quot; + supportsTransactions(conn));&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
      System.exit(1);&lt;br /&gt;
    } finally {&lt;br /&gt;
      try {&lt;br /&gt;
        conn.close();&lt;br /&gt;
      } catch (SQLException e) {&lt;br /&gt;
        e.printStackTrace();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&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;
== Transaction Info ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002. All rights&lt;br /&gt;
 * reserved. Software written by Ian F. Darwin and others. $Id: LICENSE,v 1.8&lt;br /&gt;
 * 2004/02/09 03:33:38 ian Exp $&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright notice,&lt;br /&gt;
 * this list of conditions and the following disclaimer. 2. Redistributions in&lt;br /&gt;
 * binary form must reproduce the above copyright notice, this list of&lt;br /&gt;
 * conditions and the following disclaimer in the documentation and/or other&lt;br /&gt;
 * materials provided with the distribution.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot; AND ANY&lt;br /&gt;
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED&lt;br /&gt;
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE&lt;br /&gt;
 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY&lt;br /&gt;
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;br /&gt;
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;&lt;br /&gt;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND&lt;br /&gt;
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&lt;br /&gt;
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee cup&amp;quot;&lt;br /&gt;
 * logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java&lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
import java.sql.Connection;&lt;br /&gt;
import java.sql.DriverManager;&lt;br /&gt;
public class TXInfo {&lt;br /&gt;
  public static void main(String[] a) throws Exception {&lt;br /&gt;
    Class.forName(&amp;quot;sun.jdbc.odbc.JdbcOdbcDriver&amp;quot;);&lt;br /&gt;
    Connection con = DriverManager.getConnection(&amp;quot;jdbc:odbc:MusicVideo&amp;quot;);&lt;br /&gt;
    int tx = con.getMetaData().getDefaultTransactionIsolation();&lt;br /&gt;
    String txtxt = null;&lt;br /&gt;
    switch (tx) {&lt;br /&gt;
    case Connection.TRANSACTION_NONE:&lt;br /&gt;
      txtxt = &amp;quot;TRANSACTION_NONE&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case Connection.TRANSACTION_READ_COMMITTED:&lt;br /&gt;
      txtxt = &amp;quot;TRANSACTION_READ_COMMITTED&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case Connection.TRANSACTION_READ_UNCOMMITTED:&lt;br /&gt;
      txtxt = &amp;quot;TRANSACTION_READ_UNCOMMITTED&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case Connection.TRANSACTION_REPEATABLE_READ:&lt;br /&gt;
      txtxt = &amp;quot;TRANSACTION_REPEATABLE_READ&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case Connection.TRANSACTION_SERIALIZABLE:&lt;br /&gt;
      txtxt = &amp;quot;TRANSACTION_SERIALIZABLE&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      txtxt = &amp;quot;UNKNOWN!!&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(txtxt);&lt;br /&gt;
    con.setTransactionIsolation(tx);&lt;br /&gt;
    System.out.println(&amp;quot;Done&amp;quot;);&lt;br /&gt;
    con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);&lt;br /&gt;
    System.out.println(&amp;quot;TX is now &amp;quot; + con.getTransactionIsolation());&lt;br /&gt;
  }&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;
== Transaction Pairs ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
Copyright 2003 Sun Microsystems, Inc. ALL RIGHTS RESERVED.&lt;br /&gt;
Use of this software is authorized pursuant to the terms of the license found at&lt;br /&gt;
http://developer.java.sun.ru/berkeley_license.html.&lt;br /&gt;
Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.  &lt;br /&gt;
Redistribution and use in source and binary forms, with or without modification,&lt;br /&gt;
are permitted provided that the following conditions are met: &lt;br /&gt;
- Redistribution of source code must retain the above copyright notice, &lt;br /&gt;
this list of conditions and the following disclaimer.&lt;br /&gt;
- Redistribution in binary form must reproduce the above copyright notice,&lt;br /&gt;
this list of conditions and the following disclaimer in the documentation&lt;br /&gt;
and/or other materials provided with the distribution.&lt;br /&gt;
Neither the name of Sun Microsystems, Inc. or the names of contributors may &lt;br /&gt;
be used to endorse or promote products derived from this software without&lt;br /&gt;
specific prior written permission.&lt;br /&gt;
This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind.  &lt;br /&gt;
ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING&lt;br /&gt;
ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR&lt;br /&gt;
NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICORSYSTEMS, INC. (&amp;quot;SUN&amp;quot;)&lt;br /&gt;
AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE&lt;br /&gt;
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST&lt;br /&gt;
REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, &lt;br /&gt;
INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF&lt;br /&gt;
LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN&lt;br /&gt;
IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
You acknowledge that this software is not designed, licensed or intended for&lt;br /&gt;
use in the design, construction, operation or maintenance of any nuclear&lt;br /&gt;
facility.&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright 2003 Sun Microsystems, Inc.  ALL RIGHTS RESERVED.&lt;br /&gt;
 * Use of this software is authorized pursuant to the terms of the license found at&lt;br /&gt;
 * http://developer.java.sun.ru/berkeley_license.html.&lt;br /&gt;
 */ &lt;br /&gt;
import java.sql.*;&lt;br /&gt;
public class TransactionPairs {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    String url = &amp;quot;jdbc:mySubprotocol:myDataSource&amp;quot;;&lt;br /&gt;
    Connection con = null;&lt;br /&gt;
    Statement stmt;&lt;br /&gt;
    PreparedStatement updateSales;&lt;br /&gt;
    PreparedStatement updateTotal;&lt;br /&gt;
    String updateString = &amp;quot;update COFFEES &amp;quot; +&lt;br /&gt;
            &amp;quot;set SALES = ? where COF_NAME = ?&amp;quot;;&lt;br /&gt;
    String updateStatement = &amp;quot;update COFFEES &amp;quot; +&lt;br /&gt;
        &amp;quot;set TOTAL = TOTAL + ? where COF_NAME = ?&amp;quot;;&lt;br /&gt;
    String query = &amp;quot;select COF_NAME, SALES, TOTAL from COFFEES&amp;quot;;&lt;br /&gt;
    try {&lt;br /&gt;
      Class.forName(&amp;quot;myDriver.ClassName&amp;quot;);&lt;br /&gt;
    } catch(java.lang.ClassNotFoundException e) {&lt;br /&gt;
      System.err.print(&amp;quot;ClassNotFoundException: &amp;quot;);&lt;br /&gt;
      System.err.println(e.getMessage());&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
      con = DriverManager.getConnection(url,&lt;br /&gt;
                   &amp;quot;myLogin&amp;quot;, &amp;quot;myPassword&amp;quot;);&lt;br /&gt;
      updateSales = con.prepareStatement(updateString);&lt;br /&gt;
      updateTotal = con.prepareStatement(updateStatement);&lt;br /&gt;
      int [] salesForWeek = {175, 150, 60, 155, 90};&lt;br /&gt;
      String [] coffees = {&amp;quot;Colombian&amp;quot;, &amp;quot;French_Roast&amp;quot;,&lt;br /&gt;
                &amp;quot;Espresso&amp;quot;, &amp;quot;Colombian_Decaf&amp;quot;,&lt;br /&gt;
                &amp;quot;French_Roast_Decaf&amp;quot;};&lt;br /&gt;
      int len = coffees.length;&lt;br /&gt;
      con.setAutoCommit(false);&lt;br /&gt;
      for (int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
        updateSales.setInt(1, salesForWeek[i]);&lt;br /&gt;
        updateSales.setString(2, coffees[i]);&lt;br /&gt;
        updateSales.executeUpdate();&lt;br /&gt;
        updateTotal.setInt(1, salesForWeek[i]);&lt;br /&gt;
        updateTotal.setString(2, coffees[i]);&lt;br /&gt;
        updateTotal.executeUpdate();&lt;br /&gt;
        con.rumit();&lt;br /&gt;
      }&lt;br /&gt;
      con.setAutoCommit(true);&lt;br /&gt;
      updateSales.close();&lt;br /&gt;
      updateTotal.close();&lt;br /&gt;
      stmt = con.createStatement();&lt;br /&gt;
      ResultSet rs = stmt.executeQuery(query);&lt;br /&gt;
      while (rs.next()) {&lt;br /&gt;
        String c = rs.getString(&amp;quot;COF_NAME&amp;quot;);&lt;br /&gt;
        int s = rs.getInt(&amp;quot;SALES&amp;quot;);&lt;br /&gt;
        int t = rs.getInt(&amp;quot;TOTAL&amp;quot;);&lt;br /&gt;
        System.out.println(c + &amp;quot;     &amp;quot; +  s + &amp;quot;    &amp;quot; + t);&lt;br /&gt;
      }&lt;br /&gt;
      stmt.close();&lt;br /&gt;
      con.close();&lt;br /&gt;
    } catch(SQLException ex) {&lt;br /&gt;
      System.err.println(&amp;quot;SQLException: &amp;quot; + ex.getMessage());&lt;br /&gt;
      if (con != null) {&lt;br /&gt;
        try {&lt;br /&gt;
          System.err.print(&amp;quot;Transaction is being &amp;quot;);&lt;br /&gt;
          System.err.println(&amp;quot;rolled back&amp;quot;);&lt;br /&gt;
          con.rollback();&lt;br /&gt;
        } catch(SQLException excep) {&lt;br /&gt;
          System.err.print(&amp;quot;SQLException: &amp;quot;);&lt;br /&gt;
          System.err.println(excep.getMessage());&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;/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;
== Transaction Pairs 2 ==&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;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions are met:&lt;br /&gt;
 *&lt;br /&gt;
 * -Redistribution of source code must retain the above copyright notice, this&lt;br /&gt;
 *  list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 * -Redistribution in binary form must reproduce the above copyright notice,&lt;br /&gt;
 *  this list of conditions and the following disclaimer in the documentation&lt;br /&gt;
 *  and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * Neither the name of Sun Microsystems, Inc. or the names of contributors may&lt;br /&gt;
 * be used to endorse or promote products derived from this software without&lt;br /&gt;
 * specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING&lt;br /&gt;
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE&lt;br /&gt;
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. (&amp;quot;SUN&amp;quot;)&lt;br /&gt;
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE&lt;br /&gt;
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST&lt;br /&gt;
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,&lt;br /&gt;
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY&lt;br /&gt;
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,&lt;br /&gt;
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 *&lt;br /&gt;
 * You acknowledge that this software is not designed, licensed or intended&lt;br /&gt;
 * for use in the design, construction, operation or maintenance of any&lt;br /&gt;
 * nuclear facility.&lt;br /&gt;
 */&lt;br /&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 TransactionPairs {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    String url = &amp;quot;jdbc:mySubprotocol:myDataSource&amp;quot;;&lt;br /&gt;
    Connection con = null;&lt;br /&gt;
    Statement stmt;&lt;br /&gt;
    PreparedStatement updateSales;&lt;br /&gt;
    PreparedStatement updateTotal;&lt;br /&gt;
    String updateString = &amp;quot;update COFFEES &amp;quot;&lt;br /&gt;
        + &amp;quot;set SALES = ? where COF_NAME like ?&amp;quot;;&lt;br /&gt;
    String updateStatement = &amp;quot;update COFFEES &amp;quot;&lt;br /&gt;
        + &amp;quot;set TOTAL = TOTAL + ? where COF_NAME like ?&amp;quot;;&lt;br /&gt;
    String query = &amp;quot;select COF_NAME, SALES, TOTAL from COFFEES&amp;quot;;&lt;br /&gt;
    try {&lt;br /&gt;
      Class.forName(&amp;quot;myDriver.ClassName&amp;quot;);&lt;br /&gt;
    } catch (java.lang.ClassNotFoundException e) {&lt;br /&gt;
      System.err.print(&amp;quot;ClassNotFoundException: &amp;quot;);&lt;br /&gt;
      System.err.println(e.getMessage());&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
      con = DriverManager.getConnection(url, &amp;quot;myLogin&amp;quot;, &amp;quot;myPassword&amp;quot;);&lt;br /&gt;
      updateSales = con.prepareStatement(updateString);&lt;br /&gt;
      updateTotal = con.prepareStatement(updateStatement);&lt;br /&gt;
      int[] salesForWeek = { 175, 150, 60, 155, 90 };&lt;br /&gt;
      String[] coffees = { &amp;quot;Colombian&amp;quot;, &amp;quot;French_Roast&amp;quot;, &amp;quot;Espresso&amp;quot;,&lt;br /&gt;
          &amp;quot;Colombian_Decaf&amp;quot;, &amp;quot;French_Roast_Decaf&amp;quot; };&lt;br /&gt;
      int len = coffees.length;&lt;br /&gt;
      con.setAutoCommit(false);&lt;br /&gt;
      for (int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
        updateSales.setInt(1, salesForWeek[i]);&lt;br /&gt;
        updateSales.setString(2, coffees[i]);&lt;br /&gt;
        updateSales.executeUpdate();&lt;br /&gt;
        updateTotal.setInt(1, salesForWeek[i]);&lt;br /&gt;
        updateTotal.setString(2, coffees[i]);&lt;br /&gt;
        updateTotal.executeUpdate();&lt;br /&gt;
        con.rumit();&lt;br /&gt;
      }&lt;br /&gt;
      con.setAutoCommit(true);&lt;br /&gt;
      updateSales.close();&lt;br /&gt;
      updateTotal.close();&lt;br /&gt;
      stmt = con.createStatement();&lt;br /&gt;
      ResultSet rs = stmt.executeQuery(query);&lt;br /&gt;
      while (rs.next()) {&lt;br /&gt;
        String c = rs.getString(&amp;quot;COF_NAME&amp;quot;);&lt;br /&gt;
        int s = rs.getInt(&amp;quot;SALES&amp;quot;);&lt;br /&gt;
        int t = rs.getInt(&amp;quot;TOTAL&amp;quot;);&lt;br /&gt;
        System.out.println(c + &amp;quot;     &amp;quot; + s + &amp;quot;    &amp;quot; + t);&lt;br /&gt;
      }&lt;br /&gt;
      stmt.close();&lt;br /&gt;
      con.close();&lt;br /&gt;
    } catch (SQLException ex) {&lt;br /&gt;
      System.err.println(&amp;quot;SQLException: &amp;quot; + ex.getMessage());&lt;br /&gt;
      if (con != null) {&lt;br /&gt;
        try {&lt;br /&gt;
          System.err.print(&amp;quot;Transaction is being &amp;quot;);&lt;br /&gt;
          System.err.println(&amp;quot;rolled back&amp;quot;);&lt;br /&gt;
          con.rollback();&lt;br /&gt;
        } catch (SQLException excep) {&lt;br /&gt;
          System.err.print(&amp;quot;SQLException: &amp;quot;);&lt;br /&gt;
          System.err.println(excep.getMessage());&lt;br /&gt;
        }&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;/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;
 &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;
}&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;/div&gt;</summary>
			</entry>

	</feed>