~ubuntu-branches/ubuntu/wily/sqlite3/wily

« back to all changes in this revision

Viewing changes to c3ref/blob_open.html

  • Committer: Package Import Robot
  • Author(s): Laszlo Boszormenyi (GCS)
  • Date: 2012-06-13 21:43:48 UTC
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: package-import@ubuntu.com-20120613214348-uy14uupdeq0hh04k
Tags: upstream-3.7.13/www
Import upstream version 3.7.13, component www

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
2
<html><head>
 
3
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 
4
<title>Open A BLOB For Incremental I/O</title>
 
5
<style type="text/css">
 
6
body {
 
7
    margin: auto;
 
8
    font-family: Verdana, sans-serif;
 
9
    padding: 8px 1%;
 
10
}
 
11
 
 
12
a { color: #044a64 }
 
13
a:visited { color: #734559 }
 
14
 
 
15
.logo { position:absolute; margin:3px; }
 
16
.tagline {
 
17
  float:right;
 
18
  text-align:right;
 
19
  font-style:italic;
 
20
  width:300px;
 
21
  margin:12px;
 
22
  margin-top:58px;
 
23
}
 
24
 
 
25
.toolbar {
 
26
  text-align: center;
 
27
  line-height: 1.6em;
 
28
  margin: 0;
 
29
  padding: 0px 8px;
 
30
}
 
31
.toolbar a { color: white; text-decoration: none; padding: 6px 12px; }
 
32
.toolbar a:visited { color: white; }
 
33
.toolbar a:hover { color: #044a64; background: white; }
 
34
 
 
35
.content    { margin: 5%; }
 
36
.content dt { font-weight:bold; }
 
37
.content dd { margin-bottom: 25px; margin-left:20%; }
 
38
.content ul { padding:0px; padding-left: 15px; margin:0px; }
 
39
 
 
40
/* rounded corners */
 
41
.se  { background: url(../images/se.gif) 100% 100% no-repeat #044a64}
 
42
.sw  { background: url(../images/sw.gif) 0% 100% no-repeat }
 
43
.ne  { background: url(../images/ne.gif) 100% 0% no-repeat }
 
44
.nw  { background: url(../images/nw.gif) 0% 0% no-repeat }
 
45
 
 
46
/* Things for "fancyformat" documents start here. */
 
47
.fancy img+p {font-style:italic}
 
48
.fancy .codeblock i { color: darkblue; }
 
49
.fancy h1,.fancy h2,.fancy h3,.fancy h4 {font-weight:normal;color:#044a64}
 
50
.fancy h2 { margin-left: 10px }
 
51
.fancy h3 { margin-left: 20px }
 
52
.fancy h4 { margin-left: 30px }
 
53
.fancy th {white-space:nowrap;text-align:left;border-bottom:solid 1px #444}
 
54
.fancy th, .fancy td {padding: 0.2em 1ex; vertical-align:top}
 
55
.fancy #toc a        { color: darkblue ; text-decoration: none }
 
56
.fancy .todo         { color: #AA3333 ; font-style : italic }
 
57
.fancy .todo:before  { content: 'TODO:' }
 
58
.fancy p.todo        { border: solid #AA3333 1px; padding: 1ex }
 
59
.fancy img { display:block; }
 
60
.fancy :link:hover, .fancy :visited:hover { background: wheat }
 
61
.fancy p,.fancy ul,.fancy ol { margin: 1em 5ex }
 
62
.fancy li p { margin: 1em 0 }
 
63
/* End of "fancyformat" specific rules. */
 
64
 
 
65
</style>
 
66
  
 
67
</head>
 
68
<body>
 
69
<div><!-- container div to satisfy validator -->
 
70
 
 
71
<a href="../index.html">
 
72
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite Logo"
 
73
 border="0"></a>
 
74
<div><!-- IE hack to prevent disappearing logo--></div>
 
75
<div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div>
 
76
 
 
77
<table width=100% style="clear:both"><tr><td>
 
78
  <div class="se"><div class="sw"><div class="ne"><div class="nw">
 
79
  <table width=100% style="padding:0;margin:0;cell-spacing:0"><tr>
 
80
  <td width=100%>
 
81
  <div class="toolbar">
 
82
    <a href="../about.html">About</a>
 
83
    <a href="../sitemap.html">Sitemap</a>
 
84
    <a href="../docs.html">Documentation</a>
 
85
    <a href="../download.html">Download</a>
 
86
    <a href="../copyright.html">License</a>
 
87
    <a href="../news.html">News</a>
 
88
    <a href="../support.html">Support</a>
 
89
  </div>
 
90
<script>
 
91
  gMsg = "Search SQLite Docs..."
 
92
  function entersearch() {
 
93
    var q = document.getElementById("q");
 
94
    if( q.value == gMsg ) { q.value = "" }
 
95
    q.style.color = "black"
 
96
    q.style.fontStyle = "normal"
 
97
  }
 
98
  function leavesearch() {
 
99
    var q = document.getElementById("q");
 
100
    if( q.value == "" ) { 
 
101
      q.value = gMsg
 
102
      q.style.color = "#044a64"
 
103
      q.style.fontStyle = "italic"
 
104
    }
 
105
  }
 
106
</script>
 
107
<td>
 
108
    <div style="padding:0 1em 0px 0;white-space:nowrap">
 
109
    <form name=f method="GET" action="http://www.sqlite.org/search">
 
110
      <input id=q name=q type=text
 
111
       onfocus="entersearch()" onblur="leavesearch()" style="width:24ex;padding:1px 1ex; border:solid white 1px; font-size:0.9em ; font-style:italic;color:#044a64;" value="Search SQLite Docs...">
 
112
      <input type=submit value="Go" style="border:solid white 1px;background-color:#044a64;color:white;font-size:0.9em;padding:0 1ex">
 
113
    </form>
 
114
    </div>
 
115
  </table>
 
116
</div></div></div></div>
 
117
</td></tr></table>
 
118
<div class=startsearch></div>
 
119
  
 
120
<a href="intro.html"><h2>SQLite C Interface</h2></a><h2>Open A BLOB For Incremental I/O</h2><blockquote><pre>int sqlite3_blob_open(
 
121
  sqlite3*,
 
122
  const char *zDb,
 
123
  const char *zTable,
 
124
  const char *zColumn,
 
125
  sqlite3_int64 iRow,
 
126
  int flags,
 
127
  sqlite3_blob **ppBlob
 
128
);
 
129
</pre></blockquote><p>
 
130
This interfaces opens a <a href="../c3ref/blob.html">handle</a> to the BLOB located
 
131
in row iRow, column zColumn, table zTable in database zDb;
 
132
in other words, the same BLOB that would be selected by:</p>
 
133
 
 
134
<p><pre>
 
135
SELECT zColumn FROM zDb.zTable WHERE <a href="../lang_createtable.html#rowid">rowid</a> = iRow;
 
136
</pre></p>
 
137
 
 
138
<p>If the flags parameter is non-zero, then the BLOB is opened for read
 
139
and write access. If it is zero, the BLOB is opened for read access.
 
140
It is not possible to open a column that is part of an index or primary
 
141
key for writing. If <a href="../foreignkeys.html">foreign key constraints</a> are enabled, it is
 
142
not possible to open a column that is part of a <a href="../foreignkeys.html#parentchild">child key</a> for writing.</p>
 
143
 
 
144
<p>Note that the database name is not the filename that contains
 
145
the database but rather the symbolic name of the database that
 
146
appears after the AS keyword when the database is connected using <a href="../lang_attach.html">ATTACH</a>.
 
147
For the main database file, the database name is "main".
 
148
For TEMP tables, the database name is "temp".</p>
 
149
 
 
150
<p>On success, <a href="../c3ref/c_abort.html">SQLITE_OK</a> is returned and the new <a href="../c3ref/blob.html">BLOB handle</a> is written
 
151
to *ppBlob. Otherwise an <a href="../c3ref/c_abort.html">error code</a> is returned and *ppBlob is set
 
152
to be a null pointer.
 
153
This function sets the <a href="../c3ref/sqlite3.html">database connection</a> error code and message
 
154
accessible via <a href="../c3ref/errcode.html">sqlite3_errcode()</a> and <a href="../c3ref/errcode.html">sqlite3_errmsg()</a> and related
 
155
functions. Note that the *ppBlob variable is always initialized in a
 
156
way that makes it safe to invoke <a href="../c3ref/blob_close.html">sqlite3_blob_close()</a> on *ppBlob
 
157
regardless of the success or failure of this routine.</p>
 
158
 
 
159
<p>If the row that a BLOB handle points to is modified by an
 
160
<a href="../lang_update.html">UPDATE</a>, <a href="../lang_delete.html">DELETE</a>, or by <a href="../lang_conflict.html">ON CONFLICT</a> side-effects
 
161
then the BLOB handle is marked as "expired".
 
162
This is true if any column of the row is changed, even a column
 
163
other than the one the BLOB handle is open on.
 
164
Calls to <a href="../c3ref/blob_read.html">sqlite3_blob_read()</a> and <a href="../c3ref/blob_write.html">sqlite3_blob_write()</a> for
 
165
an expired BLOB handle fail with a return code of <a href="../c3ref/c_abort.html">SQLITE_ABORT</a>.
 
166
Changes written into a BLOB prior to the BLOB expiring are not
 
167
rolled back by the expiration of the BLOB.  Such changes will eventually
 
168
commit if the transaction continues to completion.</p>
 
169
 
 
170
<p>Use the <a href="../c3ref/blob_bytes.html">sqlite3_blob_bytes()</a> interface to determine the size of
 
171
the opened blob.  The size of a blob may not be changed by this
 
172
interface.  Use the <a href="../lang_update.html">UPDATE</a> SQL command to change the size of a
 
173
blob.</p>
 
174
 
 
175
<p>The <a href="../c3ref/bind_blob.html">sqlite3_bind_zeroblob()</a> and <a href="../c3ref/result_blob.html">sqlite3_result_zeroblob()</a> interfaces
 
176
and the built-in <a href="../lang_corefunc.html#zeroblob">zeroblob</a> SQL function can be used, if desired,
 
177
to create an empty, zero-filled blob in which to read or write using
 
178
this interface.</p>
 
179
 
 
180
<p>To avoid a resource leak, every open <a href="../c3ref/blob.html">BLOB handle</a> should eventually
 
181
be released by a call to <a href="../c3ref/blob_close.html">sqlite3_blob_close()</a>.
 
182
</p><p>See also lists of
 
183
  <a href="objlist.html">Objects</a>,
 
184
  <a href="constlist.html">Constants</a>, and
 
185
  <a href="funclist.html">Functions</a>.</p>