java-操作 mysql

在 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 应用程序可以方便地操作数据库数据。希望这些示例对您有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值