📄 connectionpool.java
字号:
package simon.tools.callback;
/**
* 事务自动获取、提交或回滚、关闭的处理方法类
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class ConnectionPool {
/**
* 一个事务管理模板类,它处理事务。
* 包括得到一个连接(根据操作类型设置其是否自动提交还是手动提交)、
* 回滚、关闭一个连接。真正做到全自动事务操作
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: (c) 2004</p>
* <p>Company: easycon</p>
* @author simon
* @version 1.0
*/
class TransacitonTemplate {
private java.sql.Connection conn;
public final int AUTOCOMMIT = 0;
public final int MANUCOMMIT = 1;
public void execute(CallBack cb,int commit) {
try {
//此处得到一个连接
System.out.println("从连接池取得连接!");
Class.forName("com.informix.jdbc.IfxDriver");
conn = java.sql.DriverManager.getConnection(
"jdbc:informix-sqli://98.10.1.20:8888/easyplats:INFORMIXSERVER=lzsh",
"informix", "informix");
if(commit==MANUCOMMIT)
conn.setAutoCommit(false);
if (cb != null)
cb.uniOpp(conn);
if(commit==MANUCOMMIT)
conn.commit();
System.out.println("事务已提交!");
}
catch (Exception e) {
try {
if(commit==MANUCOMMIT)
conn.rollback();
System.out.println("事务出错回滚!");
}
catch (java.sql.SQLException ex) {
}
e.printStackTrace();
}
finally {
try {
conn.close();
System.out.println("事务已关闭!");
}
catch (java.sql.SQLException ex1) {
}
}
}
}
/**
* 一个回调类,任何要用到事务的操作均须实现其抽象方法uniOpp()。
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
abstract class CallBack {
public void uniOpp(java.sql.Connection conn) throws Exception {}
}
/**
* 模拟一个真正的前台调用
* 在我们现在的架构中,此段代码相当于一个Command的Execute()方法中的内容
*/
private void test() {
TransacitonTemplate tranc = new TransacitonTemplate();
tranc.execute(
new CallBack() {
public void uniOpp(java.sql.Connection conn) throws Exception {
java.sql.Statement stmt = conn.createStatement();
String sql = "select count(*) from s_user";
java.sql.ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println("当前操作结果:"+rs.getString(1));
}
rs.close();
}
},tranc.AUTOCOMMIT
);
}
/**
* 测试方法入口
* @param args
*/
public static void main(String[] args) {
ConnectionPool cp = new ConnectionPool();
cp.test();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -