<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)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 男女啪啪免费体验区| 亚洲国产成人综合精品| 免费看男人j放进女人j免费看| 亚洲AV成人潮喷综合网| 日亚毛片免费乱码不卡一区| 免费在线观看a级毛片| 羞羞的视频在线免费观看| 免费v片视频在线观看视频| 国产精品亚洲天堂| 亚洲av无码天堂一区二区三区| 国产成人综合久久精品亚洲| 全部免费国产潢色一级| 免费看一级毛片在线观看精品视频| 国产国产人免费人成免费视频| 国产偷国产偷亚洲高清人| 伊人久久亚洲综合影院| aa级毛片毛片免费观看久| 亚洲国产成人高清在线观看| 久久久高清日本道免费观看| 亚洲国产精品白丝在线观看| 国内外成人免费视频| 午夜在线免费视频 | 中文字幕亚洲码在线| 最近高清国语中文在线观看免费| 亚洲卡一卡二卡乱码新区| 尤物永久免费AV无码网站| 一级一黄在线观看视频免费| 亚洲成av人影院| 四虎永久在线精品免费观看视频| 亚洲丰满熟女一区二区哦| 国产黄色一级毛片亚洲黄片大全| 久久精品成人免费观看| 亚洲一区欧洲一区| 亚洲欧洲久久久精品| 91av视频免费在线观看| 亚洲国产成人手机在线观看| 亚洲综合精品香蕉久久网| 国产成人无码免费看视频软件 | 亚洲性色精品一区二区在线| 亚洲精品国产日韩无码AV永久免费网 | 一二三四在线观看免费中文在线观看 |