如何在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 rows = new ArrayList();

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 rows = new ArrayList();

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中删除。


数据运维技术 » 如何在JTable中删除数据库中的数据? (jtable 删除数据库)