什么是JDBC?

发布时间 2024-01-11 18:47:30作者: chen平安在安平cheng

JDBC是什么?

我相信大家都会用JDBC,什么是JDBC?JDBC的本质是什么?我相信有许多人不了解。我来谈谈我个人对JDBC的理解。

JDBC全称Java Database Connectivity,翻译成中文的意思:java数据库连接。简单来说JDBC是用java语言操作关系型数据库的一套API,这么说可能有人还是不理解,用大白话说就是:用java语言中编写sql语句,对关系型数据库中的数据进行CRUD操作。

JDBC的相关类库在Java.sql.*下,这个包下的都是JDBC相关的接口,由SUN公司制定。
所以JDBC的本质是一套接口。

各种数据库厂商,如Mysql、Oracle、PostgreSQL等等,只需要根据sun公司对外提供的这一套接口即JDBC进行实现,就形成了咱们日常开发中所说的数据库驱动jar包。

上图是Mysql数据库的驱动jar包。

可能有许多人对驱动二字感到不解,我也是这样的。但是我们知道数据库驱动jar包的本质其实就是数据库厂商对JDBC的实现,驱动就是一堆实现了JDBC的实现类集合。

我们打开数据库驱动jar包看看里面是什么?

我们发现jar包中的都是.class文件即字节码文件。

JDBC操作数据库的过程
`package com.demo.jdbcDemo;

import java.sql.*;

/JDBC编程6步/
public class JdbcDemo {
public static void main(String[] args) {

    /*com.mysql.cj.jdbc.Driver是mysql驱动jar包的实现类 这里运用了java中的多态原则*/
    Driver driver = null;
    Statement statement=null;
    Connection connection=null;
    ResultSet resultSet=null;
    try {
        //1.注册驱动(通知java程序我们要连接哪个品牌的数据库)
        driver = new com.mysql.cj.jdbc.Driver();
        /*JDBC中的接口*/
        DriverManager.registerDriver(driver);
        //2.获取数据库连接 java程序进程与数据库进程的连接通道打开了   相当于IO流,内存与磁盘之间的通道打开了
         connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/teest?useSSL=false&serverTimezone=UTC",
                 "root", "123456");
        /*输出连接对象(connection)的内存地址*/
        System.out.printf(connection.toString()); //com.mysql.cj.jdbc.ConnectionImpl@1b604f19
        //实际上com.mysql.cj.jdbc.ConnectionImpl类实现了java.sql.Connection接口
        //3.通过连接对象获取数据库操作对象  用这个对象执行SQL
        /*以下也是JDBC中的接口   一个连接对象可以创建多个Statement对象*/
         statement = connection.createStatement();
        Statement statement2 = connection.createStatement();
        //4.执行SQL语句
         resultSet = statement.executeQuery("select * from user ");//resultSet查询返回的结果集
        //5.处理SQL语句执行返回的结果
        while (resultSet.next()){
            System.out.println(resultSet.getString(1)
                    +"---"+resultSet.getString(2)
                    +"---"+resultSet.getString(3)
                    +"---"+resultSet.getString(4));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        //6.释放资源  JDBC是进程之间的通信,非常耗费资源 需要关闭连接
        /*先释放resultSet再释放Statement 在释放Connection*/
        if (resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

}
`
行文至此落笔为终,欢迎各位大佬指正补充