251 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html><head>
 | 
						|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | 
						|
<link href="../sqlite.css" rel="stylesheet">
 | 
						|
<title>Binding Values To Prepared Statements</title>
 | 
						|
<!-- path=../ -->
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div class=nosearch>
 | 
						|
<a href="../index.html">
 | 
						|
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite" border="0">
 | 
						|
</a>
 | 
						|
<div><!-- IE hack to prevent disappearing logo --></div>
 | 
						|
<div class="tagline desktoponly">
 | 
						|
Small. Fast. Reliable.<br>Choose any three.
 | 
						|
</div>
 | 
						|
<div class="menu mainmenu">
 | 
						|
<ul>
 | 
						|
<li><a href="../index.html">Home</a>
 | 
						|
<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
 | 
						|
<li class='wideonly'><a href='../about.html'>About</a>
 | 
						|
<li class='desktoponly'><a href="../docs.html">Documentation</a>
 | 
						|
<li class='desktoponly'><a href="../download.html">Download</a>
 | 
						|
<li class='wideonly'><a href='../copyright.html'>License</a>
 | 
						|
<li class='desktoponly'><a href="../support.html">Support</a>
 | 
						|
<li class='desktoponly'><a href="../prosupport.html">Purchase</a>
 | 
						|
<li class='search' id='search_menubutton'>
 | 
						|
<a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
<div class="menu submenu" id="submenu">
 | 
						|
<ul>
 | 
						|
<li><a href='../about.html'>About</a>
 | 
						|
<li><a href='../docs.html'>Documentation</a>
 | 
						|
<li><a href='../download.html'>Download</a>
 | 
						|
<li><a href='../support.html'>Support</a>
 | 
						|
<li><a href='../prosupport.html'>Purchase</a>
 | 
						|
</ul>
 | 
						|
</div>
 | 
						|
<div class="searchmenu" id="searchmenu">
 | 
						|
<form method="GET" action="../search">
 | 
						|
<select name="s" id="searchtype">
 | 
						|
<option value="d">Search Documentation</option>
 | 
						|
<option value="c">Search Changelog</option>
 | 
						|
</select>
 | 
						|
<input type="text" name="q" id="searchbox" value="">
 | 
						|
<input type="submit" value="Go">
 | 
						|
</form>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
<script>
 | 
						|
function toggle_div(nm) {
 | 
						|
var w = document.getElementById(nm);
 | 
						|
if( w.style.display=="block" ){
 | 
						|
w.style.display = "none";
 | 
						|
}else{
 | 
						|
w.style.display = "block";
 | 
						|
}
 | 
						|
}
 | 
						|
function toggle_search() {
 | 
						|
var w = document.getElementById("searchmenu");
 | 
						|
if( w.style.display=="block" ){
 | 
						|
w.style.display = "none";
 | 
						|
} else {
 | 
						|
w.style.display = "block";
 | 
						|
setTimeout(function(){
 | 
						|
document.getElementById("searchbox").focus()
 | 
						|
}, 30);
 | 
						|
}
 | 
						|
}
 | 
						|
function div_off(nm){document.getElementById(nm).style.display="none";}
 | 
						|
window.onbeforeunload = function(e){div_off("submenu");}
 | 
						|
/* Disable the Search feature if we are not operating from CGI, since */
 | 
						|
/* Search is accomplished using CGI and will not work without it. */
 | 
						|
if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
 | 
						|
document.getElementById("search_menubutton").style.display = "none";
 | 
						|
}
 | 
						|
/* Used by the Hide/Show button beside syntax diagrams, to toggle the */
 | 
						|
function hideorshow(btn,obj){
 | 
						|
var x = document.getElementById(obj);
 | 
						|
var b = document.getElementById(btn);
 | 
						|
if( x.style.display!='none' ){
 | 
						|
x.style.display = 'none';
 | 
						|
b.innerHTML='show';
 | 
						|
}else{
 | 
						|
x.style.display = '';
 | 
						|
b.innerHTML='hide';
 | 
						|
}
 | 
						|
return false;
 | 
						|
}
 | 
						|
