【问题标题】:Why does it always outputs empty even when the database is not?为什么即使数据库不是,它总是输出空?
【发布时间】:2022-01-13 06:51:01
【问题描述】:
private booolean dataSelected = false;
private void jDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                        
    ObjectContainer db = Db4oEmbedded.openFile("barangay_data.db4o");
    try {
        Brgy_Data brgy = new Brgy_Data(idno, null, null, null, null, null, null, null, null, null);
        ObjectSet result = db.queryByExample(brgy);
        if (result.isEmpty()) {
            JOptionPane.showMessageDialog(this, "Data is Empty", "Delete", JOptionPane.INFORMATION_MESSAGE);
        } else if (dataSelected == false) {
            JOptionPane.showMessageDialog(null, "No Data Selected!", "Invalid Action", JOptionPane.ERROR_MESSAGE);
        } else {
            Brgy_Data brgy1 = new Brgy_Data(null, null, null, null, null, null, null, null, null, null);
            brgy1 = (Brgy_Data) result.next();
            String msg = "Delete Data?\n";
            msg = msg + "First Name: " + brgy1.getFName() + "\n";
            msg = msg + "Last Name: " + brgy1.getLName() + "\n";
            int retval = JOptionPane.showConfirmDialog(this, msg, "Delete", JOptionPane.YES_NO_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE);
            if (retval == JOptionPane.YES_OPTION) {
                db.delete(brgy1);
                javax.swing.JOptionPane.showMessageDialog(this, "Data Successfully Deleted", "Delete", javax.swing.JOptionPane.INFORMATION_MESSAGE);

            }
        }
    } catch (Exception e) {
        System.out.println(e);
    } finally {
        db.close();
    }
    clearTable();
    loadDataInfo();
    dataSelected = false;
}

所以我在 jTable 中选择一行然后删除。然后将 boolean dataSelected 变为 false。但不知何故,即使数据库中仍有多个数据,第一个条件总是会执行。

编辑:有没有一种方法可以检查数据库是否为空?

【问题讨论】:

  • 您似乎正在寻找具有特定 id 的元素。你确定这样的元素还在数据库中吗?
  • 不看,更像是删除存储在db4o中的jTable中的数据。我觉得 result.isEmpty() 不是可以读取存储在 db4o 中的所有数据大小的方法。
  • 好吧,db.queryByExample(brgy);Brgy_Data brgy = new Brgy_Data(idno, ...) 似乎是在查找具有给定 idno 的元素。
  • "我感觉result.isEmpty()不是可以读取db4o中存储的所有数据大小的方法。" - 是的,这种方法并不意味着这样做。它的目的是告诉您您的查询是否返回任何内容,即返回的ObjectSet 是否为空。
  • 天哪,不知道。有没有方法可以检查数据库是否为空?

标签: java swing jtable db4o


【解决方案1】:
if (jTable.getRowCount() == 0) {
        JOptionPane.showMessageDialog(null, "Data is Empty", "Invalid Action", JOptionPane.ERROR_MESSAGE);
}

我的同学这样做了。它不检查 db4o,而只检查 tablerowcount,因为无论如何该表都会输出来自 db4o 的所有数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多