| 
 |     | 
The DBcursor->c_put method is the standard interface for storing records into the database with a cursor. In general, DBcursor->c_put takes a key and inserts the associated data into the database, at a location controlled by a specified flag.
There are several flags that you can set to customize storage:
In all cases, the cursor is repositioned by a DBcursor->c_put operation to point to the newly inserted key/data pair in the database.
The following is a code example showing a cursor storing two data items in a database that supports duplicate data items:
int
store(dbp)
	DB *dbp;
{
	DBC *dbcp;
	DBT key, data;
	int ret;
	/*
	 * The DB handle for a Btree database supporting duplicate data
	 * items is the argument; acquire a cursor for the database.
	 */
	if ((ret = dbp->cursor(dbp, NULL, &dbcp, 0)) != 0) {
		dbp->err(dbp, ret, "DB->cursor");
		goto err;
	}
	/* Initialize the key. */
	memset(&key, 0, sizeof(key));
	key.data = "new key";
	key.size = strlen(key.data) + 1;
	/* Initialize the data to be the first of two duplicate records. */
	memset(&data, 0, sizeof(data));
	data.data = "new key's data: entry #1";
	data.size = strlen(data.data) + 1;
	/* Store the first of the two duplicate records. */
	if ((ret = dbcp->c_put(dbcp, &key, &data, DB_KEYFIRST)) != 0)
		dbp->err(dbp, ret, "DB->cursor");
	/* Initialize the data to be the second of two duplicate records. */
	data.data = "new key's data: entry #2";
	data.size = strlen(data.data) + 1;
	/*
	 * Store the second of the two duplicate records.  No duplicate
	 * record sort function has been specified, so we explicitly
	 * store the record as the last of the duplicate set.
	 */
	if ((ret = dbcp->c_put(dbcp, &key, &data, DB_KEYLAST)) != 0)
		dbp->err(dbp, ret, "DB->cursor");
err:	if ((ret = dbcp->c_close(dbcp)) != 0)
		dbp->err(dbp, ret, "DBcursor->close");
	return (0);
}
|     |