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
          主站蜘蛛池模板: 咸宁市| 陇川县| 溧水县| 紫云| 鞍山市| 漠河县| 迁安市| 肥城市| 同心县| 藁城市| 炎陵县| 普兰县| 太和县| 邓州市| 郧西县| 新建县| 文山县| 天水市| 镇坪县| 本溪| 印江| 双峰县| 平舆县| 锦州市| 塔河县| 岚皋县| 茌平县| 浦东新区| 广灵县| 仙桃市| 河西区| 永春县| 正宁县| 包头市| 县级市| 山阴县| 怀远县| 邛崃市| 晋宁县| 昭苏县| 秦安县|