JAVA WEB SQLHelper類的封裝

來源:互聯網
上載者:User

標籤:blog   java   os   檔案   資料   io   2014   for   

在這次做項目中,我對自己最滿意的就是封裝了一下SQLHelper類,我對自己感到驕傲主要是

我是初學者,我剛開始不知道可以這樣做,我只是想著試著去這樣做了,結果真的可以,所以我

在我的模組就自己封裝了一個SQLHelper,雖然下面用的這個不是很好,但是基本上滿足需求,

因為似乎所有類都能轉換為String,所以就用String數組來補充sql語句中的可變參數,但是有

一個問題,就是在調用的時候第二個參數必須為null,或者String數組,如果只有一個參數,也

要用String數組的形式傳進去(如:String []params=n"ew String[]{"xxx"};),這樣做也有

一定的麻煩。 由於當時不知道可變參數是這樣寫的,如果將以下的第二個參數換成String...

params,那麼第二個參數在空的情況下就可以不寫,或者寫為null。 在只有一個值的情況下直接

轉為String類型寫入即可。再沒有必要轉換成String數群組類型

/**SQLHelper  *建立人:幽林孤狼  *建立時間:2014-07-17 16:24  */package XXX;import java.io.InputStream;import java.sql.CallableStatement;import java.sql.Connection;   import java.sql.PreparedStatement;  import java.sql.ResultSet;  import java.sql.SQLException;import java.sql.Statement;  import java.util.Properties;  import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;   import com.new_fgw.utils.JdbcUtils; public class SQLHelper{       private static Connection conn=null;       private static PreparedStatement ps=null;       private static ResultSet rs=null;        private static DataSource myDataSource = null;     private static CallableStatement callableStatement=null;     static { try { Properties prop=new Properties(); InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); prop.load(in); myDataSource=BasicDataSourceFactory.createDataSource(prop); } catch (Exception e){ e.printStackTrace(); } }       public static Connection GetConn()throws SQLException { return myDataSource.getConnection(); } public static DataSource getDataSource(){ return myDataSource; }      public static PreparedStatement getPs() {           return ps;       }        /**執行帶有參數的更新sql語句      * @param sql      * @param parameters      * @return     */     public static boolean executeUpdate(String sql,String []parameters){           boolean b=false;     try {               conn =GetConn();               ps = conn.prepareStatement(sql);               if(parameters!=null){                  for(int i=0;i<parameters.length;i++){                       ps.setString(i+1, parameters[i]);                  }              }             int x=ps.executeUpdate();             if(x>0)           {           b=true;           }         } catch(Exception e) {              e.printStackTrace();               throw new RuntimeException(e.getMessage());          }finally{             SQLHelper.close(rs, ps,conn);          }           return b;     }            /**執行帶有參數的預存程序,完成資料的更新      * @param sql       * @param parameters sql       * @return      */      public static boolean executeUpdateByProcedure(String procedure,String []parameters){            boolean b=false;      try {                conn =GetConn();                callableStatement =conn.prepareCall(procedure);                if(parameters!=null){                   for(int i=0;i<parameters.length;i++){                   callableStatement.setString(i+1, parameters[i]);                   }               }              int x=callableStatement.executeUpdate();              if(x>0)            {            b=true;            }          } catch(Exception e) {               e.printStackTrace();                throw new RuntimeException(e.getMessage());           }finally{              SQLHelper.close(rs, ps,conn);           }            return b;      }         /**執行帶有參數的查詢預存程序         * @param sql        * @param parameters sql        * @return       */       public static ResultSet executeQueryByProcedure(String procedure,String []parameters){           try {                 conn =GetConn();                 callableStatement=conn.prepareCall(procedure);                 if(parameters!=null){                    for(int i=0;i<parameters.length;i++){                    callableStatement.setString(i+1, parameters[i]);                    }                }               rs=callableStatement.executeQuery();                          } catch(Exception e) {                e.printStackTrace();                 throw new RuntimeException(e.getMessage());            }finally{              // SQLHelper.close(rs, ps,conn);            }             return rs;       }              /**執行帶有參數的查詢sql語句      * @param sql       * @param parameters sql       * @return      */     public static ResultSet executeQuery(String sql,String []parameters){           try {               conn = GetConn();               ps = conn.prepareStatement(sql);              if(parameters !=null){                   for(int i=0;i<parameters.length;i++){                       ps.setString(i+1, parameters[i]);                   }               }              //??в??               rs = ps.executeQuery();                             } catch (Exception e) {              e.printStackTrace();               throw new RuntimeException(e.getMessage());           }          return rs;       }           /**      *  關閉對應的資源      * @param rs        * @param st        * @param conn        */     public static void close(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if(conn!=null){  conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } }}  

 

dbcpconfig.properties檔案如下:

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/databaseName

username=root

password=password

initialSize=10

maxActive=50

maxIdle=20

minIdle=5

maxWait=60000

connectionProperties=useUnicode=true;characterEncoding=UTF-8

defaultAutoCommit=true

defaultReadOnly= defaultTransactionIsolation=READ_COMMITTED

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.