• JDBC


    JDBC

    JDBC注册驱动:

    Class.forName("com.mysql.jdbc.Driver");

    获取连接对象:

    获取连接需要方法 DriverManager.getConnection(url,username,password),三个参数分别表示,url 需要连接数据库的位置(网址) user用户名  password 密码

    String url="jdbc:mysql://localhost:3306/库名?useUnicode=true

    &characterEncoding=UTF-8";

    String username="root";

    String password="123456";

    注入问题:

    当用户输入正确的账号与密码后,查询到了信息则让用户登录。但是当用户输入的账号为XXX 密码为:XXX’  OR ‘a’=’a时,则真正执行的代码变为:

    SELECT * FROM 用户表 WHERE NAME = ‘XXX’ AND PASSWORD =’ XXX’  OR ’a’=’a’;

    此时,上述查询语句时永远可以查询出结果的。那么用户就直接登录成功了,显然我们不希望看到这样的结果,这便是SQL注入问题。

    为此,我们使用PreparedStatement来解决对应的问题。

    PreparedStatement 预处理对象:

    每条sql语句所有的实际参数,都使用逗号分隔。

    ? :占位符  明确传值

    String sql="select count(*) from user where uname=? and pwd=?";

    PreparedStatement pst=conn.prepareStatement(sql);

    getString(第几个占位符(数字),传的值);给占位符赋值

    :String为值的类型

     

    执行:

    executeUpdate();增删改

           格式:int row=sta.executeUpdate();

    executeQuery();查询

                      格式:ResultSet  rs=sta. executeQuery();

    处理结果集:

    ResultSet实际上就是一张二维的表格

    我们可以调用其next()方法指向某行记录,返回一个boolean值,当第一次调用next()方法时,便指向第一行记录的位置

    getXXX(int col)方法获取指定列的数据:

    rs.next();//指向第一行

    rs.getInt(1第几列);//获取第一行第一列的数据

        rs.getString(2); //获取第一行第二列的数据

     

    格式:

           int count=0;

           while(rs.next()){

               count=rs.getInt(1);

           }

     

     

    释放资源:

        调用一堆close()方法

        先开的后关

    rs.close();//查询时才有

    pst.close();

        conn.close();

  • 相关阅读:
    Django创建博客
    使用LR的socket协议进行进行性能测试,转解决方案
    loadrunner测试c/s架构的应用系统
    C/S架构的性能测试
    Win10离线安装.NET Framework 3.5的方法技巧(附离线安装包下载)
    VMWare虚拟机无法连接网络!
    Microsoft Windows XP SP3 官方原版镜像下载,绝对原版加系列号!
    软件cs页面分辨率测试
    C/S结构软件测试要点汇总
    手机访问网站自动跳转到手机版
  • 原文地址:https://www.cnblogs.com/hhthtt/p/10488243.html
Copyright © 2020-2023  润新知