<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 -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    JDBC 查詢數據庫已經事物處理

    一套系統已做完了,結果發現了一個重大漏洞,沒做連接的事務處理.  
      比如說幾個INSERT.UPDATE一起,如果最后一個UPDATE出了問題,要將前面的INSERT.UPDATE都回滾回來.  
       
      我現在用的是TOMCAT服務器,不支持事務處理.數據庫用ORALCE.我知道可以setautocommit(false).rollback()來 處理,但這樣的話,改動量太大了(因為我有一個BEAN做數據庫的連接和增改查刪等操作),請問各位有沒有比較快的方式將所有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()怎么在數據庫操作后呢,如果此時conn.setAutoCommit(false);那么你什么也沒作,操作完數據庫就回滾,呵呵.  
       
      首先使用事務你必須先把構造函數中的conn.setAutoCommit(true);改為  
      conn.setAutoCommit(false);  
      如何想把異常都拋到jsp里,以下面的方法為例,  
        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();  
           
          //此處加入你操作數據庫的方法  
           
          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)  
          {  
       
          }  
          }  

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


    轉:http://topic.csdn.net/t/20030519/12/1803615.html

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


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


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一级毛片aaaaaa免费看| 精品国产综合成人亚洲区| 国产免费啪嗒啪嗒视频看看| 又黄又大又爽免费视频| 亚洲熟伦熟女新五十路熟妇| 国产成人亚洲精品青草天美| 久久亚洲AV无码精品色午夜麻| 亚洲白色白色永久观看| 亚洲欧洲无码一区二区三区| 国产精品亚洲专区无码不卡| 91在线免费观看| 免费在线看v网址| 国产AV无码专区亚洲AV手机麻豆| 久久精品国产亚洲av麻豆小说 | 无码永久免费AV网站| 在线亚洲午夜理论AV大片| 亚洲综合偷自成人网第页色| 日韩免费高清视频网站| 国产午夜无码视频免费网站| 亚洲欧洲日本在线| 亚洲黄页网在线观看| 一个人免费日韩不卡视频| 免费国产小视频在线观看| 亚洲人成电影网站| 免费国产午夜高清在线视频| 亚洲成人一区二区| 亚洲国产一区二区三区在线观看| 无码人妻一区二区三区免费n鬼沢| 国产视频精品免费| 亚洲国产精品无码中文lv| 欧洲一级毛片免费| 91亚洲自偷在线观看国产馆| 久久免费区一区二区三波多野| 久久久无码精品亚洲日韩软件 | www.999精品视频观看免费| 亚洲AV成人片色在线观看高潮| 中文字幕版免费电影网站| 亚洲美女高清一区二区三区 | 亚洲成在人线在线播放无码| 免费的一级黄色片| 免费在线观看一区|