使用的数据库 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("账号密码错误,请重新输入!!!"); } } }