在 Java 中操作 MySQL 数据库通常使用 JDBC(Java Database Connectivity)API。JDBC 提供了一套标准接口,用于连接到数据库、执行 SQL 查询、更新数据和处理结果集。以下是一个详细的示例,展示如何在 Java 中操作 MySQL 数据库。
### 一、环境准备
#### 1. 下载并安装 MySQL
如果您尚未安装 MySQL,可以从 MySQL 官方网站下载并安装 MySQL:
- [MySQL 下载页面](https://dev.mysql.com/downloads/mysql/)
#### 2. 创建数据库和表
安装 MySQL 后,使用以下 SQL 脚本创建一个数据库和表:
```sql
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
```
### 二、在 Java 中使用 JDBC 操作 MySQL
#### 1. 添加 MySQL JDBC 驱动
从 MySQL 官方网站下载 MySQL JDBC 驱动(Connector/J):
- [MySQL Connector/J 下载页面](https://dev.mysql.com/downloads/connector/j/)
将下载的 JDBC 驱动添加到您的项目中。如果使用的是 Maven,可以在 `pom.xml` 文件中添加以下依赖:
```xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
```
#### 2. 编写 Java 代码
以下是一个示例代码,展示如何在 Java 中使用 JDBC 连接 MySQL 数据库并执行基本的数据库操作。
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLJDBCExample {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/testdb";
private static final String JDBC_USER = "root";
private static final String JDBC_PASSWORD = "yourpassword";
public static void main(String[] args) {
try {
// 加载 MySQL JDBC 驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
System.out.println("Connected to MySQL database!");
// 插入数据
insertUser(connection, "John Doe");
// 查询数据
selectAllUsers(connection);
// 更新数据
updateUser(connection, 1, "Jane Doe");
// 删除数据
deleteUser(connection, 1);
// 关闭连接
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
private static void insertUser(Connection connection, String name) throws SQLException {
String insertSQL = "INSERT INTO users (name) VALUES (?)";
try (PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
preparedStatement.setString(1, name);
int rowsInserted = preparedStatement.executeUpdate();
if (rowsInserted > 0) {
System.out.println("A new user was inserted successfully!");
}
}
}
private static void selectAllUsers(Connection connection) throws SQLException {
String selectSQL = "SELECT * FROM users";
try (Statement statement = connection.createStatement()) {
ResultSet resultSet = statement.executeQuery(selectSQL);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
}
}
private static void updateUser(Connection connection, int id, String name) throws SQLException {
String updateSQL = "UPDATE users SET name = ? WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(updateSQL)) {
preparedStatement.setString(1, name);
preparedStatement.setInt(2, id);
int rowsUpdated = preparedStatement.executeUpdate();
if (rowsUpdated > 0) {
System.out.println("An existing user was updated successfully!");
}
}
}
private static void deleteUser(Connection connection, int id) throws SQLException {
String deleteSQL = "DELETE FROM users WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(deleteSQL)) {
preparedStatement.setInt(1, id);
int rowsDeleted = preparedStatement.executeUpdate();
if (rowsDeleted > 0) {
System.out.println("A user was deleted successfully!");
}
}
}
}
```
### 代码详解
1. **加载 MySQL JDBC 驱动**:
```java
Class.forName("com.mysql.cj.jdbc.Driver");
```
这行代码加载 MySQL JDBC 驱动,使得 DriverManager 可以找到并使用该驱动。
2. **建立数据库连接**:
```java
Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
```
使用 `DriverManager.getConnection` 方法建立到 MySQL 数据库的连接。
3. **插入数据**:
```java
String insertSQL = "INSERT INTO users (name) VALUES (?)";
try (PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
preparedStatement.setString(1, name);
int rowsInserted = preparedStatement.executeUpdate();
if (rowsInserted > 0) {
System.out.println("A new user was inserted successfully!");
}
}
```
使用 `PreparedStatement` 预编译 SQL 语句并设置参数,执行插入操作。
4. **查询数据**:
```java
String selectSQL = "SELECT * FROM users";
try (Statement statement = connection.createStatement()) {
ResultSet resultSet = statement.executeQuery(selectSQL);
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
}
```
使用 `Statement` 执行查询操作,并通过 `ResultSet` 处理查询结果。
5. **更新数据**:
```java
String updateSQL = "UPDATE users SET name = ? WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(updateSQL)) {
preparedStatement.setString(1, name);
preparedStatement.setInt(2, id);
int rowsUpdated = preparedStatement.executeUpdate();
if (rowsUpdated > 0) {
System.out.println("An existing user was updated successfully!");
}
}
```
使用 `PreparedStatement` 执行更新操作。
6. **删除数据**:
```java
String deleteSQL = "DELETE FROM users WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(deleteSQL)) {
preparedStatement.setInt(1, id);
int rowsDeleted = preparedStatement.executeUpdate();
if (rowsDeleted > 0) {
System.out.println("A user was deleted successfully!");
}
}
```
使用 `PreparedStatement` 执行删除操作。
### 总结
通过上述示例,我们展示了如何在 Java 中使用 JDBC 操作 MySQL 数据库,包括插入、查询、更新和删除数据。JDBC 提供了一套标准的 API,用于与关系型数据库进行交互,使得 Java 应用程序可以方便地操作数据库数据。希望这些示例对您有所帮助。