zoukankan      html  css  js  c++  java
  • dljd_011_jdbc再次封装工具类_把数据库的相关信息写到配置文件中,降低代码的耦合度

    一、将连接数据库所需的相关信息写入到配置文件、通过读取配置文件来获取数据库的相关信息

    package edu.aeon.aeonutils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    /**
     * [说明]:jdbc工具类
     * 封装了jdbc里面的重复步骤:数据库的连接和数据库资源的释放
     * @author aeon
     * @version 1.2(该版本将连接数据库的各种数据库配置信息(用户名、密码、驱动及url)单独提取到配置文件中)
     */
    public class AeonJdbcUtils {
        private static String username;
        private static String password;
        private static String driverClass;
        private static String url;
        /**
         * 静态代码块处理读取之前的数据
         */
        static{
            InputStream inputStream = AeonJdbcUtils.class.getClassLoader().getResourceAsStream("config/database/database.properties");
            Properties properties=new Properties();
            try {
                properties.load(inputStream);
                username = properties.getProperty("username");
                password = properties.getProperty("password");
                driverClass = properties.getProperty("driverClass");
                url = properties.getProperty("url");
            } catch (IOException e) {
                System.out.println("初始化读取数据库配置文件--->database.properties失败!");
                e.printStackTrace();
            }
        }
        /**
         * 连接数据库
         * @return 数据库连接对象
         * @throws ClassNotFoundException
         * @throws SQLException
         */
        public static Connection getMySqlConnection() throws ClassNotFoundException, SQLException{
            Class.forName(driverClass);
            return DriverManager.getConnection(url, username, password);
        }
        /**
         * 释放数据库资源
         * @param resultSet 结果集
         * @param statement 执行sql语句的对象
         * @param connection 数据库连接对象
         */
        public static void closeDB(ResultSet resultSet,Statement statement,Connection connection){
            if(null!=resultSet){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    System.out.println("释放数据库资源失败!--->resultSet");
                    e.printStackTrace();
                }
            }
            if(null!=statement){
                try {
                    statement.close();
                } catch (SQLException e) {
                    System.out.println("释放数据库资源失败!--->statement");
                    e.printStackTrace();
                }
            }
            if(null!=connection){
                try {
                    connection.close();
                } catch (SQLException e) {
                    System.out.println("释放数据库资源失败!--->connection");
                    e.printStackTrace();
                }
            }
        }
    }

    测试代码:  

    package edu.aeon.aeonutils;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    /**
     * [说明]:测试连接数据库工具类(version 1.2)
     * @author aeon
     *
     */
    public class TestAeonJdbcUtils {
        public static void main(String[] args) {
            Connection connection = null;
            Statement statement = null;
            ResultSet resultSet = null;
            try {
                connection = AeonJdbcUtils.getMySqlConnection();
                statement = connection.createStatement();
                String sql = "select * from user";
                resultSet = statement.executeQuery(sql);
                System.out.println("用户id	用户名	用户密码");
                while (resultSet.next()) {
                    int userId = resultSet.getInt("userId");// 根据表字段名获取该行记录上的字段名所对应的字段值
                    String userName = resultSet.getString("userName");
                    String userPw = resultSet.getString("userpw");// 数据库中的字段不区分大小写
                    System.out.println(userId + "	" + userName + "	" + userPw);
                }
            } catch (ClassNotFoundException e) {
                System.out.println("加载驱动失败!");
                e.printStackTrace();
            } catch (SQLException e) {
                System.out.println("连接数据库失败!");
                e.printStackTrace();
            }
            AeonJdbcUtils.closeDB(resultSet, statement, connection);
        }
    }

    database.properties中的配置信息:  

     username=root
     password=root
     driverClass=com.mysql.jdbc.Driver
     url=jdbc:mysql://localhost:3306/db_test

    项目包视图截图如下:

      

    建库及表语句:  

    drop database db_test;
    create database db_test;
    use db_test;
    create table user(
        userId int(5) primary key comment '用户id',
        userName varchar(16) comment '用户姓名',
        userPw varchar(16) comment '用户密码'
    );
    insert into user(userId,userName,userPw) values(10001,'user1','user1');
    insert into user(userId,userName,userPw) values(10002,'user2','user2');
    insert into user(userId,userName,userPw) values(10003,'user3','user3');
    insert into user(userId,userName,userPw) values(10004,'user4','user4');
    insert into user(userId,userName,userPw) values(10005,'user5','user5');

    数据库信息截图:  

      

    测试结果截图:

      通过InputStream inputStream = AeonJdbcUtils.class.getClassLoader().getResourceAsStream("config/database/database.properties");方式只能读取src下的配置文件,因为eclipse项目部署后会将src下的放入到bin目录下,而这种方式实则是读取bin目录下的配置文件。

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    如何打开“USB调试”模式?
    Eclipse常用配置
    【luogu P5363】移动金币(博弈论)(DP)(数位DP)(MTT)
    【luogu P4245】【模板】任意模数多项式乘法(拆系数FFT)(MTT)
    【ybtoj高效进阶 21178】星际大战(并查集)
    【ybtoj高效进阶 21177】小小网格(杜教筛)(数论分块)(莫比乌斯反演)
    【luogu P4213】【模板】杜教筛(Sum)(数学)(整除分块)
    【luogu P6860】象棋与马(数学)(杜教筛)
    【luogu AT2376】Black and White Tree(结论)(博弈论)(二分图)
    SAM入门三题:字符串水题, LCS, P5546 [POI2000]公共串
  • 原文地址:https://www.cnblogs.com/aeon/p/10072674.html
Copyright © 2011-2022 走看看