jdbc连接池

自己整理的一个JDBC驱动,方便以后离开框架直接测试,在mysql下测试通过,下面是源码:

package com.lzb.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 
 * 功能描述:jdbc数据库连接池
 *
 * @author  lizhenin
 *
 * <p>修改历史:(修改人,修改时间,修改原因/内容)</p>
 */
public class JDBCUtil {
	
	public static final String ORACLE = "ORACLE";
	public static final String MYSQL = "MYSQL";
	public static final String SQLSERVER = "SQLSERVER";
	public static final String ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";
	public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
	public static final String SQLSERVER_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
	
	private static JDBCUtil instance = null;
	
	/**
	 * 
	 * 构造函数:
	 *
	 */
	public JDBCUtil() {}
	
	/**
	 * 
	 * 功能描述:返回JDBCUtil单例模式
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-2-8 上午10:55:21</p>
	 *
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static synchronized JDBCUtil getInstance() { 
		if (instance == null) 
			instance = new JDBCUtil(); 
		return instance;
	} 
	
	/**
	 * 
	 * 功能描述:获取数据库连接对象
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-2-8 上午10:25:14</p>
	 *
	 * @param dbName
	 * 			数据库名称 eg JDBCUtil.ORACLE, JDBCUtil.MYSQL...
	 * @param dbUser
	 * 			连接数据的用户名
	 * @param pwd
	 * 			连接数据库密码
	 * @param port
	 * 			连接数据库端口
	 * @param sid
	 * 			连接数据库的sid
	 * @param url
	 * 			连接数据url
	 * @return
	 * 			连接数据库Connection对象
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static Connection getConnection(String dbName, String dbUser, String pwd, 
			String url, String port, String sid) {
		
		String connUrl = null;
		if (dbName!=null && pwd!=null && port!=null && sid!=null && url!=null) {
			if(dbName.equals(JDBCUtil.ORACLE)) {
				try {
					Class.forName(JDBCUtil.ORACLE_DRIVER);
					connUrl = "jdbc:oracle:thin:@"+url+":"+port+":"+sid;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}else if(dbName.equals(JDBCUtil.MYSQL)) {
				try {
					Class.forName(JDBCUtil.ORACLE_DRIVER);
					connUrl = "jdbc:mysql://"+url+":"+port+"/"+sid;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}else if(dbName.equals(JDBCUtil.SQLSERVER)) {
				try {
					Class.forName(JDBCUtil.SQLSERVER_DRIVER);
					connUrl = "jdbc:microsoft:sqlserver://"+url+":"+port+";DatabaseName="+sid;					
				} catch (Exception e) {
					e.printStackTrace();
				}
			}else{
				return null; // 传入的参数不符合
			}
			try {
				//System.out.println(connUrl);
				return (DriverManager.getConnection(connUrl, dbUser, pwd));
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
		}
		return null;
	}
	
	/**
	 * 
	 * 功能描述:获取执行sql对象
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-2-8 上午11:29:48</p>
	 *
	 * @param conn
	 * 			连接数据库对象
	 * @return
	 * 			Statement对象
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static Statement  getStatement (Connection conn) {
		
		if (conn==null) {
			System.out.println("Connection is null.");
    		return null;
		}
		try {
			return conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 
	 * 功能描述:获取查询结果集合
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-2-8 下午2:23:56</p>
	 *
	 * @param stmt
	 * 			连接数据库接口类
	 * @param sql
	 * 			执行sql语句
	 * @return
	 * 			ResultSet对象
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static ResultSet getResultSet(Statement stmt, String sql) {
		
		if(stmt==null) {
    		System.out.println("Statement is null!");
    		return null;
    	}
		if(sql==null) {
			System.out.println("sql str is null!");
    		return null;
		}
    	try {
			return stmt.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}		
	}
	
	/**
	 * 
	 * 功能描述:释放资源
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-2-8 下午2:28:12</p>
	 *
	 * @param rs
	 * @param stmt
	 * @param conn
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static void release(ResultSet rs, Statement stmt, Connection conn) {
		
		if(rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				System.out.println("ResultSet close failure.");
				e.printStackTrace();
			}
		}
		if(stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				System.out.println("Statement close failure.");
				e.printStackTrace();
			}
		}
		if(conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				System.out.println("Connection close failure.");
				e.printStackTrace();
			}
		}
	}
}

 

 

你可能感兴趣的:(jdbc)