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 閱讀(476) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 宣威市| 游戏| 营口市| 肇庆市| 新龙县| 巴塘县| 濉溪县| 雅安市| 尚志市| 灌云县| 麟游县| 邓州市| 北安市| 乌兰县| 广丰县| 寿光市| 东乡族自治县| 黄龙县| 通州市| 阳山县| 达尔| 德兴市| 宁陵县| 察隅县| 关岭| 滨海县| 昭平县| 兴业县| 彰化市| 逊克县| 土默特左旗| 清丰县| 怀宁县| 黑龙江省| 万年县| 龙江县| 石棉县| 石狮市| 且末县| 韶关市| 宿州市|