一、简介
使用JDBC访问数据库的步骤大致为以下几步:
① 在类加载器中加载驱动包中的Driver类
② 使用给定的数据库URL获取Connection。
③ 使用Connection创建SQL Statement。
④ 使用Statement执行SQL语句。
⑤ 处理返回值。
⑥ 释放数据库连接资源。
这里我们使用Mysql数据库来演示JDBC访问数据库的过程。
二、准备工作
1、配置数据源。
这里我们直接在mysql数据库中新建一张user_t表
接着新增一些数据
2、在java项目中引入mysql驱动包。
mysql驱动包不同版本对jdk、JDBC及mysql版本有不同的要求,以下是mysql官网的版本支持说明:
我使用的是mysql5.7,驱动包使用的是mysql-connector-java-8.0.27,可以直接下载jar包到项目lib路径或者使用maven、gradle等导入。这里演示maven的导入方法:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
三、代码示例
使用jdbc访问mysql数据库的代码如下:
① 可能有人会问,这里为什么没有使用Class.forName() 将驱动类加载到类加载器中。这是因为我们调用DriverManager.getConnection()方法的时候会通过SPI机制自动发现我们导入的驱动类,因此我们可以不用显示指定导入的驱动类。
需要注意的是,5.X版本和8.X版本的驱动包的Driver类的包路径不相同,我这里导入的是8.0.27版本,因此会加载com.mysql.cj.jdbc.Driver类。如果是5.X版本,则是com.mysql.jdbc.Driver。
② DriverManager.getConnection() 是在已经注册的数据库驱动中选择合适的驱动去建立连接。连接数据必要的参数包括数据库地址、用户名、密码。连接成功后返回的Connection对象。
③ 想通过数据库驱动在数据库中执行SQL,可以通过SQL statement完成,可以使用createStatement()直接执行SQL,或者使用prepareStatement() 预编译参数执行SQL。
④ 通过第三步返回的Statement对象,调用executeQuery()方法即可执行查询并返回ResultSet对象。
⑤ 使用ResultSet的next方法遍历结果集。除了getString()方法,ResultSet还有getInt(),getLong()等方法。
⑥ 在finally中显示关闭已经建立的连接资源,我们在创建对象时是按照Connection->Statement->ResultSet的顺序创建的,关闭时要按照相反的顺序,即ResultSet->Statement->Connection的顺序关闭。需要注意的是,如果不显示关闭,虽然数据库连接会在超时时自动释放,但会长时间占用数据库连接。由于数据库连接有限,因此回收资源也是一个重要的操作。
程序执行结果如下: