java swing修改数据库数据详细代码
时间: 2023-12-06 19:03:13 浏览: 24
以下是一个简单的 Java Swing 修改数据库数据的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class ModifyData extends JFrame implements ActionListener {
// 数据库连接信息
private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "password";
// Swing 组件
private JLabel idLabel, nameLabel, ageLabel;
private JTextField idField, nameField, ageField;
private JButton searchButton, modifyButton;
private JTextArea resultArea;
// 数据库连接对象和查询结果集对象
private Connection conn;
private ResultSet rs;
public ModifyData() {
// 初始化 Swing 组件
idLabel = new JLabel("ID:");
nameLabel = new JLabel("Name:");
ageLabel = new JLabel("Age:");
idField = new JTextField(10);
nameField = new JTextField(10);
ageField = new JTextField(10);
searchButton = new JButton("Search");
modifyButton = new JButton("Modify");
resultArea = new JTextArea(10, 30);
resultArea.setEditable(false);
// 添加组件到 JFrame 中
JPanel panel = new JPanel(new GridLayout(4, 2));
panel.add(idLabel);
panel.add(idField);
panel.add(nameLabel);
panel.add(nameField);
panel.add(ageLabel);
panel.add(ageField);
panel.add(searchButton);
panel.add(modifyButton);
add(panel, BorderLayout.NORTH);
add(new JScrollPane(resultArea), BorderLayout.CENTER);
// 添加事件监听器
searchButton.addActionListener(this);
modifyButton.addActionListener(this);
// 初始化数据库连接
try {
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
// 设置 JFrame 属性
setTitle("Modify Data");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
// 查询数据并显示在 JTextArea 中
try {
int id = Integer.parseInt(idField.getText());
String sql = "SELECT * FROM students WHERE id = " + id;
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
nameField.setText(rs.getString("name"));
ageField.setText(String.valueOf(rs.getInt("age")));
resultArea.setText("ID: " + rs.getInt("id") + "\n" +
"Name: " + rs.getString("name") + "\n" +
"Age: " + rs.getInt("age"));
} else {
resultArea.setText("No data found");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == modifyButton) {
// 修改数据并显示在 JTextArea 中
try {
int id = Integer.parseInt(idField.getText());
String name = nameField.getText();
int age = Integer.parseInt(ageField.getText());
String sql = "UPDATE students SET name = ?, age = ? WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setInt(3, id);
int rowsUpdated = pstmt.executeUpdate();
if (rowsUpdated > 0) {
resultArea.setText("Data updated successfully");
} else {
resultArea.setText("Failed to update data");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args) {
new ModifyData();
}
}
```
这个示例程序使用了 MySQL 数据库,你需要先安装 MySQL 并创建一个名为 "test" 的数据库。然后在数据库中创建一个名为 "students" 的表,该表包含三个字段:id (int),name (varchar) 和 age (int)。
当用户点击 "Search" 按钮时,程序会根据用户输入的 ID 查询数据库,并显示查询结果在 JTextArea 中。当用户修改数据并点击 "Modify" 按钮时,程序会根据用户输入的数据更新数据库,并显示更新结果在 JTextArea 中。
请注意,这个示例程序只是一个简单的演示,实际的应用程序可能需要更复杂的逻辑和更完善的错误处理。