Java swing 修改数据库数据详细代码
时间: 2023-09-18 20:10:23 浏览: 117
Java修改数据库中的内容
以下是一个简单的 Java Swing 修改数据库数据的代码示例。
首先,你需要创建一个包含文本框和按钮的 GUI 界面来输入和更新数据。在本例中,我们将使用一个包含 ID、名称、和年龄的表格。
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateDataExample {
private JFrame frame;
private JTable table;
private JTextField txtId;
private JTextField txtName;
private JTextField txtAge;
private Connection conn;
private Statement stmt;
private ResultSet rs;
private PreparedStatement pstmt;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UpdateDataExample window = new UpdateDataExample();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public UpdateDataExample() {
initialize();
connect();
loadTable();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
txtId = new JTextField();
panel.add(txtId);
txtId.setColumns(10);
txtName = new JTextField();
panel.add(txtName);
txtName.setColumns(10);
txtAge = new JTextField();
panel.add(txtAge);
txtAge.setColumns(10);
JButton btnUpdate = new JButton("Update");
panel.add(btnUpdate);
btnUpdate.addActionListener(e -> updateData());
JScrollPane scrollPane = new JScrollPane();
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
table = new JTable();
scrollPane.setViewportView(table);
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"ID", "Name", "Age"
}
) {
Class[] columnTypes = new Class[] {
Integer.class, String.class, Integer.class
};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
boolean[] columnEditables = new boolean[] {
false, true, true
};
public boolean isCellEditable(int row, int column) {
return columnEditables[column];
}
});
}
/**
* Connect to the database.
*/
private void connect() {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
/**
* Load data into the table.
*/
private void loadTable() {
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.setRowCount(0);
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM mytable");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
model.addRow(new Object[] { id, name, age });
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* Update data in the database.
*/
private void updateData() {
try {
String sql = "UPDATE mytable SET name=?, age=? WHERE id=?";
pstmt = conn.prepareStatement(sql);
int id = Integer.parseInt(txtId.getText());
String name = txtName.getText();
int age = Integer.parseInt(txtAge.getText());
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setInt(3, id);
pstmt.executeUpdate();
loadTable();
} catch (NumberFormatException | SQLException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们使用了 Java Swing 的 JTable 组件来显示数据库中的数据,并使用文本框和按钮来修改数据。我们还使用了 JDBC API 来连接和操作数据库。
在 `connect()` 方法中,我们使用 JDBC 驱动程序来连接 MySQL 数据库。在 `loadTable()` 方法中,我们使用 `SELECT` 语句从数据库中检索数据,并将其添加到 JTable 中。在 `updateData()` 方法中,我们使用 `UPDATE` 语句更新数据库中的数据。
注意,我们使用 `PreparedStatement` 对象来执行 SQL 语句,以避免 SQL 注入攻击。
以上就是一个简单的 Java Swing 修改数据库数据的代码示例。
阅读全文