JDBC工具类 访问数据库 增删改查CRUD的通用方法

  1 package com.zmh.util;
  2 
  3 import java.sql.*;
  4 import java.util.ArrayList;
  5 import java.util.HashMap;
  6 import java.util.List;
  7 import java.util.Map;
  8 /**
  9  * JDBC工具类
 10  */
 11 public class Util1 {
 12     //加载驱动
 13     static {
 14         try {
 15             Class.forName("com.mysql.jdbc.Driver");
 16         } catch (ClassNotFoundException e) {
 17             e.printStackTrace();
 18         }
 19     }
 20     //获得连接
 21     public static Connection getConnection(){
 22         try {
 23             DriverManager.getConnection("jdbc:mysql://localhost:3306/qy97?characterEnconding=utf-8","root","root");
 24         } catch (SQLException e) {
 25             e.printStackTrace();
 26         }
 27         return null;
 28     }
 29     /** 增删改的通用方法
 30      * @param String sql  要执行的sql
 31      * @param Object[] obj    对象类型的数组  里面存放着 sql执行的占位符参数
 32      *              【name,age,id】
 33      *                【id】
 34      *               【name,age】
 35      *         Object... 可变参数
 36      * */
 37     public static boolean executeUpdate(String sql,Object... args){
 38         Connection conn = null;
 39         PreparedStatement ps = null;
 40         try {
 41             conn = getConnection();
 42             ps = conn.prepareStatement(sql);
 43             //有参数
 44             for(int i=0;i<args.length;i++){
 45                 ps.setObject(i+1,args[i]);
 46             }
 47             //执行sql语句
 48             int i = ps.executeUpdate();
 49             //返回  true
 50             return i>0;
 51         } catch (SQLException e) {
 52             e.printStackTrace();
 53         }finally{
 54             //关闭资源
 55             close(conn,ps,null);
 56         }
 57         return false;
 58     }
 59     /**
 60      *  查询的通用方法
 61      * @param sql;
 62      * @param args;
 63      * @return
 64      * */
 65     public static List<Map<String,Object>> executeQuery(String sql,Object... args){
 66         Connection conn = null;
 67         PreparedStatement ps = null;
 68         ResultSet rs = null;
 69         try {
 70             conn = getConnection();
 71             ps = conn.prepareStatement(sql);
 72             //有可能有参数
 73             for(int i=0;i<args.length;i++){
 74                 ps.setObject(i+1,args[i]);
 75             }
 76             //执行sql语句
 77             rs = ps.executeQuery();
 78             //创建List集合
 79             List<Map<String, Object>> list = new ArrayList<>();
 80             //获取本次查询结果集有多少列
 81             int count = rs.getMetaData().getColumnCount();
 82             //while循环
 83             while(rs.next()){
 84                 //创建Map集合   获取一个数据封装成一个Map集合
 85                 Map<String, Object> map = new HashMap<>();
 86                 //for循环  遍历所有的列
 87                 for(int i=0;i<count;i++){
 88                     //获取本次查询结果集的列名
 89                     String name = rs.getMetaData().getColumnLabel(i + 1);
 90                     map.put(name,rs.getObject(name));
 91                 }
 92                 //把所有的map集合添加到List集合中
 93                 list.add(map);
 94             }
 95             //返回值
 96             return list;
 97         } catch (SQLException e) {
 98             e.printStackTrace();
 99         }finally{
100             //关闭资源
101             close(conn,ps,rs);
102         }
103         return null;
104     }
105     /**
106      *  关闭资源的通用方法
107      * */
108     public static void close(Connection conn,Statement stat,ResultSet rs){
109         try{
110             if(rs!=null){
111                 rs.close();
112             }
113             if(stat!=null){
114                 stat.close();
115             }
116             if(conn!=null){
117                 conn.close();
118             }
119         }catch(Exception e){
120             e.printStackTrace();
121         }
122     }
123 }

 

 
原文地址:https://www.cnblogs.com/zhangmenghui/p/10696024.html