/ Hex Artifact Content
Login

Artifact d446234c1d3ed747fcefd30e972a19f2b2fc0e05:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 73 71 6c 69 74 65 2e 68  ate the sqlite.h
0030: 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a 73 65 74 20  tml file..#.set 
0040: 72 63 73 69 64 20 7b 24 49 64 3a 20 63 5f 69 6e  rcsid {$Id: c_in
0050: 74 65 72 66 61 63 65 2e 74 63 6c 2c 76 20 31 2e  terface.tcl,v 1.
0060: 31 39 20 32 30 30 31 2f 31 30 2f 33 31 20 31 35  19 2001/10/31 15
0070: 3a 34 34 3a 34 37 20 64 72 68 20 45 78 70 20 24  :44:47 drh Exp $
0080: 7d 0a 0a 70 75 74 73 20 7b 3c 68 74 6d 6c 3e 0a  }..puts {<html>.
0090: 3c 68 65 61 64 3e 0a 20 20 3c 74 69 74 6c 65 3e  <head>.  <title>
00a0: 54 68 65 20 43 20 6c 61 6e 67 75 61 67 65 20 69  The C language i
00b0: 6e 74 65 72 66 61 63 65 20 74 6f 20 74 68 65 20  nterface to the 
00c0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 3c 2f  SQLite library</
00d0: 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a 3c  title>.</head>.<
00e0: 62 6f 64 79 20 62 67 63 6f 6c 6f 72 3d 77 68 69  body bgcolor=whi
00f0: 74 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65  te>.<h1 align=ce
0100: 6e 74 65 72 3e 0a 54 68 65 20 43 20 6c 61 6e 67  nter>.The C lang
0110: 75 61 67 65 20 69 6e 74 65 72 66 61 63 65 20 74  uage interface t
0120: 6f 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  o the SQLite lib
0130: 72 61 72 79 0a 3c 2f 68 31 3e 7d 0a 70 75 74 73  rary.</h1>}.puts
0140: 20 22 3c 70 20 61 6c 69 67 6e 3d 63 65 6e 74 65   "<p align=cente
0150: 72 3e 0a 28 54 68 69 73 20 70 61 67 65 20 77 61  r>.(This page wa
0160: 73 20 6c 61 73 74 20 6d 6f 64 69 66 69 65 64 20  s last modified 
0170: 6f 6e 20 5b 6c 72 61 6e 67 65 20 24 72 63 73 69  on [lrange $rcsi
0180: 64 20 33 20 34 5d 20 47 4d 54 29 0a 3c 2f 70 3e  d 3 4] GMT).</p>
0190: 22 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  "..puts {.<p>The
01a0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
01b0: 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 62  is designed to b
01c0: 65 20 76 65 72 79 20 65 61 73 79 20 74 6f 20 75  e very easy to u
01d0: 73 65 20 66 72 6f 6d 0a 61 20 43 20 6f 72 20 43  se from.a C or C
01e0: 2b 2b 20 70 72 6f 67 72 61 6d 2e 20 20 54 68 69  ++ program.  Thi
01f0: 73 20 64 6f 63 75 6d 65 6e 74 20 67 69 76 65 73  s document gives
0200: 20 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20   an overview of 
0210: 74 68 65 20 43 2f 43 2b 2b 0a 70 72 6f 67 72 61  the C/C++.progra
0220: 6d 6d 69 6e 67 20 69 6e 74 65 72 66 61 63 65 2e  mming interface.
0230: 3c 2f 70 3e 0a 0a 3c 68 32 3e 54 68 65 20 43 6f  </p>..<h2>The Co
0240: 72 65 20 41 50 49 3c 2f 68 32 3e 0a 0a 3c 70 3e  re API</h2>..<p>
0250: 54 68 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f  The interface to
0260: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
0270: 61 72 79 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  ary consists of 
0280: 74 68 72 65 65 20 63 6f 72 65 20 66 75 6e 63 74  three core funct
0290: 69 6f 6e 73 2c 0a 6f 6e 65 20 6f 70 61 71 75 65  ions,.one opaque
02a0: 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 2c   data structure,
02b0: 20 61 6e 64 20 73 6f 6d 65 20 63 6f 6e 73 74 61   and some consta
02c0: 6e 74 73 20 75 73 65 64 20 61 73 20 72 65 74 75  nts used as retu
02d0: 72 6e 20 76 61 6c 75 65 73 2e 0a 54 68 65 20 63  rn values..The c
02e0: 6f 72 65 20 69 6e 74 65 72 66 61 63 65 20 69 73  ore interface is
02f0: 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e   as follows:</p>
0300: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  ..<blockquote><p
0310: 72 65 3e 0a 74 79 70 65 64 65 66 20 73 74 72 75  re>.typedef stru
0320: 63 74 20 73 71 6c 69 74 65 20 73 71 6c 69 74 65  ct sqlite sqlite
0330: 3b 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ;.#define SQLITE
0340: 5f 4f 4b 20 20 20 20 20 20 20 20 20 20 20 30 20  _OK           0 
0350: 20 20 2f 2a 20 53 75 63 63 65 73 73 66 75 6c 20    /* Successful 
0360: 72 65 73 75 6c 74 20 2a 2f 0a 0a 73 71 6c 69 74  result */..sqlit
0370: 65 20 2a 73 71 6c 69 74 65 5f 6f 70 65 6e 28 63  e *sqlite_open(c
0380: 6f 6e 73 74 20 63 68 61 72 20 2a 64 62 6e 61 6d  onst char *dbnam
0390: 65 2c 20 69 6e 74 20 6d 6f 64 65 2c 20 63 68 61  e, int mode, cha
03a0: 72 20 2a 2a 65 72 72 6d 73 67 29 3b 0a 0a 76 6f  r **errmsg);..vo
03b0: 69 64 20 73 71 6c 69 74 65 5f 63 6c 6f 73 65 28  id sqlite_close(
03c0: 73 71 6c 69 74 65 2a 29 3b 0a 0a 69 6e 74 20 73  sqlite*);..int s
03d0: 71 6c 69 74 65 5f 65 78 65 63 28 0a 20 20 73 71  qlite_exec(.  sq
03e0: 6c 69 74 65 2a 2c 0a 20 20 63 68 61 72 20 2a 73  lite*,.  char *s
03f0: 71 6c 2c 0a 20 20 69 6e 74 20 28 2a 29 28 76 6f  ql,.  int (*)(vo
0400: 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a 2c 63  id*,int,char**,c
0410: 68 61 72 2a 2a 29 2c 0a 20 20 76 6f 69 64 2a 2c  har**),.  void*,
0420: 0a 20 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67  .  char **errmsg
0430: 0a 29 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  .);.</pre></bloc
0440: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65  kquote>..<p>.The
0450: 20 61 62 6f 76 65 20 69 73 20 61 6c 6c 20 79 6f   above is all yo
0460: 75 20 72 65 61 6c 6c 79 20 6e 65 65 64 20 74 6f  u really need to
0470: 20 6b 6e 6f 77 20 69 6e 20 6f 72 64 65 72 20 74   know in order t
0480: 6f 20 75 73 65 20 53 51 4c 69 74 65 0a 69 6e 20  o use SQLite.in 
0490: 79 6f 75 72 20 43 20 6f 72 20 43 2b 2b 20 70 72  your C or C++ pr
04a0: 6f 67 72 61 6d 73 2e 20 20 54 68 65 72 65 20 61  ograms.  There a
04b0: 72 65 20 6f 74 68 65 72 20 63 6f 6e 76 65 6e 69  re other conveni
04c0: 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 73 0a 61  ence functions.a
04d0: 76 61 69 6c 61 62 6c 65 20 28 61 6e 64 20 64 65  vailable (and de
04e0: 73 63 72 69 62 65 64 20 62 65 6c 6f 77 29 20 62  scribed below) b
04f0: 75 74 20 77 65 20 77 69 6c 6c 20 62 65 67 69 6e  ut we will begin
0500: 20 62 79 20 64 65 73 63 72 69 62 69 6e 67 0a 74   by describing.t
0510: 68 65 20 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e  he core function
0520: 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 2e 0a 3c  s shown above..<
0530: 2f 70 3e 0a 3c 68 32 3e 4f 70 65 6e 69 6e 67 20  /p>.<h2>Opening 
0540: 61 20 64 61 74 61 62 61 73 65 3c 2f 68 32 3e 0a  a database</h2>.
0550: 0a 3c 70 3e 55 73 65 20 74 68 65 20 3c 62 3e 73  .<p>Use the <b>s
0560: 71 6c 69 74 65 5f 6f 70 65 6e 28 29 3c 2f 62 3e  qlite_open()</b>
0570: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6f 70 65   function to ope
0580: 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20 53 51  n an existing SQ
0590: 4c 69 74 65 0a 64 61 74 61 62 61 73 65 20 6f 72  Lite.database or
05a0: 20 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77   to create a new
05b0: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
05c0: 2e 20 20 54 68 65 20 66 69 72 73 74 20 61 72 67  .  The first arg
05d0: 75 6d 65 6e 74 0a 69 73 20 74 68 65 20 64 61 74  ument.is the dat
05e0: 61 62 61 73 65 20 6e 61 6d 65 2e 20 20 54 68 65  abase name.  The
05f0: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
0600: 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20   is intended to 
0610: 73 69 67 6e 61 6c 0a 77 68 65 74 68 65 72 20 74  signal.whether t
0620: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 67  he database is g
0630: 6f 69 6e 67 20 74 6f 20 62 65 20 75 73 65 64 20  oing to be used 
0640: 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20  for reading and 
0650: 77 72 69 74 69 6e 67 0a 6f 72 20 6a 75 73 74 20  writing.or just 
0660: 66 6f 72 20 72 65 61 64 69 6e 67 2e 20 20 42 75  for reading.  Bu
0670: 74 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  t in the current
0680: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c   implementation,
0690: 20 74 68 65 0a 73 65 63 6f 6e 64 20 61 72 67 75   the.second argu
06a0: 6d 65 6e 74 20 74 6f 20 3c 62 3e 73 71 6c 69 74  ment to <b>sqlit
06b0: 65 5f 6f 70 65 6e 3c 2f 62 3e 20 69 73 20 69 67  e_open</b> is ig
06c0: 6e 6f 72 65 64 2e 0a 54 68 65 20 74 68 69 72 64  nored..The third
06d0: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70   argument is a p
06e0: 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69  ointer to a stri
06f0: 6e 67 20 70 6f 69 6e 74 65 72 2e 0a 49 66 20 74  ng pointer..If t
0700: 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
0710: 74 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 61 6e  t is not NULL an
0720: 64 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72  d an error occur
0730: 73 0a 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74  s.while trying t
0740: 6f 20 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62  o open the datab
0750: 61 73 65 2c 20 74 68 65 6e 20 61 6e 20 65 72 72  ase, then an err
0760: 6f 72 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20  or message will 
0770: 62 65 0a 77 72 69 74 74 65 6e 20 74 6f 20 6d 65  be.written to me
0780: 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
0790: 6f 6d 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20  om malloc() and 
07a0: 2a 65 72 72 6d 73 67 20 77 69 6c 6c 20 62 65 20  *errmsg will be 
07b0: 6d 61 64 65 0a 74 6f 20 70 6f 69 6e 74 20 74 6f  made.to point to
07c0: 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73   this error mess
07d0: 61 67 65 2e 20 20 54 68 65 20 63 61 6c 6c 69 6e  age.  The callin
07e0: 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 65  g function is re
07f0: 73 70 6f 6e 73 69 62 6c 65 0a 66 6f 72 20 66 72  sponsible.for fr
0800: 65 65 69 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79  eeing the memory
0810: 20 77 68 65 6e 20 69 74 20 68 61 73 20 66 69 6e   when it has fin
0820: 69 73 68 65 64 20 77 69 74 68 20 69 74 2e 3c 2f  ished with it.</
0830: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6e 61 6d 65 20  p>..<p>The name 
0840: 6f 66 20 61 6e 20 53 51 4c 69 74 65 20 64 61 74  of an SQLite dat
0850: 61 62 61 73 65 20 69 73 20 74 68 65 20 6e 61 6d  abase is the nam
0860: 65 20 6f 66 20 61 20 66 69 6c 65 20 74 68 61 74  e of a file that
0870: 20 77 69 6c 6c 0a 63 6f 6e 74 61 69 6e 20 74 68   will.contain th
0880: 65 20 64 61 74 61 62 61 73 65 2e 20 20 49 66 20  e database.  If 
0890: 74 68 65 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f  the file does no
08a0: 74 20 65 78 69 73 74 2c 20 53 51 4c 69 74 65 20  t exist, SQLite 
08b0: 61 74 74 65 6d 70 74 73 0a 74 6f 20 63 72 65 61  attempts.to crea
08c0: 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a  te and initializ
08d0: 65 20 69 74 2e 20 20 49 66 20 74 68 65 20 66 69  e it.  If the fi
08e0: 6c 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 20  le is read-only 
08f0: 28 64 75 65 20 74 6f 0a 70 65 72 6d 69 73 73 69  (due to.permissi
0900: 6f 6e 20 62 69 74 73 20 6f 72 20 62 65 63 61 75  on bits or becau
0910: 73 65 20 69 74 20 69 73 20 6c 6f 63 61 74 65 64  se it is located
0920: 20 6f 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65   on read-only me
0930: 64 69 61 20 6c 69 6b 65 0a 61 20 43 44 2d 52 4f  dia like.a CD-RO
0940: 4d 29 20 74 68 65 6e 20 53 51 4c 69 74 65 20 6f  M) then SQLite o
0950: 70 65 6e 73 20 74 68 65 20 64 61 74 61 62 61 73  pens the databas
0960: 65 20 66 6f 72 20 72 65 61 64 69 6e 67 20 6f 6e  e for reading on
0970: 6c 79 2e 20 20 54 68 65 0a 65 6e 74 69 72 65 20  ly.  The.entire 
0980: 53 51 4c 20 64 61 74 61 62 61 73 65 20 69 73 20  SQL database is 
0990: 73 74 6f 72 65 64 20 69 6e 20 61 20 73 69 6e 67  stored in a sing
09a0: 6c 65 20 66 69 6c 65 20 6f 6e 20 74 68 65 20 64  le file on the d
09b0: 69 73 6b 2e 20 20 42 75 74 0a 61 64 64 69 74 69  isk.  But.additi
09c0: 6f 6e 61 6c 20 74 65 6d 70 6f 72 61 72 79 20 66  onal temporary f
09d0: 69 6c 65 73 20 6d 61 79 20 62 65 20 63 72 65 61  iles may be crea
09e0: 74 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 65  ted during the e
09f0: 78 65 63 75 74 69 6f 6e 20 6f 66 0a 61 6e 20 53  xecution of.an S
0a00: 51 4c 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f 72  QL command in or
0a10: 64 65 72 20 74 6f 20 73 74 6f 72 65 20 74 68 65  der to store the
0a20: 20 64 61 74 61 62 61 73 65 20 72 6f 6c 6c 62 61   database rollba
0a30: 63 6b 20 6a 6f 75 72 6e 61 6c 20 6f 72 0a 74 65  ck journal or.te
0a40: 6d 70 6f 72 61 72 79 20 61 6e 64 20 69 6e 74 65  mporary and inte
0a50: 72 6d 65 64 69 61 74 65 20 72 65 73 75 6c 74 73  rmediate results
0a60: 20 6f 66 20 61 20 71 75 65 72 79 2e 3c 2f 70 3e   of a query.</p>
0a70: 0a 0a 3c 70 3e 54 68 65 20 72 65 74 75 72 6e 20  ..<p>The return 
0a80: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 3c 62 3e  value of the <b>
0a90: 73 71 6c 69 74 65 5f 6f 70 65 6e 28 29 3c 2f 62  sqlite_open()</b
0aa0: 3e 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 0a  > function is a.
0ab0: 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 6f 70  pointer to an op
0ac0: 61 71 75 65 20 3c 62 3e 73 71 6c 69 74 65 3c 2f  aque <b>sqlite</
0ad0: 62 3e 20 73 74 72 75 63 74 75 72 65 2e 20 20 54  b> structure.  T
0ae0: 68 69 73 20 70 6f 69 6e 74 65 72 20 77 69 6c 6c  his pointer will
0af0: 0a 62 65 20 74 68 65 20 66 69 72 73 74 20 61 72  .be the first ar
0b00: 67 75 6d 65 6e 74 20 74 6f 20 61 6c 6c 20 73 75  gument to all su
0b10: 62 73 65 71 75 65 6e 74 20 53 51 4c 69 74 65 20  bsequent SQLite 
0b20: 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 74  function calls t
0b30: 68 61 74 0a 64 65 61 6c 20 77 69 74 68 20 74 68  hat.deal with th
0b40: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e  e same database.
0b50: 20 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e    NULL is return
0b60: 65 64 20 69 66 20 74 68 65 20 6f 70 65 6e 20 66  ed if the open f
0b70: 61 69 6c 73 0a 66 6f 72 20 61 6e 79 20 72 65 61  ails.for any rea
0b80: 73 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68 32 3e 43 6c  son.</p>..<h2>Cl
0b90: 6f 73 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  osing the databa
0ba0: 73 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 6f 20 63  se</h2>..<p>To c
0bb0: 6c 6f 73 65 20 61 6e 20 53 51 4c 69 74 65 20 64  lose an SQLite d
0bc0: 61 74 61 62 61 73 65 2c 20 63 61 6c 6c 20 74 68  atabase, call th
0bd0: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 63 6c 6f 73  e <b>sqlite_clos
0be0: 65 28 29 3c 2f 62 3e 0a 66 75 6e 63 74 69 6f 6e  e()</b>.function
0bf0: 20 70 61 73 73 69 6e 67 20 69 74 20 74 68 65 20   passing it the 
0c00: 73 71 6c 69 74 65 20 73 74 72 75 63 74 75 72 65  sqlite structure
0c10: 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 77 61   pointer that wa
0c20: 73 20 6f 62 74 61 69 6e 65 64 0a 66 72 6f 6d 20  s obtained.from 
0c30: 61 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20  a prior call to 
0c40: 3c 62 3e 73 71 6c 69 74 65 5f 6f 70 65 6e 3c 2f  <b>sqlite_open</
0c50: 62 3e 2e 0a 49 66 20 61 20 74 72 61 6e 73 61 63  b>..If a transac
0c60: 74 69 6f 6e 20 69 73 20 61 63 74 69 76 65 20 77  tion is active w
0c70: 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
0c80: 20 69 73 20 63 6c 6f 73 65 64 2c 20 74 68 65 20   is closed, the 
0c90: 74 72 61 6e 73 61 63 74 69 6f 6e 0a 69 73 20 72  transaction.is r
0ca0: 6f 6c 6c 65 64 20 62 61 63 6b 2e 3c 2f 70 3e 0a  olled back.</p>.
0cb0: 0a 3c 68 32 3e 45 78 65 63 75 74 69 6e 67 20 53  .<h2>Executing S
0cc0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 3c 2f 68  QL statements</h
0cd0: 32 3e 0a 0a 3c 70 3e 54 68 65 20 3c 62 3e 73 71  2>..<p>The <b>sq
0ce0: 6c 69 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e 20  lite_exec()</b> 
0cf0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
0d00: 20 74 6f 20 70 72 6f 63 65 73 73 20 53 51 4c 20   to process SQL 
0d10: 73 74 61 74 65 6d 65 6e 74 73 0a 61 6e 64 20 71  statements.and q
0d20: 75 65 72 69 65 73 2e 20 20 54 68 69 73 20 66 75  ueries.  This fu
0d30: 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65 73 20  nction requires 
0d40: 35 20 70 61 72 61 6d 65 74 65 72 73 20 61 73 20  5 parameters as 
0d50: 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f  follows:</p>..<o
0d60: 6c 3e 0a 3c 6c 69 3e 3c 70 3e 41 20 70 6f 69 6e  l>.<li><p>A poin
0d70: 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
0d80: 65 20 73 74 72 75 63 74 75 72 65 20 6f 62 74 61  e structure obta
0d90: 69 6e 65 64 20 66 72 6f 6d 20 61 20 70 72 69 6f  ined from a prio
0da0: 72 20 63 61 6c 6c 0a 20 20 20 20 20 20 20 74 6f  r call.       to
0db0: 20 3c 62 3e 73 71 6c 69 74 65 5f 6f 70 65 6e 28   <b>sqlite_open(
0dc0: 29 3c 2f 62 3e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  )</b>.</p></li>.
0dd0: 3c 6c 69 3e 3c 70 3e 41 20 6e 75 6c 6c 2d 74 65  <li><p>A null-te
0de0: 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20  rminated string 
0df0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74  containing the t
0e00: 65 78 74 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ext of one or mo
0e10: 72 65 0a 20 20 20 20 20 20 20 53 51 4c 20 73 74  re.       SQL st
0e20: 61 74 65 6d 65 6e 74 73 20 61 6e 64 2f 6f 72 20  atements and/or 
0e30: 71 75 65 72 69 65 73 20 74 6f 20 62 65 20 70 72  queries to be pr
0e40: 6f 63 65 73 73 65 64 2e 3c 2f 70 3e 3c 2f 6c 69  ocessed.</p></li
0e50: 3e 0a 3c 6c 69 3e 3c 70 3e 41 20 70 6f 69 6e 74  >.<li><p>A point
0e60: 65 72 20 74 6f 20 61 20 63 61 6c 6c 62 61 63 6b  er to a callback
0e70: 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20   function which 
0e80: 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20  is invoked once 
0e90: 66 6f 72 20 65 61 63 68 0a 20 20 20 20 20 20 20  for each.       
0ea0: 72 6f 77 20 69 6e 20 74 68 65 20 72 65 73 75 6c  row in the resul
0eb0: 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 54  t of a query.  T
0ec0: 68 69 73 20 61 72 67 75 6d 65 6e 74 20 6d 61 79  his argument may
0ed0: 20 62 65 20 4e 55 4c 4c 2c 20 69 6e 20 77 68 69   be NULL, in whi
0ee0: 63 68 0a 20 20 20 20 20 20 20 63 61 73 65 20 6e  ch.       case n
0ef0: 6f 20 63 61 6c 6c 62 61 63 6b 73 20 77 69 6c 6c  o callbacks will
0f00: 20 65 76 65 72 20 62 65 20 69 6e 76 6f 6b 65 64   ever be invoked
0f10: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c  .</p></li>.<li><
0f20: 70 3e 41 20 70 6f 69 6e 74 65 72 20 74 68 61 74  p>A pointer that
0f30: 20 69 73 20 66 6f 72 77 61 72 64 65 64 20 74 6f   is forwarded to
0f40: 20 62 65 63 6f 6d 65 20 74 68 65 20 66 69 72 73   become the firs
0f50: 74 20 61 72 67 75 6d 65 6e 74 0a 20 20 20 20 20  t argument.     
0f60: 20 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63    to the callbac
0f70: 6b 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 3c  k function.</p><
0f80: 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 41 20 70 6f  /li>.<li><p>A po
0f90: 69 6e 74 65 72 20 74 6f 20 61 6e 20 65 72 72 6f  inter to an erro
0fa0: 72 20 73 74 72 69 6e 67 2e 20 20 45 72 72 6f 72  r string.  Error
0fb0: 20 6d 65 73 73 61 67 65 73 20 61 72 65 20 77 72   messages are wr
0fc0: 69 74 74 65 6e 20 74 6f 20 73 70 61 63 65 0a 20  itten to space. 
0fd0: 20 20 20 20 20 20 6f 62 74 61 69 6e 65 64 20 66        obtained f
0fe0: 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64  rom malloc() and
0ff0: 20 74 68 65 20 65 72 72 6f 72 20 73 74 72 69 6e   the error strin
1000: 67 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69  g is made to poi
1010: 6e 74 20 74 6f 0a 20 20 20 20 20 20 20 74 68 65  nt to.       the
1020: 20 6d 61 6c 6c 6f 63 65 64 20 73 70 61 63 65 2e   malloced space.
1030: 20 20 54 68 65 20 63 61 6c 6c 69 6e 67 20 66 75    The calling fu
1040: 6e 63 74 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e  nction is respon
1050: 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69 6e  sible for freein
1060: 67 0a 20 20 20 20 20 20 20 74 68 69 73 20 73 70  g.       this sp
1070: 61 63 65 20 77 68 65 6e 20 69 74 20 68 61 73 20  ace when it has 
1080: 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74  finished with it
1090: 2e 0a 20 20 20 20 20 20 20 54 68 69 73 20 61 72  ..       This ar
10a0: 67 75 6d 65 6e 74 20 6d 61 79 20 62 65 20 4e 55  gument may be NU
10b0: 4c 4c 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73  LL, in which cas
10c0: 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73  e error messages
10d0: 20 61 72 65 20 6e 6f 74 0a 20 20 20 20 20 20 20   are not.       
10e0: 72 65 70 6f 72 74 65 64 20 62 61 63 6b 20 74 6f  reported back to
10f0: 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e   the calling fun
1100: 63 74 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  ction.</p></li>.
1110: 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63  </ol>..<p>.The c
1120: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
1130: 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 63 65   is used to rece
1140: 69 76 65 20 74 68 65 20 72 65 73 75 6c 74 73 20  ive the results 
1150: 6f 66 20 61 20 71 75 65 72 79 2e 20 20 41 0a 70  of a query.  A.p
1160: 72 6f 74 6f 74 79 70 65 20 66 6f 72 20 74 68 65  rototype for the
1170: 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
1180: 6f 6e 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73  on is as follows
1190: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
11a0: 74 65 3e 3c 70 72 65 3e 0a 69 6e 74 20 43 61 6c  te><pre>.int Cal
11b0: 6c 62 61 63 6b 28 76 6f 69 64 20 2a 70 41 72 67  lback(void *pArg
11c0: 2c 20 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72  , int argc, char
11d0: 20 2a 2a 61 72 67 76 2c 20 63 68 61 72 20 2a 2a   **argv, char **
11e0: 63 6f 6c 75 6d 6e 4e 61 6d 65 73 29 7b 0a 20 20  columnNames){.  
11f0: 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 3c 2f 70 72  return 0;.}.</pr
1200: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
1210: 0a 3c 70 3e 54 68 65 20 66 69 72 73 74 20 61 72  .<p>The first ar
1220: 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 63 61  gument to the ca
1230: 6c 6c 62 61 63 6b 20 69 73 20 6a 75 73 74 20 61  llback is just a
1240: 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 6f 75   copy of the fou
1250: 72 74 68 20 61 72 67 75 6d 65 6e 74 0a 74 6f 20  rth argument.to 
1260: 3c 62 3e 73 71 6c 69 74 65 5f 65 78 65 63 28 29  <b>sqlite_exec()
1270: 3c 2f 62 3e 20 20 54 68 69 73 20 70 61 72 61 6d  </b>  This param
1280: 65 74 65 72 20 63 61 6e 20 62 65 20 75 73 65 64  eter can be used
1290: 20 74 6f 20 70 61 73 73 20 61 72 62 69 74 72 61   to pass arbitra
12a0: 72 79 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74  ry.information t
12b0: 68 72 6f 75 67 68 20 74 6f 20 74 68 65 20 63 61  hrough to the ca
12c0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
12d0: 66 72 6f 6d 20 63 6c 69 65 6e 74 20 63 6f 64 65  from client code
12e0: 2e 0a 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67  ..The second arg
12f0: 75 6d 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d  ument is the num
1300: 62 65 72 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  ber columns in t
1310: 68 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 2e  he query result.
1320: 0a 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d  .The third argum
1330: 65 6e 74 20 69 73 20 61 6e 20 61 72 72 61 79 20  ent is an array 
1340: 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73  of pointers to s
1350: 74 72 69 6e 67 73 20 77 68 65 72 65 20 65 61 63  trings where eac
1360: 68 20 73 74 72 69 6e 67 0a 69 73 20 61 20 73 69  h string.is a si
1370: 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  ngle column of t
1380: 68 65 20 72 65 73 75 6c 74 20 66 6f 72 20 74 68  he result for th
1390: 61 74 20 72 65 63 6f 72 64 2e 20 20 4e 6f 74 65  at record.  Note
13a0: 20 74 68 61 74 20 74 68 65 0a 63 61 6c 6c 62 61   that the.callba
13b0: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 70 6f  ck function repo
13c0: 72 74 73 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65  rts a NULL value
13d0: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
13e0: 20 61 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   as a NULL point
13f0: 65 72 2c 0a 77 68 69 63 68 20 69 73 20 76 65 72  er,.which is ver
1400: 79 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  y different from
1410: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
1420: 2e 20 20 49 66 20 74 68 65 20 69 2d 74 68 20 70  .  If the i-th p
1430: 61 72 61 6d 65 74 65 72 0a 69 73 20 61 6e 20 65  arameter.is an e
1440: 6d 70 74 79 20 73 74 72 69 6e 67 2c 20 77 65 20  mpty string, we 
1450: 77 69 6c 6c 20 67 65 74 3a 3c 2f 70 3e 0a 3c 62  will get:</p>.<b
1460: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
1470: 61 72 67 76 5b 69 5d 5b 30 5d 20 3d 3d 20 30 0a  argv[i][0] == 0.
1480: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
1490: 74 65 3e 0a 3c 70 3e 42 75 74 20 69 66 20 74 68  te>.<p>But if th
14a0: 65 20 69 2d 74 68 20 70 61 72 61 6d 65 74 65 72  e i-th parameter
14b0: 20 69 73 20 4e 55 4c 4c 20 77 65 20 77 69 6c 6c   is NULL we will
14c0: 20 67 65 74 3a 3c 2f 70 3e 0a 3c 62 6c 6f 63 6b   get:</p>.<block
14d0: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 61 72 67 76  quote><pre>.argv
14e0: 5b 69 5d 20 3d 3d 20 30 0a 3c 2f 70 72 65 3e 3c  [i] == 0.</pre><
14f0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 70 3e  /blockquote>.<p>
1500: 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65  The names of the
1510: 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 63 6f 6e   columns are con
1520: 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 66 6f  tained in the fo
1530: 75 72 74 68 20 61 72 67 75 6d 65 6e 74 2e 3c 2f  urth argument.</
1540: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 45 4d  p>..<p>If the EM
1550: 50 54 59 5f 52 45 53 55 4c 54 5f 43 41 4c 4c 42  PTY_RESULT_CALLB
1560: 41 43 4b 53 20 70 72 61 67 6d 61 20 69 73 20 73  ACKS pragma is s
1570: 65 74 20 74 6f 20 4f 4e 20 61 6e 64 20 74 68 65  et to ON and the
1580: 20 72 65 73 75 6c 74 20 6f 66 0a 61 20 71 75 65   result of.a que
1590: 72 79 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73  ry is an empty s
15a0: 65 74 2c 20 74 68 65 6e 20 74 68 65 20 63 61 6c  et, then the cal
15b0: 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
15c0: 20 6f 6e 63 65 20 77 69 74 68 20 74 68 65 0a 74   once with the.t
15d0: 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 28  hird parameter (
15e0: 61 72 67 76 29 20 73 65 74 20 74 6f 20 30 2e 20  argv) set to 0. 
15f0: 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 0a   In other words.
1600: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
1610: 3e 0a 61 72 67 76 20 3d 3d 20 30 0a 3c 2f 70 72  >.argv == 0.</pr
1620: 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
1630: 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
1640: 65 74 65 72 20 28 61 72 67 63 29 0a 61 6e 64 20  eter (argc).and 
1650: 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  the fourth param
1660: 65 74 65 72 20 28 63 6f 6c 75 6d 6e 4e 61 6d 65  eter (columnName
1670: 73 29 20 61 72 65 20 73 74 69 6c 6c 20 76 61 6c  s) are still val
1680: 69 64 0a 61 6e 64 20 63 61 6e 20 62 65 20 75 73  id.and can be us
1690: 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ed to determine 
16a0: 74 68 65 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e  the number and n
16b0: 61 6d 65 73 20 6f 66 20 74 68 65 20 72 65 73 75  ames of the resu
16c0: 6c 74 0a 63 6f 6c 75 6d 6e 73 20 69 66 20 74 68  lt.columns if th
16d0: 65 72 65 20 68 61 64 20 62 65 65 6e 20 61 20 72  ere had been a r
16e0: 65 73 75 6c 74 2e 0a 54 68 65 20 64 65 66 61 75  esult..The defau
16f0: 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 6e  lt behavior is n
1700: 6f 74 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65  ot to invoke the
1710: 20 63 61 6c 6c 62 61 63 6b 20 61 74 20 61 6c 6c   callback at all
1720: 20 69 66 20 74 68 65 0a 72 65 73 75 6c 74 20 73   if the.result s
1730: 65 74 20 69 73 20 65 6d 70 74 79 2e 3c 2f 70 3e  et is empty.</p>
1740: 0a 0a 3c 70 3e 54 68 65 20 63 61 6c 6c 62 61 63  ..<p>The callbac
1750: 6b 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c  k function shoul
1760: 64 20 6e 6f 72 6d 61 6c 6c 79 20 72 65 74 75 72  d normally retur
1770: 6e 20 30 2e 20 20 49 66 20 74 68 65 20 63 61 6c  n 0.  If the cal
1780: 6c 62 61 63 6b 0a 66 75 6e 63 74 69 6f 6e 20 72  lback.function r
1790: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
17a0: 20 74 68 65 20 71 75 65 72 79 20 69 73 20 69 6d   the query is im
17b0: 6d 65 64 69 61 74 65 6c 79 20 61 62 6f 72 74 65  mediately aborte
17c0: 64 20 61 6e 64 20 0a 3c 62 3e 73 71 6c 69 74 65  d and .<b>sqlite
17d0: 5f 65 78 65 63 28 29 3c 2f 62 3e 20 77 69 6c 6c  _exec()</b> will
17e0: 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 41   return SQLITE_A
17f0: 42 4f 52 54 2e 3c 2f 70 3e 0a 0a 3c 68 32 3e 45  BORT.</p>..<h2>E
1800: 72 72 6f 72 20 43 6f 64 65 73 3c 2f 68 32 3e 0a  rror Codes</h2>.
1810: 0a 3c 70 3e 0a 54 68 65 20 3c 62 3e 73 71 6c 69  .<p>.The <b>sqli
1820: 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e 20 66 75  te_exec()</b> fu
1830: 6e 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20  nction normally 
1840: 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f  returns SQLITE_O
1850: 4b 2e 20 20 42 75 74 0a 69 66 20 73 6f 6d 65 74  K.  But.if somet
1860: 68 69 6e 67 20 67 6f 65 73 20 77 72 6f 6e 67 20  hing goes wrong 
1870: 69 74 20 63 61 6e 20 72 65 74 75 72 6e 20 61 20  it can return a 
1880: 64 69 66 66 65 72 65 6e 74 20 76 61 6c 75 65 20  different value 
1890: 74 6f 20 69 6e 64 69 63 61 74 65 0a 74 68 65 20  to indicate.the 
18a0: 74 79 70 65 20 6f 66 20 65 72 72 6f 72 2e 20 20  type of error.  
18b0: 48 65 72 65 20 69 73 20 61 20 63 6f 6d 70 6c 65  Here is a comple
18c0: 74 65 20 6c 69 73 74 20 6f 66 20 74 68 65 20 72  te list of the r
18d0: 65 74 75 72 6e 20 63 6f 64 65 73 3a 0a 3c 2f 70  eturn codes:.</p
18e0: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
18f0: 70 72 65 3e 0a 23 64 65 66 69 6e 65 20 53 51 4c  pre>.#define SQL
1900: 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20 20 20  ITE_OK          
1910: 20 30 20 20 20 2f 2a 20 53 75 63 63 65 73 73 66   0   /* Successf
1920: 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 23 64 65  ul result */.#de
1930: 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f  fine SQLITE_ERRO
1940: 52 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20  R        1   /* 
1950: 53 51 4c 20 65 72 72 6f 72 20 6f 72 20 6d 69 73  SQL error or mis
1960: 73 69 6e 67 20 64 61 74 61 62 61 73 65 20 2a 2f  sing database */
1970: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1980: 49 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20 20  INTERNAL     2  
1990: 20 2f 2a 20 41 6e 20 69 6e 74 65 72 6e 61 6c 20   /* An internal 
19a0: 6c 6f 67 69 63 20 65 72 72 6f 72 20 69 6e 20 53  logic error in S
19b0: 51 4c 69 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65  QLite */.#define
19c0: 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20   SQLITE_PERM    
19d0: 20 20 20 20 20 33 20 20 20 2f 2a 20 41 63 63 65       3   /* Acce
19e0: 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65  ss permission de
19f0: 6e 69 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  nied */.#define 
1a00: 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20  SQLITE_ABORT    
1a10: 20 20 20 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62      4   /* Callb
1a20: 61 63 6b 20 72 6f 75 74 69 6e 65 20 72 65 71 75  ack routine requ
1a30: 65 73 74 65 64 20 61 6e 20 61 62 6f 72 74 20 2a  ested an abort *
1a40: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1a50: 5f 42 55 53 59 20 20 20 20 20 20 20 20 20 35 20  _BUSY         5 
1a60: 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73    /* The databas
1a70: 65 20 66 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64  e file is locked
1a80: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1a90: 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20 20  TE_LOCKED       
1aa0: 36 20 20 20 2f 2a 20 41 20 74 61 62 6c 65 20 69  6   /* A table i
1ab0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
1ac0: 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66  s locked */.#def
1ad0: 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d  ine SQLITE_NOMEM
1ae0: 20 20 20 20 20 20 20 20 37 20 20 20 2f 2a 20 41          7   /* A
1af0: 20 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64   malloc() failed
1b00: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1b10: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20  TE_READONLY     
1b20: 38 20 20 20 2f 2a 20 41 74 74 65 6d 70 74 20 74  8   /* Attempt t
1b30: 6f 20 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e  o write a readon
1b40: 6c 79 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 23  ly database */.#
1b50: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
1b60: 54 45 52 52 55 50 54 20 20 20 20 39 20 20 20 2f  TERRUPT    9   /
1b70: 2a 20 4f 70 65 72 61 74 69 6f 6e 20 74 65 72 6d  * Operation term
1b80: 69 6e 61 74 65 64 20 62 79 20 73 71 6c 69 74 65  inated by sqlite
1b90: 5f 69 6e 74 65 72 72 75 70 74 28 29 20 2a 2f 0a  _interrupt() */.
1ba0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
1bb0: 4f 45 52 52 20 20 20 20 20 20 20 31 30 20 20 20  OERR       10   
1bc0: 2f 2a 20 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20  /* Some kind of 
1bd0: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f  disk I/O error o
1be0: 63 63 75 72 72 65 64 20 2a 2f 0a 23 64 65 66 69  ccurred */.#defi
1bf0: 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50  ne SQLITE_CORRUP
1c00: 54 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 68  T     11   /* Th
1c10: 65 20 64 61 74 61 62 61 73 65 20 64 69 73 6b 20  e database disk 
1c20: 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d  image is malform
1c30: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
1c40: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20  LITE_NOTFOUND   
1c50: 20 31 32 20 20 20 2f 2a 20 28 49 6e 74 65 72 6e   12   /* (Intern
1c60: 61 6c 20 4f 6e 6c 79 29 20 54 61 62 6c 65 20 6f  al Only) Table o
1c70: 72 20 72 65 63 6f 72 64 20 6e 6f 74 20 66 6f 75  r record not fou
1c80: 6e 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nd */.#define SQ
1c90: 4c 49 54 45 5f 46 55 4c 4c 20 20 20 20 20 20 20  LITE_FULL       
1ca0: 20 31 33 20 20 20 2f 2a 20 49 6e 73 65 72 74 69   13   /* Inserti
1cb0: 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75 73  on failed becaus
1cc0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 66 75  e database is fu
1cd0: 6c 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ll */.#define SQ
1ce0: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 20 20  LITE_CANTOPEN   
1cf0: 20 31 34 20 20 20 2f 2a 20 55 6e 61 62 6c 65 20   14   /* Unable 
1d00: 74 6f 20 6f 70 65 6e 20 74 68 65 20 64 61 74 61  to open the data
1d10: 62 61 73 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65  base file */.#de
1d20: 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 4f 54  fine SQLITE_PROT
1d30: 4f 43 4f 4c 20 20 20 20 31 35 20 20 20 2f 2a 20  OCOL    15   /* 
1d40: 44 61 74 61 62 61 73 65 20 6c 6f 63 6b 20 70 72  Database lock pr
1d50: 6f 74 6f 63 6f 6c 20 65 72 72 6f 72 20 2a 2f 0a  otocol error */.
1d60: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45  #define SQLITE_E
1d70: 4d 50 54 59 20 20 20 20 20 20 20 31 36 20 20 20  MPTY       16   
1d80: 2f 2a 20 28 49 6e 74 65 72 6e 61 6c 20 4f 6e 6c  /* (Internal Onl
1d90: 79 29 20 44 61 74 61 62 61 73 65 20 74 61 62 6c  y) Database tabl
1da0: 65 20 69 73 20 65 6d 70 74 79 20 2a 2f 0a 23 64  e is empty */.#d
1db0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 43 48  efine SQLITE_SCH
1dc0: 45 4d 41 20 20 20 20 20 20 31 37 20 20 20 2f 2a  EMA      17   /*
1dd0: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 73 63   The database sc
1de0: 68 65 6d 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a  hema changed */.
1df0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
1e00: 4f 4f 42 49 47 20 20 20 20 20 20 31 38 20 20 20  OOBIG      18   
1e10: 2f 2a 20 54 6f 6f 20 6d 75 63 68 20 64 61 74 61  /* Too much data
1e20: 20 66 6f 72 20 6f 6e 65 20 72 6f 77 20 6f 66 20   for one row of 
1e30: 61 20 74 61 62 6c 65 20 2a 2f 0a 23 64 65 66 69  a table */.#defi
1e40: 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  ne SQLITE_CONSTR
1e50: 41 49 4e 54 20 20 31 39 20 20 20 2f 2a 20 41 62  AINT  19   /* Ab
1e60: 6f 72 74 20 64 75 65 20 74 6f 20 63 6f 6e 74 72  ort due to contr
1e70: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 2a  aint violation *
1e80: 2f 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  /.</pre></blockq
1e90: 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6d  uote>..<p>.The m
1ea0: 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65 73 65  eanings of these
1eb0: 20 76 61 72 69 6f 75 73 20 72 65 74 75 72 6e 20   various return 
1ec0: 76 61 6c 75 65 73 20 61 72 65 20 61 73 20 66 6f  values are as fo
1ed0: 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c  llows:.</p>..<bl
1ee0: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 64 6c 3e 0a 3c  ockquote>.<dl>.<
1ef0: 64 74 3e 53 51 4c 49 54 45 5f 4f 4b 3c 2f 64 74  dt>SQLITE_OK</dt
1f00: 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69 73 20 76 61  >.<dd><p>This va
1f10: 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 20  lue is returned 
1f20: 69 66 20 65 76 65 72 79 74 68 69 6e 67 20 77 6f  if everything wo
1f30: 72 6b 65 64 20 61 6e 64 20 74 68 65 72 65 20 77  rked and there w
1f40: 65 72 65 20 6e 6f 20 65 72 72 6f 72 73 2e 0a 3c  ere no errors..<
1f50: 2f 70 3e 3c 2f 64 64 3e 0a 3c 64 74 3e 53 51 4c  /p></dd>.<dt>SQL
1f60: 49 54 45 5f 49 4e 54 45 52 4e 41 4c 3c 2f 64 74  ITE_INTERNAL</dt
1f70: 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69 73 20 76 61  >.<dd><p>This va
1f80: 6c 75 65 20 69 6e 64 69 63 61 74 65 73 20 74 68  lue indicates th
1f90: 61 74 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 63  at an internal c
1fa0: 6f 6e 73 69 73 74 65 6e 63 79 20 63 68 65 63 6b  onsistency check
1fb0: 20 77 69 74 68 69 6e 0a 74 68 65 20 53 51 4c 69   within.the SQLi
1fc0: 74 65 20 6c 69 62 72 61 72 79 20 66 61 69 6c 65  te library faile
1fd0: 64 2e 20 20 54 68 69 73 20 63 61 6e 20 6f 6e 6c  d.  This can onl
1fe0: 79 20 68 61 70 70 65 6e 20 69 66 20 74 68 65 72  y happen if ther
1ff0: 65 20 69 73 20 61 20 62 75 67 20 69 6e 0a 74 68  e is a bug in.th
2000: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
2010: 2e 20 20 49 66 20 79 6f 75 20 65 76 65 72 20 67  .  If you ever g
2020: 65 74 20 61 6e 20 53 51 4c 49 54 45 5f 49 4e 54  et an SQLITE_INT
2030: 45 52 4e 41 4c 20 72 65 70 6c 79 20 66 72 6f 6d  ERNAL reply from
2040: 0a 61 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 65 78  .an <b>sqlite_ex
2050: 65 63 28 29 3c 2f 62 3e 20 63 61 6c 6c 2c 20 70  ec()</b> call, p
2060: 6c 65 61 73 65 20 72 65 70 6f 72 74 20 74 68 65  lease report the
2070: 20 70 72 6f 62 6c 65 6d 20 6f 6e 20 74 68 65 20   problem on the 
2080: 53 51 4c 69 74 65 0a 6d 61 69 6c 69 6e 67 20 6c  SQLite.mailing l
2090: 69 73 74 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c  ist..</p></dd>.<
20a0: 64 74 3e 53 51 4c 49 54 45 5f 45 52 52 4f 52 3c  dt>SQLITE_ERROR<
20b0: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69 73  /dt>.<dd><p>This
20c0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 6e   return value in
20d0: 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65  dicates that the
20e0: 72 65 20 77 61 73 20 61 6e 20 65 72 72 6f 72 20  re was an error 
20f0: 69 6e 20 74 68 65 20 53 51 4c 0a 74 68 61 74 20  in the SQL.that 
2100: 77 61 73 20 70 61 73 73 65 64 20 69 6e 74 6f 20  was passed into 
2110: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 65 78  the <b>sqlite_ex
2120: 65 63 28 29 3c 2f 62 3e 2e 0a 3c 2f 70 3e 3c 2f  ec()</b>..</p></
2130: 64 64 3e 0a 3c 64 74 3e 53 51 4c 49 54 45 5f 50  dd>.<dt>SQLITE_P
2140: 45 52 4d 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  ERM</dt>.<dd><p>
2150: 54 68 69 73 20 72 65 74 75 72 6e 20 76 61 6c 75  This return valu
2160: 65 20 73 61 79 73 20 74 68 61 74 20 74 68 65 20  e says that the 
2170: 61 63 63 65 73 73 20 70 65 72 6d 69 73 73 69 6f  access permissio
2180: 6e 73 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61  ns on the databa
2190: 73 65 0a 66 69 6c 65 20 61 72 65 20 73 75 63 68  se.file are such
21a0: 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 20 63   that the file c
21b0: 61 6e 6e 6f 74 20 62 65 20 6f 70 65 6e 65 64 2e  annot be opened.
21c0: 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c 64 74 3e 53  .</p></dd>.<dt>S
21d0: 51 4c 49 54 45 5f 41 42 4f 52 54 3c 2f 64 74 3e  QLITE_ABORT</dt>
21e0: 0a 3c 64 64 3e 3c 70 3e 54 68 69 73 20 76 61 6c  .<dd><p>This val
21f0: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  ue is returned i
2200: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  f the callback f
2210: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
2220: 6e 6f 6e 2d 7a 65 72 6f 2e 0a 3c 2f 70 3e 3c 2f  non-zero..</p></
2230: 64 64 3e 0a 3c 64 74 3e 53 51 4c 49 54 45 5f 42  dd>.<dt>SQLITE_B
2240: 55 53 59 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  USY</dt>.<dd><p>
2250: 54 68 69 73 20 72 65 74 75 72 6e 20 63 6f 64 65  This return code
2260: 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
2270: 61 6e 6f 74 68 65 72 20 70 72 6f 67 72 61 6d 20  another program 
2280: 6f 72 20 74 68 72 65 61 64 20 68 61 73 0a 74 68  or thread has.th
2290: 65 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 65  e database locke
22a0: 64 2e 20 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77  d.  SQLite allow
22b0: 73 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74 68  s two or more th
22c0: 72 65 61 64 73 20 74 6f 20 72 65 61 64 20 74 68  reads to read th
22d0: 65 0a 64 61 74 61 62 61 73 65 20 61 74 20 74 68  e.database at th
22e0: 65 20 73 61 6d 65 20 74 69 6d 65 2c 20 62 75 74  e same time, but
22f0: 20 6f 6e 6c 79 20 6f 6e 65 20 74 68 72 65 61 64   only one thread
2300: 20 63 61 6e 20 68 61 76 65 20 74 68 65 20 64 61   can have the da
2310: 74 61 62 61 73 65 0a 6f 70 65 6e 20 66 6f 72 20  tabase.open for 
2320: 77 72 69 74 69 6e 67 20 61 74 20 74 68 65 20 73  writing at the s
2330: 61 6d 65 20 74 69 6d 65 2e 20 20 4c 6f 63 6b 69  ame time.  Locki
2340: 6e 67 20 69 6e 20 53 51 4c 69 74 65 20 69 73 20  ng in SQLite is 
2350: 6f 6e 20 74 68 65 0a 65 6e 74 69 72 65 20 64 61  on the.entire da
2360: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 70 3e  tabase.</p>.</p>
2370: 3c 2f 64 64 3e 0a 3c 64 74 3e 53 51 4c 49 54 45  </dd>.<dt>SQLITE
2380: 5f 4c 4f 43 4b 45 44 3c 2f 64 74 3e 0a 3c 64 64  _LOCKED</dt>.<dd
2390: 3e 3c 70 3e 54 68 69 73 20 72 65 74 75 72 6e 20  ><p>This return 
23a0: 63 6f 64 65 20 69 73 20 73 69 6d 69 6c 61 72 20  code is similar 
23b0: 74 6f 20 53 51 4c 49 54 45 5f 42 55 53 59 20 69  to SQLITE_BUSY i
23c0: 6e 20 74 68 61 74 20 69 74 20 69 6e 64 69 63 61  n that it indica
23d0: 74 65 73 0a 74 68 61 74 20 74 68 65 20 64 61 74  tes.that the dat
23e0: 61 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 2e  abase is locked.
23f0: 20 20 42 75 74 20 74 68 65 20 73 6f 75 72 63 65    But the source
2400: 20 6f 66 20 74 68 65 20 6c 6f 63 6b 20 69 73 20   of the lock is 
2410: 61 20 72 65 63 75 72 73 69 76 65 0a 63 61 6c 6c  a recursive.call
2420: 20 74 6f 20 3c 62 3e 73 71 6c 69 74 65 5f 65 78   to <b>sqlite_ex
2430: 65 63 28 29 3c 2f 62 3e 2e 20 20 54 68 69 73 20  ec()</b>.  This 
2440: 72 65 74 75 72 6e 20 63 61 6e 20 6f 6e 6c 79 20  return can only 
2450: 6f 63 63 75 72 20 69 66 20 79 6f 75 20 61 74 74  occur if you att
2460: 65 6d 70 74 0a 74 6f 20 69 6e 76 6f 6b 65 20 73  empt.to invoke s
2470: 71 6c 69 74 65 5f 65 78 65 63 28 29 20 66 72 6f  qlite_exec() fro
2480: 6d 20 77 69 74 68 69 6e 20 61 20 63 61 6c 6c 62  m within a callb
2490: 61 63 6b 20 72 6f 75 74 69 6e 65 20 6f 66 20 61  ack routine of a
24a0: 20 71 75 65 72 79 0a 66 72 6f 6d 20 61 20 70 72   query.from a pr
24b0: 69 6f 72 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f  ior invocation o
24c0: 66 20 73 71 6c 69 74 65 5f 65 78 65 63 28 29 2e  f sqlite_exec().
24d0: 20 20 52 65 63 75 72 73 69 76 65 20 63 61 6c 6c    Recursive call
24e0: 73 20 74 6f 0a 73 71 6c 69 74 65 5f 65 78 65 63  s to.sqlite_exec
24f0: 28 29 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 61  () are allowed a
2500: 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 79 20 64  s long as they d
2510: 6f 0a 6e 6f 74 20 61 74 74 65 6d 70 74 20 74 6f  o.not attempt to
2520: 20 77 72 69 74 65 20 74 68 65 20 73 61 6d 65 20   write the same 
2530: 74 61 62 6c 65 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e  table..</p></dd>
2540: 0a 3c 64 74 3e 53 51 4c 49 54 45 5f 4e 4f 4d 45  .<dt>SQLITE_NOME
2550: 4d 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54 68  M</dt>.<dd><p>Th
2560: 69 73 20 76 61 6c 75 65 20 69 73 20 72 65 74 75  is value is retu
2570: 72 6e 65 64 20 69 66 20 61 20 63 61 6c 6c 20 74  rned if a call t
2580: 6f 20 3c 62 3e 6d 61 6c 6c 6f 63 28 29 3c 2f 62  o <b>malloc()</b
2590: 3e 20 66 61 69 6c 73 2e 0a 3c 2f 70 3e 3c 2f 64  > fails..</p></d
25a0: 64 3e 0a 3c 64 74 3e 53 51 4c 49 54 45 5f 52 45  d>.<dt>SQLITE_RE
25b0: 41 44 4f 4e 4c 59 3c 2f 64 74 3e 0a 3c 64 64 3e  ADONLY</dt>.<dd>
25c0: 3c 70 3e 54 68 69 73 20 72 65 74 75 72 6e 20 63  <p>This return c
25d0: 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74 68  ode indicates th
25e0: 61 74 20 61 6e 20 61 74 74 65 6d 70 74 20 77 61  at an attempt wa
25f0: 73 20 6d 61 64 65 20 74 6f 20 77 72 69 74 65 20  s made to write 
2600: 74 6f 0a 61 20 64 61 74 61 62 61 73 65 20 66 69  to.a database fi
2610: 6c 65 20 74 68 61 74 20 69 73 20 6f 70 65 6e 65  le that is opene
2620: 64 20 66 6f 72 20 72 65 61 64 69 6e 67 20 6f 6e  d for reading on
2630: 6c 79 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c 64  ly..</p></dd>.<d
2640: 74 3e 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55  t>SQLITE_INTERRU
2650: 50 54 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54  PT</dt>.<dd><p>T
2660: 68 69 73 20 76 61 6c 75 65 20 69 73 20 72 65 74  his value is ret
2670: 75 72 6e 65 64 20 69 66 20 61 20 63 61 6c 6c 20  urned if a call 
2680: 74 6f 20 3c 62 3e 73 71 6c 69 74 65 5f 69 6e 74  to <b>sqlite_int
2690: 65 72 72 75 70 74 28 29 3c 2f 62 3e 0a 69 6e 74  errupt()</b>.int
26a0: 65 72 72 75 70 74 73 20 61 20 64 61 74 61 62 61  errupts a databa
26b0: 73 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20  se operation in 
26c0: 70 72 6f 67 72 65 73 73 2e 0a 3c 2f 70 3e 3c 2f  progress..</p></
26d0: 64 64 3e 0a 3c 64 74 3e 53 51 4c 49 54 45 5f 49  dd>.<dt>SQLITE_I
26e0: 4f 45 52 52 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  OERR</dt>.<dd><p
26f0: 3e 54 68 69 73 20 76 61 6c 75 65 20 69 73 20 72  >This value is r
2700: 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 6f  eturned if the o
2710: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
2720: 69 6e 66 6f 72 6d 73 20 53 51 4c 69 74 65 0a 74  informs SQLite.t
2730: 68 61 74 20 69 74 20 69 73 20 75 6e 61 62 6c 65  hat it is unable
2740: 20 74 6f 20 70 65 72 66 6f 72 6d 20 73 6f 6d 65   to perform some
2750: 20 64 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74   disk I/O operat
2760: 69 6f 6e 2e 20 20 54 68 69 73 20 63 6f 75 6c 64  ion.  This could
2770: 20 6d 65 61 6e 0a 74 68 61 74 20 74 68 65 72 65   mean.that there
2780: 20 69 73 20 6e 6f 20 6d 6f 72 65 20 73 70 61 63   is no more spac
2790: 65 20 6c 65 66 74 20 6f 6e 20 74 68 65 20 64 69  e left on the di
27a0: 73 6b 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c 64  sk..</p></dd>.<d
27b0: 74 3e 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54  t>SQLITE_CORRUPT
27c0: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69  </dt>.<dd><p>Thi
27d0: 73 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  s value is retur
27e0: 6e 65 64 20 69 66 20 53 51 4c 69 74 65 20 64 65  ned if SQLite de
27f0: 74 65 63 74 73 20 74 68 61 74 20 74 68 65 20 64  tects that the d
2800: 61 74 61 62 61 73 65 20 69 74 20 69 73 0a 77 6f  atabase it is.wo
2810: 72 6b 69 6e 67 20 6f 6e 20 68 61 73 20 62 65 63  rking on has bec
2820: 6f 6d 65 20 63 6f 72 72 75 70 74 65 64 2e 20 20  ome corrupted.  
2830: 43 6f 72 72 75 70 74 69 6f 6e 20 6d 69 67 68 74  Corruption might
2840: 20 6f 63 63 75 72 20 64 75 65 20 74 6f 20 61 20   occur due to a 
2850: 72 6f 67 75 65 0a 70 72 6f 63 65 73 73 20 77 72  rogue.process wr
2860: 69 74 69 6e 67 20 74 6f 20 74 68 65 20 64 61 74  iting to the dat
2870: 61 62 61 73 65 20 66 69 6c 65 20 6f 72 20 69 74  abase file or it
2880: 20 6d 69 67 68 74 20 68 61 70 70 65 6e 20 64 75   might happen du
2890: 65 20 74 6f 20 61 6e 20 0a 70 65 72 76 69 6f 75  e to an .perviou
28a0: 73 6c 79 20 75 6e 64 65 74 65 63 74 65 64 20 6c  sly undetected l
28b0: 6f 67 69 63 20 65 72 72 6f 72 20 69 6e 20 6f 66  ogic error in of
28c0: 20 53 51 4c 69 74 65 2e 20 54 68 69 73 20 76 61   SQLite. This va
28d0: 6c 75 65 20 69 73 20 61 6c 73 6f 0a 72 65 74 75  lue is also.retu
28e0: 72 6e 65 64 20 69 66 20 61 20 64 69 73 6b 20 49  rned if a disk I
28f0: 2f 4f 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20  /O error occurs 
2900: 69 6e 20 73 75 63 68 20 61 20 77 61 79 20 74 68  in such a way th
2910: 61 74 20 53 51 4c 69 74 65 20 69 73 20 66 6f 72  at SQLite is for
2920: 63 65 64 0a 74 6f 20 6c 65 61 76 65 20 74 68 65  ced.to leave the
2930: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69   database file i
2940: 6e 20 61 20 63 6f 72 72 75 70 74 65 64 20 73 74  n a corrupted st
2950: 61 74 65 2e 20 20 54 68 65 20 6c 61 74 74 65 72  ate.  The latter
2960: 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 0a 68 61 70   should only.hap
2970: 70 65 6e 20 64 75 65 20 74 6f 20 61 20 68 61 72  pen due to a har
2980: 64 77 61 72 65 20 6f 72 20 6f 70 65 72 61 74 69  dware or operati
2990: 6e 67 20 73 79 73 74 65 6d 20 6d 61 6c 66 75 6e  ng system malfun
29a0: 63 74 69 6f 6e 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e  ction..</p></dd>
29b0: 0a 3c 64 74 3e 53 51 4c 49 54 45 5f 46 55 4c 4c  .<dt>SQLITE_FULL
29c0: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69  </dt>.<dd><p>Thi
29d0: 73 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  s value is retur
29e0: 6e 65 64 20 69 66 20 61 6e 20 69 6e 73 65 72 74  ned if an insert
29f0: 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75  ion failed becau
2a00: 73 65 20 74 68 65 72 65 20 69 73 0a 6e 6f 20 73  se there is.no s
2a10: 70 61 63 65 20 6c 65 66 74 20 6f 6e 20 74 68 65  pace left on the
2a20: 20 64 69 73 6b 2c 20 6f 72 20 74 68 65 20 64 61   disk, or the da
2a30: 74 61 62 61 73 65 20 69 73 20 74 6f 6f 20 62 69  tabase is too bi
2a40: 67 20 74 6f 20 68 6f 6c 64 20 61 6e 79 0a 6d 6f  g to hold any.mo
2a50: 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20  re information. 
2a60: 20 54 68 65 20 6c 61 74 74 65 72 20 63 61 73 65   The latter case
2a70: 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 6f 63 63   should only occ
2a80: 75 72 20 66 6f 72 20 64 61 74 61 62 61 73 65 73  ur for databases
2a90: 0a 74 68 61 74 20 61 72 65 20 6c 61 72 67 65 72  .that are larger
2aa0: 20 74 68 61 6e 20 32 47 42 20 69 6e 20 73 69 7a   than 2GB in siz
2ab0: 65 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c 64 74  e..</p></dd>.<dt
2ac0: 3e 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  >SQLITE_CANTOPEN
2ad0: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69  </dt>.<dd><p>Thi
2ae0: 73 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  s value is retur
2af0: 6e 65 64 20 69 66 20 74 68 65 20 64 61 74 61 62  ned if the datab
2b00: 61 73 65 20 66 69 6c 65 20 63 6f 75 6c 64 20 6e  ase file could n
2b10: 6f 74 20 62 65 20 6f 70 65 6e 65 64 0a 66 6f 72  ot be opened.for
2b20: 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2e 0a 3c 2f   some reason..</
2b30: 70 3e 3c 2f 64 64 3e 0a 3c 64 74 3e 53 51 4c 49  p></dd>.<dt>SQLI
2b40: 54 45 5f 50 52 4f 54 4f 43 4f 4c 3c 2f 64 74 3e  TE_PROTOCOL</dt>
2b50: 0a 3c 64 64 3e 3c 70 3e 54 68 69 73 20 76 61 6c  .<dd><p>This val
2b60: 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  ue is returned i
2b70: 66 20 73 6f 6d 65 20 6f 74 68 65 72 20 70 72 6f  f some other pro
2b80: 63 65 73 73 20 69 73 20 6d 65 73 73 69 6e 67 20  cess is messing 
2b90: 77 69 74 68 0a 66 69 6c 65 20 6c 6f 63 6b 73 20  with.file locks 
2ba0: 61 6e 64 20 68 61 73 20 76 69 6f 6c 61 74 65 64  and has violated
2bb0: 20 74 68 65 20 66 69 6c 65 20 6c 6f 63 6b 69 6e   the file lockin
2bc0: 67 20 70 72 6f 74 6f 63 6f 6c 20 74 68 61 74 20  g protocol that 
2bd0: 53 51 4c 69 74 65 20 75 73 65 73 0a 6f 6e 20 69  SQLite uses.on i
2be0: 74 73 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  ts rollback jour
2bf0: 6e 61 6c 20 66 69 6c 65 73 2e 0a 3c 2f 70 3e 3c  nal files..</p><
2c00: 2f 64 64 3e 0a 3c 64 74 3e 53 51 4c 49 54 45 5f  /dd>.<dt>SQLITE_
2c10: 53 43 48 45 4d 41 3c 2f 64 74 3e 0a 3c 64 64 3e  SCHEMA</dt>.<dd>
2c20: 3c 70 3e 57 68 65 6e 20 74 68 65 20 64 61 74 61  <p>When the data
2c30: 62 61 73 65 20 66 69 72 73 74 20 6f 70 65 6e 65  base first opene
2c40: 64 2c 20 53 51 4c 69 74 65 20 72 65 61 64 73 20  d, SQLite reads 
2c50: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
2c60: 65 6d 61 0a 69 6e 74 6f 20 6d 65 6d 6f 72 79 20  ema.into memory 
2c70: 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 73 63  and uses that sc
2c80: 68 65 6d 61 20 74 6f 20 70 61 72 73 65 20 6e 65  hema to parse ne
2c90: 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  w SQL statements
2ca0: 2e 20 20 49 66 20 61 6e 6f 74 68 65 72 0a 70 72  .  If another.pr
2cb0: 6f 63 65 73 73 20 63 68 61 6e 67 65 73 20 74 68  ocess changes th
2cc0: 65 20 73 63 68 65 6d 61 2c 20 74 68 65 20 63 6f  e schema, the co
2cd0: 6d 6d 61 6e 64 20 63 75 72 72 65 6e 74 6c 79 20  mmand currently 
2ce0: 62 65 69 6e 67 20 70 72 6f 63 65 73 73 65 64 20  being processed 
2cf0: 77 69 6c 6c 0a 61 62 6f 72 74 20 62 65 63 61 75  will.abort becau
2d00: 73 65 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d  se the virtual m
2d10: 61 63 68 69 6e 65 20 63 6f 64 65 20 67 65 6e 65  achine code gene
2d20: 72 61 74 65 64 20 61 73 73 75 6d 65 64 20 74 68  rated assumed th
2d30: 65 20 6f 6c 64 0a 73 63 68 65 6d 61 2e 20 20 54  e old.schema.  T
2d40: 68 69 73 20 69 73 20 74 68 65 20 72 65 74 75 72  his is the retur
2d50: 6e 20 63 6f 64 65 20 66 6f 72 20 73 75 63 68 20  n code for such 
2d60: 63 61 73 65 73 2e 20 20 52 65 74 72 79 69 6e 67  cases.  Retrying
2d70: 20 74 68 65 0a 63 6f 6d 6d 61 6e 64 20 75 73 75   the.command usu
2d80: 61 6c 6c 79 20 77 69 6c 6c 20 63 6c 65 61 72 20  ally will clear 
2d90: 74 68 65 20 70 72 6f 62 6c 65 6d 2e 0a 3c 2f 70  the problem..</p
2da0: 3e 3c 2f 64 64 3e 0a 3c 64 74 3e 53 51 4c 49 54  ></dd>.<dt>SQLIT
2db0: 45 5f 54 4f 4f 42 49 47 3c 2f 64 74 3e 0a 3c 64  E_TOOBIG</dt>.<d
2dc0: 64 3e 3c 70 3e 53 51 4c 69 74 65 20 63 61 6e 6e  d><p>SQLite cann
2dd0: 6f 74 20 73 74 6f 72 65 20 6d 6f 72 65 20 74 68  ot store more th
2de0: 61 6e 20 61 62 6f 75 74 20 36 34 4b 20 6f 66 20  an about 64K of 
2df0: 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c 65  data in a single
2e00: 20 72 6f 77 0a 6f 66 20 61 20 73 69 6e 67 6c 65   row.of a single
2e10: 20 74 61 62 6c 65 2e 20 20 49 66 20 79 6f 75 20   table.  If you 
2e20: 61 74 74 65 6d 70 74 20 74 6f 20 73 74 6f 72 65  attempt to store
2e30: 20 6d 6f 72 65 20 74 68 61 6e 20 36 34 4b 20 69   more than 64K i
2e40: 6e 20 61 20 73 69 6e 67 6c 65 0a 72 6f 77 2c 20  n a single.row, 
2e50: 74 68 69 73 20 69 73 20 74 68 65 20 72 65 74 75  this is the retu
2e60: 72 6e 20 63 6f 64 65 20 79 6f 75 20 67 65 74 2e  rn code you get.
2e70: 0a 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c 64 74 3e 53  .</p></dd>.<dt>S
2e80: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
2e90: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 54 68 69  </dt>.<dd><p>Thi
2ea0: 73 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 72 65  s constant is re
2eb0: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 53 51  turned if the SQ
2ec0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 6f 75 6c  L statement woul
2ed0: 64 20 68 61 76 65 20 76 69 6f 6c 61 74 65 64 0a  d have violated.
2ee0: 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 73 74  a database const
2ef0: 72 61 69 6e 74 2e 0a 3c 2f 70 3e 3c 2f 64 64 3e  raint..</p></dd>
2f00: 0a 3c 2f 64 6c 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  .</dl>.</blockqu
2f10: 6f 74 65 3e 0a 0a 3c 68 32 3e 54 68 65 20 45 78  ote>..<h2>The Ex
2f20: 74 65 6e 64 65 64 20 41 50 49 3c 2f 68 32 3e 0a  tended API</h2>.
2f30: 0a 3c 70 3e 4f 6e 6c 79 20 74 68 65 20 74 68 72  .<p>Only the thr
2f40: 65 65 20 63 6f 72 65 20 72 6f 75 74 69 6e 65 73  ee core routines
2f50: 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 61 72 65   shown above are
2f60: 20 72 65 71 75 69 72 65 64 20 74 6f 20 75 73 65   required to use
2f70: 0a 53 51 4c 69 74 65 2e 20 20 42 75 74 20 74 68  .SQLite.  But th
2f80: 65 72 65 20 61 72 65 20 6d 61 6e 79 20 6f 74 68  ere are many oth
2f90: 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61  er functions tha
2fa0: 74 20 70 72 6f 76 69 64 65 20 0a 75 73 65 66 75  t provide .usefu
2fb0: 6c 20 69 6e 74 65 72 66 61 63 65 73 2e 20 20 54  l interfaces.  T
2fc0: 68 65 73 65 20 65 78 74 65 6e 64 65 64 20 72 6f  hese extended ro
2fd0: 75 74 69 6e 65 73 20 61 72 65 20 61 73 20 66 6f  utines are as fo
2fe0: 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c  llows:.</p>..<bl
2ff0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 69  ockquote><pre>.i
3000: 6e 74 20 73 71 6c 69 74 65 5f 67 65 74 5f 74 61  nt sqlite_get_ta
3010: 62 6c 65 28 0a 20 20 73 71 6c 69 74 65 2a 2c 0a  ble(.  sqlite*,.
3020: 20 20 63 68 61 72 20 2a 73 71 6c 2c 0a 20 20 63    char *sql,.  c
3030: 68 61 72 20 2a 2a 2a 72 65 73 75 6c 74 2c 0a 20  har ***result,. 
3040: 20 69 6e 74 20 2a 6e 72 6f 77 2c 0a 20 20 69 6e   int *nrow,.  in
3050: 74 20 2a 6e 63 6f 6c 75 6d 6e 2c 0a 20 20 63 68  t *ncolumn,.  ch
3060: 61 72 20 2a 2a 65 72 72 6d 73 67 0a 29 3b 0a 0a  ar **errmsg.);..
3070: 76 6f 69 64 20 73 71 6c 69 74 65 5f 66 72 65 65  void sqlite_free
3080: 5f 74 61 62 6c 65 28 63 68 61 72 2a 2a 29 3b 0a  _table(char**);.
3090: 0a 76 6f 69 64 20 73 71 6c 69 74 65 5f 69 6e 74  .void sqlite_int
30a0: 65 72 72 75 70 74 28 73 71 6c 69 74 65 2a 29 3b  errupt(sqlite*);
30b0: 0a 0a 69 6e 74 20 73 71 6c 69 74 65 5f 63 6f 6d  ..int sqlite_com
30c0: 70 6c 65 74 65 28 63 6f 6e 73 74 20 63 68 61 72  plete(const char
30d0: 20 2a 73 71 6c 29 3b 0a 0a 76 6f 69 64 20 73 71   *sql);..void sq
30e0: 6c 69 74 65 5f 62 75 73 79 5f 68 61 6e 64 6c 65  lite_busy_handle
30f0: 72 28 73 71 6c 69 74 65 2a 2c 20 69 6e 74 20 28  r(sqlite*, int (
3100: 2a 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63  *)(void*,const c
3110: 68 61 72 2a 2c 69 6e 74 29 2c 20 76 6f 69 64 2a  har*,int), void*
3120: 29 3b 0a 0a 76 6f 69 64 20 73 71 6c 69 74 65 5f  );..void sqlite_
3130: 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 73 71 6c  busy_timeout(sql
3140: 69 74 65 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a  ite*, int ms);..
3150: 63 6f 6e 73 74 20 63 68 61 72 20 73 71 6c 69 74  const char sqlit
3160: 65 5f 76 65 72 73 69 6f 6e 5b 5d 3b 0a 0a 63 6f  e_version[];..co
3170: 6e 73 74 20 63 68 61 72 20 73 71 6c 69 74 65 5f  nst char sqlite_
3180: 65 6e 63 6f 64 69 6e 67 5b 5d 3b 0a 0a 69 6e 74  encoding[];..int
3190: 20 73 71 6c 69 74 65 5f 65 78 65 63 5f 70 72 69   sqlite_exec_pri
31a0: 6e 74 66 28 0a 20 20 73 71 6c 69 74 65 2a 2c 0a  ntf(.  sqlite*,.
31b0: 20 20 63 68 61 72 20 2a 73 71 6c 2c 0a 20 20 69    char *sql,.  i
31c0: 6e 74 20 28 2a 29 28 76 6f 69 64 2a 2c 69 6e 74  nt (*)(void*,int
31d0: 2c 63 68 61 72 2a 2a 2c 63 68 61 72 2a 2a 29 2c  ,char**,char**),
31e0: 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 63 68 61 72  .  void*,.  char
31f0: 20 2a 2a 65 72 72 6d 73 67 2c 0a 20 20 2e 2e 2e   **errmsg,.  ...
3200: 0a 29 3b 0a 0a 69 6e 74 20 73 71 6c 69 74 65 5f  .);..int sqlite_
3210: 65 78 65 63 5f 76 70 72 69 6e 74 66 28 0a 20 20  exec_vprintf(.  
3220: 73 71 6c 69 74 65 2a 2c 0a 20 20 63 68 61 72 20  sqlite*,.  char 
3230: 2a 73 71 6c 2c 0a 20 20 69 6e 74 20 28 2a 29 28  *sql,.  int (*)(
3240: 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a  void*,int,char**
3250: 2c 63 68 61 72 2a 2a 29 2c 0a 20 20 76 6f 69 64  ,char**),.  void
3260: 2a 2c 0a 20 20 63 68 61 72 20 2a 2a 65 72 72 6d  *,.  char **errm
3270: 73 67 2c 0a 20 20 76 61 5f 6c 69 73 74 0a 29 3b  sg,.  va_list.);
3280: 0a 0a 69 6e 74 20 73 71 6c 69 74 65 5f 67 65 74  ..int sqlite_get
3290: 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66 28 0a 20  _table_printf(. 
32a0: 20 73 71 6c 69 74 65 2a 2c 0a 20 20 63 68 61 72   sqlite*,.  char
32b0: 20 2a 73 71 6c 2c 0a 20 20 63 68 61 72 20 2a 2a   *sql,.  char **
32c0: 2a 72 65 73 75 6c 74 2c 0a 20 20 69 6e 74 20 2a  *result,.  int *
32d0: 6e 72 6f 77 2c 0a 20 20 69 6e 74 20 2a 6e 63 6f  nrow,.  int *nco
32e0: 6c 75 6d 6e 2c 0a 20 20 63 68 61 72 20 2a 2a 65  lumn,.  char **e
32f0: 72 72 6d 73 67 2c 0a 20 20 2e 2e 2e 0a 29 3b 0a  rrmsg,.  ....);.
3300: 0a 69 6e 74 20 73 71 6c 69 74 65 5f 67 65 74 5f  .int sqlite_get_
3310: 74 61 62 6c 65 5f 76 70 72 69 6e 74 66 28 0a 20  table_vprintf(. 
3320: 20 73 71 6c 69 74 65 2a 2c 0a 20 20 63 68 61 72   sqlite*,.  char
3330: 20 2a 73 71 6c 2c 0a 20 20 63 68 61 72 20 2a 2a   *sql,.  char **
3340: 2a 72 65 73 75 6c 74 2c 0a 20 20 69 6e 74 20 2a  *result,.  int *
3350: 6e 72 6f 77 2c 0a 20 20 69 6e 74 20 2a 6e 63 6f  nrow,.  int *nco
3360: 6c 75 6d 6e 2c 0a 20 20 63 68 61 72 20 2a 2a 65  lumn,.  char **e
3370: 72 72 6d 73 67 2c 0a 20 20 76 61 5f 6c 69 73 74  rrmsg,.  va_list
3380: 0a 29 3b 0a 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  .);..</pre></blo
3390: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6c 6c  ckquote>..<p>All
33a0: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 64 65   of the above de
33b0: 66 69 6e 69 74 69 6f 6e 73 20 61 72 65 20 69 6e  finitions are in
33c0: 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 22 73  cluded in the "s
33d0: 71 6c 69 74 65 2e 68 22 0a 68 65 61 64 65 72 20  qlite.h".header 
33e0: 66 69 6c 65 20 74 68 61 74 20 63 6f 6d 65 73 20  file that comes 
33f0: 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 74 72  in the source tr
3400: 65 65 2e 3c 2f 70 3e 0a 0a 3c 68 32 3e 51 75 65  ee.</p>..<h2>Que
3410: 72 79 69 6e 67 20 77 69 74 68 6f 75 74 20 75 73  rying without us
3420: 69 6e 67 20 61 20 63 61 6c 6c 62 61 63 6b 20 66  ing a callback f
3430: 75 6e 63 74 69 6f 6e 3c 2f 68 32 3e 0a 0a 3c 70  unction</h2>..<p
3440: 3e 54 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 67  >The <b>sqlite_g
3450: 65 74 5f 74 61 62 6c 65 28 29 3c 2f 62 3e 20 66  et_table()</b> f
3460: 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77 72 61  unction is a wra
3470: 70 70 65 72 20 61 72 6f 75 6e 64 0a 3c 62 3e 73  pper around.<b>s
3480: 71 6c 69 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e  qlite_exec()</b>
3490: 20 74 68 61 74 20 63 6f 6c 6c 65 63 74 73 20 61   that collects a
34a0: 6c 6c 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69  ll the informati
34b0: 6f 6e 20 66 72 6f 6d 20 73 75 63 63 65 73 73 69  on from successi
34c0: 76 65 0a 63 61 6c 6c 62 61 63 6b 73 20 61 6e 64  ve.callbacks and
34d0: 20 77 72 69 74 65 20 69 74 20 69 6e 74 6f 20 6d   write it into m
34e0: 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66  emory obtained f
34f0: 72 6f 6d 20 6d 61 6c 6c 6f 63 28 29 2e 20 20 54  rom malloc().  T
3500: 68 69 73 0a 69 73 20 61 20 63 6f 6e 76 65 6e 69  his.is a conveni
3510: 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 20 74 68  ence function th
3520: 61 74 20 61 6c 6c 6f 77 73 20 74 68 65 20 61 70  at allows the ap
3530: 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 67 65 74  plication to get
3540: 20 74 68 65 0a 65 6e 74 69 72 65 20 72 65 73 75   the.entire resu
3550: 6c 74 20 6f 66 20 61 20 64 61 74 61 62 61 73 65  lt of a database
3560: 20 71 75 65 72 79 20 77 69 74 68 20 61 20 73 69   query with a si
3570: 6e 67 6c 65 20 66 75 6e 63 74 69 6f 6e 20 63 61  ngle function ca
3580: 6c 6c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ll.</p>..<p>The 
3590: 6d 61 69 6e 20 72 65 73 75 6c 74 20 66 72 6f 6d  main result from
35a0: 20 3c 62 3e 73 71 6c 69 74 65 5f 67 65 74 5f 74   <b>sqlite_get_t
35b0: 61 62 6c 65 28 29 3c 2f 62 3e 20 69 73 20 61 6e  able()</b> is an
35c0: 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65   array of pointe
35d0: 72 73 0a 74 6f 20 73 74 72 69 6e 67 73 2e 20 20  rs.to strings.  
35e0: 54 68 65 72 65 20 69 73 20 6f 6e 65 20 65 6c 65  There is one ele
35f0: 6d 65 6e 74 20 69 6e 20 74 68 69 73 20 61 72 72  ment in this arr
3600: 61 79 20 66 6f 72 20 65 61 63 68 20 63 6f 6c 75  ay for each colu
3610: 6d 6e 20 6f 66 0a 65 61 63 68 20 72 6f 77 20 69  mn of.each row i
3620: 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 4e  n the result.  N
3630: 55 4c 4c 20 72 65 73 75 6c 74 73 20 61 72 65 20  ULL results are 
3640: 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61  represented by a
3650: 20 4e 55 4c 4c 0a 70 6f 69 6e 74 65 72 2e 20 49   NULL.pointer. I
3660: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  n addition to th
3670: 65 20 72 65 67 75 6c 61 72 20 64 61 74 61 2c 20  e regular data, 
3680: 74 68 65 72 65 20 69 73 20 61 6e 20 61 64 64 65  there is an adde
3690: 64 20 72 6f 77 20 61 74 20 74 68 65 20 0a 62 65  d row at the .be
36a0: 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 61  ginning of the a
36b0: 72 72 61 79 20 74 68 61 74 20 63 6f 6e 74 61 69  rray that contai
36c0: 6e 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  ns the names of 
36d0: 65 61 63 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  each column of t
36e0: 68 65 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a  he.result.</p>..
36f0: 3c 70 3e 41 73 20 61 6e 20 65 78 61 6d 70 6c 65  <p>As an example
3700: 2c 20 63 6f 6e 73 69 64 65 72 20 74 68 65 20 66  , consider the f
3710: 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79 3a 3c  ollowing query:<
3720: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
3730: 3e 0a 53 45 4c 45 43 54 20 65 6d 70 6c 6f 79 65  >.SELECT employe
3740: 65 5f 6e 61 6d 65 2c 20 6c 6f 67 69 6e 2c 20 68  e_name, login, h
3750: 6f 73 74 20 46 52 4f 4d 20 75 73 65 72 73 20 57  ost FROM users W
3760: 48 45 52 45 20 6c 6f 67 69 63 20 4c 49 4b 45 20  HERE logic LIKE 
3770: 27 64 25 27 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  'd%';.</blockquo
3780: 74 65 3e 0a 0a 3c 70 3e 54 68 69 73 20 71 75 65  te>..<p>This que
3790: 72 79 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74  ry will return t
37a0: 68 65 20 6e 61 6d 65 2c 20 6c 6f 67 69 6e 20 61  he name, login a
37b0: 6e 64 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72  nd host computer
37c0: 20 6e 61 6d 65 0a 66 6f 72 20 65 76 65 72 79 20   name.for every 
37d0: 65 6d 70 6c 6f 79 65 65 20 77 68 6f 73 65 20 6c  employee whose l
37e0: 6f 67 69 6e 20 62 65 67 69 6e 73 20 77 69 74 68  ogin begins with
37f0: 20 74 68 65 20 6c 65 74 74 65 72 20 22 64 22 2e   the letter "d".
3800: 20 20 49 66 20 74 68 69 73 0a 71 75 65 72 79 20    If this.query 
3810: 69 73 20 73 75 62 6d 69 74 74 65 64 20 74 6f 20  is submitted to 
3820: 3c 62 3e 73 71 6c 69 74 65 5f 67 65 74 5f 74 61  <b>sqlite_get_ta
3830: 62 6c 65 28 29 3c 2f 62 3e 20 74 68 65 20 72 65  ble()</b> the re
3840: 73 75 6c 74 20 6d 69 67 68 74 0a 6c 6f 6f 6b 20  sult might.look 
3850: 6c 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a  like this:</p>..
3860: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 6e 72 6f  <blockquote>.nro
3870: 77 20 3d 20 32 3c 62 72 3e 0a 6e 63 6f 6c 75 6d  w = 2<br>.ncolum
3880: 6e 20 3d 20 33 3c 62 72 3e 0a 72 65 73 75 6c 74  n = 3<br>.result
3890: 5b 30 5d 20 3d 20 22 65 6d 70 6c 6f 79 65 65 5f  [0] = "employee_
38a0: 6e 61 6d 65 22 3c 62 72 3e 0a 72 65 73 75 6c 74  name"<br>.result
38b0: 5b 31 5d 20 3d 20 22 6c 6f 67 69 6e 22 3c 62 72  [1] = "login"<br
38c0: 3e 0a 72 65 73 75 6c 74 5b 32 5d 20 3d 20 22 68  >.result[2] = "h
38d0: 6f 73 74 22 3c 62 72 3e 0a 72 65 73 75 6c 74 5b  ost"<br>.result[
38e0: 33 5d 20 3d 20 22 64 75 6d 6d 79 22 3c 62 72 3e  3] = "dummy"<br>
38f0: 0a 72 65 73 75 6c 74 5b 34 5d 20 3d 20 22 4e 6f  .result[4] = "No
3900: 20 73 75 63 68 20 75 73 65 72 22 3c 62 72 3e 0a   such user"<br>.
3910: 72 65 73 75 6c 74 5b 35 5d 20 3d 20 30 3c 62 72  result[5] = 0<br
3920: 3e 0a 72 65 73 75 6c 74 5b 36 5d 20 3d 20 22 44  >.result[6] = "D
3930: 2e 20 52 69 63 68 61 72 64 20 48 69 70 70 22 3c  . Richard Hipp"<
3940: 62 72 3e 0a 72 65 73 75 6c 74 5b 37 5d 20 3d 20  br>.result[7] = 
3950: 22 64 72 68 22 3c 62 72 3e 0a 72 65 73 75 6c 74  "drh"<br>.result
3960: 5b 38 5d 20 3d 20 22 7a 61 64 6f 6b 22 0a 3c 2f  [8] = "zadok".</
3970: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
3980: 4e 6f 74 69 63 65 20 74 68 61 74 20 74 68 65 20  Notice that the 
3990: 22 68 6f 73 74 22 20 76 61 6c 75 65 20 66 6f 72  "host" value for
39a0: 20 74 68 65 20 22 64 75 6d 6d 79 22 20 72 65 63   the "dummy" rec
39b0: 6f 72 64 20 69 73 20 4e 55 4c 4c 20 73 6f 0a 74  ord is NULL so.t
39c0: 68 65 20 72 65 73 75 6c 74 5b 5d 20 61 72 72 61  he result[] arra
39d0: 79 20 63 6f 6e 74 61 69 6e 73 20 61 20 4e 55 4c  y contains a NUL
39e0: 4c 20 70 6f 69 6e 74 65 72 20 61 74 20 74 68 61  L pointer at tha
39f0: 74 20 73 6c 6f 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  t slot.</p>..<p>
3a00: 49 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  If the result se
3a10: 74 20 6f 66 20 61 20 71 75 65 72 79 20 69 73 20  t of a query is 
3a20: 65 6d 70 74 79 2c 20 74 68 65 6e 20 62 79 20 64  empty, then by d
3a30: 65 66 61 75 6c 74 0a 3c 62 3e 73 71 6c 69 74 65  efault.<b>sqlite
3a40: 5f 67 65 74 5f 74 61 62 6c 65 28 29 3c 2f 62 3e  _get_table()</b>
3a50: 20 77 69 6c 6c 20 73 65 74 20 6e 72 6f 77 20 74   will set nrow t
3a60: 6f 20 30 20 61 6e 64 20 6c 65 61 76 65 20 69 74  o 0 and leave it
3a70: 73 0a 72 65 73 75 6c 74 20 70 61 72 61 6d 65 74  s.result paramet
3a80: 65 72 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c  er is set to NUL
3a90: 4c 2e 20 20 42 75 74 20 69 66 20 74 68 65 20 45  L.  But if the E
3aa0: 4d 50 54 59 5f 52 45 53 55 4c 54 5f 43 41 4c 4c  MPTY_RESULT_CALL
3ab0: 42 41 43 4b 53 0a 70 72 61 67 6d 61 20 69 73 20  BACKS.pragma is 
3ac0: 4f 4e 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  ON then the resu
3ad0: 6c 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  lt parameter is 
3ae0: 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 6f 20 74  initialized to t
3af0: 68 65 20 6e 61 6d 65 73 0a 6f 66 20 74 68 65 20  he names.of the 
3b00: 63 6f 6c 75 6d 6e 73 20 6f 6e 6c 79 2e 20 20 46  columns only.  F
3b10: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 63 6f 6e 73  or example, cons
3b20: 69 64 65 72 20 74 68 69 73 20 71 75 65 72 79 20  ider this query 
3b30: 77 68 69 63 68 20 68 61 73 0a 61 6e 20 65 6d 70  which has.an emp
3b40: 74 79 20 72 65 73 75 6c 74 20 73 65 74 3a 3c 2f  ty result set:</
3b50: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
3b60: 0a 53 45 4c 45 43 54 20 65 6d 70 6c 6f 79 65 65  .SELECT employee
3b70: 5f 6e 61 6d 65 2c 20 6c 6f 67 69 6e 2c 20 68 6f  _name, login, ho
3b80: 73 74 20 46 52 4f 4d 20 75 73 65 72 73 20 57 48  st FROM users WH
3b90: 45 52 45 20 65 6d 70 6c 6f 79 65 65 5f 6e 61 6d  ERE employee_nam
3ba0: 65 20 49 53 20 4e 55 4c 4c 3b 0a 3c 2f 62 6c 6f  e IS NULL;.</blo
3bb0: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68  ckquote>..<p>.Th
3bc0: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
3bd0: 6f 72 20 67 69 76 65 73 20 74 68 69 73 20 72 65  or gives this re
3be0: 73 75 6c 74 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c  sults:.</p>..<bl
3bf0: 6f 63 6b 71 75 6f 74 65 3e 0a 6e 72 6f 77 20 3d  ockquote>.nrow =
3c00: 20 30 3c 62 72 3e 0a 6e 63 6f 6c 75 6d 6e 20 3d   0<br>.ncolumn =
3c10: 20 30 3c 62 72 3e 0a 72 65 73 75 6c 74 20 3d 20   0<br>.result = 
3c20: 30 3c 62 72 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  0<br>.</blockquo
3c30: 74 65 3e 0a 0a 3c 70 3e 0a 42 75 74 20 69 66 20  te>..<p>.But if 
3c40: 74 68 65 20 45 4d 50 54 59 5f 52 45 53 55 4c 54  the EMPTY_RESULT
3c50: 5f 43 41 4c 4c 42 41 43 4b 53 20 70 72 61 67 6d  _CALLBACKS pragm
3c60: 61 20 69 73 20 4f 4e 2c 20 74 68 65 6e 20 74 68  a is ON, then th
3c70: 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 69 73 20 72  e following.is r
3c80: 65 74 75 72 6e 65 64 3a 0a 3c 2f 70 3e 0a 0a 3c  eturned:.</p>..<
3c90: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 6e 72 6f 77  blockquote>.nrow
3ca0: 20 3d 20 30 3c 62 72 3e 0a 6e 63 6f 6c 75 6d 6e   = 0<br>.ncolumn
3cb0: 20 3d 20 33 3c 62 72 3e 0a 72 65 73 75 6c 74 5b   = 3<br>.result[
3cc0: 30 5d 20 3d 20 22 65 6d 70 6c 6f 79 65 65 5f 6e  0] = "employee_n
3cd0: 61 6d 65 22 3c 62 72 3e 0a 72 65 73 75 6c 74 5b  ame"<br>.result[
3ce0: 31 5d 20 3d 20 22 6c 6f 67 69 6e 22 3c 62 72 3e  1] = "login"<br>
3cf0: 0a 72 65 73 75 6c 74 5b 32 5d 20 3d 20 22 68 6f  .result[2] = "ho
3d00: 73 74 22 3c 62 72 3e 0a 3c 2f 62 6c 6f 63 6b 71  st"<br>.</blockq
3d10: 75 6f 74 65 3e 0a 0a 3c 70 3e 4d 65 6d 6f 72 79  uote>..<p>Memory
3d20: 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 69 6e 66   to hold the inf
3d30: 6f 72 6d 61 74 69 6f 6e 20 72 65 74 75 72 6e 65  ormation returne
3d40: 64 20 62 79 20 3c 62 3e 73 71 6c 69 74 65 5f 67  d by <b>sqlite_g
3d50: 65 74 5f 74 61 62 6c 65 28 29 3c 2f 62 3e 0a 69  et_table()</b>.i
3d60: 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  s obtained from 
3d70: 6d 61 6c 6c 6f 63 28 29 2e 20 20 42 75 74 20 74  malloc().  But t
3d80: 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74  he calling funct
3d90: 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 6f 74 20 74  ion should not t
3da0: 72 79 0a 74 6f 20 66 72 65 65 20 74 68 69 73 20  ry.to free this 
3db0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 64 69 72 65  information dire
3dc0: 63 74 6c 79 2e 20 20 49 6e 73 74 65 61 64 2c 20  ctly.  Instead, 
3dd0: 70 61 73 73 20 74 68 65 20 63 6f 6d 70 6c 65 74  pass the complet
3de0: 65 20 74 61 62 6c 65 0a 74 6f 20 3c 62 3e 73 71  e table.to <b>sq
3df0: 6c 69 74 65 5f 66 72 65 65 5f 74 61 62 6c 65 28  lite_free_table(
3e00: 29 3c 2f 62 3e 20 77 68 65 6e 20 74 68 65 20 74  )</b> when the t
3e10: 61 62 6c 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  able is no longe
3e20: 72 20 6e 65 65 64 65 64 2e 0a 49 74 20 69 73 20  r needed..It is 
3e30: 73 61 66 65 20 74 6f 20 63 61 6c 6c 20 3c 62 3e  safe to call <b>
3e40: 73 71 6c 69 74 65 5f 66 72 65 65 5f 74 61 62 6c  sqlite_free_tabl
3e50: 65 28 29 3c 2f 62 3e 20 77 69 74 68 20 61 20 4e  e()</b> with a N
3e60: 55 4c 4c 20 70 6f 69 6e 74 65 72 20 73 75 63 68  ULL pointer such
3e70: 0a 61 73 20 77 6f 75 6c 64 20 62 65 20 72 65 74  .as would be ret
3e80: 75 72 6e 65 64 20 69 66 20 74 68 65 20 72 65 73  urned if the res
3e90: 75 6c 74 20 73 65 74 20 69 73 20 65 6d 70 74 79  ult set is empty
3ea0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 3c 62  .</p>..<p>The <b
3eb0: 3e 73 71 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c  >sqlite_get_tabl
3ec0: 65 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65 20  e()</b> routine 
3ed0: 72 65 74 75 72 6e 73 20 74 68 65 20 73 61 6d 65  returns the same
3ee0: 20 69 6e 74 65 67 65 72 0a 72 65 73 75 6c 74 20   integer.result 
3ef0: 63 6f 64 65 20 61 73 20 3c 62 3e 73 71 6c 69 74  code as <b>sqlit
3f00: 65 5f 65 78 65 63 28 29 3c 2f 62 3e 2e 3c 2f 70  e_exec()</b>.</p
3f10: 3e 0a 0a 3c 68 32 3e 49 6e 74 65 72 72 75 70 74  >..<h2>Interrupt
3f20: 69 6e 67 20 61 6e 20 53 51 4c 69 74 65 20 6f 70  ing an SQLite op
3f30: 65 72 61 74 69 6f 6e 3c 2f 68 32 3e 0a 0a 3c 70  eration</h2>..<p
3f40: 3e 54 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 69  >The <b>sqlite_i
3f50: 6e 74 65 72 72 75 70 74 28 29 3c 2f 62 3e 20 66  nterrupt()</b> f
3f60: 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 63  unction can be c
3f70: 61 6c 6c 65 64 20 66 72 6f 6d 20 61 0a 64 69 66  alled from a.dif
3f80: 66 65 72 65 6e 74 20 74 68 72 65 61 64 20 6f 72  ferent thread or
3f90: 20 66 72 6f 6d 20 61 20 73 69 67 6e 61 6c 20 68   from a signal h
3fa0: 61 6e 64 6c 65 72 20 74 6f 20 63 61 75 73 65 20  andler to cause 
3fb0: 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61  the current data
3fc0: 62 61 73 65 0a 6f 70 65 72 61 74 69 6f 6e 20 74  base.operation t
3fd0: 6f 20 65 78 69 74 20 61 74 20 69 74 73 20 66 69  o exit at its fi
3fe0: 72 73 74 20 6f 70 70 6f 72 74 75 6e 69 74 79 2e  rst opportunity.
3ff0: 20 20 57 68 65 6e 20 74 68 69 73 20 68 61 70 70    When this happ
4000: 65 6e 73 2c 0a 74 68 65 20 3c 62 3e 73 71 6c 69  ens,.the <b>sqli
4010: 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e 20 72 6f  te_exec()</b> ro
4020: 75 74 69 6e 65 20 28 6f 72 20 74 68 65 20 65 71  utine (or the eq
4030: 75 69 76 61 6c 65 6e 74 29 20 74 68 61 74 20 73  uivalent) that s
4040: 74 61 72 74 65 64 0a 74 68 65 20 64 61 74 61 62  tarted.the datab
4050: 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 69  ase operation wi
4060: 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  ll return SQLITE
4070: 5f 49 4e 54 45 52 52 55 50 54 2e 3c 2f 70 3e 0a  _INTERRUPT.</p>.
4080: 0a 3c 68 32 3e 54 65 73 74 69 6e 67 20 66 6f 72  .<h2>Testing for
4090: 20 61 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c 20   a complete SQL 
40a0: 73 74 61 74 65 6d 65 6e 74 3c 2f 68 32 3e 0a 0a  statement</h2>..
40b0: 3c 70 3e 54 68 65 20 6e 65 78 74 20 69 6e 74 65  <p>The next inte
40c0: 72 66 61 63 65 20 72 6f 75 74 69 6e 65 20 74 6f  rface routine to
40d0: 20 53 51 4c 69 74 65 20 69 73 20 61 20 63 6f 6e   SQLite is a con
40e0: 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f  venience functio
40f0: 6e 20 75 73 65 64 0a 74 6f 20 74 65 73 74 20 77  n used.to test w
4100: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 20  hether or not a 
4110: 73 74 72 69 6e 67 20 66 6f 72 6d 73 20 61 20 63  string forms a c
4120: 6f 6d 70 6c 65 74 65 20 53 51 4c 20 73 74 61 74  omplete SQL stat
4130: 65 6d 65 6e 74 2e 0a 49 66 20 74 68 65 20 3c 62  ement..If the <b
4140: 3e 73 71 6c 69 74 65 5f 63 6f 6d 70 6c 65 74 65  >sqlite_complete
4150: 28 29 3c 2f 62 3e 20 66 75 6e 63 74 69 6f 6e 20  ()</b> function 
4160: 72 65 74 75 72 6e 73 20 74 72 75 65 20 77 68 65  returns true whe
4170: 6e 20 69 74 73 20 69 6e 70 75 74 0a 69 73 20 61  n its input.is a
4180: 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 74 68   string, then th
4190: 65 20 61 72 67 75 6d 65 6e 74 20 66 6f 72 6d 73  e argument forms
41a0: 20 61 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c 20   a complete SQL 
41b0: 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 72 65  statement..There
41c0: 20 61 72 65 20 6e 6f 20 67 75 61 72 61 6e 74 65   are no guarante
41d0: 65 73 20 74 68 61 74 20 74 68 65 20 73 79 6e 74  es that the synt
41e0: 61 78 20 6f 66 20 74 68 61 74 20 73 74 61 74 65  ax of that state
41f0: 6d 65 6e 74 20 69 73 20 63 6f 72 72 65 63 74 2c  ment is correct,
4200: 0a 62 75 74 20 77 65 20 61 74 20 6c 65 61 73 74  .but we at least
4210: 20 6b 6e 6f 77 20 74 68 65 20 73 74 61 74 65 6d   know the statem
4220: 65 6e 74 20 69 73 20 63 6f 6d 70 6c 65 74 65 2e  ent is complete.
4230: 20 20 49 66 20 3c 62 3e 73 71 6c 69 74 65 5f 63    If <b>sqlite_c
4240: 6f 6d 70 6c 65 74 65 28 29 3c 2f 62 3e 0a 72 65  omplete()</b>.re
4250: 74 75 72 6e 73 20 66 61 6c 73 65 2c 20 74 68 65  turns false, the
4260: 6e 20 6d 6f 72 65 20 74 65 78 74 20 69 73 20 72  n more text is r
4270: 65 71 75 69 72 65 64 20 74 6f 20 63 6f 6d 70 6c  equired to compl
4280: 65 74 65 20 74 68 65 20 53 51 4c 20 73 74 61 74  ete the SQL stat
4290: 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 46  ement.</p>..<p>F
42a0: 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 20 6f  or the purpose o
42b0: 66 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  f the <b>sqlite_
42c0: 63 6f 6d 70 6c 65 74 65 28 29 3c 2f 62 3e 20 66  complete()</b> f
42d0: 75 6e 63 74 69 6f 6e 2c 20 61 6e 20 53 51 4c 0a  unction, an SQL.
42e0: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 63 6f 6d  statement is com
42f0: 70 6c 65 74 65 20 69 66 20 69 74 20 65 6e 64 73  plete if it ends
4300: 20 69 6e 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 2e   in a semicolon.
4310: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 3c 62 3e  </p>..<p>The <b>
4320: 73 71 6c 69 74 65 3c 2f 62 3e 20 63 6f 6d 6d 61  sqlite</b> comma
4330: 6e 64 2d 6c 69 6e 65 20 75 74 69 6c 69 74 79 20  nd-line utility 
4340: 75 73 65 73 20 74 68 65 20 3c 62 3e 73 71 6c 69  uses the <b>sqli
4350: 74 65 5f 63 6f 6d 70 6c 65 74 65 28 29 3c 2f 62  te_complete()</b
4360: 3e 0a 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6b 6e  >.function to kn
4370: 6f 77 20 77 68 65 6e 20 69 74 20 6e 65 65 64 73  ow when it needs
4380: 20 74 6f 20 63 61 6c 6c 20 3c 62 3e 73 71 6c 69   to call <b>sqli
4390: 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e 2e 20 20  te_exec()</b>.  
43a0: 41 66 74 65 72 20 65 61 63 68 0a 6c 69 6e 65 20  After each.line 
43b0: 6f 66 20 69 6e 70 75 74 20 69 73 20 72 65 63 65  of input is rece
43c0: 69 76 65 64 2c 20 3c 62 3e 73 71 6c 69 74 65 3c  ived, <b>sqlite<
43d0: 2f 62 3e 20 63 61 6c 6c 73 20 3c 62 3e 73 71 6c  /b> calls <b>sql
43e0: 69 74 65 5f 63 6f 6d 70 6c 65 74 65 28 29 3c 2f  ite_complete()</
43f0: 62 3e 0a 6f 6e 20 61 6c 6c 20 69 6e 70 75 74 20  b>.on all input 
4400: 69 6e 20 69 74 73 20 62 75 66 66 65 72 2e 20 20  in its buffer.  
4410: 49 66 20 3c 62 3e 73 71 6c 69 74 65 5f 63 6f 6d  If <b>sqlite_com
4420: 70 6c 65 74 65 28 29 3c 2f 62 3e 20 72 65 74 75  plete()</b> retu
4430: 72 6e 73 20 74 72 75 65 2c 20 0a 74 68 65 6e 20  rns true, .then 
4440: 3c 62 3e 73 71 6c 69 74 65 5f 65 78 65 63 28 29  <b>sqlite_exec()
4450: 3c 2f 62 3e 20 69 73 20 63 61 6c 6c 65 64 20 61  </b> is called a
4460: 6e 64 20 74 68 65 20 69 6e 70 75 74 20 62 75 66  nd the input buf
4470: 66 65 72 20 69 73 20 72 65 73 65 74 2e 20 20 49  fer is reset.  I
4480: 66 0a 3c 62 3e 73 71 6c 69 74 65 5f 63 6f 6d 70  f.<b>sqlite_comp
4490: 6c 65 74 65 28 29 3c 2f 62 3e 20 72 65 74 75 72  lete()</b> retur
44a0: 6e 73 20 66 61 6c 73 65 2c 20 74 68 65 6e 20 74  ns false, then t
44b0: 68 65 20 70 72 6f 6d 70 74 20 69 73 20 63 68 61  he prompt is cha
44c0: 6e 67 65 64 20 74 6f 0a 74 68 65 20 63 6f 6e 74  nged to.the cont
44d0: 69 6e 75 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20  inuation prompt 
44e0: 61 6e 64 20 61 6e 6f 74 68 65 72 20 6c 69 6e 65  and another line
44f0: 20 6f 66 20 74 65 78 74 20 69 73 20 72 65 61 64   of text is read
4500: 20 61 6e 64 20 61 64 64 65 64 20 74 6f 0a 74 68   and added to.th
4510: 65 20 69 6e 70 75 74 20 62 75 66 66 65 72 2e 3c  e input buffer.<
4520: 2f 70 3e 0a 0a 3c 68 32 3e 4c 69 62 72 61 72 79  /p>..<h2>Library
4530: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 3c   version string<
4540: 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 53 51 4c  /h2>..<p>The SQL
4550: 69 74 65 20 6c 69 62 72 61 72 79 20 65 78 70 6f  ite library expo
4560: 72 74 73 20 74 68 65 20 73 74 72 69 6e 67 20 63  rts the string c
4570: 6f 6e 73 74 61 6e 74 20 6e 61 6d 65 64 0a 3c 62  onstant named.<b
4580: 3e 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 3c  >sqlite_version<
4590: 2f 62 3e 20 77 68 69 63 68 20 63 6f 6e 74 61 69  /b> which contai
45a0: 6e 73 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e  ns the version n
45b0: 75 6d 62 65 72 20 6f 66 20 74 68 65 0a 6c 69 62  umber of the.lib
45c0: 72 61 72 79 2e 20 20 54 68 65 20 68 65 61 64 65  rary.  The heade
45d0: 72 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20  r file contains 
45e0: 61 20 6d 61 63 72 6f 20 53 51 4c 49 54 45 5f 56  a macro SQLITE_V
45f0: 45 52 53 49 4f 4e 0a 77 69 74 68 20 74 68 65 20  ERSION.with the 
4600: 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  same information
4610: 2e 20 20 49 66 20 64 65 73 69 72 65 64 2c 20 61  .  If desired, a
4620: 20 70 72 6f 67 72 61 6d 20 63 61 6e 20 63 6f 6d   program can com
4630: 70 61 72 65 0a 74 68 65 20 53 51 4c 49 54 45 5f  pare.the SQLITE_
4640: 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f 20 61 67  VERSION macro ag
4650: 61 69 6e 73 74 20 74 68 65 20 3c 62 3e 73 71 6c  ainst the <b>sql
4660: 69 74 65 5f 76 65 72 73 69 6f 6e 3c 2f 62 3e 0a  ite_version</b>.
4670: 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20  string constant 
4680: 74 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 74  to verify that t
4690: 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65  he version numbe
46a0: 72 20 6f 66 20 74 68 65 0a 68 65 61 64 65 72 20  r of the.header 
46b0: 66 69 6c 65 20 61 6e 64 20 74 68 65 20 6c 69 62  file and the lib
46c0: 72 61 72 79 20 6d 61 74 63 68 2e 3c 2f 70 3e 20  rary match.</p> 
46d0: 0a 0a 3c 68 32 3e 4c 69 62 72 61 72 79 20 63 68  ..<h2>Library ch
46e0: 61 72 61 63 74 65 72 20 65 6e 63 6f 64 69 6e 67  aracter encoding
46f0: 3c 2f 68 32 3e 0a 0a 3c 70 3e 42 79 20 64 65 66  </h2>..<p>By def
4700: 61 75 6c 74 2c 20 53 51 4c 69 74 65 20 61 73 73  ault, SQLite ass
4710: 75 6d 65 73 20 74 68 61 74 20 61 6c 6c 20 64 61  umes that all da
4720: 74 61 20 75 73 65 73 20 61 20 66 69 78 65 64 2d  ta uses a fixed-
4730: 73 69 7a 65 0a 38 2d 62 69 74 20 63 68 61 72 61  size.8-bit chara
4740: 63 74 65 72 20 28 69 73 6f 38 38 35 39 29 2e 20  cter (iso8859). 
4750: 20 42 75 74 20 69 66 20 79 6f 75 20 67 69 76 65   But if you give
4760: 20 74 68 65 20 2d 2d 65 6e 61 62 6c 65 2d 75 74   the --enable-ut
4770: 66 38 20 6f 70 74 69 6f 6e 0a 74 6f 20 74 68 65  f8 option.to the
4780: 20 63 6f 6e 66 69 67 75 72 65 20 73 63 72 69 70   configure scrip
4790: 74 2c 20 74 68 65 6e 20 74 68 65 20 6c 69 62 72  t, then the libr
47a0: 61 72 79 20 61 73 73 75 6d 65 73 20 55 54 46 2d  ary assumes UTF-
47b0: 38 20 76 61 72 69 61 62 6c 65 0a 73 69 7a 65 64  8 variable.sized
47c0: 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 54 68   characters.  Th
47d0: 69 73 20 6d 61 6b 65 73 20 61 20 64 69 66 66 65  is makes a diffe
47e0: 72 65 6e 63 65 20 66 6f 72 20 74 68 65 20 4c 49  rence for the LI
47f0: 4b 45 20 61 6e 64 20 47 4c 4f 42 0a 6f 70 65 72  KE and GLOB.oper
4800: 61 74 6f 72 73 20 61 6e 64 20 74 68 65 20 4c 45  ators and the LE
4810: 4e 47 54 48 28 29 20 61 6e 64 20 53 55 42 53 54  NGTH() and SUBST
4820: 52 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  R() functions.  
4830: 54 68 65 20 73 74 61 74 69 63 0a 73 74 72 69 6e  The static.strin
4840: 67 20 3c 62 3e 73 71 6c 69 74 65 5f 65 6e 63 6f  g <b>sqlite_enco
4850: 64 69 6e 67 3c 2f 62 3e 20 77 69 6c 6c 20 62 65  ding</b> will be
4860: 20 73 65 74 20 74 6f 20 65 69 74 68 65 72 20 22   set to either "
4870: 55 54 46 2d 38 22 20 6f 72 0a 22 69 73 6f 38 38  UTF-8" or."iso88
4880: 35 39 22 20 74 6f 20 69 6e 64 69 63 61 74 65 20  59" to indicate 
4890: 68 6f 77 20 74 68 65 20 6c 69 62 72 61 72 79 20  how the library 
48a0: 77 61 73 20 63 6f 6d 70 69 6c 65 64 2e 20 20 49  was compiled.  I
48b0: 6e 20 61 64 64 69 74 69 6f 6e 2c 0a 74 68 65 20  n addition,.the 
48c0: 3c 62 3e 73 71 6c 69 74 65 2e 68 3c 2f 62 3e 20  <b>sqlite.h</b> 
48d0: 68 65 61 64 65 72 20 66 69 6c 65 20 77 69 6c 6c  header file will
48e0: 20 64 65 66 69 6e 65 20 6f 6e 65 20 6f 66 20 74   define one of t
48f0: 68 65 0a 6d 61 63 72 6f 73 20 3c 62 3e 53 51 4c  he.macros <b>SQL
4900: 49 54 45 5f 55 54 46 38 3c 2f 62 3e 20 6f 72 20  ITE_UTF8</b> or 
4910: 3c 62 3e 53 51 4c 49 54 45 5f 49 53 4f 38 38 35  <b>SQLITE_ISO885
4920: 39 3c 2f 62 3e 2c 20 61 73 20 61 70 70 72 6f 70  9</b>, as approp
4930: 72 69 61 74 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e  riate.</p>..<p>N
4940: 6f 74 65 20 74 68 61 74 20 74 68 65 20 63 68 61  ote that the cha
4950: 72 61 63 74 65 72 20 65 6e 63 6f 64 69 6e 67 20  racter encoding 
4960: 6d 65 63 68 61 6e 69 73 6d 20 75 73 65 64 20 62  mechanism used b
4970: 79 20 53 51 4c 69 74 65 20 63 61 6e 6e 6f 74 0a  y SQLite cannot.
4980: 62 65 20 63 68 61 6e 67 65 64 20 61 74 20 72 75  be changed at ru
4990: 6e 2d 74 69 6d 65 2e 20 20 54 68 69 73 20 69 73  n-time.  This is
49a0: 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20   a compile-time 
49b0: 6f 70 74 69 6f 6e 20 6f 6e 6c 79 2e 20 20 54 68  option only.  Th
49c0: 65 0a 3c 62 3e 73 71 6c 69 74 65 5f 65 6e 63 6f  e.<b>sqlite_enco
49d0: 64 69 6e 67 3c 2f 62 3e 20 63 68 61 72 61 63 74  ding</b> charact
49e0: 65 72 20 73 74 72 69 6e 67 20 6a 75 73 74 20 74  er string just t
49f0: 65 6c 6c 73 20 79 6f 75 20 68 6f 77 20 74 68 65  ells you how the
4a00: 20 6c 69 62 72 61 72 79 0a 77 61 73 20 63 6f 6d   library.was com
4a10: 70 69 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 32 3e  piled.</p>..<h2>
4a20: 43 68 61 6e 67 69 6e 67 20 74 68 65 20 6c 69 62  Changing the lib
4a30: 72 61 72 69 65 73 20 72 65 73 70 6f 6e 73 65 20  raries response 
4a40: 74 6f 20 6c 6f 63 6b 65 64 20 66 69 6c 65 73 3c  to locked files<
4a50: 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 3c 62 3e  /h2>..<p>The <b>
4a60: 73 71 6c 69 74 65 5f 62 75 73 79 5f 68 61 6e 64  sqlite_busy_hand
4a70: 6c 65 72 28 29 3c 2f 62 3e 20 70 72 6f 63 65 64  ler()</b> proced
4a80: 75 72 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ure can be used 
4a90: 74 6f 20 72 65 67 69 73 74 65 72 0a 61 20 62 75  to register.a bu
4aa0: 73 79 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68  sy callback with
4ab0: 20 61 6e 20 6f 70 65 6e 20 53 51 4c 69 74 65 20   an open SQLite 
4ac0: 64 61 74 61 62 61 73 65 2e 20 20 54 68 65 20 62  database.  The b
4ad0: 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 77 69 6c  usy callback wil
4ae0: 6c 0a 62 65 20 69 6e 76 6f 6b 65 64 20 77 68 65  l.be invoked whe
4af0: 6e 65 76 65 72 20 53 51 4c 69 74 65 20 74 72 69  never SQLite tri
4b00: 65 73 20 74 6f 20 6f 70 65 6e 20 61 20 66 69 6c  es to open a fil
4b10: 65 20 74 68 61 74 20 69 73 20 6c 6f 63 6b 65 64  e that is locked
4b20: 2e 0a 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 77  ..The callback w
4b30: 69 6c 6c 20 74 79 70 69 63 61 6c 6c 79 20 64 6f  ill typically do
4b40: 20 73 6f 6d 65 20 6f 74 68 65 72 20 75 73 65 66   some other usef
4b50: 75 6c 20 77 6f 72 6b 2c 20 6f 72 20 70 65 72 68  ul work, or perh
4b60: 61 70 73 20 73 6c 65 65 70 2c 0a 69 6e 20 6f 72  aps sleep,.in or
4b70: 64 65 72 20 74 6f 20 67 69 76 65 20 74 68 65 20  der to give the 
4b80: 6c 6f 63 6b 20 61 20 63 68 61 6e 63 65 20 74 6f  lock a chance to
4b90: 20 63 6c 65 61 72 2e 20 20 49 66 20 74 68 65 20   clear.  If the 
4ba0: 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
4bb0: 0a 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20  .non-zero, then 
4bc0: 53 51 4c 69 74 65 20 74 72 69 65 73 20 61 67 61  SQLite tries aga
4bd0: 69 6e 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 64  in to open the d
4be0: 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65 20  atabase and the 
4bf0: 63 79 63 6c 65 0a 72 65 70 65 61 74 73 2e 20 20  cycle.repeats.  
4c00: 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  If the callback 
4c10: 72 65 74 75 72 6e 73 20 7a 65 72 6f 2c 20 74 68  returns zero, th
4c20: 65 6e 20 53 51 4c 69 74 65 20 61 62 6f 72 74 73  en SQLite aborts
4c30: 20 74 68 65 20 63 75 72 72 65 6e 74 0a 6f 70 65   the current.ope
4c40: 72 61 74 69 6f 6e 20 61 6e 64 20 72 65 74 75 72  ration and retur
4c50: 6e 73 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 3c  ns SQLITE_BUSY.<
4c60: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 61 72 67 75  /p>..<p>The argu
4c70: 6d 65 6e 74 73 20 74 6f 20 3c 62 3e 73 71 6c 69  ments to <b>sqli
4c80: 74 65 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28  te_busy_handler(
4c90: 29 3c 2f 62 3e 20 61 72 65 20 74 68 65 20 6f 70  )</b> are the op
4ca0: 61 71 75 65 0a 73 74 72 75 63 74 75 72 65 20 72  aque.structure r
4cb0: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 3c 62 3e  eturned from <b>
4cc0: 73 71 6c 69 74 65 5f 6f 70 65 6e 28 29 3c 2f 62  sqlite_open()</b
4cd0: 3e 2c 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  >, a pointer to 
4ce0: 74 68 65 20 62 75 73 79 0a 63 61 6c 6c 62 61 63  the busy.callbac
4cf0: 6b 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20  k function, and 
4d00: 61 20 67 65 6e 65 72 69 63 20 70 6f 69 6e 74 65  a generic pointe
4d10: 72 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 70  r that will be p
4d20: 61 73 73 65 64 20 61 73 0a 74 68 65 20 66 69 72  assed as.the fir
4d30: 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
4d40: 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  he busy callback
4d50: 2e 20 20 57 68 65 6e 20 53 51 4c 69 74 65 20 69  .  When SQLite i
4d60: 6e 76 6f 6b 65 73 20 74 68 65 0a 62 75 73 79 20  nvokes the.busy 
4d70: 63 61 6c 6c 62 61 63 6b 2c 20 69 74 20 73 65 6e  callback, it sen
4d80: 64 73 20 69 74 20 74 68 72 65 65 20 61 72 67 75  ds it three argu
4d90: 6d 65 6e 74 73 3a 20 20 74 68 65 20 67 65 6e 65  ments:  the gene
4da0: 72 69 63 20 70 6f 69 6e 74 65 72 0a 74 68 61 74  ric pointer.that
4db0: 20 77 61 73 20 70 61 73 73 65 64 20 69 6e 20 61   was passed in a
4dc0: 73 20 74 68 65 20 74 68 69 72 64 20 61 72 67 75  s the third argu
4dd0: 6d 65 6e 74 20 74 6f 20 3c 62 3e 73 71 6c 69 74  ment to <b>sqlit
4de0: 65 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 3c 2f  e_busy_handler</
4df0: 62 3e 2c 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20  b>,.the name of 
4e00: 74 68 65 20 64 61 74 61 62 61 73 65 20 74 61 62  the database tab
4e10: 6c 65 20 6f 72 20 69 6e 64 65 78 20 74 68 61 74  le or index that
4e20: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
4e30: 74 72 79 69 6e 67 0a 74 6f 20 6f 70 65 6e 2c 20  trying.to open, 
4e40: 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  and the number o
4e50: 66 20 74 69 6d 65 73 20 74 68 61 74 20 74 68 65  f times that the
4e60: 20 6c 69 62 72 61 72 79 20 68 61 73 20 61 74 74   library has att
4e70: 65 6d 70 74 65 64 20 74 6f 0a 6f 70 65 6e 20 74  empted to.open t
4e80: 68 65 20 64 61 74 61 62 61 73 65 20 74 61 62 6c  he database tabl
4e90: 65 20 6f 72 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a  e or index.</p>.
4ea0: 0a 3c 70 3e 46 6f 72 20 74 68 65 20 63 6f 6d 6d  .<p>For the comm
4eb0: 6f 6e 20 63 61 73 65 20 77 68 65 72 65 20 77 65  on case where we
4ec0: 20 77 61 6e 74 20 74 68 65 20 62 75 73 79 20 63   want the busy c
4ed0: 61 6c 6c 62 61 63 6b 20 74 6f 20 73 6c 65 65 70  allback to sleep
4ee0: 2c 0a 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  ,.the SQLite lib
4ef0: 72 61 72 79 20 70 72 6f 76 69 64 65 73 20 61 20  rary provides a 
4f00: 63 6f 6e 76 65 6e 69 65 6e 63 65 20 72 6f 75 74  convenience rout
4f10: 69 6e 65 20 3c 62 3e 73 71 6c 69 74 65 5f 62 75  ine <b>sqlite_bu
4f20: 73 79 5f 74 69 6d 65 6f 75 74 28 29 3c 2f 62 3e  sy_timeout()</b>
4f30: 2e 0a 54 68 65 20 66 69 72 73 74 20 61 72 67 75  ..The first argu
4f40: 6d 65 6e 74 20 74 6f 20 3c 62 3e 73 71 6c 69 74  ment to <b>sqlit
4f50: 65 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29  e_busy_timeout()
4f60: 3c 2f 62 3e 20 69 73 20 61 20 70 6f 69 6e 74 65  </b> is a pointe
4f70: 72 20 74 6f 0a 61 6e 20 6f 70 65 6e 20 53 51 4c  r to.an open SQL
4f80: 69 74 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  ite database and
4f90: 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
4fa0: 6d 65 6e 74 20 69 73 20 61 20 6e 75 6d 62 65 72  ment is a number
4fb0: 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   of milliseconds
4fc0: 2e 0a 41 66 74 65 72 20 3c 62 3e 73 71 6c 69 74  ..After <b>sqlit
4fd0: 65 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29  e_busy_timeout()
4fe0: 3c 2f 62 3e 20 68 61 73 20 62 65 65 6e 20 65 78  </b> has been ex
4ff0: 65 63 75 74 65 64 2c 20 74 68 65 20 53 51 4c 69  ecuted, the SQLi
5000: 74 65 20 6c 69 62 72 61 72 79 0a 77 69 6c 6c 20  te library.will 
5010: 77 61 69 74 20 66 6f 72 20 74 68 65 20 6c 6f 63  wait for the loc
5020: 6b 20 74 6f 20 63 6c 65 61 72 20 66 6f 72 20 61  k to clear for a
5030: 74 20 6c 65 61 73 74 20 74 68 65 20 6e 75 6d 62  t least the numb
5040: 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e  er of millisecon
5050: 64 73 20 0a 73 70 65 63 69 66 69 65 64 20 62 65  ds .specified be
5060: 66 6f 72 65 20 69 74 20 72 65 74 75 72 6e 73 20  fore it returns 
5070: 53 51 4c 49 54 45 5f 42 55 53 59 2e 20 20 53 70  SQLITE_BUSY.  Sp
5080: 65 63 69 66 79 69 6e 67 20 7a 65 72 6f 20 6d 69  ecifying zero mi
5090: 6c 6c 69 73 65 63 6f 6e 64 73 20 66 6f 72 0a 74  lliseconds for.t
50a0: 68 65 20 74 69 6d 65 6f 75 74 20 72 65 73 74 6f  he timeout resto
50b0: 72 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  res the default 
50c0: 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 0a 0a 3c  behavior.</p>..<
50d0: 68 32 3e 55 73 69 6e 67 20 74 68 65 20 3c 74 74  h2>Using the <tt
50e0: 3e 5f 70 72 69 6e 74 66 28 29 3c 2f 74 74 3e 20  >_printf()</tt> 
50f0: 77 72 61 70 70 65 72 20 66 75 6e 63 74 69 6f 6e  wrapper function
5100: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66  s</h2>..<p>The f
5110: 6f 75 72 20 75 74 69 6c 69 74 79 20 66 75 6e 63  our utility func
5120: 74 69 6f 6e 73 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c  tions</p>..<p>.<
5130: 75 6c 3e 0a 3c 6c 69 3e 3c 62 3e 73 71 6c 69 74  ul>.<li><b>sqlit
5140: 65 5f 65 78 65 63 5f 70 72 69 6e 74 66 28 29 3c  e_exec_printf()<
5150: 2f 62 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 62 3e  /b></li>.<li><b>
5160: 73 71 6c 69 74 65 5f 65 78 65 63 5f 76 70 72 69  sqlite_exec_vpri
5170: 6e 74 66 28 29 3c 2f 62 3e 3c 2f 6c 69 3e 0a 3c  ntf()</b></li>.<
5180: 6c 69 3e 3c 62 3e 73 71 6c 69 74 65 5f 67 65 74  li><b>sqlite_get
5190: 5f 74 61 62 6c 65 5f 70 72 69 6e 74 66 28 29 3c  _table_printf()<
51a0: 2f 62 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 62 3e  /b></li>.<li><b>
51b0: 73 71 6c 69 74 65 5f 67 65 74 5f 74 61 62 6c 65  sqlite_get_table
51c0: 5f 76 70 72 69 6e 74 66 28 29 3c 2f 62 3e 3c 2f  _vprintf()</b></
51d0: 6c 69 3e 0a 3c 2f 75 6c 3e 0a 3c 2f 70 3e 0a 0a  li>.</ul>.</p>..
51e0: 3c 70 3e 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  <p>implement the
51f0: 20 73 61 6d 65 20 71 75 65 72 79 20 66 75 6e 63   same query func
5200: 74 69 6f 6e 61 6c 69 74 79 20 61 73 20 3c 62 3e  tionality as <b>
5210: 73 71 6c 69 74 65 5f 65 78 65 63 28 29 3c 2f 62  sqlite_exec()</b
5220: 3e 0a 61 6e 64 20 3c 62 3e 73 71 6c 69 74 65 5f  >.and <b>sqlite_
5230: 67 65 74 5f 74 61 62 6c 65 28 29 3c 2f 62 3e 2e  get_table()</b>.
5240: 20 20 42 75 74 20 69 6e 73 74 65 61 64 20 6f 66    But instead of
5250: 20 74 61 6b 69 6e 67 20 61 20 63 6f 6d 70 6c 65   taking a comple
5260: 74 65 0a 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  te.SQL statement
5270: 20 61 73 20 74 68 65 69 72 20 73 65 63 6f 6e 64   as their second
5280: 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 65 20 66   argument, the f
5290: 6f 75 72 20 3c 62 3e 5f 70 72 69 6e 74 66 3c 2f  our <b>_printf</
52a0: 62 3e 0a 72 6f 75 74 69 6e 65 73 20 74 61 6b 65  b>.routines take
52b0: 20 61 20 70 72 69 6e 74 66 2d 73 74 79 6c 65 20   a printf-style 
52c0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e 20 20  format string.  
52d0: 54 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  The SQL statemen
52e0: 74 20 74 6f 0a 62 65 20 65 78 65 63 75 74 65 64  t to.be executed
52f0: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 66 72   is generated fr
5300: 6f 6d 20 74 68 69 73 20 66 6f 72 6d 61 74 20 73  om this format s
5310: 74 72 69 6e 67 20 61 6e 64 20 66 72 6f 6d 20 77  tring and from w
5320: 68 61 74 65 76 65 72 0a 61 64 64 69 74 69 6f 6e  hatever.addition
5330: 61 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  al arguments are
5340: 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65   attached to the
5350: 20 65 6e 64 20 6f 66 20 74 68 65 20 66 75 6e 63   end of the func
5360: 74 69 6f 6e 20 63 61 6c 6c 2e 3c 2f 70 3e 0a 0a  tion call.</p>..
5370: 3c 70 3e 54 68 65 72 65 20 61 72 65 20 74 77 6f  <p>There are two
5380: 20 61 64 76 61 6e 74 61 67 65 73 20 74 6f 20 75   advantages to u
5390: 73 69 6e 67 20 74 68 65 20 53 51 4c 69 74 65 20  sing the SQLite 
53a0: 70 72 69 6e 74 66 0a 66 75 6e 63 74 69 6f 6e 73  printf.functions
53b0: 20 69 6e 73 74 65 61 64 20 6f 66 20 3c 62 3e 73   instead of <b>s
53c0: 70 72 69 6e 74 66 28 29 3c 2f 62 3e 2e 20 20 46  printf()</b>.  F
53d0: 69 72 73 74 20 6f 66 20 61 6c 6c 2c 20 77 69 74  irst of all, wit
53e0: 68 20 74 68 65 0a 53 51 4c 69 74 65 20 70 72 69  h the.SQLite pri
53f0: 6e 74 66 20 72 6f 75 74 69 6e 65 73 2c 20 74 68  ntf routines, th
5400: 65 72 65 20 69 73 20 6e 65 76 65 72 20 61 20 64  ere is never a d
5410: 61 6e 67 65 72 20 6f 66 20 6f 76 65 72 66 6c 6f  anger of overflo
5420: 77 69 6e 67 20 61 0a 73 74 61 74 69 63 20 62 75  wing a.static bu
5430: 66 66 65 72 20 61 73 20 74 68 65 72 65 20 69 73  ffer as there is
5440: 20 77 69 74 68 20 3c 62 3e 73 70 72 69 6e 74 66   with <b>sprintf
5450: 28 29 3c 2f 62 3e 2e 20 20 54 68 65 20 53 51 4c  ()</b>.  The SQL
5460: 69 74 65 0a 70 72 69 6e 74 66 20 72 6f 75 74 69  ite.printf routi
5470: 6e 65 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  nes automaticall
5480: 79 20 61 6c 6c 6f 63 61 74 65 20 28 61 6e 64 20  y allocate (and 
5490: 6c 61 74 65 72 20 66 72 65 65 29 0a 61 73 20 6d  later free).as m
54a0: 75 63 68 20 6d 65 6d 6f 72 79 20 61 73 20 69 73  uch memory as is
54b0: 20 0a 6e 65 63 65 73 73 61 72 79 20 74 6f 20 68   .necessary to h
54c0: 6f 6c 64 20 74 68 65 20 53 51 4c 20 73 74 61 74  old the SQL stat
54d0: 65 6d 65 6e 74 73 20 67 65 6e 65 72 61 74 65 64  ements generated
54e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65  .</p>..<p>The se
54f0: 63 6f 6e 64 20 61 64 76 61 6e 74 61 67 65 20 74  cond advantage t
5500: 68 65 20 53 51 4c 69 74 65 20 70 72 69 6e 74 66  he SQLite printf
5510: 20 72 6f 75 74 69 6e 65 73 20 68 61 76 65 20 6f   routines have o
5520: 76 65 72 0a 3c 62 3e 73 70 72 69 6e 74 66 28 29  ver.<b>sprintf()
5530: 3c 2f 62 3e 20 69 73 20 61 20 6e 65 77 20 66 6f  </b> is a new fo
5540: 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 20  rmatting option 
5550: 73 70 65 63 69 66 69 63 61 6c 6c 79 20 64 65 73  specifically des
5560: 69 67 6e 65 64 0a 74 6f 20 73 75 70 70 6f 72 74  igned.to support
5570: 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73   string literals
5580: 20 69 6e 20 53 51 4c 2e 20 20 57 69 74 68 69 6e   in SQL.  Within
5590: 20 74 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69   the format stri
55a0: 6e 67 2c 0a 74 68 65 20 25 71 20 66 6f 72 6d 61  ng,.the %q forma
55b0: 74 74 69 6e 67 20 6f 70 74 69 6f 6e 20 77 6f 72  tting option wor
55c0: 6b 73 20 76 65 72 79 20 6d 75 63 68 20 6c 69 6b  ks very much lik
55d0: 65 20 25 73 20 69 6e 20 74 68 61 74 20 69 74 0a  e %s in that it.
55e0: 72 65 61 64 73 20 61 20 6e 75 6c 6c 2d 74 65 72  reads a null-ter
55f0: 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67 20 66  minated string f
5600: 72 6f 6d 20 74 68 65 20 61 72 67 75 6d 65 6e 74  rom the argument
5610: 20 6c 69 73 74 20 61 6e 64 20 69 6e 73 65 72 74   list and insert
5620: 73 0a 69 74 20 69 6e 74 6f 20 74 68 65 20 72 65  s.it into the re
5630: 73 75 6c 74 2e 20 20 42 75 74 20 25 71 20 74 72  sult.  But %q tr
5640: 61 6e 73 6c 61 74 65 73 20 74 68 65 20 69 6e 73  anslates the ins
5650: 65 72 74 65 64 20 73 74 72 69 6e 67 20 62 79 0a  erted string by.
5660: 6d 61 6b 69 6e 67 20 74 77 6f 20 63 6f 70 69 65  making two copie
5670: 73 20 6f 66 20 65 76 65 72 79 20 73 69 6e 67 6c  s of every singl
5680: 65 2d 71 75 6f 74 65 20 28 27 29 20 63 68 61 72  e-quote (') char
5690: 61 63 74 65 72 20 69 6e 20 74 68 65 0a 73 75 62  acter in the.sub
56a0: 73 74 69 74 75 74 65 64 20 73 74 72 69 6e 67 2e  stituted string.
56b0: 20 20 54 68 69 73 20 68 61 73 20 74 68 65 20 65    This has the e
56c0: 66 66 65 63 74 20 6f 66 20 65 73 63 61 70 69 6e  ffect of escapin
56d0: 67 20 74 68 65 20 65 6e 64 2d 6f 66 2d 73 74 72  g the end-of-str
56e0: 69 6e 67 0a 6d 65 61 6e 69 6e 67 20 6f 66 20 73  ing.meaning of s
56f0: 69 6e 67 6c 65 2d 71 75 6f 74 65 20 77 69 74 68  ingle-quote with
5700: 69 6e 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  in a string lite
5710: 72 61 6c 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 43 6f  ral..</p>..<p>Co
5720: 6e 73 69 64 65 72 20 61 6e 20 65 78 61 6d 70 6c  nsider an exampl
5730: 65 2e 20 20 53 75 70 70 6f 73 65 20 79 6f 75 20  e.  Suppose you 
5740: 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 69 6e  are trying to in
5750: 73 65 72 74 20 61 20 73 74 72 69 6e 67 0a 76 61  sert a string.va
5760: 6c 75 65 20 69 6e 74 6f 20 61 20 64 61 74 61 62  lue into a datab
5770: 61 73 65 20 74 61 62 6c 65 20 77 68 65 72 65 20  ase table where 
5780: 74 68 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65  the string value
5790: 20 77 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72   was obtained fr
57a0: 6f 6d 0a 75 73 65 72 20 69 6e 70 75 74 2e 20 20  om.user input.  
57b0: 53 75 70 70 6f 73 65 20 74 68 65 20 73 74 72 69  Suppose the stri
57c0: 6e 67 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65  ng to be inserte
57d0: 64 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 61  d is stored in a
57e0: 20 76 61 72 69 61 62 6c 65 0a 6e 61 6d 65 64 20   variable.named 
57f0: 7a 53 74 72 69 6e 67 2e 20 20 54 68 65 20 63 6f  zString.  The co
5800: 64 65 20 74 6f 20 64 6f 20 74 68 65 20 69 6e 73  de to do the ins
5810: 65 72 74 69 6f 6e 20 6d 69 67 68 74 20 6c 6f 6f  ertion might loo
5820: 6b 20 6c 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e  k like this:</p>
5830: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  ..<blockquote><p
5840: 72 65 3e 0a 73 71 6c 69 74 65 5f 65 78 65 63 5f  re>.sqlite_exec_
5850: 70 72 69 6e 74 66 28 64 62 2c 0a 20 20 22 49 4e  printf(db,.  "IN
5860: 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c 65 31  SERT INTO table1
5870: 20 56 41 4c 55 45 53 28 27 25 73 27 29 22 2c 0a   VALUES('%s')",.
5880: 20 20 30 2c 20 30 2c 20 30 2c 20 7a 53 74 72 69    0, 0, 0, zStri
5890: 6e 67 29 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ng);.</pre></blo
58a0: 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 49 66 20  ckquote>..<p>If 
58b0: 74 68 65 20 7a 53 74 72 69 6e 67 20 76 61 72 69  the zString vari
58c0: 61 62 6c 65 20 68 6f 6c 64 73 20 74 65 78 74 20  able holds text 
58d0: 6c 69 6b 65 20 22 48 65 6c 6c 6f 22 2c 20 74 68  like "Hello", th
58e0: 65 6e 20 74 68 69 73 20 73 74 61 74 65 6d 65 6e  en this statemen
58f0: 74 0a 77 69 6c 6c 20 77 6f 72 6b 20 6a 75 73 74  t.will work just
5900: 20 66 69 6e 65 2e 20 20 42 75 74 20 73 75 70 70   fine.  But supp
5910: 6f 73 65 20 74 68 65 20 75 73 65 72 20 65 6e 74  ose the user ent
5920: 65 72 73 20 61 20 73 74 72 69 6e 67 20 6c 69 6b  ers a string lik
5930: 65 20 0a 22 48 69 20 79 27 61 6c 6c 21 22 2e 20  e ."Hi y'all!". 
5940: 20 54 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   The SQL stateme
5950: 6e 74 20 67 65 6e 65 72 61 74 65 64 20 72 65 61  nt generated rea
5960: 64 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 0a  ds as follows:..
5970: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
5980: 3e 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61  >.INSERT INTO ta
5990: 62 6c 65 31 20 56 41 4c 55 45 53 28 27 48 69 20  ble1 VALUES('Hi 
59a0: 79 27 61 6c 6c 27 29 0a 3c 2f 70 72 65 3e 3c 2f  y'all').</pre></
59b0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
59c0: 54 68 69 73 20 69 73 20 6e 6f 74 20 76 61 6c 69  This is not vali
59d0: 64 20 53 51 4c 20 62 65 63 61 75 73 65 20 6f 66  d SQL because of
59e0: 20 74 68 65 20 61 70 6f 73 74 72 6f 70 68 79 20   the apostrophy 
59f0: 69 6e 20 74 68 65 20 77 6f 72 64 20 22 79 27 61  in the word "y'a
5a00: 6c 6c 22 2e 0a 42 75 74 20 69 66 20 74 68 65 20  ll"..But if the 
5a10: 25 71 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f 70  %q formatting op
5a20: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 69 6e 73  tion is used ins
5a30: 74 65 61 64 20 6f 66 20 25 73 2c 20 6c 69 6b 65  tead of %s, like
5a40: 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f   this:</p>..<blo
5a50: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 73 71  ckquote><pre>.sq
5a60: 6c 69 74 65 5f 65 78 65 63 5f 70 72 69 6e 74 66  lite_exec_printf
5a70: 28 64 62 2c 0a 20 20 22 49 4e 53 45 52 54 20 49  (db,.  "INSERT I
5a80: 4e 54 4f 20 74 61 62 6c 65 31 20 56 41 4c 55 45  NTO table1 VALUE
5a90: 53 28 27 25 71 27 29 22 2c 0a 20 20 30 2c 20 30  S('%q')",.  0, 0
5aa0: 2c 20 30 2c 20 7a 53 74 72 69 6e 67 29 3b 0a 3c  , 0, zString);.<
5ab0: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
5ac0: 65 3e 0a 0a 3c 70 3e 54 68 65 6e 20 74 68 65 20  e>..<p>Then the 
5ad0: 67 65 6e 65 72 61 74 65 64 20 53 51 4c 20 77 69  generated SQL wi
5ae0: 6c 6c 20 6c 6f 6f 6b 20 6c 69 6b 65 20 74 68 65  ll look like the
5af0: 20 66 6f 6c 6c 6f 77 69 6e 67 3a 3c 2f 70 3e 0a   following:</p>.
5b00: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72  .<blockquote><pr
5b10: 65 3e 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  e>.INSERT INTO t
5b20: 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27 48 69  able1 VALUES('Hi
5b30: 20 79 27 27 61 6c 6c 27 29 0a 3c 2f 70 72 65 3e   y''all').</pre>
5b40: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
5b50: 70 3e 48 65 72 65 20 74 68 65 20 61 70 6f 73 74  p>Here the apost
5b60: 72 6f 70 68 79 20 68 61 73 20 62 65 65 6e 20 65  rophy has been e
5b70: 73 63 61 70 65 64 20 61 6e 64 20 74 68 65 20 53  scaped and the S
5b80: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  QL statement is 
5b90: 77 65 6c 6c 2d 66 6f 72 6d 65 64 2e 0a 57 68 65  well-formed..Whe
5ba0: 6e 20 67 65 6e 65 72 61 74 69 6e 67 20 53 51 4c  n generating SQL
5bb0: 20 6f 6e 2d 74 68 65 2d 66 6c 79 20 66 72 6f 6d   on-the-fly from
5bc0: 20 64 61 74 61 20 74 68 61 74 20 6d 69 67 68 74   data that might
5bd0: 20 63 6f 6e 74 61 69 6e 20 61 0a 73 69 6e 67 6c   contain a.singl
5be0: 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  e-quote characte
5bf0: 72 20 28 27 29 2c 20 69 74 20 69 73 20 61 6c 77  r ('), it is alw
5c00: 61 79 73 20 61 20 67 6f 6f 64 20 69 64 65 61 20  ays a good idea 
5c10: 74 6f 20 75 73 65 20 74 68 65 0a 53 51 4c 69 74  to use the.SQLit
5c20: 65 20 70 72 69 6e 74 66 20 72 6f 75 74 69 6e 65  e printf routine
5c30: 73 20 61 6e 64 20 74 68 65 20 25 71 20 66 6f 72  s and the %q for
5c40: 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 20 69  matting option i
5c50: 6e 73 74 65 61 64 20 6f 66 20 3c 62 3e 73 70 72  nstead of <b>spr
5c60: 69 6e 74 66 3c 2f 62 3e 2e 0a 3c 2f 70 3e 0a 0a  intf</b>..</p>..
5c70: 3c 68 32 3e 55 73 61 67 65 20 45 78 61 6d 70 6c  <h2>Usage Exampl
5c80: 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 46 6f 72 20  es</h2>..<p>For 
5c90: 65 78 61 6d 70 6c 65 73 20 6f 66 20 68 6f 77 20  examples of how 
5ca0: 74 68 65 20 53 51 4c 69 74 65 20 43 2f 43 2b 2b  the SQLite C/C++
5cb0: 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62   interface can b
5cc0: 65 20 75 73 65 64 2c 0a 72 65 66 65 72 20 74 6f  e used,.refer to
5cd0: 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65   the source code
5ce0: 20 66 6f 72 20 74 68 65 20 3c 62 3e 73 71 6c 69   for the <b>sqli
5cf0: 74 65 3c 2f 62 3e 20 70 72 6f 67 72 61 6d 20 69  te</b> program i
5d00: 6e 20 74 68 65 0a 66 69 6c 65 20 3c 62 3e 73 72  n the.file <b>sr
5d10: 63 2f 73 68 65 6c 6c 2e 63 3c 2f 62 3e 20 6f 66  c/shell.c</b> of
5d20: 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 65 65   the source tree
5d30: 2e 0a 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  ..Additional inf
5d40: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 73  ormation about s
5d50: 71 6c 69 74 65 20 69 73 20 61 76 61 69 6c 61 62  qlite is availab
5d60: 6c 65 20 61 74 0a 3c 61 20 68 72 65 66 3d 22 73  le at.<a href="s
5d70: 71 6c 69 74 65 2e 68 74 6d 6c 22 3e 73 71 6c 69  qlite.html">sqli
5d80: 74 65 2e 68 74 6d 6c 3c 2f 61 3e 2e 0a 53 65 65  te.html</a>..See
5d90: 20 61 6c 73 6f 20 74 68 65 20 73 6f 75 72 63 65   also the source
5da0: 73 20 74 6f 20 74 68 65 20 54 63 6c 20 69 6e 74  s to the Tcl int
5db0: 65 72 66 61 63 65 20 66 6f 72 20 53 51 4c 69 74  erface for SQLit
5dc0: 65 20 69 6e 0a 74 68 65 20 73 6f 75 72 63 65 20  e in.the source 
5dd0: 66 69 6c 65 20 3c 62 3e 73 72 63 2f 74 63 6c 73  file <b>src/tcls
5de0: 71 6c 69 74 65 2e 63 3c 2f 62 3e 2e 3c 2f 70 3e  qlite.c</b>.</p>
5df0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 3c 68  .}..puts {.<p><h
5e00: 72 20 2f 3e 3c 2f 70 3e 0a 3c 70 3e 3c 61 20 68  r /></p>.<p><a h
5e10: 72 65 66 3d 22 69 6e 64 65 78 2e 68 74 6d 6c 22  ref="index.html"
5e20: 3e 3c 69 6d 67 20 73 72 63 3d 22 2f 67 6f 62 61  ><img src="/goba
5e30: 63 6b 2e 6a 70 67 22 20 62 6f 72 64 65 72 3d 30  ck.jpg" border=0
5e40: 20 2f 3e 0a 42 61 63 6b 20 74 6f 20 74 68 65 20   />.Back to the 
5e50: 53 51 4c 69 74 65 20 48 6f 6d 65 20 50 61 67 65  SQLite Home Page
5e60: 3c 2f 61 3e 0a 3c 2f 70 3e 0a 0a 3c 2f 62 6f 64  </a>.</p>..</bod
5e70: 79 3e 3c 2f 68 74 6d 6c 3e 7d 0a                 y></html>}.