【Java学习笔记】18.Java数据库编程 -2
7. 数据库开发实例
这是一个基于AWT和MYSQL的数据库查询系统
7.1 构造方法
在数据库开发类的实例中,通常先在构造方法中动态的加载和创建数据库驱动对象,然后通过DriverManager.getConnection()方法创建连接。
【例】java数据库开发实例
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Vector;/*** SQL查询工具类,提供图形界面用于连接数据库、执行SQL语句并显示结果* 使用Java Swing和JDBC实现*/
public class SQLQueryTool extends JFrame {// 数据库连接相关组件private JTextField urlField; // 数据库URL输入框private JTextField userField; // 用户名输入框private JPasswordField passField; // 密码输入框// SQL语句输入和结果显示组件private JTextArea sqlArea; // SQL语句输入区域private JTable resultTable; // 结果显示表格// 功能按钮private JButton connectBtn; // 连接数据库按钮private JButton executeBtn; // 执行SQL语句按钮// 数据库连接对象private Connection connection;/*** 构造函数,初始化窗口*/public SQLQueryTool() {super("SQL查询工具"); // 设置窗口标题initializeUI(); // 初始化用户界面setSize(800, 600); // 设置窗口大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭操作setLocationRelativeTo(null); // 窗口居中显示}/*** 初始化用户界面组件和布局*/private void initializeUI() {// 创建主面板,使用边界布局,并设置边距JPanel mainPanel = new JPanel(new BorderLayout(5, 5));mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));// 创建数据库连接面板JPanel connectionPanel = createConnectionPanel();// 创建SQL输入面板JPanel sqlPanel = createSqlPanel();// 创建按钮面板JPanel buttonPanel = createButtonPanel();// 创建结果面板JPanel resultPanel = createResultPanel();// 添加所有面板到主面板mainPanel.add(connectionPanel, BorderLayout.NORTH);mainPanel.add(sqlPanel, BorderLayout.CENTER);mainPanel.add(buttonPanel, BorderLayout.SOUTH);// 使用分割面板将SQL输入区域和结果显示区域分开JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, mainPanel, resultPanel);splitPane.setResizeWeight(0.4); // 设置分割比例// 将分割面板添加到窗口add(splitPane);}/*** 创建数据库连接面板* @return 配置好的连接面板*/private JPanel createConnectionPanel() {// 创建连接面板,使用网格袋布局JPanel connectionPanel = new JPanel(new GridBagLayout());connectionPanel.setBorder(BorderFactory.createTitledBorder("数据库连接"));// 设置布局约束GridBagConstraints gbc = new GridBagConstraints();gbc.insets = new Insets(2, 2, 2, 2); // 组件间距gbc.fill = GridBagConstraints.HORIZONTAL; // 水平填充// 添加URL标签和输入框gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0;connectionPanel.add(new JLabel("URL:"), gbc);gbc.gridx = 1; gbc.gridy = 0; gbc.weightx = 1;urlField = new JTextField("jdbc:mysql://localhost:3306/test", 30);connectionPanel.add(urlField, gbc);// 添加用户名标签和输入框gbc.gridx = 0; gbc.gridy = 1; gbc.weightx = 0;connectionPanel.add(new JLabel("用户名:"), gbc);gbc.gridx = 1; gbc.gridy = 1; gbc.weightx = 1;userField = new JTextField("root", 15);connectionPanel.add(userField,