JDBC之组件封装

  本文所需架包:mysql-connector-java-5.1.7-bin.jar(连接MySQL数据库需要),ojdbc6.jar(连接Oracle数据库需要)

1.JDBC工具类(JDBCUtil.java)

package mysql.util;

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

public class JDBCUtil {
    public static Connection getMysqlConect() throws Exception{
        //1.注册驱动(加载com.mysql.jdbc.Driver类的同时实现注册mysql驱动,因为注册驱动是com.mysql.jdbc.Driver类中的静态代码块)
        Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接
        String url = "jdbc:mysql://localhost:3306/test";
        Connection conn = DriverManager.getConnection(url, "root", "root");
        
        return conn;
    }
    
    public static Connection getOracleConect() throws Exception{
        Class.forName("oracle.jdbc.driver.OracleDriver");
        
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        Connection conn = DriverManager.getConnection(url, "huwei", "123");
        
        return conn;
    }
    
    public static void closeStatementSql(Connection conn,Statement sta,ResultSet rs){
        try {
            //先赋值的后关闭
            if(rs != null){
                rs.close();
            }
            if(sta != null){
                sta.close();
            }
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    public static void closePrepareStatementSql(Connection conn,PreparedStatement pst,ResultSet rs){
        try {
            if(rs != null){
                rs.close();
            }
            if(pst != null){
                pst.close();
            }
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2.JDBC模板类(JDBCTemplate.java)

package mysql.util;

import java.sql.Connection;
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;

public class JDBCTemplate {
    public static void sqlUpdate(String sql, Object[] params){
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            conn = JDBCUtil.getMysqlConect();
            pst = conn.prepareStatement(sql);
            //因为pst不需要参数时,params可能会传入null;
            //为了避免出现NullPointerException,对params进行声明。
            if(params == null){
                params = new Object[]{};
            }
            for (int i = 0; i < params.length; i++) {
                pst.setObject(i+1, params[i]);
            }
            pst.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            JDBCUtil.closePrepareStatementSql(conn, pst, null);
        }
    }
    
  public static List<Map<String,Object>> sqlQuery(String sql, Object[] params){
        
        List<Map<String,Object>> recordList = new ArrayList<Map<String,Object>>();
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getMysqlConect();
            pst = conn.prepareStatement(sql);
            /*因为pst不需要参数时,params可能会传入null;
                   为了避免出现NullPointerException,对params进行声明。
            */
            if(params == null){
                params = new Object[]{};
            }
            for (int i = 0; i < params.length; i++) {
                pst.setObject(i+1, params[i]);
            }
            rs = pst.executeQuery();
            
            ResultSetMetaData mataData = rs.getMetaData();
            //the count of records
            int count = mataData.getColumnCount();
            
            while(rs.next()){
                Map<String, Object> record = new HashMap<String, Object>();
                for(int i = 1; i <= count; i++){
                    String columnName = mataData.getColumnName(i);
                    record.put(columnName,rs.getObject(i));
                }
                recordList.add(record);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            JDBCUtil.closePrepareStatementSql(conn, pst, null);
        }
        return recordList;
    }
}

3.JDBC测试类(JDBCTest.java)

package mysql.test;

import java.util.List;
import java.util.Map;

import mysql.util.JDBCTemplate;

import org.junit.Test;

public class JDBCTest {
    
    @Test
    public void testSqlUpdate(){
        String sql = "update emp set name = ? where id = ?";
        Object[] params = new Object[]{"huwei",1};
        JDBCTemplate.sqlUpdate(sql, params);
    }
    
    @Test
    public void testSqlQuery(){
        String sql = "select * from emp";
        //Object[] params = new Object[]{};
        List<Map<String,Object>> recordList = JDBCTemplate.sqlQuery(sql, null);
        for (Map<String,Object> record : recordList) {
            System.out.println(record.get("id") + "  " + record.get("name"));
        }
    }
}

   

  更多内容,请访问: http://www.cnblogs.com/BlueStarWei/

原文地址:https://www.cnblogs.com/BlueStarWei/p/7236113.html