Db::close |
#include <db_cxx.h>int Db::close(u_int32_t flags);
The Db::close method flushes any cached database information to disk, closes any open cursors, frees any allocated resources, and closes any underlying files. Because key/data pairs are cached in memory, failing to sync the file with the Db::close or Db::sync method may result in inconsistent or lost information.
The flags value must be set to 0 or by bitwise inclusively OR'ing together one or more of the following values:
It is important to understand that flushing cached information to disk only minimizes the window of opportunity for corrupted data. Although unlikely, it is possible for database corruption to happen if a system or application crash occurs while writing data to the database. To ensure that database corruption never occurs, applications must either: use transactions and logging with automatic recovery; use logging and application-specific recovery; or edit a copy of the database, and once all applications using the database have successfully called Db::close, atomically replace the original database with the updated copy.
When multiple threads are using the Db concurrently, only a single thread may call the Db::close method.
The Db handle may not be accessed again after Db::close is called, regardless of its return.
The Db::close method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success.
The Db::close method may fail and throw an exception or return a non-zero error for the following conditions:
The Db::close method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods. If a catastrophic error has occurred, the Db::close method may fail and either return DB_RUNRECOVERY or throw a DbRunRecoveryException, in which case all subsequent Berkeley DB calls will fail in the same way.