<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    JDBC 查詢數(shù)據(jù)庫已經(jīng)事物處理

    一套系統(tǒng)已做完了,結(jié)果發(fā)現(xiàn)了一個重大漏洞,沒做連接的事務(wù)處理.  
      比如說幾個INSERT.UPDATE一起,如果最后一個UPDATE出了問題,要將前面的INSERT.UPDATE都回滾回來.  
       
      我現(xiàn)在用的是TOMCAT服務(wù)器,不支持事務(wù)處理.數(shù)據(jù)庫用ORALCE.我知道可以setautocommit(false).rollback()來 處理,但這樣的話,改動量太大了(因為我有一個BEAN做數(shù)據(jù)庫的連接和增改查刪等操作),請問各位有沒有比較快的方式將所有JSP改過來?  
       
      原有代碼如下:  
       
      =======================================  
       
      package   db;  
       
      import   javax.naming.*;  
      import   javax.sql.*;  
      import   java.sql.*;  
      import   java.text.SimpleDateFormat;  
      import   java.util.Date;  
       
      public   class   DataBean{  
          java.sql.Connection   conn   =   null;  
          PreparedStatement   ps   =   null;  
          ResultSet   rs   =   null;  
       
          public   DataBean(){  
              try{  
                  Class.forName("oracle.jdbc.driver.OracleDriver");  
                  conn   =   DriverManager.getConnection("jdbc:oracle:thin:@10.100.11.252:1521:proc","changchun","changchun");  
                  conn.setAutoCommit(true);  
              }catch(Exception   e){  
                  e.printStackTrace();  
              }  
          }  
       
          public   ResultSet   select(String   entity,String   prec){  
              try{  
                  ResultSet   rs   =   null;  
                  ps   =   conn.prepareStatement("select   "+entity+"   from   "+prec);  
                  rs   =   ps.executeQuery();  
                  conn.rollback();  
                  return   rs;  
              }catch(Exception   e){  
                  System.out.println(e);  
                  return   null;  
              }  
          }  
       
          public   ResultSet   newselect(String   entity,String   prec){  
              try{  
                  ResultSet   rs   =   null;  
                  ps   =   conn.prepareStatement("select   "+entity+"   from   "+prec,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
                  rs   =   ps.executeQuery();  
                  conn.rollback();  
                  return   rs;  
              }catch(Exception   e){  
                  System.out.println(e);  
                  return   null;  
              }  
          }  
       
          public   void   insert(String   value,String   prec){  
              try{  
                  ps   =   conn.prepareStatement("insert   into   "+prec+"   values   "+value);  
                  ps.executeUpdate();  
                  conn.rollback();  
                  }catch(Exception   e){System.out.println(e);}  
          }  
       
          public   void   delete(String   sql){  
              try{  
                  ps   =   conn.prepareStatement(sql);  
                  ps.executeUpdate();  
                  conn.rollback();  
                  }catch(Exception   e){System.out.println(e);}  
          }  
       
          public   void   update(String   table,String   prec){  
              try{  
                  ps   =   conn.prepareStatement("update   "+table+prec);  
                  ps.executeUpdate();  
                  conn.rollback();  
                  }catch(Exception   e){System.out.println(e);}  
          }  
       
          public   static   boolean   validateDate(String   vDate)   {  
                          SimpleDateFormat   dateFormat   =   new   SimpleDateFormat();  
                          try   {  
                                  dateFormat.applyPattern("yyyy-MM-dd");  
                                  dateFormat.setLenient(false);  
                                  Date   date   =   dateFormat.parse(vDate);  
                                  return   true;  
                          }   catch   (Exception   e)   {  
                                  return   false;  
                          }  
                  }  
       
       
          public   void   close(){  
              try{  
       
                  ps.close();  
                  conn.close();  
                  }catch(Exception   e){System.out.println(e);}  
          }  
       
      }  
      ===========================  
      提出一些小建議也有分.解決問題后給500分!!!  
      謝謝!!!



    ########################################
    首先你上面的代碼有問題,conn.rollback()怎么在數(shù)據(jù)庫操作后呢,如果此時conn.setAutoCommit(false);那么你什么也沒作,操作完數(shù)據(jù)庫就回滾,呵呵.  
       
      首先使用事務(wù)你必須先把構(gòu)造函數(shù)中的conn.setAutoCommit(true);改為  
      conn.setAutoCommit(false);  
      如何想把異常都拋到j(luò)sp里,以下面的方法為例,  
        public   void   insert(String   value,String   prec){  
              try{  
                  ps   =   conn.prepareStatement("insert   into   "+prec+"   values   "+value);  
                  ps.executeUpdate();  
                  conn.rollback();  
                  }catch(Exception   e){System.out.println(e);}  
          }  
      可以這樣寫  
       
      public   void   insert(String   value,String   prec)   throws   Exception    
      {  
              try{  
                  ps   =   conn.prepareStatement("insert   into   "+prec+"   values   "+value);  
                  ps.executeUpdate();  
                  }catch(Exception   e)  
                  {  
                  throw   e;  
                  }  
                   
      }  
      這樣所有的Excepion就拋到你的jsp里了  
      在jsp里你這樣寫  
          DataBean   oTest   =   null;  
          try  
          {  
          oTest   =   new   DataBean();  
           
          //此處加入你操作數(shù)據(jù)庫的方法  
           
          oTest.conn.commit();  
          oTest.conn.close();  
          }catch(Exception   e)  
          {  
          e.printStackTrace();  
          try{  
          oTest.conn.rollback();  
          }catch(Exception   ee)  
          {  
       
          }  
          }finally  
          {  
          try  
          {  
          if(oTest.conn!=null)  
          oTest.conn.close();  
          }catch(Exception   e)  
          {  
       
          }  
          }  

    ##############################################


    轉(zhuǎn):http://topic.csdn.net/t/20030519/12/1803615.html

    posted on 2009-07-09 09:37 找個美女做老婆 閱讀(546) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     

    導航

    統(tǒng)計

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产福利免费视频 | 久久久久久成人毛片免费看| 免费人成激情视频| 亚洲av无码av在线播放| 麻豆国产人免费人成免费视频| 中文字幕亚洲综合久久综合| 成人毛片免费播放| 国产亚洲欧美在线观看| 国产一级淫片免费播放电影| 特级毛片A级毛片免费播放| 四虎精品亚洲一区二区三区| 日韩电影免费在线观看网址| 中文字幕不卡亚洲 | 99热亚洲色精品国产88| 免费羞羞视频网站| 色天使亚洲综合一区二区| 免费少妇a级毛片人成网| 一区二区三区在线免费| 国产亚洲婷婷香蕉久久精品| 免费在线观看一级片| 亚洲欧洲综合在线| 免费无码又爽又刺激高潮| 曰批免费视频播放免费| 亚洲s色大片在线观看| 6080午夜一级毛片免费看| 7777久久亚洲中文字幕| 四虎永久在线精品免费影视| 岛国精品一区免费视频在线观看| 亚洲bt加勒比一区二区| 成人在线免费观看| 产传媒61国产免费| 老汉色老汉首页a亚洲| 四虎免费大片aⅴ入口| 国产精品一区二区三区免费| 久久精品国产亚洲av高清漫画 | 又粗又硬又黄又爽的免费视频| 中国一级特黄高清免费的大片中国一级黄色片| 国产AV无码专区亚洲A∨毛片| 免费AA片少妇人AA片直播| 一级特黄录像免费播放中文版| 亚洲国产高清视频|