Java Swing 连接数据库

1. 介绍

在Java的GUI开发中,Swing是一个非常常用的工具包。它提供了一组丰富的组件,用于创建图形用户界面。而连接数据库则是大多数应用程序中常见的功能之一。本文将介绍如何使用Java Swing连接数据库,并提供代码示例。

2. 连接数据库

在Java中,可以使用JDBC(Java Database Connectivity)来连接和操作数据库。JDBC提供了一组API,用于执行SQL语句,从而实现与数据库的交互。在连接数据库之前,需要确保已经安装了数据库驱动程序。常见的数据库驱动程序有MySQL、Oracle、PostgreSQL等。

2.1 导入数据库驱动

首先,我们需要通过在项目中导入数据库驱动程序的jar文件来引入它。假设我们使用的是MySQL数据库,那么可以在Maven配置文件中添加以下依赖项:

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

2.2 创建数据库连接

在使用JDBC连接数据库之前,需要先创建一个数据库连接。可以通过以下代码示例来创建连接:

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

public class DatabaseConnection {
    private static final String URL = "jdbc:mysql://localhost:3306/mydatabase";
    private static final String USERNAME = "username";
    private static final String PASSWORD = "password";

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

上述代码中,我们使用了DriverManager类的getConnection方法来创建数据库连接。需要传递数据库的URL、用户名和密码作为参数。

2.3 执行SQL语句

成功创建数据库连接后,我们可以使用这个连接来执行SQL语句。以下是一个简单的示例,展示如何执行一个SELECT语句并获取结果集:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DatabaseQuery {
    public static void main(String[] args) {
        try {
            Connection connection = DatabaseConnection.getConnection();
            Statement statement = connection.createStatement();
            String sql = "SELECT * FROM students";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用了Statement类的executeQuery方法来执行SELECT语句,并通过ResultSet类获取结果集。然后,可以使用ResultSet对象的getXXX方法获取结果集中的具体值。

3. Java Swing 示例

3.1 创建Swing窗口

首先,我们需要创建一个Swing窗口,用于展示数据库查询结果。以下是一个简单的示例:

import javax.swing.*;
import java.awt.*;

public class MainWindow extends JFrame {
    private JTable table;

    public MainWindow() {
        setTitle("Database Query Result");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setPreferredSize(new Dimension(400, 300));
        setLayout(new BorderLayout());

        table = new JTable();
        JScrollPane scrollPane = new JScrollPane(table);
        add(scrollPane, BorderLayout.CENTER);

        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public void setTableModel(DefaultTableModel model) {
        table.setModel(model);
    }
}

3.2 查询数据库并显示结果

接下来,我们需要在Swing窗口中查询数据库并显示结果。以下是一个示例代码:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;

public class DatabaseQuerySwing {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                Connection connection = DatabaseConnection.getConnection();
                Statement statement = connection.createStatement();
                String sql = "SELECT * FROM students";
                ResultSet resultSet = statement.executeQuery(sql);

                DefaultTableModel model = new DefaultTableModel();
                model.addColumn("ID");
                model.addColumn("Name");
                model.addColumn("Age");

                while (resultSet.next()) {
                    Object[] row = new Object[3];
                    row[0] = resultSet.getInt("id");
                    row[1] = resultSet.getString("name");
                    row[2] = resultSet.getInt("age");