gpt4 book ai didi

java - 可更新的结果集行数

转载 作者:行者123 更新时间:2023-11-29 06:05:37 25 4
gpt4 key购买 nike

我想将数据库表绑定(bind)到 swing JTable,并通过在可更新的 ResultSet(#insertRow,#deleteRow(),#updateRow()) 中使用 API 使该 JTable 可编辑。

所以我需要通过包装 ResultSet 来创建 TableModel 实现。

public class MyTableModel implements TableModel {

private ResultSet rs;

private ResultSetMetaData rsmd;

@Override
public int getRowCount() {
return 0;
}

@Override
public int getColumnCount() {
return 0;
}

@Override
public String getColumnName(int columnIndex) {
return null;
}

@Override
public Class<?> getColumnClass(int columnIndex) {
return null;
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return null;
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

}

@Override
public void addTableModelListener(TableModelListener l) {

}

@Override
public void removeTableModelListener(TableModelListener l) {

}

那么,如何实现 getRowCount() 方法呢?

如何确定可更新结果集中的行数?

例如,如果用户点击“添加行”按钮,那么我调用这样的方法:

        rs.moveToInsertRow();
rs.updateString(1, "yqwang");
rs.insertRow();

如何同步 JTable UI 和底层 ResultSet?

最佳答案

你不应该那样做。 ResultSet 需要与数据库的打开连接,并且在您提交连接之前,对结果集所做的更改不会提交到数据库。

这意味着如果数据库因为一段时间内没有看到任何 Activity 而决定关闭连接,或者如果您的应用程序在三个小时后崩溃,您将丢失这三个小时内完成的所有修改。

这也意味着您可能会长时间锁定某些行,从而使其他事务等待很长时间才能执行任何操作。

将结果集中的数据复制到表模型中,并在每次需要插入或更新行时启动一个新事务。

关于java - 可更新的结果集行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8634524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com