В Berkley возникают проблемы с обновлением данных до нового значения с помощью конфигурации хэша

Я пытаюсь написать программу, которая использует базу данных Беркли, и я настроил свою базу данных следующим образом:

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

Я провел последний час в поисках в Интернете того, что происходит с парой ключ/данные, когда новый вводимый ключ совпадает с существующим. Согласно API текущие данные будут перезаписаны новыми данными, но в моей программе похоже, что это не так. Кто-нибудь знает, как сделать так, чтобы, если я ввожу в базу данных и ключ существует, он перезаписывал старые данные?

Я думал сначала просто удалить старый ключ, а затем добавить новую комбинацию ключ/данные, но это решение является обходным путем и просто добавляет ненужные накладные расходы.

Заранее спасибо :)


person user597608    schedule 18.11.2011    source источник


Ответы (1)


Я думаю, что database.put() - это решение. Согласно приведенной ниже ссылке:

Метод Db::put сохраняет пары ключ/данные в базе данных. По умолчанию функция Db::put вводит новую пару ключ/данные, заменяя любой ранее существующий ключ, если дубликаты запрещены, или добавляя повторяющийся элемент данных, если дубликаты разрешены. Если база данных поддерживает дубликаты, метод Db::put добавляет новое значение данных в конец набора дубликатов. Если база данных поддерживает отсортированные дубликаты, новое значение данных вставляется в правильное отсортированное место.

http://web.deu.edu.tr/doc/berkeley/berkeleyDB/api_cxx/db_put.html

person HRgiger    schedule 18.11.2011