如何在JTable中删除数据库中的数据? (jtable 删除数据库)
在使用Java编写数据库应用程序时,我们经常需要显示数据并且能够对这些数据进行增、删、改的操作,而在Java中,JTable是一种非常常用的显示数据的组件,其也提供了一些默认的操作,包括删除行,这些操作的实现离不开数据库的操作。在这篇文章中,我们将介绍如何在JTable中删除数据库中的数据。
我们需要建立一个连接到数据库的连接,可以使用JDBC来实现。下面是一个简单的连接数据库方法:
“`
public static Connection getConnection() throws SQLException {
String url = “jdbc:mysql://localhost:3306/mydatabase”;
String user = “root”;
String password = “123456”;
return DriverManager.getConnection(url, user, password);
}
“`
其中,url是数据库的连接地址,mydatabase是数据库名,root是用户名,123456是密码。getConnection方法将返回一个Connection对象,该对象用于与数据库进行通信。
接下来,我们需要从数据库中获取数据并将其显示在JTable中。这可以通过以下代码实现:
“`
public static DefaultTableModel getTableModel() throws SQLException {
String sql = “SELECT * FROM mytable”;
Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
// 获取列名
int columnCount = metaData.getColumnCount();
String[] columnNames = new String[columnCount];
for (int i = 0; i
columnNames[i] = metaData.getColumnName(i + 1);
}
// 获取行数据
List
while (resultSet.next()) {
Object[] rowData = new Object[columnCount];
for (int i = 0; i
rowData[i] = resultSet.getObject(i + 1);
}
rows.add(rowData);
}
DefaultTableModel model = new DefaultTableModel(columnNames, rows.size());
for (int i = 0; i
Object[] rowData = rows.get(i);
for (int j = 0; j
model.setValueAt(rowData[j], i, j);
}
}
resultSet.close();
statement.close();
connection.close();
return model;
}
“`
上面的getTableModel方法将从mytable表中获取数据,并将其转换为DefaultTableModel对象,该对象用于在JTable中显示数据。
我们需要在JTable中实现删除行的操作。在JTable中删除行的实现可以通过以下代码来完成:
“`
public static void deleteRow(int rowIndex) throws SQLException {
String sql = “DELETE FROM mytable WHERE id=?”;
Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, rowIndex + 1);
statement.executeUpdate();
statement.close();
connection.close();
}
“`
上面的deleteRow方法将从mytable表中删除指定行的数据。该方法通过sql语句来执行删除操作,其中id字段用于标识每一行的唯一性。
现在,我们可以将获取数据、显示数据和删除数据的方法组合在一起,实现在JTable中删除数据库中的数据的功能。实现代码如下:
“`
public class JTableDemo extends JFrame {
private JTable table;
public JTableDemo() throws SQLException {
// 获取表格数据模型
DefaultTableModel model = getTableModel();
// 创建表格
table = new JTable(model);
crollPane scrollPane = new crollPane(table);
getContentPane().add(scrollPane);
// 添加删除按钮
JButton deleteButton = new JButton(“删除”);
deleteButton.addActionListener(e -> {
int rowIndex = table.getSelectedRow();
if (rowIndex != -1) {
try {
deleteRow(rowIndex);
model.removeRow(rowIndex);
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, “删除失败”);
}
} else {
JOptionPane.showMessageDialog(this, “请选择要删除的行”);
}
});
getContentPane().add(deleteButton, BorderLayout.SOUTH);
// 设置窗口属性
setSize(400, 300);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void mn(String[] args) throws SQLException {
new JTableDemo();
}
// 获取数据模型
public static DefaultTableModel getTableModel() throws SQLException {
// 获取数据库连接
Connection connection = getConnection();
// 定义sql语句
String sql = “SELECT * FROM mytable”;
// 执行sql语句
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
// 获取列名
int columnCount = metaData.getColumnCount();
String[] columnNames = new String[columnCount];
for (int i = 0; i
columnNames[i] = metaData.getColumnName(i + 1);
}
// 获取行数据
List
while (resultSet.next()) {
Object[] rowData = new Object[columnCount];
for (int i = 0; i
rowData[i] = resultSet.getObject(i + 1);
}
rows.add(rowData);
}
// 关闭连接
resultSet.close();
statement.close();
connection.close();
// 创建数据模型
DefaultTableModel model = new DefaultTableModel(columnNames, rows.size());
for (int i = 0; i
Object[] rowData = rows.get(i);
for (int j = 0; j
model.setValueAt(rowData[j], i, j);
}
}
return model;
}
// 删除行
public static void deleteRow(int rowIndex) throws SQLException {
Connection connection = getConnection();
String sql = “DELETE FROM mytable WHERE id=?”;
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, rowIndex + 1);
statement.executeUpdate();
statement.close();
connection.close();
}
// 获取连接
public static Connection getConnection() throws SQLException {
String url = “jdbc:mysql://localhost:3306/mydatabase”;
String user = “root”;
String password = “123456”;
return DriverManager.getConnection(url, user, password);
}
}
“`
上面的代码中,我们在JFrame窗口中添加了一个JTable用于显示数据,以及一个JButton用于删除行。点击删除按钮将从JTable中获取选中的行,并从数据库中删除该行的数据,同时也将该行从JTable中删除。