Chapter 4. Using Cursors
Prev |  | Next

## Chapter 4. Using Cursors

Cursors provide a mechanism by which you can iterate over the records in a database. Using cursors, you can get, put, and delete database records. If a database allows duplicate records, then cursors are the easiest way that you can access anything other than the first record for a given key.

This chapter introduces cursors. It explains how to open and close them, how to use them to modify databases, and how to use them with duplicate records.

## Opening and Closing Cursors

To use a cursor, you must open it using the `Database.openCursor()` method. When you open a cursor, you can optionally pass it a `CursorConfig` object to set cursor properties.

For example:

    package com.sleepycat.examples.db.GettingStarted;

    import com.sleepycat.db.Cursor;
    import com.sleepycat.db.CursorConfig;
    import com.sleepycat.db.Database;
    import com.sleepycat.db.DatabaseException;

    import java.io.FileNotFoundException;

    ...
    Database myDatabase = null;
    Cursor myCursor = null;

    try {
        myDatabase = new Database("myDB", null, null);

        myCursor = myDatabase.openCursor(null, null);
    } catch (FileNotFoundException fnfe) {
        // Exception handling goes here ...
    } catch (DatabaseException dbe) {
        // Exception handling goes here ...
    }

To close the cursor, call the `Cursor.close()` method. Note that if you close a database that has cursors open in it, then it will complain and close any open cursors for you. For best results, close your cursors from within a `finally` block.

    package com.sleepycat.examples.db.GettingStarted;

    import com.sleepycat.db.Cursor;
    import com.sleepycat.db.Database;

    ...
    try {
        ...
    } catch ... {
    } finally {
        try {
            if (myCursor != null) {
                myCursor.close();
            }

            if (myDatabase != null) {
                myDatabase.close();
            }
        } catch(DatabaseException dbe) {
            System.err.println("Error in close: " + dbe.toString());
        }
    }

Prev | Up | Next
Database Usage Example | Home | Getting Records Using the Cursor