我正在尝试编写一个使用 Berkeley 数据库的程序,我按如下方式配置了我的数据库:
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setType(DatabaseType.HASH);
dbConfig.setAllowCreate(true);
dbConfig.setSortedDuplicates(false); //tried commented this out as well
// Create the database
std_db = new Database("name.db", null, dbConfig); //delcared as a private variable
过去一个小时,我一直在网上搜索当要输入的新 key 与现有 key 匹配时 key /数据对会发生什么。根据 API,当前数据将被新数据覆盖,但在我的程序中似乎并非如此。任何人都知道如何做到这一点,以便如果我将其放入数据库并且存在 key ,它将覆盖旧数据?
我想先删除旧 key ,然后再放入新 key /数据组合,但这个解决方案是一种变通方法,只是增加了不必要的开销。
提前致谢:)
最佳答案
我认为 database.put() 是解决方案。根据以下链接:
Db::put 方法将键/数据对存储在数据库中。 Db::put 函数的默认行为是输入新的键/数据对,如果不允许重复则替换任何先前存在的键,或者如果允许重复则添加重复的数据项。如果数据库支持重复,则 Db::put 方法将新数据值添加到重复集的末尾。如果数据库支持排序的重复项,则新数据值将插入正确的排序位置。
http://web.deu.edu.tr/doc/berkeley/berkeleyDB/api_cxx/db_put.html
关于java - Berkley 使用散列配置将数据更新为新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176701/