这个你可以写成存储过程的,jdbc可以调用存储过程的,或者你可以使用EJB,EJB可以使用事务处理的,我知道的就这么多了,请高手回答

解决方案 »

  1.   

    /*
     * @(#)Graph.java       1.7 98/07/17
     *
     * Copyright 1997, 1998, 1999 Sun Microsystems, Inc. All Rights Reserved.
     *
     * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
     * modify and redistribute this software in source and binary code form,
     * provided that i) this copyright notice and license appear on all copies of
     * the software; and ii) Licensee does not utilize the software in a manner
     * which is disparaging to Sun.
     *
     * This software is provided "AS IS," without a warranty of any kind. ALL
     * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
     * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
     * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
     * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
     * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
     * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
     * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
     * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
     * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
     * POSSIBILITY OF SUCH DAMAGES.
     *
     * This software is not designed or intended for use in on-line control of
     * aircraft, air traffic, aircraft navigation or aircraft communications; or in
     * the design, construction, operation or maintenance of any nuclear
     * facility. Licensee represents and warrants that it will not use or
     * redistribute the Software for such purposes.
     */import java.sql.*;
         
    public class TransactionPairs { public static void main(String args[]) {
      
    String url = "jdbc:mySubprotocol:myDataSource";
    Connection con = null;
    Statement stmt;
    PreparedStatement updateSales;
    PreparedStatement updateTotal;
    String updateString = "update COFFEES " +
    "set SALES = ? where COF_NAME like ?";

    String updateStatement = "update COFFEES " +
    "set TOTAL = TOTAL + ? where COF_NAME like ?";
    String query = "select COF_NAME, SALES, TOTAL from COFFEES";

    try {
    Class.forName("myDriver.ClassName"); } catch(java.lang.ClassNotFoundException e) {
    System.err.print("ClassNotFoundException: "); 
    System.err.println(e.getMessage());
    } try {

    con = DriverManager.getConnection(url, 
     "myLogin", "myPassword");

    updateSales = con.prepareStatement(updateString);
    updateTotal = con.prepareStatement(updateStatement);
    int [] salesForWeek = {175, 150, 60, 155, 90};
    String [] coffees = {"Colombian", "French_Roast", 
    "Espresso", "Colombian_Decaf",
    "French_Roast_Decaf"};
    int len = coffees.length;
    con.setAutoCommit(false);
    for (int i = 0; i < len; i++) {
    updateSales.setInt(1, salesForWeek[i]);
    updateSales.setString(2, coffees[i]);
    updateSales.executeUpdate();

    updateTotal.setInt(1, salesForWeek[i]);
    updateTotal.setString(2, coffees[i]);
    updateTotal.executeUpdate();
    con.commit();
    }

    con.setAutoCommit(true);

    updateSales.close();
    updateTotal.close();

    stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);

    while (rs.next()) {
    String c = rs.getString("COF_NAME");
    int s = rs.getInt("SALES");
    int t = rs.getInt("TOTAL");
    System.out.println(c + "     " +  s + "    " + t);
    }

    stmt.close();
    con.close();

    } catch(SQLException ex) {
    System.err.println("SQLException: " + ex.getMessage());
    if (con != null) {
    try {
    System.err.print("Transaction is being ");
    System.err.println("rolled back");
    con.rollback();
    } catch(SQLException excep) {
    System.err.print("SQLException: ");
    System.err.println(excep.getMessage());
    }
    }
    }
    }
    }