zoukankan      html  css  js  c++  java
  • 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();

  • 相关阅读:
    关于DRY原则
    类型之惑
    ThoughtWorks测试
    编程非易事
    瀑布与迭代的真实区别
    对TDD原则的理解
    自我练习
    C# CreateProcess的测试
    乱侃OOD
    复杂系统的五个属性
  • 原文地址:https://www.cnblogs.com/hhthtt/p/10488243.html
Copyright © 2011-2022 走看看