/**
 * 
 */
package com.hotel.util;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.hotel.constant.Constants;
 
/**
 * 数据库连接通用类
 * 连接数据库的步骤:
 * 1. 导入驱动包
 * 2. 加载驱动
 * 3. 通过驱动管理器类获取数据库连接
 * 4. 通过连接对象创建预编译对象
 * 5. 通过编译对象执行SQL指令并处理返回结果
 * 6. 关闭相关操作对象
 *
 */
public class DBUtil {
     
     
     
    /**
     * 定义获取连接对象的方法
     * 
     */
    private static Connection getConn() {
         
        // 定义连接对象句柄
        Connection conn = null;
         
        try {
            // 加载驱动
            Class.forName(Constants.DRIVER_NAME);
            // 通过驱动管理器类获取数据库连接
            conn = DriverManager.getConnection(Constants.URL, Constants.USERNAME, Constants.PASSWORD);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
     
    /**
     * 定义执行简单SQL的增,删,改指令
     * @param sql 调用传入的SQL指令
     * @param objects 执行SQL指令需要的参数
     * @return int 返回方法操作后受影响的行数
     */
    public static int executeMyUpdate(String sql,Object... objects) {
         
        // 定义接受受影响行数的变量
        int row = 0;
        // 定义连接对象句柄
        Connection conn = null;
        // 定义编译对象句柄
        PreparedStatement pst = null;
         
        // 通过调用本类中的获取连接对象
        conn = getConn();
         
        try {
            // 通过连接对象创建编译对象
            pst = conn.prepareStatement(sql);
            // 设置SQL命令所需的参数
            if(objects != null) {
                for(int i =0 ;i> 返回查询构建集合对象
     */
    public static List> executeQuery(String sql,Object...objects) {
        // 定义表集合对象
        List> table = new ArrayList>();
        // 定义连接对象句柄
        Connection conn = null;
        // 定义编译对象句柄
        PreparedStatement pst = null;
        // 定义结果集句柄
        ResultSet rs = null;
         
        // 通过调用本类中的获取连接对象
        conn = getConn();
         
        try {
            // 通过连接对象创建预编译对象
            pst = conn.prepareStatement(sql);
            // 为查询编译对象设置参数
            if(objects != null) {
                for(int i=0;i row = new HashMap();
                    // 循环列
                    /* userId(key)      userName             userPass      userRemark
                    ----------- -------------------- ------------------------------
                       10002 (value)    normal               123           normal   */
                    /*
                     * rsd.getColumnName(i+1)  得到当前遍历行对应列的名称
                     */
                    for(int i=0;i> 返回查询构建集合对象
     */
    public static List> executeQuery(String sql,Object...objects) {
        // 定义表集合对象
        List> table = new ArrayList>();
        // 定义连接对象句柄
        Connection conn = null;
        // 定义编译对象句柄
        PreparedStatement pst = null;
        // 定义结果集句柄
        ResultSet rs = null;
         
        // 通过调用本类中的获取连接对象
        conn = getConn();
         
        try {
            // 通过连接对象创建预编译对象
            pst = conn.prepareStatement(sql);
            // 为查询编译对象设置参数
            if(objects != null) {
                for(int i=0;i row = new HashMap();
                    // 循环列
                    /* userId(key)      userName             userPass      userRemark
                    ----------- -------------------- ------------------------------
                       10002 (value)    normal               123           normal   */
                    /*
                     * rsd.getColumnName(i+1)  得到当前遍历行对应列的名称
                     */
                    for(int i=0;i