Java Swing显示数据库信息

Java Swing是Java提供的一个GUI(图形用户界面)库,可以用于创建用户友好的窗口应用程序。在开发过程中,我们经常需要从数据库中获取信息并显示在窗口中。本文将介绍如何使用Java Swing来显示数据库信息,并提供相应的代码示例。

准备工作

在开始之前,我们需要安装Java开发环境(JDK),并准备一个数据库实例。本文将以MySQL数据库为例,读者可以根据自己的实际情况选择其他类型的数据库。

首先,我们需要导入数据库驱动程序。这里使用MySQL提供的官方驱动程序,你可以从官方网站下载并添加到项目中。以下是使用Maven管理依赖的示例:

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

创建窗口

首先,我们需要创建一个窗口来显示数据库信息。在Java Swing中,可以使用JFrame类表示一个窗口。以下是创建一个简单窗口的示例代码:

import javax.swing.JFrame;

public class DatabaseWindow extends JFrame {
    
    public DatabaseWindow() {
        setTitle("Database Information");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 300);
        setLocationRelativeTo(null);
    }
    
    public static void main(String[] args) {
        DatabaseWindow window = new DatabaseWindow();
        window.setVisible(true);
    }
}

在上面的代码中,我们创建了一个继承自JFrame的DatabaseWindow类。在构造函数中,我们设置了窗口的标题、关闭操作、大小和位置。在main方法中,我们创建了一个DatabaseWindow对象并设置其可见性。

连接数据库

接下来,我们需要连接到数据库并获取信息。在Java中,可以使用JDBC(Java Database Connectivity)来实现与数据库的交互。以下是连接到MySQL数据库的示例代码:

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 = "root";
    private static final String PASSWORD = "password";
    
    private Connection connection;
    
    public DatabaseConnection() {
        try {
            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            System.out.println("Connected to database.");
        } catch (SQLException e) {
            System.out.println("Failed to connect to database.");
            e.printStackTrace();
        }
    }
    
    public Connection getConnection() {
        return connection;
    }
    
    public void closeConnection() {
        try {
            connection.close();
            System.out.println("Disconnected from database.");
        } catch (SQLException e) {
            System.out.println("Failed to disconnect from database.");
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们创建了一个DatabaseConnection类,其中包含了连接到数据库和关闭连接的方法。在构造函数中,我们使用DriverManager类的getConnection方法来获取数据库连接。URL参数指定了数据库的地址和端口号,USERNAME和PASSWORD参数指定了登录数据库的用户名和密码。

显示数据库信息

现在我们已经连接到数据库,接下来可以执行SQL查询并显示结果了。在Java Swing中,可以使用JTable类来显示表格数据。以下是显示数据库信息的示例代码:

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

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class DatabaseWindow extends JFrame {
    
    private JTable table;
    
    public DatabaseWindow() {
        setTitle("Database Information");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 300);
        setLocationRelativeTo(null);
        
        table = new JTable();
        
        JScrollPane scrollPane = new JScrollPane(table);
        getContentPane().add(scrollPane);
    }
    
    public void displayData() {
        DatabaseConnection connection = new DatabaseConnection();
        
        try {
            Statement statement = connection.getConnection().createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM mytable");
            
            DefaultTableModel model = new DefaultTableModel();
            model.setColumnIdentifiers(new Object[] {"Column 1", "Column 2"});
            
            while (resultSet.next()) {
                model.addRow(new Object[] {resultSet.getString(1), resultSet.getString(2)});
            }
            
            table.setModel(model);
            
            resultSet.close();
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
        connection.closeConnection();
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            Database