zoukankan      html  css  js  c++  java
  • Java JDBC概要总结一(基本操作和SQL注入问题)

    JDBC定义: JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。

    JDBC规范(掌握四个核心对象):

    DriverManager类:用于注册驱动(管理控制驱动程序)

    Connection: 表示与数据库创建的连接

    Statement: 操作数据库sql语句的对象

    ResultSet: 结果集或一张虚拟表(查询结果返回ResultSet集)

    JDBC案例实现

    @Test

    // 查询所有的分类信息

    public void demo1() throws Exception{

        // 注意:使用JDBC规范,采用都是 java.sql包下的内容

        //1 注册驱动

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

        //2 获得连接

        String url = "jdbc:mysql://localhost:3306/mydb";

        Connection conn = DriverManager.getConnection(url, "root", "root");

        //3获得执行sql语句的对象

        Statement stmt = conn.createStatement();

        //4执行SQL语句

        ResultSet rs = stmt.executeQuery("select * from category");

       

        //5处理结果集

        while(rs.next()){

            // 获得一行数据

            Integer cid = rs.getInt("cid");

            String cname = rs.getString("cname");

            System.out.println(cid + " , " + cname);

        }

        //6释放资源

        rs.close();

        stmt.close();

        conn.close(); 

    }

    API详解:注册驱动

    DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用

    原因有2个:

    >导致驱动被注册2次。

    >强烈依赖数据库的驱动jar

    解决办法:

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

    API详解:获得链接

    static Connection getConnection(String url, String user, String password)

    试图建立到给定数据库 URL 的连接。

    参数说明:url 需要连接数据库的位置(网址) user用户名  password 密码

    例如:getConnection("jdbc:mysql://localhost:3306/day06", "root", "root");

    URL:SUN公司与数据库厂商之间的一种协议。

    jdbc:mysql://localhost:3306/day06

    协议子协议  IP :端口号数据库

    mysql: jdbc:mysql://localhost:3306/day04或者jdbc:mysql:///day14(默认本机连接)

    oracle数据库: jdbc:oracle:thin:@localhost:1521:sid

    SQL注入问题

    preparedStatement:预编译对象,是Statement对象的子类。

    特点:

    性能高

    会把sql语句先编译

    能过滤掉用户输入的关键字。

    PreparedStatement预处理对象,处理的每条sql语句中所有的实际参数,都必须使用占位符?替换。

    String sql = "select * from user where username = ? and password = ?";

            PreparedStatement使用,需要通过以下3步骤完成:

    1.         PreparedStatement预处理对象代码:

    #获得预处理对象,需要提供已经使用占位符处理后的SQL语句

    PreparedStatement psmt = conn.prepareStatement(sql)

    1.         设置实际参数

    void setXxx(int index, Xxx xx) 将指定参数设置指定类型的值

        参数1index 实际参数序列号,从1开始。

        参数2xxx 实际参数值,xxx表示具体的类型。

    例如:

    setString(2, "1234") SQL语句中第2个位置的占位符?替换成实际参数 "1234"

    2.         执行SQL语句:

    int executeUpdate(); --执行insert update delete语句.

    ResultSet executeQuery(); --执行select语句.

    boolean execute(); --执行select返回true 执行其他的语句返回false.

  • 相关阅读:
    1113. Integer Set Partition (25)
    1110. Complete Binary Tree (25)
    1109. Group Photo (25)
    Bender Problem
    格子中输出
    牌型种数
    移动距离
    QQ帐户的申请与登陆(25 分)
    词频统计
    基于HTTP的直播点播HLS
  • 原文地址:https://www.cnblogs.com/outsidersblogs/p/7004382.html
Copyright © 2011-2022 走看看