使用Java连接MySQL(JDBC驱动)
一、掌握MySQL的基本操作(MySQL之旅的第二集)
上集回顾: 第二集:MySQL基本操作
二、下载JDBC驱动
JDBC最新版下载链接: http://dev.mysql.com/downloads/connector/j/
进入官网之后,选择此处
点击下载
我们可以得到一个压缩包
三、配置JDBC
下载好压缩包之后,我们在IntelliJ IDEA 里面新建一个Java项目
打开文件资源管理器,我们在项目的文件夹下面加上一个lib文件夹(没有就新建一个)
将我们下载好的JDBC解压在项目文件夹的lib下面
打开IDEA,右键项目打开模块设置
添加一个jar(解压好的JDBC下面有一个jar后缀的文件选上就好了)
勾选上之后确定
四、创建一个数据库并且测试是否可以连接成功
这里继续拿上一集的数据库例子做演示
-- 创建名为webstore的数据库
mysql> create database webstore;
Query OK, 1 row affected (0.00 sec)
-- 使用数据库
USE webstore;
-- 创建books表
mysql> create table books (
-> id int,
-> name varchar(50),
-> author varchar(50),
-> price decimal(10, 2),
-> press varchar(50)
-> );
Query OK, 0 rows affected (0.01 sec)
-- 插入数据
mysql> insert into books values
-> (103, '数据库系统概论', '王珊', 36.80, '高等教育出版社'),
-> (104, '人类简史', '尤瓦尔·赫拉利', 67.30, '中国出版集团'),
-> (101, '西游记', '吴承恩', 46.70, '人民文学出版社'),
-> (102, '英语词汇的奥秘', '蒋争', 38.00, '中国国际广播出版社'),
-> (105, 'Java Web 编程技术', '沈泽刚', 79.80, '清华大学出版社');
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
创建好之后,我们使用Java连接数据库测试一下是否可以连接成功
下面是输出数据库中ID为101~103的书
package MySQL_Java;
import java.sql.*;
public class TEST {
public static void main(String[] args) {
// 数据库连接信息
String dburl = "jdbc:mysql://127.0.0.1:3306/webstore?serverTimezone=UTC";
String sql = "SELECT id, name, author, price, press FROM books WHERE id < 104 ORDER BY id";
// 使用try-with-resources确保资源自动关闭
try (Connection conn = DriverManager.getConnection(dburl, "root", "123456");
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
// 遍历结果集并输出数据
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String author = rs.getString("author");
double price = rs.getDouble("price");
String press = rs.getString("press");
System.out.println(id + "\t" + name + "\t" + price + "\t" + author + "\t" + press);
}
} catch (SQLException se) {
se.printStackTrace();
}
}
}
当成功输出这个的时候
说明已经连接成功了,JDBC的配置没有问题了
五、关于try-catch的解释
注意一下:在 Java 中,try-catch 是异常处理的核心机制,这里的作用如下:
try 块的作用
包裹可能抛出异常的代码
将数据库操作(建立连接、执行查询、遍历结果集)放在 try 块中,因为这些操作可能因网络问题、SQL 错误、空结果集等原因抛出 SQLException。
自动资源管理(Try-with-Resources)
这里使用了 try ( … ) 语法,它会自动关闭 Connection、PreparedStatement 和 ResultSet 资源(即使发生异常也会关闭),避免了手动调用 close() 的繁琐操作和资源泄漏风险。
catch 块的作用
捕获并处理特定异常
catch (SQLException se) 会捕获 try 块中抛出的所有 SQLException 类型的异常(例如数据库连接失败、SQL 语法错误等)。
错误处理与恢复
在 catch 块中打印异常堆栈(se.printStackTrace()),便于开发者调试。实际项目中还可以在此处添加重试逻辑、友好错误提示或日志记录。
为什么需要 try-catch?
程序健壮性:防止因数据库操作失败导致程序崩溃。
资源安全:通过自动关闭资源(Try-with-Resources)避免数据库连接泄漏。
错误诊断:通过异常信息快速定位问题(如 SQL 语法错误、网络中断等)。
对比:没有 try-catch 的风险
如果不处理异常,程序可能因未捕获的异常而崩溃。
数据库连接、语句对象等资源可能无法正确释放,导致资源泄漏。
简而言之,try-catch 在这里是保障程序稳定运行和资源安全释放的关键机制。
MySQL之旅的第四集
敬请期待······