返回顶部

JDBC

1、加载和注册驱动

 

注意:在mysql8.0以上 动态加载驱动程序  

Class.forName("com.mysql.cj.jdbc.Driver");
  •  为什么这样可以注册驱动呢?

答案:查看com.mysql.cj.jdbc.Driver 或者com.mysql.jdbc.Driver 的源码,因为里面有一个DriverManager.registerDriver() 来注册数据库驱动

 

 

2.jdbc的核心API

2.1 DriverManager 类

(一)DriverManage的作用

  (1)管理和注册驱动············上面已经提到

  (2)创建数据库的链接 

public class Demo {
public static void main(String[] args) throws SQLException {
  String url = "jdbc:mysql://localhost:3306/test";
    //1) 使用用户名、密码、 URL 得到连接对象
  Connection connection = DriverManager.getConnection(url, "root", "root");
    //com.mysql.jdbc.JDBC4Connection@68de145
  System.out.println(connection);
  }
}

 

2.2 Connection接口

(一)Connection的作用

    Connection接口,具体的实现类由数据库的厂商实现,代表一个连接对象

(二)Connection方法

 

 

2.3 Statement接口

 (一)Statement 作用:

    代表一条语句对象,用于发送 SQL 语句给服务器,用于执行静态 SQL 语句并返回它所生成结果的对象。

 (二)Statement 方法:

  

2.4释放资源

1) 需要释放的对象: ResultSet 结果集, Statement 语句, Connection 连接
2) 释放原则:先开的后关,后开的先关。 ResultSet  -》 Statement  -》Connection
3) 放在哪个代码块中: finally

 

例子:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 创建一张学生表
*/
public class Demo4DDL {
  public static void main(String[] args) {
    //1. 创建连接
    Connection conn = null;
    Statement statement = null;
    try {
      conn = DriverManager.getConnection("jdbc:mysql:///day24", "root", "root");
      //2. 通过连接对象得到语句对象
      statement = conn.createStatement();
      //3. 通过语句对象发送 SQL 语句给服务器
      //4. 执行 SQL
       statement.executeUpdate("create table student (id int PRIMARY key auto_increment, name varchar(20) not null, gender boolean, birthday date)");
      //5. 返回影响行数(DDL 没有返回值)
       System.out.println("创建表成功");
    } catch (SQLException e) {
      e.printStackTrace();
    }
    //6. 释放资源
    finally {
      //关闭之前要先判断
      if (statement != null) {
        try {
          statement.close();
        } catch (SQLException e) {
          e.printStackTrace();
        }
       }
      if (conn != null) {
        try {
          conn.close();
        } catch (SQLException e) {
          e.printStackTrace();
        }
      }
    }
  }
}

 

posted @ 2020-06-20 20:07  可乐葱花  阅读(132)  评论(0编辑  收藏  举报