To delete a record using a cursor, simply position the cursor to the
record that you want to delete and then call
Cursor.delete()
.
Note that after deleting a
record, the value of Cursor.getCurrent()
is unchanged until such a
time as the cursor is moved again. Also, if you call
Cursor.delete()
two or more times in a row
without repositioning the cursor, then all subsequent deletes result in
a return value of OperationStatus.KEYEMPTY
.
For example:
package je.gettingStarted; import com.sleepycat.je.Cursor; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseEntry; import com.sleepycat.je.LockMode; import com.sleepycat.je.OperationStatus; ... Cursor cursor = null; try { ... // Database and environment open omitted for brevity ... // Create DatabaseEntry objects // searchKey is some String. DatabaseEntry theKey = new DatabaseEntry(searchKey.getBytes("UTF-8")); DatabaseEntry theData = new DatabaseEntry(); // Open a cursor using a database handle cursor = myDatabase.openCursor(null, null); // Position the cursor. Ignoring the return value for clarity OperationStatus retVal = cursor.getSearchKey(theKey, theData, LockMode.DEFAULT); // Count the number of records using the given key. If there is only // one, delete that record. if (cursor.count() == 1) { System.out.println("Deleting " + new String(theKey.getData(), "UTF-8") + "|" + new String(theData.getData(), "UTF-8")); cursor.delete(); } } catch (Exception e) { // Exception handling goes here } finally { // Make sure to close the cursor cursor.close(); }