JDBC-ProparedStatement实现登录Login

PreparedStatement:执行sql的对象
  1. SQL注入问题:在拼接sql时,有一些生气了的特殊关键字参与字符串的拼接。会造成安全性问题
    1. 输入用户名随便,输入密码:a' or 'a' = 'a
    2.sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a'
  2. 解决sql注入问题:使用ProparedStatement对象来解决
  3. 预编译的SQL:参数使用?作为占位符
  4. 步骤:
    1. 导入驱动jar包:mysql-connector-java-8.0.17.jar
    2. 注册驱动
    3. 获取数据库连接对象 Connection
    4. 定义sql
      * 注意:sql的参数使用?作为占位符。如:select * from user wehre username = ? and password = ?;
    6. 给?赋值:
      * 方法: setXxx(参数1,参数2)
      * 参数1:?的位置编号 从1开始
      * 参数2:?的值
    7. 执行sql,接收返回结果,不需要传递sql语句
    8. 处理结果
    9. 释放资源
  5. 注意:后期都会使用ProparedStatement来完成增删改查的所有操作
    1. 可以防止SQL注入
    2. 效率更高

package cn.itcast.jdbc;

import cn.itcast.util.JDBCUtils;

import java.sql.*;
import java.util.Scanner;

public class JDBCDemo9 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        boolean flag = new JDBCDemo9().Login2(username, password);
        if(flag){
            System.out.println("登录成功!");
        }else {
            System.out.println("输入的用户名或密码错误!");
        }
    }
   public boolean Login2(String username,String password){
        if(username == null || password == null){
            return false;
        }
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "select * from user where username=? and password=?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1,username);
            pstmt.setString(2,password);
            rs = pstmt.executeQuery();
            return rs.next();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close(rs,pstmt,conn);
        }
        return false;
    }

}
posted @ 2019-12-11 14:48  shikern  阅读(203)  评论(0编辑  收藏  举报