Kimi's NutShell

          我荒廢的今日,正是昨日殞身之人祈求的明日

          BlogJava 新隨筆 管理
            141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks

          package classmate;
          import java.sql.*;

          import javax.sql.DataSource;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          public class DataStore {
          ?
          ?DataSource dataSource = null;
          ?private static Connection conn = null;
          ?private Statement stmt = null;
          ?private boolean hadErrors = false;
          ?
          ?//construct
          ?public DataStore(DataSource dataSource) throws Exception{
          ??this.dataSource = dataSource;
          ??conn = dataSource.getConnection();
          ??stmt = conn.createStatement();
          ?}
          ?
          ?//invoke transaction
          ?public void beginTransaction() throws SQLException{
          ??conn.setAutoCommit(false);
          ?}
          ?
          ?//perform transaction
          ?public void commitTransaction() throws SQLException{
          ??//hadErrors = false
          ??if(!hadErrors){
          ???conn.commit();
          ??}
          ??else{? //hadErrors = true
          ???conn.rollback();
          ???hadErrors = false;
          ??}
          ??hadErrors = false;
          ??conn.setAutoCommit(true);
          ?}
          ?
          ?//mark error
          ?public void ErrorOccur(){
          ??hadErrors = true;
          ?}
          ?
          ?//execute insert,delete,update
          ?synchronized public void execute(String sql) throws SQLException{
          ??if(stmt != null)
          ???stmt.executeUpdate(sql);
          ??else{
          ???Log log = LogFactory.getLog("mylog");
          ???log.error("fail to execute sql");
          ??}
          ?}
          ?
          ?//execute select
          ?synchronized public ResultSet read(String sql) throws SQLException{
          ??if(stmt != null){
          ???ResultSet tmp = null;
          ???tmp = stmt.executeQuery(sql);
          ???return tmp;
          ??}else{
          ???return null;
          ??}
          ?}
          ?
          ?// count of result
          ?synchronized public int readCount(String sql) throws SQLException{
          ??int nCount = 0;
          ??try{
          ???if(stmt != null){
          ????ResultSet tmp = null;
          ????tmp = stmt.executeQuery(sql);
          ????if(tmp != null && tmp.next()){
          ?????nCount = tmp.getInt(1);
          ????}else{
          ?????nCount = 0;
          ????}
          ???}
          ??}catch(SQLException e){
          ???nCount = 0;
          ??}
          ??return nCount;
          ?}
          ?
          ?// close db
          ?synchronized public void stop(){
          ??try{
          ???if(conn != null){
          ????conn.close();
          ????stmt.close();
          ???}
          ??}catch(Exception e){
          ???Log log = LogFactory.getLog("mylog");
          ???log.error("fail to close db- DataStore.java");
          ??}finally{
          ???conn = null;
          ??}
          ?}
          }

          還在研究,貌似DCL的問題還存在。

          posted on 2007-10-24 16:35 Kimi 閱讀(482) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 中山市| 内乡县| 中方县| 丹凤县| 车险| 康定县| 海城市| 邳州市| 盐津县| 芒康县| 土默特右旗| 读书| 南通市| 天台县| 南开区| 安吉县| 巴彦县| 西丰县| 汽车| 涟源市| 平邑县| 上蔡县| 汪清县| 洪雅县| 鸡西市| 石楼县| 马山县| 大丰市| 酒泉市| 华安县| 拉萨市| 杭锦后旗| 城固县| 南和县| 安福县| 泽州县| 焦作市| 遂平县| 忻城县| 保靖县| 剑川县|