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
          主站蜘蛛池模板: 康马县| 沅江市| 永清县| 澎湖县| 恩平市| 图片| 静乐县| 横峰县| 虹口区| 淮安市| 卓资县| 弥渡县| 潮安县| 茌平县| 神池县| 晴隆县| 盘山县| 揭阳市| 正镶白旗| 大足县| 吉林市| 英山县| 南皮县| 桐城市| 远安县| 隆子县| 金平| 浙江省| 中方县| 安化县| 阳春市| 大足县| 延津县| 麻栗坡县| 灌阳县| 连江县| 大城县| 永仁县| 虹口区| 谢通门县| 百色市|