首页 > 其他分享 >JDBC工具类-JDBC练习-登录案例

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

时间:2022-10-18 13:11:24浏览次数:45  
标签:username JDBC String 登录 练习 null static new password

* 目的:简化书写
* 分析:
  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);
        }
    }

 

标签:username,JDBC,String,登录,练习,null,static,new,password
From: https://www.cnblogs.com/xuche/p/16802240.html

相关文章

  • JDBC练习-select语句和JDBC工具类
    JDBC练习-select语句练习:定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回。1.定义Emp类封装Emp表数据的JavaBean2.实现方法public List<Emp>findA......
  • Beyond Compare4 使用 SSH 登录问题记录
    服务器场景服务器未安装ftp软件,仅允许通过sftp登录,已开启防火墙,放行端口40022/TCP,不允许使用密码登录问题记录错误消息1:Connectionfailed:connectionerror(-1)原......
  • [答疑]重复登录时后一个把前一个挤下去的状态图
    重复登录时后一个把前一个挤下去的状态图UML菜鸟(122***922)2018-05-3022:39:44请问下,用户登录,注销,还有重复登录时后一个把前一个挤下去,这个如何画状态图来说明呢?UML菜鸟(......
  • JDBC工具类
        ......
  • JDBC
    JDBC概念:JDBC就是使用Java语言操作关系型数据库的一套API全称:(JavaDataBaseConnectivity)Java 数据库连接JDBC本质:官方(sun公司)定义的一套操作所有关系型数据库的规则......
  • 【Vue】悬浮窗和聚焦登录组件经验总结
    前言 本文整理了实现悬浮窗以及聚焦登录组件的功能。 为的是方便大家和自己的学习。 省流:可以只看1.2和2的代码即可1悬浮窗现在各大流行视频网站的平台都在使用这种悬浮......
  • dns登录方式记录(资产登记过程记录)
    1.enterodlpostgresqldatabase进入postgresql数据库,选择1smart_scan-e 该命令实际上会进去postgresql数据库2.查看ip等信息select*fromdns_server_info......
  • 一个简单的vuedraggle练习
    在vue项目中npmi vuedraggable引入页面中<template><divclass="row"><divclass="col-1"><h3>组件</h3><draggablecl......
  • 554JDBC事务管理 Jdbc事务管理 and555JDBC管理事务_概述 556JDBC管理事务实现
    JDBC事务管理1.Preparedstatement:执行sql的对象1.SQL注入问题:在拼接sql时,有一些的sql的特殊关键字参与字符串的拼接。会造成安全性问题2.用户随便输入:例如dawug......
  • 【MySQL练习】多表查询练习(二)
    查看代码:数据库和表数据创建CREATEDATABASE`wudang`;USE`wudang`;CREATETABLE`t_dept`(`id`INT(11)NOTNULLAUTO_INCREMENT,`deptName`VARCHAR(30)DEFAU......