在这次做项目中,我对自己最满意的就是封装了一下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 SQLHelper类的封装的更多相关文章

  1. Java面向对象(类、封装)

    面向对象 今日内容介绍 u 面向对象 u 封装 第1章 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. l 面向过程的程序设计方式,是遇到一 ...

  2. java中关于类的封装与继承,this、super关键字的使用

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5454849.html. this关键字: this代表当前对象,它有以下几种用途: 1.本类 ...

  3. java基础(9):类、封装

    1. 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 例 ...

  4. Java Web 实用返回结果封装

    实用的返回结果封装 使用示例 效果 Result ResultEnum 使用示例 /** * @Author: huangwenjun * @Description: * @Date: Created ...

  5. java web 实体类生成

    工具下载地址:https://download.csdn.net/download/g342105676/10813246

  6. [转]轻量级 Java Web 框架架构设计

    工作闲暇之余,我想设计并开发一款轻量级 Java Web 框架,看看能否取代目前最为流行的而又越来越重的 Spring.Hibernate 等框架.请原谅在下的大胆行为与不自量力,本人不是为了重造轮子 ...

  7. Smart Framework:轻量级 Java Web 框架

    Smart Framework:轻量级 Java Web 框架 收藏 黄勇   工作闲暇之余,我开发了一款轻量级 Java Web 框架 —— Smart Framework. 开发该框架是为了: 加 ...

  8. java jdbc sqlhelper

    package com.shop.util; import java.sql.*; //SqlHelper类 //定义了数据库连接函数,关闭查询结果集,关闭Statement对象,关闭数据库连接 // ...

  9. 【JAVA】 05-String类和JDK5

    链接: 笔记目录:毕向东Java基础视频教程-笔记 GitHub库:JavaBXD33 目录: <> <> 内容待整理: API-String 特点 String类: 1.St ...

随机推荐

  1. 88. Merge Sorted Array

    题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume ...

  2. Android 自定义ActionBar

    Android 3.0及以上已经有了ActionBar的API,可以通过引入support package在3.0以下的平台引用这些API,但这儿呢,完全自定义一个ActionBar,不用引入额外ja ...

  3. Maven中心仓库

    当你使用Maven构建一个项目,Maven会检查你的pom.xml文件,找出需要下载的依赖包.首先它会到本地仓库查找所需的文件,如果没找到,就到默认的中心仓库(这是新的http://search.ma ...

  4. JVM参数配置

    JVM参数配置 设置堆大小 -Xms 初始堆大小 -Xmx 最大堆大小 -Xmn 设置年轻代大小 设置每个线程堆栈大小 -Xss 设置每个线程的堆栈大小 设置年轻代大小 -XX:NewSize= -X ...

  5. JVM 问题排查常用工具

    一. jmap // 打印jvm的堆状况,主要是年轻代和老年代信息 jmap -heap <pid> 如: Heap Configuration: MinHeapFreeRatio = M ...

  6. CFF前端沙龙总结

    一. -OOCSS + Sass ——大漠 1. OOCSS 结构<=>皮肤 分离 容器<=>内容 分离 2. Sass 工具.处理器 SCSS(CSS风格)<=> ...

  7. 函数buf_page_get_gen

    /********************************************************************//** This is the general functi ...

  8. 数据库编程与C#编程互译

    今天有一段代码,先是用程序实现. 闲来无聊,又用存储过程实现了一次. 程序中实现. /// <summary> /// 根据区域和用户名获取可访问的国家 /// </summary& ...

  9. BZOJ3858: Number Transformation

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3858 题解:设第i个数为i*a;第i+1个数为(i+1)*b.则(i+1)*b>i*a; ...

  10. 【linux】命令

    pwd 显示路径 whereis jupyterhub find / -name base.py reboot 重启 grep