• JDBC


    JDBC编码的步骤:
    1、加载驱动并注册驱动
    Class.forName("com.mysql.jdbc.Driver");

    说明:在加载Driver类时,它会自动创建自己的实例并向 DriverManager 注册该实例。

    com.mysql.jdbc.Driver的源码:

     1 public class Driver extends NonRegisteringDriver implements java.sql.Driver {  
     2   
     3             // Register ourselves with the DriverManager  
     4             static {  
     5                 try {  
     6                     java.sql.DriverManager.registerDriver(new Driver());  
     7                 } catch (SQLException E) {  
     8                     throw new RuntimeException("Can't register driver!");  
     9                 }  
    10             }  
    11   
    12             // Construct a new driver and register it with DriverManager  
    13             public Driver() throws SQLException {  
    14                 // Required for Class.forName().newInstance()  
    15             }  
    16         }  

    2、获取与数据库的连接:Connection
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "root");
    3、得到代表SQL语句的对象:Statement
    Statement stmt = conn.createStatement();
    4、发送SQL给数据库,如果有查询结果,则得到封装了查询结果的对象:ResultSet
    ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from users");
    5、遍历结果
    while(rs.next()){
    System.out.println(rs.getObject("id"));
    System.out.println(rs.getObject("name"));
    }
    6、释放占用的资源
    rs.close();
    stmt.close();
    conn.close();

    JDBC中常用的接口和类
    1、DriverManager
    作用:注册驱动,得到数据库的连接
    1.1注册驱动:
    DriverManager.registDriver(new com.mysql.jdbc.Driver());(不可取)
    原因: 1、严重依赖具体的数据库驱动。
    2、导致驱动注册两遍,也就是在内存中会有两个Driver对象
    注:new com.mysql.jdbc.Driver():在new了一个driver的同时使用DriverManager把自己给注册了(查看com.mysql.jdbc.Driver的源码可知)。
    替代方案:
    Class.forName("com.mysql.jdbc.Driver");

    1.2获取数据库的连接:
    static Connection getConnection()

    2、Connection
    所有与数据库交互都必须建立在连接的基础上

    3、Statement
    作用:代表着SQL语句
    常用的方法:
    ResultSet executeQuery(String sql)
    int executeUpdate(String sql)
    boolean execute(String sql)

    PreparedStatement:处理 DML 语句的利器,有以下3点好处

    1、预编译SQL语句,数据库执行效率高。
    注:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出
    2、防止SQL注入
    3、支持参数占位符"?",简化sql语句的编写

    PreparedStatement pstmt = conn.prepareStatement("insert into user (username, birthday) values(?,?)");
    pstmt.setString(1, user.getUsername());
    pstmt.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
    pstmt.executeUpdate();

    4、ResultSet
    boolean next():下移一行
    boolean previous():上移一行
    void absolute(int row):第一行的记录就是1
    注:absolute(1) 等效于 first()、absolute(-1) 等效于last()
    void beforeFirst():移动到第一行的前面
    void afterLast():移动到最后一行的后面

    5、释放资源
    rs.close();
    stmt.close();
    conn.close();

  • 相关阅读:
    babel的使用及安装配置
    npm install卡顿问题
    盒模型
    安全性
    字符串方法
    vue
    CSS3
    重载运算符
    装箱拆箱
    模板库
  • 原文地址:https://www.cnblogs.com/dnn179/p/jdbc.html
Copyright © 2020-2023  润新知