【发布时间】: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是否为空。 -
天哪,不知道。有没有方法可以检查数据库是否为空?