zoukankan      html  css  js  c++  java
  • JDBC封装数据库的工具类【多测师】

    一、先写一个数据库的工具函数
    
    要求:
    
    1、可以通过IP地址账号密码等进行连接数据库
    
    2、封装一
    
    封装一个查询的方法  ==》多测师_王sir
    
    package com.xiaoshu;
    
    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.util.ArrayList;
    
    import java.util.HashMap;
    
    import java.util.List;
    
    import java.util.Properties;
    
    
    
    public class DBUtils {
    
    
    
            //硬编码,写死的代码--》解耦-》配置文件
    
            /**
    
             * 连接字符串
    
             */
    
            private static String url;
    
            /**
    
             * 用户名
    
             */
    
            private static String user;
    
            /**
    
             * 密码
    
             */
    
            private static String password;
    
    
    
            /**
    
             * 上面的这些信息会变吗??
    
             *                 数据库名
    
             *                 用户名密码变了
    
             *                 数据库服务器ip换了
    
             *                 测试环境切换到生产服务器
    
             *                 数据库:mysql--》oracle
    
             * 测试环境
    
             */
    
    
    
            //注册驱动:只需要一次,当你用DBUtils类的时候,就注册好 把注册驱动写进静态代码块当中
    
            //静态代码块:只在类加载到jvm中执行一遍
    
            static {
    
                    try {
    
                            Properties properties = new Properties();
    
                            properties.load(Tester.class.getResourceAsStream("/jdbc.properties"));
    
                            url = properties.getProperty("jdbc.url");
    
                            user = properties.getProperty("jdbc.user");
    
                            password = properties.getProperty("jdbc.password");
    
    
    
                            String driver = properties.getProperty("jdbc.driver");
    
                            Class.forName(driver);
    
                    } catch (Exception e) {
    
                            e.printStackTrace();
    
                    }
    
            }
    
    
    
            //获得连接的方法
    
            private static Connection getConnection() {
    
                    try {
    
                            return DriverManager.getConnection(url, user, password);
    
                    } catch (SQLException e) {
    
                            e.printStackTrace();
    
                    }
    
                    return null;
    
            }
    
    
    
            /**
    
             * 增删改
    
             * @param sql
    
             * @param parameters
    
             * @throws ClassNotFoundException
    
             * @throws SQLException
    
             */
    
            public static void excuteSQL(String sql, String... parameters) {
    
                    Connection conn = null;      //先进行初始化 为了后面的资源可以在finally当中进行关闭
    
                    PreparedStatement pstmt = null;
    
                    try {
    
                            conn = getConnection();
    
                            pstmt = conn.prepareStatement(sql);
    
                            for (int i = 0; i < parameters.length; i++) {
    
                                    pstmt.setString(i + 1, parameters);
    
                            }
    
                            pstmt.execute();
    
                    } catch (SQLException e) {
    
                            e.printStackTrace();
    
                    } finally {
    
                            close(conn, pstmt);
    
                    }
    
            }
    
    
    
            
    
    
    
            /**
    
             * 查询
    
             * @param sql
    
             * @param parameters
    
             * @return
    
             * @throws ClassNotFoundException
    
             * @throws SQLException
    
             */
    
            public static List<HashMap<String, String>> select(String sql, String... parameters) {
    
                    //是可能有多条记录记录--》保存到一个什么数据容器
    
                    List<HashMap<String, String>> allRecordList = null;
    
                    Connection conn = null;
    
                    PreparedStatement pstmt = null;
    
                    ResultSet resultSet = null;
    
                    try {
    
                            //获得连接
    
                            conn = getConnection();
    
                            pstmt = conn.prepareStatement(sql);
    
                            //参数设值
    
                            for (int i = 0; i < parameters.length; i++) {
    
                                    pstmt.setString(i + 1, parameters);
    
                            }
    
                            //执行查询获取结果集
    
                            resultSet = pstmt.executeQuery();
    
                            //获取结果集的元数据:   元数据(描述数据的数据)
    
                            ResultSetMetaData metaData = resultSet.getMetaData();
    
                            //获得每个字段,需要知道字段数,获得列数
    
                            int columnCount = metaData.getColumnCount();//5
    
                            allRecordList = new ArrayList<HashMap<String, String>>();
    
                            //遍历结果集
    
                            while (resultSet.next()) {
    
                                    //一条记录是包装成一个map
    
                                    HashMap<String, String> recordMap = new HashMap<String, String>();
    
                                    //遍历所有的列
    
                                    for (int i = 1; i <= columnCount; i++) {
    
                                            String columnName = metaData.getColumnName(i);
    
                                            String value = resultSet.getString(i);
    
                                            //                                System.out.print(columnName+":"+value +"    ");
    
                                            //把字段名作为key,对应数据作为值: key -value:
    
                                            recordMap.put(columnName, value);
    
                                    }
    
                                    //添加到List容器中
    
                                    allRecordList.add(recordMap);
    
                            }
    
                    } catch (SQLException e) {
    
                            e.printStackTrace();
    
                    } finally {
    
                            close(conn, pstmt, resultSet);
    
                    }
    
    
    
                    return allRecordList;
    
            }
    
    
    
            /**
    
             * 关闭资源
    
             * @param conn
    
             * @param pstmt
    
             * @param resultSet
    
             */
    
            private static void close(Connection conn, PreparedStatement pstmt, ResultSet resultSet) {
    
                    //关闭资源
    
                    if (resultSet != null) {
    
                            try {
    
                                    resultSet.close();
    
                            } catch (SQLException e) {
    
                                    e.printStackTrace();
    
                            }
    
                    }
    
                    close(conn, pstmt);
    
            }
    
    
    
            /**
    
             * 关闭资源
    
             * @param conn
    
             * @param pstmt
    
             */
    
            private static void close(Connection conn, PreparedStatement pstmt) {
    
                    if (pstmt != null) {
    
                            try {
    
                                    pstmt.close();
    
                            } catch (SQLException e) {
    
                                    e.printStackTrace();
    
                            }
    
                    }
    
                    if (conn != null) {
    
                            try {
    
                                    conn.close();
    
                            } catch (SQLException e) {
    
                                    e.printStackTrace();
    
                            }
    
                    }
    
            }
    
    }
    
    
    二、调用工具类当中的select查询方法
    
    package com.xiaoshu;
    
    import java.io.IOException;
    
    import java.sql.SQLException;
    
    import java.util.HashMap;
    
    import java.util.List;
    
    import java.util.Map;
    
    import java.util.Properties;
    
    
    
    public class Tester {
    
            public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
    
                    String sql = "select * from member;";
    
                    List<HashMap<String, String>> recordList = DBUtils.select(sql);  //查询的结果以键值对的形式返回保存在列表容器当中
    
                    for (HashMap<String, String> record : recordList) {   //对recordList对象进行循环遍历 取到单个的键和值
    
                            System.out.println(record);
    
    
    
                    }
  • 相关阅读:
    NCPC2016
    2016 ACM-ICPC CHINA-Final
    2016沈阳区域赛题解
    NAIPC2016部分题解
    Gym
    数论之莫比乌斯反演
    2018 多校 HDU
    LightOJ
    LightOJ
    java操作XML---XML基础知识
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/12865043.html
Copyright © 2011-2022 走看看