【经典面试题】JDBC连接步骤 from JDBC

本文详细介绍了JDBC连接数据库的五个步骤:注册驱动、创建连接、编译SQL、发送SQL并返回结果以及释放资源。重点讨论了`Class.forName()`在MySQL中的作用,`DriverManager.getConnection()`的URL参数解析,以及如何正确关闭数据库连接以避免资源浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步、注册驱动

Class.forName(“com.mysql.cj.jdbc.Driver”);
这个是Java反射中的一种写法,作用是获取当前提供路径的这个类的字节码文件(.class)。
得到这个字节码文件之后可以进行创建类、获取方法、属性、修饰符…

MySQL 中 class.forName 作用是什么

第一点
sun公司希望每个数据库厂商的驱动类是通过JavaAPI创建的,除了为了有更好的兼容性还为了能否占有主动权。这样才能继续维护这个提供的标准接口。

第二点:
每个公司的驱动名称都是不一样的,既然想在JavaAPI创建这个驱动类,能提供的只有一个类的名称,也只有反射能够通过名称创建对象。

第三点:
Java编程规范角度来说,框架都是提取公共信息的,这些公共信息一般都会通过.properties
文件进行维护。 那么字符串的驱动切好可以放在这样的文件中, 达到一个速快切换数据库的效果。
在这里插入图片描述在这里插入图片描述

第二步、创建连接

String url = “jdbc:mysql://localhost:3306/db_1208
?serverTimezone=GMT%2B8&useSSL=false”;
Connection connection =
DriverManager.getConnection(url, “root”, “root”);

DriverManager驱动管理类

作用:注册驱动 | 通过调用底层方法去帮助我们创建了一个连接。
各个数据库的URL 大全
https://www.cnblogs.com/chenglc/p/8421573.html
URL
JDBC:声明使用的是JDBC技术进行连接数据库
mysql:声明使用的是哪一种数据库,需要根据这个名称使用对应数据库的协议。
localhost:3306 连接地址及端口号信息
本地地址:
127.0.0.1
localhost
网络地址:192.22.41.110:3306
如果是本地请求数据库,整个地址+端口号可以直接省略,简写方式为:
String url = "jdbc:mysql:///db_1208?..

关于url中的问号

问号在URL地址中是一个连接符的作用,问号之前是具体的套接字(协议+地址+端口)+ 项目名称
问号之后跟随的是请求这个地址时的参数。多个参数使用&进行连接
谷歌中搜索淘宝得到的地址:
https://www.google.com/search?q=www.taobao.comn&oq=www.taobao.comn&aqs=chrome..69i57j69i58.5738j0j4&sourceid=chrome&ie=UTF-8

serverTimezone=GMT%2B8
服务器时区设置

5.1.*连接驱动没有这个问题,8.*版本需要指定一下时区。

useSSL=false
如果低版本的连接器(驱动包)连接高版本的数据库,需要使用useSSL = true;
如果是高版本的连接器连接低版本的数据库, 需要使用useSSL = false;
如果是第二种情况, 可以省略这个参数。

如果connection打印的时候正常返回对象,说明已经和数据库成功建立连接。

第三步、编译SQL

Statement st = connection.createStatement();
Statement是一个SQL的载体,在连接通道中输送SQL的必须对象。在这里插入图片描述

第四步、发送SQL并返回结果

ResultSet rs = st.executeQuery(“select * from student”);
这个步骤的作用有2
第一个:向SQL载体中传一个SQL语句
第二个:这个方法executeQuery(),会给我们返回一个结果对象

结果对象类型:
executeQuery --> ResultSet :结果集(查询的时候返回)
execute --> boolean (增删改查)
executeUpdate --> int (增删改)

executeQuery:遍历取值
boolean b = rs.next(); 指针下一移位,判断是否有数据,如果有那么返回true

在这里插入图片描述
在这里插入图片描述
这样的写法指针是跟随者移动。
在这里插入图片描述
两种取值的方建议使用第一种。

execute 返回true|false(嫌弃)
功能是执行增删改(非常古老,除了讲课用用一次之外,其余都不用)
经过测试:增删改返回都是false 、 查询的时候返回的是true
这个方法可以用来执行增删改功能和判断当前语句是否是DML|DQL

executeUpdate 返回 int
可用来执行增删改
返回值,代表受影响的行数。 判断时候 i > 0 成功的。

第五步、释放资源

在这里插入图片描述
不释放的后果就是,在web工程中,项目会运行越来越慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值