• JDBC 使用db.properties 获取数据库连接


    db.properties连接

    1、写一个配置文件db.properties用来存放连接的内容

    db.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/web08?useUnicode=true&characterEncoding=utf8
    username=root
    password=root

    2、写JDBCUtils_V3工具类用来获取数据库连接

    package cn.itheima.jdbc.utils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    import java.util.ResourceBundle;
    
    /**
     * 提供获取连接和释放资源的 方法
     * */
    public class JDBCUtils_V3 {
        private static String driver;
        private static String url;
        private static String username;
        private static String password;
    
        /**
         * 静态代码块加载配置文件信息
         */
        static {
            try {
                // 1.通过当前类获取类加载器
                ClassLoader classLoader = JDBCUtils_V3.class.getClassLoader();
                // 2.通过类加载器的方法获得一个输入流
                InputStream is = classLoader.getResourceAsStream("db.properties");
                // 3.创建一个properties对象
                Properties props = new Properties();
                // 4.加载输入流
                props.load(is);
                // 5.获取相关参数的值
                driver = props.getProperty("driver");
                url = props.getProperty("url");
                username = props.getProperty("username");
                password = props.getProperty("password");
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        /**
         * 获取连接方法
         * 
         * @return
         */
        public static Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(url, username, password);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
    
        /**
         * 释放资源方法
         * 
         * @param conn
         * @param pstmt
         * @param rs
         */
        public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstmt != null) {
                try {
                    pstmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }

    TestUtils.java

    package cn.itheima.jdbc.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Test;
    
    import cn.itheima.jdbc.JDBCUtils_V1;
    import cn.itheima.jdbc.JDBCUtils_V2;
    import cn.itheima.jdbc.JDBCUtils_V3;
    
    /**
     * 测试工具类
     */
    public class TestUtils {
        /**
         * 根据id更新用户信息方法
         */
        @Test
        public void testUpdateById() {
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                // 1.获取连接
                conn = JDBCUtils_V3.getConnection();
                // 2.编写sql语句
                String sql = "update tbl_user set upassword=? where uid=?";
                // 3.获取执行sql语句对象
                pstmt = conn.prepareStatement(sql);
                // 4.设置参数
                pstmt.setString(1, "999");
                pstmt.setInt(2, 3);
                // 5.执行更新操作
                int row = pstmt.executeUpdate();
                if (row > 0) {
                    System.out.println("更新成功!");
                } else {
                    System.out.println("更新失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                // 6.释放资源
                JDBCUtils_V3.release(conn, pstmt, null);
            }
        }
    
        /**
         * 根据id删除信息方法
         */
        @Test
        public void testDeleteById() {
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                // 1.获取连接
                conn = JDBCUtils_V3.getConnection();
                // 2.编写sql语句
                String sql = "delete from tbl_user where uid=?";
                // 3.获取执行sql语句对象
                pstmt = conn.prepareStatement(sql);
                // 4.设置参数
                pstmt.setInt(1, 4);
                // 5.执行删除操作
                int row = pstmt.executeUpdate();
                if (row > 0) {
                    System.out.println("删除成功!");
                } else {
                    System.out.println("删除失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                // 6.释放资源
                JDBCUtils_V3.release(conn, pstmt, null);
            }
        }
    
        /**
         * 添加用户信息方法
         */
        @Test
        public void testAdd() {
            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                // 1.获取连接
                conn = JDBCUtils_V2.getConnection();
                // 2.编写sql语句
                String sql = "insert into tbl_user values(null,?,?)";
                // 3.获取执行sql语句对象
                pstmt = conn.prepareStatement(sql);
                // 4.设置参数
                pstmt.setString(1, "lisi");
                pstmt.setString(2, "hehe");
                // 5.执行插入操作
                int row = pstmt.executeUpdate();
                if (row > 0) {
                    System.out.println("添加成功!");
                } else {
                    System.out.println("添加失败!");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                // 6.释放资源
                JDBCUtils_V2.release(conn, pstmt, null);
            }
        }
    
        /**
         * 根据id查询用户信息
         */
        @Test
        public void testFindUserById() {
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                // 1.获取连接
                conn = JDBCUtils_V1.getConnection();
                // 2.编写sql语句
                String sql = "select * from tbl_user where uid=?";
                // 3.获取执行sql语句对象
                pstmt = conn.prepareStatement(sql);
                // 4.设置参数
                pstmt.setInt(1, 2);
                // 5.执行查询操作
                rs = pstmt.executeQuery();
                // 6.处理结果集
                while (rs.next()) {
                    System.out.println(rs.getString(2) + "----" + rs.getString("upassword"));
                }
                // 释放资源放在此处行么?【不行滴!】
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                // 7.释放资源
                JDBCUtils_V1.release(conn, pstmt, rs);
            }
        }
    }
  • 相关阅读:
    ECC 构筑安全可靠的区块链
    代理模式和装饰者模式
    Context都没弄明白,还怎么做Android开发?
    如何在Android Studio中查看一个类的继承关系呢?
    Android控件的继承关系
    安卓控件体系结构
    Android View框架总结(三)View工作原理
    Laravel中用GuzzleHttp
    学习PHP好,还是Python好呢?
    ElasticSearch入门 第一篇:Windows下安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7041666.html
Copyright © 2020-2023  润新知