JAVA WEB SQLHelper类的封装

在这次做项目中,我对自己最满意的就是封装了一下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

 

你可能感兴趣的:(Java Web)