什么是JDBC?
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();
}
}
}
}
}
实践是检验真理的唯一标准。
行文至此落笔为终,欢迎各位大佬指正补充。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」