package com.officelog;import java.sql.*;
import java.io.*;
public class DbADO { Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
public DbADO() { }
public boolean connect()
{
boolean isConnect=false;
try
{
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
String url="jdbc:db2:OFFLOG";
String dbuser="wsp";
String dbpassword="1024320fx";
conn= DriverManager.getConnection(url,dbuser,dbpassword);
if (conn!=null)
isConnect=true;
}
catch(Exception e)
{
System.out.println("connect to database failed");
e.printStackTrace();
}
return isConnect;
}
public void close()
{
try{
if(rs!=null)
rs.close();
rs=null;
if(stmt!=null)
stmt.close();
stmt=null;
if(conn!=null)
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
conn = null;
}
}
public ResultSet select(String sql)
{
try{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
e.printStackTrace();
}
return rs;
}
public int update_insert(String sql)
{
int num=0;
try{
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(Exception e)
{
e.printStackTrace();
}
return num;
}
public int total(String sql)
{
int num=0;
try{
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next())
{
num=rs.getInt(1);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return num;
} }
import java.io.*;
public class DbADO { Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
public DbADO() { }
public boolean connect()
{
boolean isConnect=false;
try
{
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
String url="jdbc:db2:OFFLOG";
String dbuser="wsp";
String dbpassword="1024320fx";
conn= DriverManager.getConnection(url,dbuser,dbpassword);
if (conn!=null)
isConnect=true;
}
catch(Exception e)
{
System.out.println("connect to database failed");
e.printStackTrace();
}
return isConnect;
}
public void close()
{
try{
if(rs!=null)
rs.close();
rs=null;
if(stmt!=null)
stmt.close();
stmt=null;
if(conn!=null)
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
conn = null;
}
}
public ResultSet select(String sql)
{
try{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
e.printStackTrace();
}
return rs;
}
public int update_insert(String sql)
{
int num=0;
try{
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(Exception e)
{
e.printStackTrace();
}
return num;
}
public int total(String sql)
{
int num=0;
try{
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next())
{
num=rs.getInt(1);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return num;
} }
import java.util.Properties;
import java.sql.*;/**
* User: Saro
* Date: 2005-4-24
* Time: 17:45:50
*/
public class DBConnectionManager { private static ThreadLocal conn_ThreadLocal=new ThreadLocal();
/* 执行 查询操作 */
public static ResultSet executeFind(String query) {
PreparedStatement pstmt=null;
try {
Connection conn=getConnection();
pstmt=conn.prepareStatement(query);
ResultSet rst=pstmt.executeQuery();
return rst;
} catch (SQLException e) {
throw new DataAccessException("执行查询:[ "+ query + "] 时发生异常",e);
}finally{
closeStatement(pstmt);
}
} /* 执行 写数据库操作 */
public static int execute(String query) {
PreparedStatement pstmt=null;
try {
Connection conn=getConnection();
pstmt=conn.prepareStatement(query);
int rows=pstmt.executeUpdate();
return rows;
} catch (SQLException e) {
rollback();
throw new DataAccessException("执行写数据库操作:[ "+ query + " 时发生异常",e);
}finally{
closeStatement(pstmt);
}
} /* 提交事务 */
public static void commit(){
Connection conn=(Connection)conn_ThreadLocal.get();
if(conn!=null) {
try {
conn.commit();
} catch (SQLException e) {
throw new DataAccessException("提交事务失败",e);
}
}
} /* 回滚事务 */
public static void rollback(){
Connection conn=(Connection)conn_ThreadLocal.get();
if(conn!=null) {
try {
conn.rollback();
} catch (SQLException e) {
throw new DataAccessException("回滚事务失败",e);
}
}
} /* 关闭连接 */
public static void close(){
Connection conn=(Connection)conn_ThreadLocal.get();
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
throw new DataAccessException("无法关闭连接",e);
}
conn_ThreadLocal.set(null);
}
} /* 得到 Connection ,如无,创建一个*/
public static Connection getConnection() {
Connection conn=(Connection)conn_ThreadLocal.get();
if(conn==null){
conn=createConnection();
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
throw new DataAccessException(e);
}
conn_ThreadLocal.set(conn);
}
return conn;
} /* 创建 Connection*/
private static Connection createConnection() {
try {
Properties props=getConnectSetting();
Class.forName((String)props.get("driver"));
return DriverManager.getConnection(
(String)props.get("url"),
(String)props.get("user"),
(String)props.get("password"));
//DataSource ds=.....;
//return ds.getConnection();
} catch (Exception e) {
throw new DataAccessException("无法创建数据库连接",e);
}
} /* 辅助方法,关闭Statement*/
private static void closeStatement(Statement stmt) {
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
System.out.println("Statement:[" + stmt + "] 无法关闭");
}
}
} private static Properties getConnectSetting() {
Properties props=new Properties();
props.put("driver","....");
props.put("url","...");
props.put("user","...");
props.put("password","...");
return props;
}
}
AAADao adao=getAAADao();
adao.execute("some sql");
BBBDao bdao=getBBBDao();
bdao.execute("some sql");
CCCDao cdao=getCCCDao();
cdao.execute("some sql");
DBConnectionManager.commit();
}catch(DataAccessException e){
DBConnectionManager.rollback();
}finally{
DBConnectionManager.close();
}
try{
AAADao adao=getAAADao();
adao.UpdateAAA();
BBBDao bdao=getBBBDao();
bdao.UpdateBBB();
CCCDao cdao=getCCCDao();
cdao.UpdateCCC();
DBConnectionManager.commit();
}finally{
DBConnectionManager.close();
}假设有类AAADao;public class AAADao {
public void UpdateAAA(){
DBConnectionManager.execute("some query");
}
}
其它类似.
把DBConnectionManager.execute()中的rollback();去掉,
在最上层控制回滚.
try{
AAADao adao=getAAADao();
adao.UpdateAAA();
BBBDao bdao=getBBBDao();
bdao.UpdateBBB();
CCCDao cdao=getCCCDao();
cdao.UpdateCCC();
DBConnectionManager.commit();
}catch(Exception ex){
DBConnectionManager.rollback();
throw ex;
}finally{
DBConnectionManager.close();
}