JDBC工具类-JDBC练习-登录案例

* 目的:简化书写
* 分析:
  1. 注册驱动也抽取
  2. 抽取一个方法获取连接对象
    * 需求:不想传递参数(麻烦),还得保证工具类的通用性。
    * 解决:配置文件
      jdbc.properties
        url=
        user=
        password=

  3.抽取一个方法释放资源

代码实现:

复制代码
public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;
    /**
     * 文件的读取,只需要读取一次即可拿到这些值,使用静态代码块
     */
    static {
        // 读取资源文件
        try {
        // 1.创建Properties集合类
        Properties pro = new Properties();
        //2.加载文件
        pro.load(new FileReader("src/jdbc.properties"));
        //3.获取数据 赋值
        url = pro.getProperty("url");
        user = pro.getProperty("user");
        password = pro.getProperty("password");
        driver = pro.getProperty("driver");
        //4.注册驱动
        Class.forName(driver);
        } catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }


    /**
     * 获取连接
     *
     * @return 连接对象
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }

    /**
     * 释放资源
     *
     * @param rs
     * @param stmt
     * @param conn
     */
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
复制代码

* 练习:
  * 需求:
    1. 通过键盘录入用户名和密码
    2. 判断用户是否登录成功
      * select * from user where username = "" and password = "";
      * 如果这个sql有查询结果,则成功,反之,则失败

  * 步骤: 

    1. 创建数据库表 user

复制代码
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(32),
PASSWORD VARCHAR(32)

);

INSERT INTO USER VALUES(NULL,'zhangsan','123');
INSERT INTO USER VALUES(NULL,'lisi','234');
复制代码

    2.代码实现:

复制代码
public static void main(String[] args) {
        // 1.键盘录入,接受用户名和密码
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.next();
        System.out.println("请输入用户密码:");
        String password = sc.next();
        // 2.调用方法
        boolean flag = new jdbcDemo09().login(username, password);
        //3.判断结果,输出不同语句
        if (flag){
            //登录成功
            System.out.println("登录成功");
        }else {
            System.out.println("用户名或密码错误!");
        }
    }
    /**
     * 登录方法
     */
    public boolean login(String username,String password){
        // 判断账号密码是否为空
        if (username==null || password==null){
            return false;
        }
        // 连接数据库判断是否登录成功
        Connection conn = null;
        Statement  stmt = null;
        ResultSet  rs   = null;
        try {
            // 1.获取连接
            conn = JDBCUtils.getConnection();
            // 2.定义SQL
            String sql = "select * from user where  username='"+username+"'  and password = '"+password+"'  ";
            // 3.获取执行SQL的对象
            stmt = conn.createStatement();
            //4.执行查询
            rs = stmt.executeQuery(sql);
            //5.判断
            return rs.next();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
复制代码

 

posted @   夫君  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示