java操作数据库小工具--韩顺平SqlHelper
2016-03-02 19:31
447 查看
看韩顺平老师的视频时候非常喜欢的喜欢的一个小工具就是操作数据库的SqlHelper
所以我就又写了一遍,加了点注释,基本上能满足平常开发使用。
DBUtil类,主要是操作数据连接池
[cpp] view
plain
package com.tig.util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class DBUtil {
//定义链接所需要的变量
private static Connection con = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
//定义链接数据库所需要的参数
private static String url = "";
private static String username = "";
private static String driver="";
private static String password="";
//定义读取配置文件所需要的变量
private static Properties pp = null;
private static InputStream fis = null;
/**
* 加载驱动
*/
static {
try {
//从dbinfo.properties配置文件中读取配置信息
pp = new Properties();
fis = DBUtil.class.getClassLoader().getResourceAsStream("com/tig/util/dbinfo.properties");
pp.load(fis);
url = pp.getProperty("url");
username = pp.getProperty("username");
driver=pp.getProperty("driver");
password=pp.getProperty("password");
//加载驱动
Class.forName(driver);
} catch (Exception e) {
System.out.println("驱动加载失败!");
e.printStackTrace();
} finally {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
fis = null; //垃圾回收自动处理
}
}
/**
* 得到Connection链接
* @return Connection
*/
public static Connection getConnection() {
try {
//建立连接
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
System.out.println("数据库链接失败!");
e.printStackTrace();
}
return con;
}
/**
* 统一的资源关闭函数
* @param rs
* @param ps
* @param ct
*/
public static void close(ResultSet rs,Statement ps, Connection con){
if(rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(ps != null) {
try {
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(con != null) {
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
SqlHelper类
[java] view
plain
package com.tig.util;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
public class SqlHelper {
private static Connection con = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
private static CallableStatement cs = null;
/**
* 提供查询方法
* @param sql sql语句
* @param parameters 给问号赋值的参数组
* @return {@link ArrayList}
*/
public static ArrayList executeQuery(String sql, String[] parameters) {
ArrayList al = new ArrayList();
try {
con = DBUtil.getConnection();
ps = con.prepareStatement(sql);
//给sql语句中的问号赋值
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
ps.setObject(i+1, parameters[i]);
}
}
rs = ps.executeQuery();
//得到结果集(rs)的结构
ResultSetMetaData rsmd = rs.getMetaData();
//通过rsmd可以得到该结果集有多少列
int columnNum = rsmd.getColumnCount();
//从rs中取出数据,并且封装到ArrayList中
while (rs.next()) {
Object []objects = new Object[columnNum];
for(int i = 0; i < objects.length; i++) {
objects[i] = rs.getObject(i + 1);
}
al.add(objects);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(rs, ps, con);
}
return al;
}
/**
* 提供统一的插入/删除/更新方法
* @param sql sql语句
* @param parameteres 给问号赋值的参数组
* @return
*/
public static boolean executeUpdate(String sql,String[] parameteres) {
boolean success = false;
try {
con = DBUtil.getConnection();
ps = con.prepareStatement(sql);
//给问号赋值
if (parameteres != null) {
for (int i = 0; i < parameteres.length; i++) {
ps.setString(i + 1, parameteres[i]);
}
}
//执行动作,如果返回“1” 则为操作成功
if (ps.executeUpdate() == 1) {
success = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(rs, ps, con);
}
return success;
}
/**
* 提供统一的插入/删除/更新方法[需要考虑事物]
* @param sql
* @param parameters
*/
public static void executeUpdate(String sql[], String[][] parameters){
try {
con = DBUtil.getConnection();
//sql命令的提交由应用程序负责,程序必须调用commit或者rollback方法
con.setAutoCommit(false);
for (int i = 0; i < sql.length; i++) {
if (parameters[i] != null) {
ps = con.prepareStatement(sql[i]);
for (int j = 0; j < parameters[i].length; i++){
ps.setString(j + 1, parameters[i][j]);
}
ps.executeUpdate();
}
}
con.commit();
} catch (Exception e) {
e.printStackTrace();
//回滚操作
try {
con.rollback();
} catch (Exception ex) {
ex.printStackTrace();
}
throw new RuntimeException(e.getMessage());
} finally {
DBUtil.close(rs, ps, con);
}
}
}
dbinfo.properties 配置文件.主要配置一下数据库的名字,用户名,密码
[html] view
plain
url=jdbc:mysql://localhost:3306/studentinfo
username=root
driver=com.mysql.jdbc.Driver
password=1234
所以我就又写了一遍,加了点注释,基本上能满足平常开发使用。
DBUtil类,主要是操作数据连接池
[cpp] view
plain
package com.tig.util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class DBUtil {
//定义链接所需要的变量
private static Connection con = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
//定义链接数据库所需要的参数
private static String url = "";
private static String username = "";
private static String driver="";
private static String password="";
//定义读取配置文件所需要的变量
private static Properties pp = null;
private static InputStream fis = null;
/**
* 加载驱动
*/
static {
try {
//从dbinfo.properties配置文件中读取配置信息
pp = new Properties();
fis = DBUtil.class.getClassLoader().getResourceAsStream("com/tig/util/dbinfo.properties");
pp.load(fis);
url = pp.getProperty("url");
username = pp.getProperty("username");
driver=pp.getProperty("driver");
password=pp.getProperty("password");
//加载驱动
Class.forName(driver);
} catch (Exception e) {
System.out.println("驱动加载失败!");
e.printStackTrace();
} finally {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
fis = null; //垃圾回收自动处理
}
}
/**
* 得到Connection链接
* @return Connection
*/
public static Connection getConnection() {
try {
//建立连接
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
System.out.println("数据库链接失败!");
e.printStackTrace();
}
return con;
}
/**
* 统一的资源关闭函数
* @param rs
* @param ps
* @param ct
*/
public static void close(ResultSet rs,Statement ps, Connection con){
if(rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(ps != null) {
try {
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(con != null) {
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
SqlHelper类
[java] view
plain
package com.tig.util;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;
public class SqlHelper {
private static Connection con = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
private static CallableStatement cs = null;
/**
* 提供查询方法
* @param sql sql语句
* @param parameters 给问号赋值的参数组
* @return {@link ArrayList}
*/
public static ArrayList executeQuery(String sql, String[] parameters) {
ArrayList al = new ArrayList();
try {
con = DBUtil.getConnection();
ps = con.prepareStatement(sql);
//给sql语句中的问号赋值
if (parameters != null) {
for (int i = 0; i < parameters.length; i++) {
ps.setObject(i+1, parameters[i]);
}
}
rs = ps.executeQuery();
//得到结果集(rs)的结构
ResultSetMetaData rsmd = rs.getMetaData();
//通过rsmd可以得到该结果集有多少列
int columnNum = rsmd.getColumnCount();
//从rs中取出数据,并且封装到ArrayList中
while (rs.next()) {
Object []objects = new Object[columnNum];
for(int i = 0; i < objects.length; i++) {
objects[i] = rs.getObject(i + 1);
}
al.add(objects);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(rs, ps, con);
}
return al;
}
/**
* 提供统一的插入/删除/更新方法
* @param sql sql语句
* @param parameteres 给问号赋值的参数组
* @return
*/
public static boolean executeUpdate(String sql,String[] parameteres) {
boolean success = false;
try {
con = DBUtil.getConnection();
ps = con.prepareStatement(sql);
//给问号赋值
if (parameteres != null) {
for (int i = 0; i < parameteres.length; i++) {
ps.setString(i + 1, parameteres[i]);
}
}
//执行动作,如果返回“1” 则为操作成功
if (ps.executeUpdate() == 1) {
success = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(rs, ps, con);
}
return success;
}
/**
* 提供统一的插入/删除/更新方法[需要考虑事物]
* @param sql
* @param parameters
*/
public static void executeUpdate(String sql[], String[][] parameters){
try {
con = DBUtil.getConnection();
//sql命令的提交由应用程序负责,程序必须调用commit或者rollback方法
con.setAutoCommit(false);
for (int i = 0; i < sql.length; i++) {
if (parameters[i] != null) {
ps = con.prepareStatement(sql[i]);
for (int j = 0; j < parameters[i].length; i++){
ps.setString(j + 1, parameters[i][j]);
}
ps.executeUpdate();
}
}
con.commit();
} catch (Exception e) {
e.printStackTrace();
//回滚操作
try {
con.rollback();
} catch (Exception ex) {
ex.printStackTrace();
}
throw new RuntimeException(e.getMessage());
} finally {
DBUtil.close(rs, ps, con);
}
}
}
dbinfo.properties 配置文件.主要配置一下数据库的名字,用户名,密码
[html] view
plain
url=jdbc:mysql://localhost:3306/studentinfo
username=root
driver=com.mysql.jdbc.Driver
password=1234
相关文章推荐
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- spring mvc 项目 相关配置文件小结
- java中Class对象详解
- Leetcode:235. Lowest Common Ancestor of a Binary Search Tree(JAVA)
- Eclipse中如何开启Assert断言
- Java内存访问重排序笔记
- Java虚拟机类加载过程
- Java中的大数字操作
- HDU 1016(Java) 好大一个坑!!!
- Spring Cache
- 用Struts2来完成一个学生注册界面
- 白话Spring(基础篇)---bean的作用域
- [转]Eclipse:Cannot complete the install because of a conflicting dependency
- java并发编程 Lock
- java并发编程 Lock
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-006-给bean运行时注入值(Environment,Property文件)
- yocto配置好eclipse之后编译多线程配置
- Java学习笔记(五):异常处理
- Java代码注释规范
- Java虚拟机体系结构深入研究总结