• 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

  • 相关阅读:
    程序员的出路在哪里
    基于.NET平台常用的框架整理
    Asp.Net MVC WebApi2 自动生成帮助文档
    Jquery操作select选项集合,判断集合中是否存在option
    C#三种判断数据库中取出的字段值是否为空(NULL) 的方法
    未能加载文件或程序集“XX.XXX.Web”或它的某一个依赖项。试图加载格式不正确的程序
    网页设计制作面试题(1)
    HTML5 Canvas 画纸飞机组件
    HTML5 Canvas 画虚线组件
    C# 根据域名获取IP地址
  • 原文地址:https://www.cnblogs.com/ylgl/p/3869357.html
Copyright © 2020-2023  润新知