Беркли выпускает обновление данных до нового значения, используя хэш-конфигурацию - PullRequest
2 голосов
/ 18 ноября 2011

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

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 текущие данные будут перезаписаны новыми данными, но в моей программе кажется, что это не так. Кто-нибудь знает, как сделать так, чтобы, если я помещаю его в базу данных и ключ существует, он перезаписывает старые данные?

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

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

1 Ответ

1 голос
/ 18 ноября 2011

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

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

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

...