当前位置: 编程技术>java/j2ee
java常用工具类之数据库连接类(可以连接多种数据库)
来源: 互联网 发布时间:2014-11-07
本文导语: 依赖包下载:http://xiazai./201407/tools/java-db-dependency().rar 数据库连接类源码: package com.itjh.javaUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; impor...
依赖包下载:http://xiazai./201407/tools/java-db-dependency().rar
数据库连接类源码:
package com.itjh.javaUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.dbcp.ConnectionFactory; import org.apache.commons.dbcp.DriverManagerConnectionFactory; import org.apache.commons.dbcp.PoolableConnectionFactory; import org.apache.commons.dbcp.PoolingDriver; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.pool.ObjectPool; import org.apache.commons.pool.impl.GenericObjectPool; /** * 连接数据库的综合类。 * 依赖jar包:commons.dbcp-1.4,commons.dbutils-1.3,commons.pool-1.5.4包。 * * @author 宋立君 * @date 2014年07月03日 */ public class DBUtil { private String dri = null; private String url = null; private String username = null; private String password = null; private String poolName = null; // 连接池名称 private ObjectPool connectionPool = null; // 连接池 // 对应的定时查询类 private QueryThread queryThread = null; /** * 功能:构造函数 * * @author 宋立君 * @date 2014年07月03日 * @param dri * 驱动全类名,例如:com.mysql.jdbc.Driver。 * @param url * 数据库url连接,例如: * "jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" * @param userName * 数据库用户名,例如:root * @param password * 数据库密码,例如:abc * @param poolName * 创建的数据库连接池的名称,例如mypool,注意一个web容器此名称不能重复。 */ public DBUtil(String dri, String url, String userName, String password, String poolName) { this.dri = dri; this.url = url; this.username = userName; this.password = password; this.poolName = poolName; } /** * 执行sql。 * * @param conn * 连接 * @param pstm * PreparedStatement * @return int 执行sql对应的影响行。 * @throws SQLException * @author 宋立君 * @date 2014年07月03日 */ public int execute(Connection conn, PreparedStatement pstm) throws SQLException { try { return pstm.executeUpdate(); } finally { Close(conn); } } /** * 查询sql。 * * @param conn * 连接 * @param pstm * PreparedStatement * @return List 查询的结果集 * @throws SQLException * @author 宋立君 * @date 2014年07月03日 */ public List query(Connection conn, PreparedStatement pstm) throws SQLException { try { return resultSetToList(pstm.executeQuery()); } finally { Close(conn); } } /** * 功能:ResultSet 转为List * * * @param rs * ResultSet 原始数据集 * @return List * @throws java.sql.SQLException * @author 宋立君 * @date 2014年07月03日 */ private List resultSetToList(ResultSet rs) throws java.sql.SQLException { if (rs == null) return Collections.EMPTY_LIST; ResultSetMetaData md = rs.getMetaData(); // 得到结果集(rs)的结构信息,比如字段数、字段名等 int columnCount = md.getColumnCount(); // 返回此 ResultSet 对象中的列数 List list = new ArrayList(); Map rowData = new HashMap(); while (rs.next()) { rowData = new HashMap(columnCount); for (int i = 1; i