Java中数据库查询结果返回

在Java中,我们经常需要从数据库中查询数据并将查询结果返回给调用方。本文将介绍如何在Java中进行数据库查询,并将查询结果返回给调用方的方法。

1. 连接数据库

首先,我们需要连接到数据库。在Java中,我们可以使用JDBC(Java Database Connectivity)来与数据库进行交互。JDBC提供了一组API,用于执行SQL语句和处理查询结果。

下面是一个简单的连接到MySQL数据库的示例代码:

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

public class DatabaseConnection {
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/mydatabase";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName(DRIVER);
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
}

在上述代码中,我们使用DriverManager.getConnection()方法来获取与数据库的连接。在连接成功后,我们可以使用Connection对象执行SQL语句。

2. 执行查询语句

接下来,我们需要执行查询语句并获取查询结果。在Java中,我们使用StatementPreparedStatement对象来执行SQL查询语句。

下面是一个例子,演示如何执行查询语句并获取结果:

import java.sql.*;

public class DatabaseQuery {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            connection = DatabaseConnection.getConnection();
            statement = connection.createStatement();
            String query = "SELECT * FROM users";
            resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String email = resultSet.getString("email");
                System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

在上述代码中,我们首先获取与数据库的连接,然后创建一个Statement对象。接下来,我们执行SQL查询语句,并使用ResultSet对象获取查询结果。最后,我们遍历查询结果,并将结果打印到控制台上。

3. 将查询结果返回

要将查询结果返回给调用方,我们可以使用Java中的集合(如List或Map)来存储查询结果。下面是一个示例代码,演示如何将查询结果存储到List中并返回给调用方:

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DatabaseQuery {
    public static List<User> getUsers() {
        List<User> users = new ArrayList<>();

        try (Connection connection = DatabaseConnection.getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery("SELECT * FROM users")) {

            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String email = resultSet.getString("email");
                User user = new User(id, name, email);
                users.add(user);
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        return users;
    }

    public static void main(String[] args) {
        List<User> users = getUsers();

        for (User user : users) {
            System.out.println(user.getId() + ", " + user.getName() + ", " + user.getEmail());
        }
    }
}

class User {
    private int id;
    private String name;
    private String email;

    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }
}

在上述代码中,我们定义了一个User类来表示查询结果的每一行。我们使用List<User>来存储所有查询结果,并在getUsers()方法中将查询结果存储到List中。最后,我们可以将List返回给调用方,并进行进一步的处理。

4. 序列图

下面是一个展示数据库查询过程的序列图:

sequenceDiagram
    participant