</script>
 | 
						|
</div>
 | 
						|
<!-- keywords: {SQL parameter} {SQL parameters} {host parameter} {host parameter name} {host parameters} {parameter binding} sqlite3_bind_blob sqlite3_bind_blob64 sqlite3_bind_double sqlite3_bind_int sqlite3_bind_int64 sqlite3_bind_null sqlite3_bind_pointer sqlite3_bind_text sqlite3_bind_text16 sqlite3_bind_text64 sqlite3_bind_value sqlite3_bind_zeroblob sqlite3_bind_zeroblob64 -->
 | 
						|
<div class=nosearch>
 | 
						|
<a href="intro.html"><h2>SQLite C Interface</h2></a>
 | 
						|
<h2>Binding Values To Prepared Statements</h2>
 | 
						|
</div>
 | 
						|
<blockquote><pre>
 | 
						|
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
 | 
						|
int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
 | 
						|
                        void(*)(void*));
 | 
						|
int sqlite3_bind_double(sqlite3_stmt*, int, double);
 | 
						|
int sqlite3_bind_int(sqlite3_stmt*, int, int);
 | 
						|
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
 | 
						|
int sqlite3_bind_null(sqlite3_stmt*, int);
 | 
						|
int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
 | 
						|
int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
 | 
						|
int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
 | 
						|
                         void(*)(void*), unsigned char encoding);
 | 
						|
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
 | 
						|
int sqlite3_bind_pointer(sqlite3_stmt*, int, void*, const char*,void(*)(void*));
 | 
						|
int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
 | 
						|
int sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
 | 
						|
</pre></blockquote>
 | 
						|
<p>
 | 
						|
In the SQL statement text input to <a href="../c3ref/prepare.html">sqlite3_prepare_v2()</a> and its variants,
 | 
						|
literals may be replaced by a <a href="../lang_expr.html#varparam">parameter</a> that matches one of following
 | 
						|
templates:</p>
 | 
						|
 | 
						|
<p><ul>
 | 
						|
<li>  ?
 | 
						|
<li>  ?NNN
 | 
						|
<li>  :VVV
 | 
						|
<li>  @VVV
 | 
						|
<li>  $VVV
 | 
						|
</ul></p>
 | 
						|
 | 
						|
<p>In the templates above, NNN represents an integer literal,
 | 
						|
and VVV represents an alphanumeric identifier.  The values of these
 | 
						|
parameters (also called "host parameter names" or "SQL parameters")
 | 
						|
can be set using the sqlite3_bind_*() routines defined here.</p>
 | 
						|
 | 
						|
<p>The first argument to the sqlite3_bind_*() routines is always
 | 
						|
a pointer to the <a href="../c3ref/stmt.html">sqlite3_stmt</a> object returned from
 | 
						|
<a href="../c3ref/prepare.html">sqlite3_prepare_v2()</a> or its variants.</p>
 | 
						|
 | 
						|
<p>The second argument is the index of the SQL parameter to be set.
 | 
						|
The leftmost SQL parameter has an index of 1.  When the same named
 | 
						|
SQL parameter is used more than once, second and subsequent
 | 
						|
occurrences have the same index as the first occurrence.
 | 
						|
The index for named parameters can be looked up using the
 | 
						|
<a href="../c3ref/bind_parameter_index.html">sqlite3_bind_parameter_index()</a> API if desired.  The index
 | 
						|
for "?NNN" parameters is the value of NNN.
 | 
						|
The NNN value must be between 1 and the <a href="../c3ref/limit.html">sqlite3_limit()</a>
 | 
						|
parameter <a href="../c3ref/c_limit_attached.html#sqlitelimitvariablenumber">SQLITE_LIMIT_VARIABLE_NUMBER</a> (default value: 32766).</p>
 | 
						|
 | 
						|
<p>The third argument is the value to bind to the parameter.
 | 
						|
