如何在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中删除。
相关问题拓展阅读:
jtable链接数据库数据显示不全
jtable链接数据库数据显示不全?
答案如下:系统代码出弊灶错了!正确的租或扮操作方法是团唤,首先之一步先点击打开设置按钮,然后帐户管理在页面点击账号安全中心进入即可完成!多实践测试。
1,点击data source,显烂岩仔示弹出框,选择schemas勾选要在idea中展示的表如test_liu,点击ok就完成了,我们就可以在idea界面看到素有的mysql表了枣腔
最终解决方法:
1.安装navicat,连接异常的数据库,检查用户的权限是否正常。
检查后,发现root账号的权限已经全部未设置饥汪。
2.修改root权限。
调整完后,修改root密码,去掉上面添加的“skip-grant-tables”参数。
3.重启数据库服务。
重启之后,一切正常。
首先确定你的crollPane是否显示正常。乱睁如果正哗握岁常,那就是把JTable放入crollPane的时皮宽候方置方法的问题了。一般来讲,是初始化一个JTable table = new JTable(),JscrollPane = new crollPane(table),table中数据的修改通过更改table的datamodle就可以了。
关于java中JTable中的错误。下面是出错的代码问题。之一次在Jtable中点击一条记录时没,当第二次点击时报
ArrayIndexOutOfBoundsException
这个是Array数组越界,是个常见的错误,记住这个错误,你以后肯定会碰到的
你的代码不完整 都不滑笑好调试,我就直接看下。
Vector v =new Vector();
你直接这么初始化实例就行了
//一下是实例化Vector时候可以用的构银没造方法
Vector()
构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
Vector(Collection c)
构造一个包含指定中的元素的向量,这些元素按其的迭代器返回元素的顺序排列。
Vector(int initialCapacity)
使用指定的初始容量和等于零的容量增量构造一个空向量。
Vector(int initialCapacity, int capacityIncrement)
使用指定的初始容量和容量增量构造一个空的向量。
你用的是第三种,
Vector(int initialCapacity, int capacityIncrement)
使用指定的初始容量和容量信搏含增量构造一个空的向量。
你都给这个向量指定了大小了。当然会出错的,
报ArrayIndexOutOfBoundsException错是必然的。
jtable 删除数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于jtable 删除数据库,如何在JTable中删除数据库中的数据?,jtable链接数据库数据显示不全,关于java中JTable中的错误。下面是出错的代码问题。之一次在Jtable中点击一条记录时没,当第二次点击时报的信息别忘了在本站进行查找喔。