Java操作MySQL数据库:零基础轻松上手
JDBC的原理
JDBC(Java Database Connectivity)是Java用于连接与操作数据库的API,它能让Java应用程序和各类数据库进行交互,以下是JDBC的基本原理:
- 驱动程序管理:JDBC借助不同的数据库驱动程序来连接不同类型的数据库。每种数据库都有对应的JDBC驱动程序,负责处理Java应用程序与数据库间的通信。常见的驱动程序类型有:
- JDBC - ODBC桥接驱动:把JDBC调用转化为ODBC调用。
- 原生API驱动:通过特定数据库自身的API直接连接数据库。
- 网络协议驱动:通过中间层(如应用服务器)以网络协议访问数据库。
- 建立连接:应用程序通过
DriverManager
获取数据库连接,一般步骤为:- 注册数据库驱动。
- 利用
DriverManager.getConnection()
方法获取连接对象。
- 执行SQL语句:获取连接后,可通过
Connection
对象创建Statement
或PreparedStatement
对象来执行SQL语句,执行时SQL语句会发送到数据库并返回结果集。 - 处理结果:SQL语句执行完后,结果通常以
ResultSet
对象形式返回,开发者能通过ResultSet
对象读取查询结果并进行相应处理。 - 事务管理:JDBC支持对数据库的事务管理,可通过
Connection
对象的方法手动控制事务,如提交、回滚等。 - 关闭资源:操作完成后,需关闭
ResultSet
、Statement
和Connection
等资源,防止内存泄漏。
总体而言,JDBC提供了与数据库交互的标准方式,让Java程序能高效访问和操作各类数据库,且具备良好跨平台性。
JDBC优势:
- Java语言访问数据库操作完全面向抽象接口编程。
- 开发数据库应用无需局限于特定数据库厂商的API。
- 程序可移植性大幅增强。
JDBC的使用
1.准备数据库驱动包,并添加到项目的依赖中
下载驱动包的方法
推荐一个官方网址:中央仓库
打开该网址后在上方搜索“mysql”。
搜索完成后出现相关选项,选择第二个进入。
进入对应页面后,能看到有各种版本的驱动包。
选择版本时需依据自身MySQL版本,若MySQL版本是8.0,选8.0x系列;若是5.1版本,选5.1x系列。这里以MySQL 5.1版本为例,选择5.1x系列。
下滑找到所需版本并点击,这里下载5.1.49版本。
进入下一个界面,找到带“jar”字样的链接并点击下载。
将驱动包添加到项目依赖
下载好驱动包后要添加到项目依赖中,操作如下:
打开IDEA,右击项目文件,选择新建“Directory”模块。
通常将该模块命名为“lib”,用于存放第三方库。
找到驱动包,用“CTRL + C”复制,然后到IDEA中选中“lib”模块,用“CTRL + V”粘贴,操作完成后选择“ok”。
最后右击该驱动包,选择“Add as Library...”,操作完成后呈现相应成功状态。
2.建立数据库连接
Connection接口的实现类由数据库提供,获取Connection对象通常有两种方式:
- 方式一:通过DriverManager(驱动管理类)的静态方法获取:
// 注册数据库驱动,可通过反射方式加载适当的数据库驱动程序
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // 以MySQL数据库为例
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 建立数据库连接,提供数据库的URL、用户名和密码
String url = "jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false"; // 数据库URL,"testdb"需换成要操作的数据库名,其余部分无需修改
String user = "root"; // 用户名,一般默认是"root"
String password = "your_password"; // 密码,填写自己的MySQL密码
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
- 方式二:通过DataSource(数据源)对象获取,实际应用中常用DataSource对象:
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl
("jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false");// 数据库URL,"testdb"需换成要操作的数据库名,其余部分无需修改
((MysqlDataSource)dataSource).setUser("root"); // 用户名,一般默认是"root"
((MysqlDataSource)dataSource).setPassword("your_password");// 密码,填写自己的MySQL密码
Connection connection = dataSource.getConnection();
- 两种方式的区别:
- 用DriverManager类获取的Connection连接不可重复利用,使用完释放资源时,通过
connection.close()
关闭物理连接。 - DataSource提供连接池支持,初始化时会创建一定数量的数据库连接,这些连接可复用,使用完释放资源调用
connection.close()
是回收Connection连接对象。
- 用DriverManager类获取的Connection连接不可重复利用,使用完释放资源时,通过
3.创建操作命令(Statement)
Statement对象
Statement对象主要用于将SQL语句发送到数据库。JDBC API主要提供了三种Statement对象。
创作操作命令有多种方式,这里采用开发中常用的一种:
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
4.执行SQL语句
主要掌握两种执行SQL的方法:
- executeQuery()
方法执行后返回单个结果集,通常用于select语句。
- executeUpdate()
方法返回受影响的行数,为整数,通常用于update、insert、delete语句。
第一种:执行update、insert、delete语句:
int i = statement.executeUpdate();// 返回影响的行数i
System.out.println(i);// 打印影响的行数i
第二种:执行select语句:
// 处理结果集,遍历ResultSet对象获取查询结果
try {
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
ResultSet对象
ResultSet对象称为结果集,代表符合SQL语句条件的所有行,通过一套getXXX方法访问行中数据。ResultSet里的数据按行排列,每行有多个字段,有记录指针,指针所指数据行为当前数据行,只能操作当前数据行。若要获取某条记录,使用ResultSet的next()
方法;若要获取所有记录,使用while循环。
5.释放资源(关闭结果集,命令,连接)
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
JDBC使用步骤总结
- 创建数据库连接Connection
- 创建操作命令Statement
- 使用操作命令执行SQL
- 处理结果集ResultSet
- 释放资源
整个代码示例
整合以上步骤,以下是完整的JDBC示例代码:
首先需在MySQL中创建一个school数据库和一个student表,并插入多条数据。
create database school charset utf8;
use school;
create table student (
id int primary key,
name varchar(20) not null);
insert into student values (1,'张三'),(2,'李四'),(3,'王五');
上述代码在MySQL客户端执行。
import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
// 建立数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/school?characterEncoding=utf8&useSSL=false";
String user = "root";
String password = "your_password";
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement();
// 执行SQL查询
String sql = "SELECT * FROM student";
ResultSet resultSet = statement.executeQuery(sql);
// 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
// 关闭资源
resultSet.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
该示例展示了使用JDBC连接MySQL数据库、执行查询并处理结果的方法,请根据实际情况修改数据库URL、用户名和密码。
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12757.html