File: ReplacingEntryWCursor.html

package info (click to toggle)
db5.3 5.3.28%2Bdfsg1-0.5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 158,360 kB
  • sloc: ansic: 448,411; java: 111,824; tcl: 80,544; sh: 44,326; cs: 33,697; cpp: 21,604; perl: 14,557; xml: 10,799; makefile: 4,077; yacc: 1,003; awk: 965; sql: 801; erlang: 342; python: 216; php: 24; asm: 14
file content (134 lines) | stat: -rw-r--r-- 5,221 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Replacing Records Using Cursors</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Getting Started with Berkeley DB" />
    <link rel="up" href="Cursors.html" title="Chapter 9. Using Cursors" />
    <link rel="prev" href="DeleteEntryWCursor.html" title="Deleting Records Using Cursors" />
    <link rel="next" href="cursorJavaUsage.html" title="Cursor Example" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Replacing Records Using Cursors</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 9. Using Cursors</th>
          <td width="20%" align="right"> <a accesskey="n" href="cursorJavaUsage.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="ReplacingEntryWCursor"></a>Replacing Records Using Cursors</h2>
          </div>
        </div>
      </div>
      <p>
        You replace the data for a database record by using
        

        <span>
            <code class="methodname">Cursor.putCurrent()</code>. 
        </span>

        
            
    </p>
      <a id="java_cursor9"></a>
      <pre class="programlisting">import com.sleepycat.db.Cursor;
import com.sleepycat.db.Database;
import com.sleepycat.db.DatabaseEntry;
import com.sleepycat.db.LockMode;
import com.sleepycat.db.OperationStatus; 

...
Cursor cursor = null;
Database myDatabase = null;
try {
    ...
    // Database 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);
    
    // Replacement data
    String replaceStr = "My replacement string";
    DatabaseEntry replacementData = 
        new DatabaseEntry(replaceStr.getBytes("UTF-8"));
    cursor.putCurrent(replacementData);
} catch (Exception e) {
    // Exception handling goes here
} finally {
   // Make sure to close the cursor
   cursor.close();
}</pre>
      <p>
        Note that you cannot change a record's key using this method; the key
        parameter is always ignored when you replace a record.
    </p>
      <p>
        When replacing the data portion of a record, if you are replacing a
        record that is a member of a sorted duplicates set, then the replacement
        will be successful only if the new record sorts identically to the old
        record. This means that if you are replacing a record that is a member
        of a sorted duplicates set, and if you are using the default
        lexicographic sort, then the replacement will fail due to violating the
        sort order. However, if you
        provide a custom sort routine that, for example, sorts based on just a
        few bytes out of the data item, then potentially you can perform
        a direct replacement and still not violate the restrictions described
        here.
    </p>
      <p>
            <span>Under these circumstances, if</span>
            
        you want to replace the data contained by a duplicate record, 
            <span>
                and you are not using a custom sort routine, then
            </span>
        delete the record and create a new record with the desired key and data.
    </p>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="DeleteEntryWCursor.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="Cursors.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="cursorJavaUsage.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Deleting Records Using Cursors </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Cursor Example</td>
        </tr>
      </table>
    </div>
  </body>
</html>