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);
        }
    }

  • 相关阅读:
    EnjoyCSS – 在线的,先进的 CSS3 代码生成器
    使用 Google Analytics 跟踪 JavaScript 错误
    免费 PSD 素材:25个全新的界面设计资源
    Framework7 – 赞!功能齐全的 iOS7 App 前端框架
    CutJS – 用于 HTML5 游戏开发的 2D 渲染引擎
    【干货分享】Node.js 中文资料导航
    酷站设计:2014年3月份获奖网站作品欣赏
    Magic CSS3 – 创建各种神奇的交互动画效果
    优秀示例:一组创意的手机注册和登录界面设计
    酷站设计!15个扁平风格网站作品欣赏
  • 原文地址:https://www.cnblogs.com/KiligYou/p/11018178.html
Copyright © 2011-2022 走看看