PreparedStatement 防止sql注入 练习

使用的数据库 MariaDB 10.5.4版本   端口1054     数据库为jt_db,表 为user  

数据库的建表和插入相关数据代码:

create table user(
    id int primary key auto_increment,
    username varchar(50),
    password varchar(50)
);

insert into user values(null,"张三","123");
insert into user values(null,"李四","234");

 

其中使用到的JdbcUtil 类参见:https://www.cnblogs.com/lxsfve/p/13232402.html

 

package day02;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

/**
 * @author 小小的梦想丶
 * @create 2020-07-03 19:13:01
 * @desc 练习 prepareStatement 防止sql 注入
 */
public class loginByPreparedSatementTest {
  public static void main(String[] args) throws Exception {
    // 根据用户名和密码查询用户信息
    // 提示用户输入  账号  密码
    Scanner sc = new Scanner(System.in);
    System.out.println("请登录!!");
    System.out.println("请输入账号>>>");
    String user = sc.nextLine();
    System.out.println("请输入密码>>>");
    String pwd = sc.nextLine();

    // 执行login  方法
    login(user, pwd);
  }

  private static void login(String user, String pwd) throws Exception {
    // 通过  jdbcutil  获取数据库连接
    Connection conn = JdbcUtil.getConn();
    // 获取 传输器  执行sql 语句
    String sql = "select * from user where username=? and password=?";
    PreparedStatement ps = conn.prepareStatement(sql);
    // 设置参数
    ps.setString(1, user);
    ps.setString(2, pwd);
    // 执行sql 语句    这里不需要传sql 语句  返回结果
    ResultSet rs = ps.executeQuery();

    // 处理结果
    // 如果  账号密码正确  则能在数据库中查询到相应得结果  也就是 rs里面有值
    if (rs.next()) {
      System.out.println("登录成功!!!");
    } else {
      System.out.println("账号密码错误,请重新输入!!!");
    }
  }
}

  

PreparedStatement 防止sql注入 练习

上一篇:JAVA基础-JDBC连接池


下一篇:详解MySQL基准测试和sysbench工具