Description: Berkeley DB: An embedded database programmatic toolkit.
Keywords: embedded,database,programmatic,toolkit,b+tree,btr ee,hash,hashing,transaction,transactions,locking,logging,access method,access me thods,java,C,C++

### Berkeley DB Reference Guide: Access Methods

# Retrieving records with a cursor

The DBcursor->c_get function is the standard function for retrieving records from the database, with a cursor. In general, the cursor get function takes a key and returns the associated data from the database.

There are several flags that you can set to customize retrieval:

DB_FIRST
  Return the first record from the database.

DB_LAST
  Return the last record from the database.

DB_NEXT
  Return the record from the database immediately following the cursor.

DB_NEXT_DUP
  Return the record from the database immediately following the cursor, if it is a duplicate data item for the current key.

DB_PREV
  Return the record from the database immediately preceding the cursor.

DB_CURRENT
  Return the record from the database currently pointed to by the cursor.

DB_SET
  Return the record from the database that matches the supplied key.

DB_SET_RANGE
  Return the smallest record in the database greater than or equal to the supplied key. This functionality permits partial key matches and range searches.

DB_GET_BOTH
  Return the record from the database that matches both the supplied key and data items. This is particularly useful when there are large numbers of duplicate records for a key, as it allows the cursor to easily be positioned at the correct place for traversal of some part of a large set of duplicate records.

DB_SET_RECNO
  If the underlying database is a Btree, and was configured so that it is possible to search it by logical record number, retrieve a specific record.

DB_GET_RECNO
  If the underlying database is a Btree, and was configured so that it is possible to search it by logical record number, return the record number for the current cursor record.

DB_RMW
  Acquire write locks instead of read locks during retrieval. This can enhance performance in threaded applications where deadlock is a concern.

In all cases, the cursor is repositioned by a DBcursor->c_get operation to point to the newly returned key/data pair in the database.