前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PreparedStatement连接数据库实现登录验证,避免sql注入问题

PreparedStatement连接数据库实现登录验证,避免sql注入问题

作者头像
发布2020-10-23 10:40:25
8190
发布2020-10-23 10:40:25
举报
文章被收录于专栏:后端JavaEE

一、代码

代码语言:javascript
复制
package d03_system;

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

/**
 * zt
 * 2020/8/20
 * 14:19
 * 1.注册驱动(可省略)
 * 2.创建链接
 * 3.创建命令
 * 4.执行命令
 * 5.关闭资源
 *
 * PreparedStatement pstat = conn.prepareStatement("select * from user where name=? and password=?");避免sql注入,出现(大明' or 1=1;#)错误
 */
public class Login {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        System.out.println("------------------欢迎登录-------------------");
        System.out.println("请输入你的用户名 (づ ̄3 ̄)づ╭❤~");
        String username = sc.nextLine();
        System.out.println("请输入你的密码 ︿( ̄︶ ̄)︿");
        String password = sc.nextLine();

        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.创建链接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gp2002?useSSL=false&characterEncoding=utf8", "root", "root");
        //3.创建命令
//        Statement stat = conn.createStatement();
        //3.1?占位符,执行时会替换为实际数据(自动转译不会出现sql注入)
        PreparedStatement pstat = conn.prepareStatement("select * from user where name=? and password=?");
        //3.2给占位符赋值
        pstat.setString(1, username);
        pstat.setString(2, password);
        ResultSet rs = pstat.executeQuery();
        //4.执行命令
//        ResultSet rs = stat.executeQuery("select * from user where name='" + username + "' and password ='" + password + "';");

        //5.遍历
        if(rs.next()){
            System.out.println("登陆成功ヽ(✿゚▽゚)ノ");
        }else{
            System.out.println("登陆失败Σ( ° △ °|||)︴");
        }

        /*ResultSet rs = stat.executeQuery("select name,password from user;");
        while(rs.next()) {
            String name1 = rs.getString("name");
            String password1 = rs.getString("password");
            if (name1.equals(username) && password1.equals(password)) {
                    System.out.println("登陆成功ヽ(✿゚▽゚)ノ");
                    break;
//                    return;
            } else {
                System.out.println("登陆失败Σ( ° △ °|||)︴");
            }
        }*/


        //6.关闭
        rs.close();
        pstat.close();
        conn.close();



    }
}

二、运行结果

代码语言:javascript
复制
------------------欢迎登录-------------------
请输入你的用户名 (づ ̄3 ̄)づ╭❤~
saf' or 1=1;#
请输入你的密码 ︿( ̄︶ ̄)︿
4564
登陆失败Σ( ° △ °|||)︴

Process finished with exit code 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、代码
  • 二、运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档