0
点赞
收藏
分享

微信扫一扫

Java 中连接数据库方式详解

在 Java 中连接数据库是一项常见的任务,通常通过使用 JDBC(Java Database Connectivity)API 来完成。JDBC 提供了一组用于与数据库进行交互的类和接口。以下是详细的步骤和示例,展示如何在 Java 中连接到数据库。

1. 添加 JDBC 驱动

在开始之前,你需要确保你的项目中包含了适当的 JDBC 驱动程序。对于大多数数据库,你可以从数据库的官方网站下载 JDBC 驱动,或者通过构建工具(如 Maven 或 Gradle)添加依赖。

例如,对于 MySQL 数据库,你可以在 Maven 的 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

2. 加载 JDBC 驱动

在 Java 代码中,你需要加载 JDBC 驱动。这可以通过 Class.forName 方法实现。不过,从 JDBC 4.0 开始,如果你使用的是 Java 6 或更高版本,并且 JDBC 驱动在类路径中,那么驱动会自动被加载,这一步可以省略。

// 对于旧版本的 JDBC,可能需要手动加载驱动
// Class.forName("com.mysql.cj.jdbc.Driver");

3. 建立数据库连接

使用 DriverManager.getConnection 方法建立与数据库的连接。你需要提供数据库 URL、用户名和密码。

String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String password = "your_password";

Connection connection = null;

try {
    connection = DriverManager.getConnection(url, user, password);
    System.out.println("Connected to the database!");
} catch (SQLException e) {
    e.printStackTrace();
}

4. 执行 SQL 查询

一旦建立了连接,你可以使用 Statement 或 PreparedStatement 来执行 SQL 查询。

使用 Statement

try {
    Statement statement = connection.createStatement();
    String sql = "SELECT * FROM your_table";
    ResultSet resultSet = statement.executeQuery(sql);

    while (resultSet.next()) {
        // 获取数据
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        // 处理数据
    }
    resultSet.close();
    statement.close();
} catch (SQLException e) {
    e.printStackTrace();
}

使用 PreparedStatement

PreparedStatement 提供了更好的性能和安全性(防止 SQL的 注入)。

try {
    String sql = "SELECT * FROM your_table WHERE id = ?";
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setInt(1, 1);  // 设置参数

    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()) {
        // 获取数据
        int id = resultSet.getInt("id");
        String name = resultSet.getString("name");
        // 处理数据
    }
    resultSet.close();
    preparedStatement.close();
} catch (SQLException e) {
    e.printStackTrace();
}

5. 更新数据库

可以使用 executeUpdate 方法来执行插入、更新和删除操作。

try {
    String sql = "INSERT INTO your_table (name, age) VALUES (?, ?)";
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    preparedStatement.setString(1, "John");
    preparedStatement.setInt(2, 30);

    int rowsAffected = preparedStatement.executeUpdate();
    System.out.println("Rows affected: " + rowsAffected);

    preparedStatement.close();
} catch (SQLException e) {
    e.printStackTrace();
}

6. 关闭连接

最后,不要忘记关闭连接和相关资源。通常,这应该在 finally 块中完成,以确保资源总是被释放。

try {
    // 你的数据库操作代码
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

完整示例

以下是一个完整的示例,展示了如何连接到 MySQL 数据库并执行一个简单的查询。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DatabaseConnectionExample {

    public static void main(String[] args) {

        String url = "jdbc:mysql://localhost:3306/your_database";
        String user = "your_username";
        String password = "your_password";

        Connection connection = null;

        try {
            connection = DriverManager.getConnection(url, user, password);
            System.out.println("Connected to the database!");

            String sql = "SELECT * FROM your_table WHERE id = ?";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1, 1);

            ResultSet resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }

            resultSet.close();
            preparedStatement.close();

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();

举报

相关推荐

0 条评论