我正在开发一个与 Doodle.com 非常相似的 GWT Web 应用程序
我需要在数据库中存储一些有关事件和用户的信息。
这是一个大学考试项目,我们必须使用mapDB来存储持久数据。
我们遇到的问题是,每次调用方法 saveEventsToDB()
时,都会有一个新数据库覆盖之前创建的数据库。
这是saveEventsToDB()
方法:
public void saveEventsToDB(Event event) {
DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmShutdown().make();
Map<Integer, Event> map = eventsDB.getTreeMap("Events");
map.clear();
Set<Integer> keys = map.keySet();
int id=0;
for(int key : keys) {
id++;
}
map.put(id+1, event);
eventsDB.commit();
eventsDB.close();
}
我很确定这是由这行代码引起的:
DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmShutdown().make();
但这在我们的教授为我们提供的 mapDB 示例代码中。
mapDB 文档说 newFileDB
:
Creates or open database stored in file.
但是每次都会创建一个新数据库,我们看到使用一些断点并尝试从数据库中提取数据,每次只返回一条记录。
如果有人可以提供帮助,我将不胜感激。谢谢
最佳答案
有时会调用 db.commit() 。 Mapdb有事务,未提交的数据被丢弃。
关于java - 如何从mapDB数据库检索数据,而不是每次都覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24715971/