File: env_open.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 (130 lines) | stat: -rw-r--r-- 5,066 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
<?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>Opening databases within the environment</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="Berkeley DB Programmer's Reference Guide" />
    <link rel="up" href="env.html" title="Chapter 9.  The Berkeley DB Environment" />
    <link rel="prev" href="env_size.html" title="Sizing a database environment" />
    <link rel="next" href="env_error.html" title="Error support" />
  </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">Opening databases within the environment</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="env_size.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 9. 
		The Berkeley DB Environment
        </th>
          <td width="20%" align="right"> <a accesskey="n" href="env_error.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="env_open"></a>Opening databases within the environment</h2>
          </div>
        </div>
      </div>
      <p>Once the environment has been created, database handles may be created
and then opened within the environment.  This is done by calling the
<a href="../api_reference/C/dbcreate.html" class="olink">db_create()</a> function and specifying the appropriate environment
as an argument.</p>
      <p>File naming, database operations, and error handling will all be done as
specified for the environment.  For example, if the <a href="../api_reference/C/envopen.html#envopen_DB_INIT_LOCK" class="olink">DB_INIT_LOCK</a>
or <a href="../api_reference/C/envopen.html#envopen_DB_INIT_CDB" class="olink">DB_INIT_CDB</a> flags were specified when the environment was
created or joined, database operations will automatically perform all
necessary locking operations for the application.</p>
      <p>The following is a simple example of opening two databases within a
database environment:</p>
      <a id="prog_env28"></a>
      <pre class="programlisting">DB_ENV *dbenv;
    DB *dbp1, *dbp2;
    int ret;

    dbenv = NULL;
    dbp1 = dbp2 = NULL;
	/*
     * Create an environment and initialize it for additional error
     * reporting.
     */
    if ((ret = db_env_create(&amp;dbenv, 0)) != 0) {
        fprintf(errfp, "%s: %s\n", progname, db_strerror(ret));
        return (ret);
    }

    dbenv-&gt;set_errfile(dbenv, errfp);
    dbenv-&gt;set_errpfx(dbenv, progname);

    /* Open an environment with just a memory pool. */
    if ((ret =
        dbenv-&gt;open(dbenv, home, DB_CREATE | DB_INIT_MPOOL, 0)) != 0) {
        dbenv-&gt;err(dbenv, ret, "environment open: %s", home);
        goto err;
    }

    /* Open database #1. */
    if ((ret = db_create(&amp;dbp1, dbenv, 0)) != 0) {
        dbenv-&gt;err(dbenv, ret, "database create");
        goto err;
    }
    if ((ret = dbp1-&gt;open(dbp1,
        NULL, DATABASE1, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
        dbenv-&gt;err(dbenv, ret, "DB-&gt;open: %s", DATABASE1);
        goto err;
    }

    /* Open database #2. */
    if ((ret = db_create(&amp;dbp2, dbenv, 0)) != 0) {
        dbenv-&gt;err(dbenv, ret, "database create");
        goto err;
    }
    if ((ret = dbp2-&gt;open(dbp2,
        NULL, DATABASE2, NULL, DB_HASH, DB_CREATE, 0664)) != 0) {
        dbenv-&gt;err(dbenv, ret, "DB-&gt;open: %s", DATABASE2);
        goto err;
    }

    return (0);

err:    if (dbp2 != NULL)
        (void)dbp2-&gt;close(dbp2, 0);
    if (dbp1 != NULL)
        (void)dbp1-&gt;close(dbp1, 0);
    (void)dbenv-&gt;close(dbenv, 0);
    return (1);
}</pre>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="env_size.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="env.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="env_error.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Sizing a database environment </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Error support</td>
        </tr>
      </table>
    </div>
  </body>
</html>