If the third parameter to sqlite3_bind_text() or sqlite3_bind_text16()
 | 
						|
or sqlite3_bind_blob() is a NULL pointer then the fourth parameter
 | 
						|
is ignored and the end result is the same as sqlite3_bind_null().
 | 
						|
If the third parameter to sqlite3_bind_text() is not NULL, then
 | 
						|
it should be a pointer to well-formed UTF8 text.
 | 
						|
If the third parameter to sqlite3_bind_text16() is not NULL, then
 | 
						|
it should be a pointer to well-formed UTF16 text.
 | 
						|
If the third parameter to sqlite3_bind_text64() is not NULL, then
 | 
						|
it should be a pointer to a well-formed unicode string that is
 | 
						|
either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16
 | 
						|
otherwise.</p>
 | 
						|
 | 
						|
<p><a name="byteorderdeterminationrules"></a>
 | 
						|
 The byte-order of
 | 
						|
UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
 | 
						|
found in first character, which is removed, or in the absence of a BOM
 | 
						|
the byte order is the native byte order of the host
 | 
						|
machine for sqlite3_bind_text16() or the byte order specified in
 | 
						|
the 6th parameter for sqlite3_bind_text64().
 | 
						|
If UTF16 input text contains invalid unicode
 | 
						|
characters, then SQLite might change those invalid characters
 | 
						|
into the unicode replacement character: U+FFFD.</p>
 | 
						|
 | 
						|
<p>In those routines that have a fourth argument, its value is the
 | 
						|
number of bytes in the parameter.  To be clear: the value is the
 | 
						|
number of <u>bytes</u> in the value, not the number of characters.
 | 
						|
If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16()
 | 
						|
is negative, then the length of the string is
 | 
						|
the number of bytes up to the first zero terminator.
 | 
						|
If the fourth parameter to sqlite3_bind_blob() is negative, then
 | 
						|
the behavior is undefined.
 | 
						|
If a non-negative fourth parameter is provided to sqlite3_bind_text()
 | 
						|
or sqlite3_bind_text16() or sqlite3_bind_text64() then
 | 
						|
that parameter must be the byte offset
 | 
						|
where the NUL terminator would occur assuming the string were NUL
 | 
						|
terminated.  If any NUL characters occurs at byte offsets less than
 | 
						|
the value of the fourth parameter then the resulting string value will
 | 
						|
contain embedded NULs.  The result of expressions involving strings
 | 
						|
with embedded NULs is undefined.</p>
 | 
						|
 | 
						|
<p>The fifth argument to the BLOB and string binding interfaces
 | 
						|
is a destructor used to dispose of the BLOB or
 | 
						|
string after SQLite has finished with it.  The destructor is called
 | 
						|
to dispose of the BLOB or string even if the call to the bind API fails,
 | 
						|
except the destructor is not called if the third parameter is a NULL
 | 
						|
pointer or the fourth parameter is negative.
 | 
						|
If the fifth argument is
 | 
						|
the special value <a href="../c3ref/c_static.html">SQLITE_STATIC</a>, then SQLite assumes that the
 | 
						|
information is in static, unmanaged space and does not need to be freed.
 | 
						|
If the fifth argument has the value <a href="../c3ref/c_static.html">SQLITE_TRANSIENT</a>, then
 | 
						|
SQLite makes its own private copy of the data immediately, before
 | 
						|
the sqlite3_bind_*() routine returns.</p>
 | 
						|
 | 
						|
<p>The sixth argument to sqlite3_bind_text64() must be one of
 | 
						|
<a href="../c3ref/c_any.html">SQLITE_UTF8</a>, <a href="../c3ref/c_any.html">SQLITE_UTF16</a>, <a href="../c3ref/c_any.html">SQLITE_UTF16BE</a>, or <a href="../c3ref/c_any.html">SQLITE_UTF16LE</a>
 | 
						|
to specify the encoding of the text in the third parameter.  If
 | 
						|
the sixth argument to sqlite3_bind_text64() is not one of the
 | 
						|
