在这次做项目中,我对自己最满意的就是封装了一下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. 1、Web容器的理解&Tomcat的安装与配置

    Web容器的理解 <Java Web开发实战经典——基础篇>一书中对Web容器这一概念阐述得很好,借用其观点对Web容器加以理解: 想要运行一个Java Web的程序,则必须有相应的Web ...

  2. Flash上传文件(结合asp.net)

    一.实现原理.在某些场合,我们需要使用Flash进行“文件上传”,原因是Flash 能制作出表现力丰富的UI界面. (自负又孤陋寡闻的我在这里做一个补充:Flash使用flash.net包中的File ...

  3. oracle 判断是不是数值/数字

    1. 利用 to_number CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)     RETURN NUMBER IS     v_st ...

  4. WEBBROWSER中模拟鼠标点击(SendMessage/PostMessage)

    好久没有写文章,发一篇顶顶博客访问量.别人建议转一些比较好的代码也贴过来,但是我打算这里主要发自己原创的代码,所以么..流量该多少就多少吧... 回到主题,在webbrowser中点击某链接网上几乎都 ...

  5. basicjava

    .完数 . 第一个完全数是6,它有约数1.2.3.6,除去它本身6外,其余3个数相加,1+2+3=6.第二个完全数是28,它有约数1.2.4.7.14. 28,除去它本身28外,其余5个数相加,1+2 ...

  6. 可视化PK纯代码

    简述 其实今天说的内容不仅仅局限于Qt,在很多其它语言或者框架中也适用,那就是 - 用可视化工具or文本编辑器?拖or不拖? 如果有人问我喜欢脱or不脱?我会毫不犹豫地说不脱,因为我比较矜持O(∩_∩ ...

  7. UVa 11582 (快速幂取模) Colossal Fibonacci Numbers!

    题意: 斐波那契数列f(0) = 0, f(1) = 1, f(n+2) = f(n+1) + f(n) (n ≥ 0) 输入a.b.n,求f(ab)%n 分析: 构造一个新数列F(i) = f(i) ...

  8. sql server压缩数据库和日志文件

    DBCC SHRINKDATABASE 功能:压缩数据库 用法:DBCC SHRINKDATABASE tb_115sou_com 注意:只有产生许多未使用空间的操作(如截断表或删除表操作)后,执行收 ...

  9. listview默认选择第一项,点击换子项背景图

    (不是大神,没有几百子项目,去你丫的) private int last_item_position ; @Override public void onItemClick(AdapterView&l ...

  10. ffmpeg-2.3.3 configure for android

    #! /bin/shNDK=/usr/local/android-ndk-r10PREBUILT=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuil ...