java sql 类_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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值