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 { getConnection(); // getConnection(_DRIVER,_URL,_USER_NA,_PASSWORD); boolean flag = false; stmt = con.createStatement(); logger.info("###############::执行SQL语句操作(更新数据 无参数):" + strSql); try { if (0 < stmt.executeUpdate(strSql)) { close_DB_Object(); flag = true; con.commit(); } } catch (SQLException ex) { logger .info("###############Error DBManager Line126::执行SQL语句操作(更新数据 无参数):" + strSql + "失败!"); flag = false; con.rollback(); throw ex; } return flag; } /** * 执行SQL语句操作(更新数据 有参数) * * @param strSql * sql指令 * @param prams * 参数列表 * @return * @throws SQLException */ public boolean executeUpdate(String strSql, HashMap prams) throws SQLException, ClassNotFoundException { getConnection(); // getConnection(_DRIVER,_URL,_USER_NA,_PASSWORD); boolean flag = false; try { pstmt = con.prepareStatement(strSql); setParamet(pstmt, prams); logger.info("###############::执行SQL语句操作(更新数据 有参数):" + strSql); if (0 < pstmt.executeUpdate()) { close_DB_Object(); flag = true; con.commit(); } } catch (SQLException ex) { logger .info("###############Error DBManager Line121::执行SQL语句操作(更新数据 无参数):" + strSql + "失败!"); flag = false; con.rollback(); throw ex; } catch (ClassNotFoundException ex) { logger .info("###############Error DBManager Line152::执行SQL语句操作(更新数据 无参数):" + strSql + "失败! 参数设置类型错误!"); con.rollback(); throw ex; } return flag; } /** * 执行SQL语句操作(查询数据 无参数) * * @param strSql * SQL语句 * @return 数组对象列表 * @throws Exception */ public ArrayList