1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
4
<title>Extract Metadata About A Column Of A Table</title>
5
<style type="text/css">
8
font-family: Verdana, sans-serif;
13
a:visited { color: #734559 }
15
.logo { position:absolute; margin:3px; }
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; }
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; }
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 }
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. */
69
<div><!-- container div to satisfy validator -->
71
<a href="../index.html">
72
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite Logo"
74
<div><!-- IE hack to prevent disappearing logo--></div>
75
<div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div>
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>
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>
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"
98
function leavesearch() {
99
var q = document.getElementById("q");
100
if( q.value == "" ) {
102
q.style.color = "#044a64"
103
q.style.fontStyle = "italic"
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">
116
</div></div></div></div>
118
<div class=startsearch></div>
120
<a href="intro.html"><h2>SQLite C Interface</h2></a><h2>Extract Metadata About A Column Of A Table</h2><blockquote><pre>int sqlite3_table_column_metadata(
121
sqlite3 *db, /* Connection handle */
122
const char *zDbName, /* Database name or NULL */
123
const char *zTableName, /* Table name */
124
const char *zColumnName, /* Column name */
125
char const **pzDataType, /* OUTPUT: Declared data type */
126
char const **pzCollSeq, /* OUTPUT: Collation sequence name */
127
int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
128
int *pPrimaryKey, /* OUTPUT: True if column part of PK */
129
int *pAutoinc /* OUTPUT: True if column is auto-increment */
131
</pre></blockquote><p>
132
This routine returns metadata about a specific column of a specific
133
database table accessible using the <a href="../c3ref/sqlite3.html">database connection</a> handle
134
passed as the first function argument.</p>
136
<p>The column is identified by the second, third and fourth parameters to
137
this function. The second parameter is either the name of the database
138
(i.e. "main", "temp", or an attached database) containing the specified
139
table or NULL. If it is NULL, then all attached databases are searched
140
for the table using the same algorithm used by the database engine to
141
resolve unqualified table references.</p>
143
<p>The third and fourth parameters to this function are the table and column
144
name of the desired column, respectively. Neither of these parameters
147
<p>Metadata is returned by writing to the memory locations passed as the 5th
148
and subsequent parameters to this function. Any of these arguments may be
149
NULL, in which case the corresponding element of metadata is omitted.</p>
153
<tr><th> Parameter <th> Output<br>Type <th> Description</p>
155
<p><tr><td> 5th <td> const char* <td> Data type
156
<tr><td> 6th <td> const char* <td> Name of default collation sequence
157
<tr><td> 7th <td> int <td> True if column has a NOT NULL constraint
158
<tr><td> 8th <td> int <td> True if column is part of the PRIMARY KEY
159
<tr><td> 9th <td> int <td> True if column is <a href="../autoinc.html">AUTOINCREMENT</a>
163
<p>The memory pointed to by the character pointers returned for the
164
declaration type and collation sequence is valid only until the next
165
call to any SQLite API function.</p>
167
<p>If the specified table is actually a view, an <a href="../c3ref/c_abort.html">error code</a> is returned.</p>
169
<p>If the specified column is "rowid", "oid" or "_rowid_" and an
170
<a href="../lang_createtable.html#rowid">INTEGER PRIMARY KEY</a> column has been explicitly declared, then the output
171
parameters are set for the explicitly declared column. If there is no
172
explicitly declared <a href="../lang_createtable.html#rowid">INTEGER PRIMARY KEY</a> column, then the output
173
parameters are set as follows:</p>
177
collation sequence: "BINARY"
183
<p>This function may load one or more schemas from database files. If an
184
error occurs during this process, or if the requested table or column
185
cannot be found, an <a href="../c3ref/c_abort.html">error code</a> is returned and an error message left
186
in the <a href="../c3ref/sqlite3.html">database connection</a> (to be retrieved using sqlite3_errmsg()).</p>
188
<p>This API is only available if the library was compiled with the
189
<a href="../compile.html#enable_column_metadata">SQLITE_ENABLE_COLUMN_METADATA</a> C-preprocessor symbol defined.
190
</p><p>See also lists of
191
<a href="objlist.html">Objects</a>,
192
<a href="constlist.html">Constants</a>, and
193
<a href="funclist.html">Functions</a>.</p>