简单封装JDBC

package com.sunshine.frimework.tool;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 *
 * @author WangChao
 * JDBC的编码步骤
 * 1:加载数据库驱动
 * 2:创建并获取数据库连接
 * 2:创建jdbc statement对象
 * 4:设置sql语句的参数(使用preparedStatement)
 * 5:通过statement执行sql并获取结果
 * 6:对sql执行结果进行解析处理
 * 7:释放资源(resultSet,preparedstatement,connection)
 *
 */

public class JdbcUtil {
    //定义连接变量
    private Connection conn = null;
    //定义用于运行sql语句声明stmt变量
    private Statement stmt = null;
    //定义结果集变量
    private ResultSet rs = null;
    
    //获取连接
    private void getConn(){
        try {
            //添加驱动
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("添加驱动成功!!!");
            try {
                //获取链接
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "15238566442");
                stmt = conn.createStatement();
            } catch (SQLException e) {
                //输出异常信息
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            //输出异常信息
            e.printStackTrace();
        }
    }
    
    //关闭
    private void close(){    
            try {
                if(rs != null){
                    rs.close();
                }
                if(stmt != null){
                    stmt.close();
                }
                if(conn != null){
                    conn.close();
                }
            } catch (SQLException e) {
                //输出异常信息
                e.printStackTrace();
            }        
    }
    
    //更新
    public boolean update(String sql){
        getConn();
        try {
            stmt.executeUpdate(sql);
            return true;
        } catch (Exception e) {
            //输出异常信息
            e.printStackTrace();
            return false;
        }finally{
            close();
        }        
    }
    
    //获取数据数目
    public int dataCount(String sql){
        getConn();
        try {
            rs = stmt.executeQuery(sql);
            rs.next();
            return rs.getInt(1);    
        } catch (Exception e) {
            //输出异常信息
            e.printStackTrace();
            return 0;
        }finally{
            close();
        }        
    }
    
    //查询
    public List<Map<String,Object>> query(String sql){
        System.out.println("执行的SQL语句是:"+sql);
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        getConn();
        try {
            rs = stmt.executeQuery(sql);
            //结构化数据对象
            ResultSetMetaData rsmt = rs.getMetaData();
            //列数
            int count = rsmt.getColumnCount();
            //存储所有列的名字
            String []nameArr = new String[count];
            for(int i = 0;i<nameArr.length;i++){
                //getColumnName()方法内的变量值是从1开始的
                nameArr[i] = rsmt.getColumnName(i+1);
            }
            //判断是否是有下一个
            while(rs.next()){
                //声明并实例化map
                Map<String,Object> map = new HashMap<String,Object>();
                for(int i = 0;i<nameArr.length;i++){
                    //把数据列名和数据都放进到map里
                    map.put(nameArr[i], rs.getString(nameArr[i]));
                }
                list.add(map);
            }
        } catch (Exception e) {
            //输出异常信息
            e.printStackTrace();
        }
        return list;
    }
}

posted @ 2016-10-17 22:36  qingtianBKY  阅读(220)  评论(0编辑  收藏  举报