Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从mapDB数据库中检索数据,而不必每次都重写它?_Java_Gwt_Mapdb - Fatal编程技术网

Java 如何从mapDB数据库中检索数据,而不必每次都重写它?

Java 如何从mapDB数据库中检索数据,而不必每次都重写它?,java,gwt,mapdb,Java,Gwt,Mapdb,我正在开发一个与 我需要在数据库中存储一些关于事件和用户的信息。 这是一个大学考试的项目,我们必须使用mapDB获取持久数据。 我们遇到的问题是,每次调用方法saveEventsToDB(),一个新的数据库就会覆盖以前创建的数据库 这是saveEventsToDB()方法: public void saveEventsToDB(Event event) { DB eventsDB = DBMaker.newFileDB(new File("eventsDB")).closeOnJvmSh

我正在开发一个与

我需要在数据库中存储一些关于事件和用户的信息。 这是一个大学考试的项目,我们必须使用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();
}
但这是我们教授给我们的mapDB示例代码

mapDB文档说明
newFileDB

创建或打开存储在文件中的数据库

但每次都会创建一个新的数据库,我们看到它使用一些断点并试图从数据库中提取数据,每次只返回一条记录


如果有人能帮忙,我将不胜感激。谢谢

您的问题是,当您删除数据库中存储的数据时

map.clear()
此功能用于删除或删除地图中的记录。您不应该调用此函数。

有时调用db.commit()。Mapdb有事务,未提交的数据将被丢弃。

为什么要使用map.clear()?
map.clear()