zoukankan      html  css  js  c++  java
  • MySQL数据库 JDBC 无注入攻击bug

    PreparedStatement
    JDBC对数据库表进行增删改查操作
     
    • 导入jar包
    • 注册驱动 告诉jvm 我们使用哪种驱动程序
    Class.forName("com.mysql.jdbc.Driver");
    • 获得连接对象 Connection
    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名称","用户名","密码")
    • 获得预编译执行者对象 Statement接口的子接口preparedStatement用于执行SQL语句 把SQL语句发送到数据库执行PreparedStatement pst = conn.prepareStatement() 
    • 执行SQL语句 返回结果
    int row=pst.executeUpdate(sql语句);----→增删改
    ResultSet rs=pst.executeQuery(sql语句);----→查
    1.其中SQL语句 可以使用占位符
          2.设置?占位符的实际数据 pst.setObject(下标,用户名);
          3.执行SQL语句
    • 处理结果 (打印行数、遍历结果集)
    遍历结果集:while(rs.naxt()){
    rs.getXxx("字段名1");
    ...
    rs.getXxx("字段名n");
    }
    • 释放资源
     
     
    package cn.kgc.jdbc;
     
    import cn.kgc.utilsjdbc.UtilsJDBC;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Scanner;
     
    public class Login02 {
        /**
         * 解决用户使用SQL语句注入攻击数据库
         * 用Statement接口的子接口
         * java.sql.PrepareStatement extends Statement接口 表示预编译的SQL语句的对象
         * 如何使用:
         *  1.获取PrepareStatement对象 conn.prepareStatement(String sql)
         *  其中SQL语句 可以使用占位符
         *  2.设置?占位符的实际数据
         *  3.执行SQL语句
         */
        public static void main(String[] args) throws SQLException {
            //1.使用Scanner获取用户输入的用户名和密码
            Scanner input = new Scanner(System.in);
            System.out.print("请输入用户名:");
            String username = input.nextLine();
            System.out.print("请输入密码:");
            String password = input.nextLine();
            //2.使用JDBC技术操作数据库
            Connection conn = UtilsJDBC.getConnection();
            String sql="select * from users where username=? and password=?;";
            //3.获取预编译执行对象 并且传入SQL语句
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setObject(1,username);
            pst.setObject(2,password);
            //4.执行SQL 获取结果
            ResultSet rs = pst.executeQuery();
            //5.处理结果
            if (rs.next()){
                //有结果 登陆成功
                System.out.println("登录成功"+rs.getString("username")+" "+rs.getString("password"));
            }else{
                System.out.println("用户和密码不匹配");
            }
            //6.释放资源
            UtilsJDBC.close(rs,pst,conn);
        }
    }

  • 相关阅读:
    轻奢侈品_百度百科
    什么是轻奢风?_百度知道
    Nitrous.IO融资665万美元 帮助开发者省去配置调试等工作-CSDN.NET
    Intro to Computer Science Class Online (CS101)
    (92) Web Crawling: How can I build a web crawler from scratch?
    zombie-phantom
    How to choose between zombie.js and PhantomJS for automated web testing? [closed]
    Zombie.js Insanely fast, headless full-stack testing using Node.js
    (92) Is there a better crawler than Scrapy?
    tpopela/vips_java
  • 原文地址:https://www.cnblogs.com/KiligYou/p/11018178.html
Copyright © 2011-2022 走看看