allowed values shown above, or if the text encoding is different
 | 
						|
from the encoding specified by the sixth parameter, then the behavior
 | 
						|
is undefined.</p>
 | 
						|
 | 
						|
<p>The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
 | 
						|
is filled with zeroes.  A zeroblob uses a fixed amount of memory
 | 
						|
(just an integer to hold its size) while it is being processed.
 | 
						|
Zeroblobs are intended to serve as placeholders for BLOBs whose
 | 
						|
content is later written using
 | 
						|
<a href="../c3ref/blob_open.html">incremental BLOB I/O</a> routines.
 | 
						|
A negative value for the zeroblob results in a zero-length BLOB.</p>
 | 
						|
 | 
						|
<p>The sqlite3_bind_pointer(S,I,P,T,D) routine causes the I-th parameter in
 | 
						|
<a href="../c3ref/stmt.html">prepared statement</a> S to have an SQL value of NULL, but to also be
 | 
						|
associated with the pointer P of type T.  D is either a NULL pointer or
 | 
						|
a pointer to a destructor function for P. SQLite will invoke the
 | 
						|
destructor D with a single argument of P when it is finished using
 | 
						|
P.  The T parameter should be a static string, preferably a string
 | 
						|
literal. The sqlite3_bind_pointer() routine is part of the
 | 
						|
<a href="../bindptr.html">pointer passing interface</a> added for SQLite 3.20.0.</p>
 | 
						|
 | 
						|
<p>If any of the sqlite3_bind_*() routines are called with a NULL pointer
 | 
						|
for the <a href="../c3ref/stmt.html">prepared statement</a> or with a prepared statement for which
 | 
						|
<a href="../c3ref/step.html">sqlite3_step()</a> has been called more recently than <a href="../c3ref/reset.html">sqlite3_reset()</a>,
 | 
						|
then the call will return <a href="../rescode.html#misuse">SQLITE_MISUSE</a>.  If any sqlite3_bind_()
 | 
						|
routine is passed a <a href="../c3ref/stmt.html">prepared statement</a> that has been finalized, the
 | 
						|
result is undefined and probably harmful.</p>
 | 
						|
 | 
						|
<p>Bindings are not cleared by the <a href="../c3ref/reset.html">sqlite3_reset()</a> routine.
 | 
						|
Unbound parameters are interpreted as NULL.</p>
 | 
						|
 | 
						|
<p>The sqlite3_bind_* routines return <a href="../rescode.html#ok">SQLITE_OK</a> on success or an
 | 
						|
<a href="../rescode.html">error code</a> if anything goes wrong.
 | 
						|
<a href="../rescode.html#toobig">SQLITE_TOOBIG</a> might be returned if the size of a string or BLOB
 | 
						|
exceeds limits imposed by <a href="../c3ref/limit.html">sqlite3_limit</a>(<a href="../c3ref/c_limit_attached.html#sqlitelimitlength">SQLITE_LIMIT_LENGTH</a>) or
 | 
						|
<a href="../limits.html#max_length">SQLITE_MAX_LENGTH</a>.
 | 
						|
<a href="../rescode.html#range">SQLITE_RANGE</a> is returned if the parameter
 | 
						|
index is out of range.  <a href="../rescode.html#nomem">SQLITE_NOMEM</a> is returned if malloc() fails.</p>
 | 
						|
 | 
						|
<p>See also: <a href="../c3ref/bind_parameter_count.html">sqlite3_bind_parameter_count()</a>,
 | 
						|
<a href="../c3ref/bind_parameter_name.html">sqlite3_bind_parameter_name()</a>, and <a href="../c3ref/bind_parameter_index.html">sqlite3_bind_parameter_index()</a>.
 | 
						|
</p><p>See also lists of
 | 
						|
  <a href="objlist.html">Objects</a>,
 | 
						|
  <a href="constlist.html">Constants</a>, and
 | 
						|
  <a href="funclist.html">Functions</a>.</p>
 |