日期:2014-05-16  浏览次数:20900 次

Java 通用数据库连接类[支持存储过程 参数自动识别]

package com.hospital.dao.tools;

import java.sql.CallableStatement;
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.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.log4j.Logger;

/**
?* 数据库操作管理类
?*
?* @author Harlyhood
?*
?*/
public class DBManager {

?// --------------------- Instance
?private static Logger logger = Logger.getLogger(DBManager.class);
?// --------------------- Methods

?// 数据库连接对象
?private Connection con;
?// SQL语句对象
?private Statement stmt;
?// 带参数的Sql语句对象
?private PreparedStatement pstmt;
?// 记录集对象
?private ResultSet rs;
?// 数据连接管理(连接池对象)
?private DBConnectionManager dcm = null;

?/** ***********************手动设置的连接参数********************************* */
?@SuppressWarnings("unused")
?private static String _DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
?@SuppressWarnings("unused")
?private static String _URL = "jdbc:sqlserver://localhost:1433;database=Hospital_AI_DB;characterEncoding=gb2312";
?@SuppressWarnings("unused")
?private static String _USER_NA = "sa";
?@SuppressWarnings("unused")
?private static String _PASSWORD = "";

?/** ********************************************************************** */

?// 默认构造
?public DBManager() {
?}

?/** ****************************************************************************************** */
?/**
? * **************************************** 数据库连接初始化
? * ***********************************
? */
?/** ****************************************************************************************** */

?/**
? * 得到一个默认的数据库连接[从 com.hospital.dao.tools.db.properties文件初始化]
? *
? * @throws Exception
? */
?private void getConnection() {
??logger.info("###############open:::::从默认的配置文件得到一个数据库连接");
??// 获取一个连接池管理类的实例
??dcm = DBConnectionManager.getInstance();
??// 得到一个数据库连接
??con = dcm.getConnection("mysql");

??try {
???con.setAutoCommit(false);
??} catch (SQLException e) {

???e.printStackTrace();
??}
?}

?/**
? * 从指定参数得到一个连接对象
? *
? * @param driver
? * @param url
? * @param user_na
? * @param password
? * @throws Exception
? */
?public void getConnection(String driver, String url, String user_na,
???String password) throws Exception {
??try {
???logger.info("###############open:::::从指定配置中得到一个数据库连接");
???Class.forName(driver);
???con = DriverManager.getConnection(url, user_na, password);
??} catch (ClassNotFoundException ex) {
???logger
?????.info("###############Error[com.hospital.dao.tools.DBManager^^^Method:getConnection^^^Line:81]找不到类驱动类: "
???????+ driver);
???throw ex;
??} catch (SQLException ex) {
???logger
?????.info("###############Error[com.hospital.dao.tools.DBManager^^^Method:getConnection^^^Line:81]加载类: "
???????+ driver + " 时出现 SQLException 异常");
???throw ex;
??}
?}

?/** ****************************************************************************************** */
?/**
? * **************************************** 数据库操作方法
? * ***********************************
? */
?/** ****************************************************************************************** */

?/**
? * 执行SQL语句操作(更新数据 无参数)
? *
? * @param strSql
? *??????????? SQL语句
? * @throws Exception
? */
?public boolean executeUpdate(String strSql) throws SQLException {<