java jdbc数据库连接代码封装
2015-11-20 11:21
417 查看
一个很好的封装jdbc数据库类
package cn.com.util;
import java.sql.*;
import java.util.*;
/**
* 数据库操作工具类
*
* @author Administrator
*
*/
public class DBUtil {
private static Connection con = null;// 连接对象
private static PreparedStatement psmt = null;// 预编译对象
private static ResultSet rs = null;// 结果集对象
private static CallableStatement csmt = null;// 过程对象
/**
* 获得连接对象
* @return
*/
public static Connection getConnetion() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager
.getConnection("jdbc:mysql://localhost:3306/mytest","root","gc7923959");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("找不到驱动");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("数据库连接失败");
}
return con;
}
/**
*
* @param sql
* @return
*/
public static PreparedStatement getPreparedStatement(String sql) {
con = getConnetion();
try {
psmt = con.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return psmt;
}
/**
* 查询获得所有
* @param sql
* @return 结果集
*/
public static ResultSet getResultSet(String sql) {
psmt = getPreparedStatement(sql);
try {
rs = psmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
/**
* 更新操作
* @param sql
* @param params
* @return 受影响的行数
*/
public static int executeUpdate(String sql, List<Object> params) {
int count = 0;
psmt = getPreparedStatement(sql);
bindPramas(psmt, params);
try {
count = psmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
CloseAll();
}
return count;
}
/**
* 查询 带参数
* @param sql
* @param params
* @return 结果集
*/
public static ResultSet executeQuery(String sql, List<Object> params) {
psmt = getPreparedStatement(sql);
if (params != null) {
bindPramas(psmt, params);
}
try {
rs = psmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(psmt);
return rs;
}
public static CallableStatement getCallableStatement(String sql) {
try {
csmt = getConnetion().prepareCall(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return csmt;
}
public static Object executeCallObject(String sql,
Map<Integer, Object> params) {
Object obj = null;
try {
int index = 0;// 输入参数下标
csmt = getCallableStatement(sql);
for (int i = 1; i <= params.size(); i++) {
if (params.get(i).toString().equals("Integer")) {
csmt.registerOutParameter(i, Types.INTEGER);
index = i;
} else {
csmt.setObject(i, params.get(i));
}
}
csmt.execute();
obj = csmt.getObject(index);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return obj;
}
public static void bindPramas(PreparedStatement psmt, List<Object> params) {
int index = 0;
if (params != null) {
for (Object p : params) {
try {
psmt.setObject(index + 1, p);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
index++;
}
}
}
public static void CloseAll() {
try {
if (con != null) {
con.close();
}
if (psmt != null) {
psmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package cn.com.util;
import java.sql.*;
import java.util.*;
/**
* 数据库操作工具类
*
* @author Administrator
*
*/
public class DBUtil {
private static Connection con = null;// 连接对象
private static PreparedStatement psmt = null;// 预编译对象
private static ResultSet rs = null;// 结果集对象
private static CallableStatement csmt = null;// 过程对象
/**
* 获得连接对象
* @return
*/
public static Connection getConnetion() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager
.getConnection("jdbc:mysql://localhost:3306/mytest","root","gc7923959");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("找不到驱动");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("数据库连接失败");
}
return con;
}
/**
*
* @param sql
* @return
*/
public static PreparedStatement getPreparedStatement(String sql) {
con = getConnetion();
try {
psmt = con.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return psmt;
}
/**
* 查询获得所有
* @param sql
* @return 结果集
*/
public static ResultSet getResultSet(String sql) {
psmt = getPreparedStatement(sql);
try {
rs = psmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
/**
* 更新操作
* @param sql
* @param params
* @return 受影响的行数
*/
public static int executeUpdate(String sql, List<Object> params) {
int count = 0;
psmt = getPreparedStatement(sql);
bindPramas(psmt, params);
try {
count = psmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
CloseAll();
}
return count;
}
/**
* 查询 带参数
* @param sql
* @param params
* @return 结果集
*/
public static ResultSet executeQuery(String sql, List<Object> params) {
psmt = getPreparedStatement(sql);
if (params != null) {
bindPramas(psmt, params);
}
try {
rs = psmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(psmt);
return rs;
}
public static CallableStatement getCallableStatement(String sql) {
try {
csmt = getConnetion().prepareCall(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return csmt;
}
public static Object executeCallObject(String sql,
Map<Integer, Object> params) {
Object obj = null;
try {
int index = 0;// 输入参数下标
csmt = getCallableStatement(sql);
for (int i = 1; i <= params.size(); i++) {
if (params.get(i).toString().equals("Integer")) {
csmt.registerOutParameter(i, Types.INTEGER);
index = i;
} else {
csmt.setObject(i, params.get(i));
}
}
csmt.execute();
obj = csmt.getObject(index);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return obj;
}
public static void bindPramas(PreparedStatement psmt, List<Object> params) {
int index = 0;
if (params != null) {
for (Object p : params) {
try {
psmt.setObject(index + 1, p);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
index++;
}
}
}
public static void CloseAll() {
try {
if (con != null) {
con.close();
}
if (psmt != null) {
psmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关文章推荐
- pgAdmin快速备份还原数据库
- msql索引亲历
- 简单理解Memcached的Slab Allocation
- Oracle取余函数mod
- Redis作者谈Redis应用场景(转)
- 4.mysql学习笔记:mysql的复制(一)
- Redis in .NET
- mysql user表root 用户误删除解决方法
- msql小技巧
- mariadb中的GTID研究
- redis,rabbitmq,graphite,zabbix,tengine,haproxy,keepalived,ansible,saltstack,汇总
- 实例讲解Mysql中各种Join的作用
- mongodb 数据库操作--备份 还原 导出 导入
- MySQL命令行导出数据库
- 小白学习mysql之索引初步
- Oracle 完全理解connect by-详细脚本-可实战
- jdbc连接数据库使用sid和service_name的区别
- 自定义注解与MYSQL
- mysql主从同步详解和一些细节
- 剖析Memcached分布式内存对象缓存系统的工作原理