/ Hex Artifact Content
Login

Artifact 9ac800854272db5fe439e07b7435b243a5422293:


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: 34 20 32 30 30 30 2f 30 36 2f 30 36 20 31 38 3a  4 2000/06/06 18:
0070: 32 34 3a 34 32 20 64 72 68 20 45 78 70 20 24 7d  24:42 drh Exp $}
0080: 0a 0a 70 75 74 73 20 7b 3c 68 74 6d 6c 3e 0a 3c  ..puts {<html>.<
0090: 68 65 61 64 3e 0a 20 20 3c 74 69 74 6c 65 3e 54  head>.  <title>T
00a0: 68 65 20 43 20 6c 61 6e 67 75 61 67 65 20 69 6e  he C language in
00b0: 74 65 72 66 61 63 65 20 74 6f 20 74 68 65 20 53  terface to the S
00c0: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 3c 2f 74  QLite library</t
00d0: 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a 3c 62  itle>.</head>.<b
00e0: 6f 64 79 20 62 67 63 6f 6c 6f 72 3d 77 68 69 74  ody bgcolor=whit
00f0: 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65 6e  e>.<h1 align=cen
0100: 74 65 72 3e 0a 54 68 65 20 43 20 6c 61 6e 67 75  ter>.The C langu
0110: 61 67 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f  age interface to
0120: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
0130: 61 72 79 0a 3c 2f 68 31 3e 7d 0a 70 75 74 73 20  ary.</h1>}.puts 
0140: 22 3c 70 20 61 6c 69 67 6e 3d 63 65 6e 74 65 72  "<p align=center
0150: 3e 0a 28 54 68 69 73 20 70 61 67 65 20 77 61 73  >.(This page was
0160: 20 6c 61 73 74 20 6d 6f 64 69 66 69 65 64 20 6f   last modified o
0170: 6e 20 5b 6c 72 61 6e 67 65 20 24 72 63 73 69 64  n [lrange $rcsid
0180: 20 33 20 34 5d 20 47 4d 54 29 0a 3c 2f 70 3e 22   3 4] GMT).</p>"
0190: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
01a0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 69  SQLite library i
01b0: 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 62 65  s designed to be
01c0: 20 76 65 72 79 20 65 61 73 79 20 74 6f 20 75 73   very easy to us
01d0: 65 20 66 72 6f 6d 0a 61 20 43 20 6f 72 20 43 2b  e from.a C or C+
01e0: 2b 20 70 72 6f 67 72 61 6d 2e 20 20 54 68 69 73  + program.  This
01f0: 20 64 6f 63 75 6d 65 6e 74 20 67 69 76 65 73 20   document gives 
0200: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0210: 68 65 20 43 2f 43 2b 2b 0a 70 72 6f 67 72 61 6d  he C/C++.program
0220: 6d 69 6e 67 20 69 6e 74 65 72 66 61 63 65 2e 3c  ming interface.<
0230: 2f 70 3e 0a 0a 3c 68 32 3e 54 68 65 20 41 50 49  /p>..<h2>The API
0240: 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e  </h2>..<p>The in
0250: 74 65 72 66 61 63 65 20 74 6f 20 74 68 65 20 53  terface to the S
0260: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 63 6f  QLite library co
0270: 6e 73 69 73 74 73 20 6f 66 20 34 20 66 75 6e 63  nsists of 4 func
0280: 74 69 6f 6e 73 2c 0a 6f 6e 65 20 6f 70 61 71 75  tions,.one opaqu
0290: 65 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65  e data structure
02a0: 2c 20 61 6e 64 20 73 6f 6d 65 20 63 6f 6e 73 74  , and some const
02b0: 61 6e 74 73 20 75 73 65 64 20 61 73 20 72 65 74  ants used as ret
02c0: 75 72 6e 0a 76 61 6c 75 65 73 20 66 72 6f 6d 20  urn.values from 
02d0: 73 71 6c 69 74 65 5f 65 78 65 63 28 29 3a 3c 2f  sqlite_exec():</
02e0: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
02f0: 3c 70 72 65 3e 0a 74 79 70 65 64 65 66 20 73 74  <pre>.typedef st
0300: 72 75 63 74 20 73 71 6c 69 74 65 20 73 71 6c 69  ruct sqlite sqli
0310: 74 65 3b 0a 0a 73 71 6c 69 74 65 20 2a 73 71 6c  te;..sqlite *sql
0320: 69 74 65 5f 6f 70 65 6e 28 63 6f 6e 73 74 20 63  ite_open(const c
0330: 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 69  har *filename, i
0340: 6e 74 20 6d 6f 64 65 2c 20 63 68 61 72 20 2a 2a  nt mode, char **
0350: 65 72 72 6d 73 67 29 3b 0a 0a 76 6f 69 64 20 73  errmsg);..void s
0360: 71 6c 69 74 65 5f 63 6c 6f 73 65 28 73 71 6c 69  qlite_close(sqli
0370: 74 65 2a 29 3b 0a 0a 69 6e 74 20 73 71 6c 69 74  te*);..int sqlit
0380: 65 5f 65 78 65 63 28 0a 20 20 73 71 6c 69 74 65  e_exec(.  sqlite
0390: 2a 2c 0a 20 20 63 68 61 72 20 2a 73 71 6c 2c 0a  *,.  char *sql,.
03a0: 20 20 69 6e 74 20 28 2a 29 28 76 6f 69 64 2a 2c    int (*)(void*,
03b0: 69 6e 74 2c 63 68 61 72 2a 2a 2c 63 68 61 72 2a  int,char**,char*
03c0: 2a 29 2c 0a 20 20 76 6f 69 64 2a 2c 0a 20 20 63  *),.  void*,.  c
03d0: 68 61 72 20 2a 2a 65 72 72 6d 73 67 0a 29 3b 0a  har **errmsg.);.
03e0: 0a 69 6e 74 20 73 71 6c 69 74 65 5f 63 6f 6d 70  .int sqlite_comp
03f0: 6c 65 74 65 28 63 6f 6e 73 74 20 63 68 61 72 20  lete(const char 
0400: 2a 73 71 6c 29 3b 0a 0a 23 64 65 66 69 6e 65 20  *sql);..#define 
0410: 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20 20  SQLITE_OK       
0420: 20 30 20 20 20 20 2f 2a 20 53 75 63 63 65 73 73   0    /* Success
0430: 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 23 64  ful result */.#d
0440: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54  efine SQLITE_INT
0450: 45 52 4e 41 4c 20 20 31 20 20 20 20 2f 2a 20 41  ERNAL  1    /* A
0460: 6e 20 69 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63  n internal logic
0470: 20 65 72 72 6f 72 20 69 6e 20 53 51 4c 69 74 65   error in SQLite
0480: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
0490: 54 45 5f 45 52 52 4f 52 20 20 20 20 20 32 20 20  TE_ERROR     2  
04a0: 20 20 2f 2a 20 53 51 4c 20 65 72 72 6f 72 20 6f    /* SQL error o
04b0: 72 20 6d 69 73 73 69 6e 67 20 64 61 74 61 62 61  r missing databa
04c0: 73 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  se */.#define SQ
04d0: 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 33  LITE_PERM      3
04e0: 20 20 20 20 2f 2a 20 41 63 63 65 73 73 20 70 65      /* Access pe
04f0: 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 20  rmission denied 
0500: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
0510: 45 5f 41 42 4f 52 54 20 20 20 20 20 34 20 20 20  E_ABORT     4   
0520: 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 72 6f 75   /* Callback rou
0530: 74 69 6e 65 20 72 65 71 75 65 73 74 65 64 20 61  tine requested a
0540: 6e 20 61 62 6f 72 74 20 2a 2f 0a 23 64 65 66 69  n abort */.#defi
0550: 6e 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20  ne SQLITE_BUSY  
0560: 20 20 20 20 35 20 20 20 20 2f 2a 20 4f 6e 65 20      5    /* One 
0570: 6f 72 20 6d 6f 72 65 20 64 61 74 61 62 61 73 65  or more database
0580: 20 66 69 6c 65 73 20 61 72 65 20 6c 6f 63 6b 65   files are locke
0590: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
05a0: 49 54 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 36 20  ITE_NOMEM     6 
05b0: 20 20 20 2f 2a 20 41 20 6d 61 6c 6c 6f 63 28 29     /* A malloc()
05c0: 20 66 61 69 6c 65 64 20 2a 2f 0a 23 64 65 66 69   failed */.#defi
05d0: 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e  ne SQLITE_READON
05e0: 4c 59 20 20 37 20 20 20 20 2f 2a 20 41 74 74 65  LY  7    /* Atte
05f0: 6d 70 74 20 74 6f 20 77 72 69 74 65 20 61 20 72  mpt to write a r
0600: 65 61 64 6f 6e 6c 79 20 64 61 74 61 62 61 73 65  eadonly database
0610: 20 2a 2f 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63   */.</pre></bloc
0620: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6c 6c 20  kquote>..<p>All 
0630: 6f 66 20 74 68 65 20 61 62 6f 76 65 20 64 65 66  of the above def
0640: 69 6e 69 74 69 6f 6e 73 20 61 72 65 20 69 6e 63  initions are inc
0650: 6c 75 64 65 64 20 69 6e 20 74 68 65 20 22 73 71  luded in the "sq
0660: 6c 69 74 65 2e 68 22 0a 68 65 61 64 65 72 20 66  lite.h".header f
0670: 69 6c 65 20 74 68 61 74 20 63 6f 6d 65 73 20 69  ile that comes i
0680: 6e 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 65  n the source tre
0690: 65 2e 3c 2f 70 3e 0a 0a 3c 68 32 3e 4f 70 65 6e  e.</p>..<h2>Open
06a0: 69 6e 67 20 61 20 64 61 74 61 62 61 73 65 3c 2f  ing a database</
06b0: 68 32 3e 0a 0a 3c 70 3e 55 73 65 20 74 68 65 20  h2>..<p>Use the 
06c0: 3c 62 3e 73 71 6c 69 74 65 5f 6f 70 65 6e 28 29  <b>sqlite_open()
06d0: 3c 2f 62 3e 20 66 75 6e 63 74 69 6f 6e 20 74 6f  </b> function to
06e0: 20 6f 70 65 6e 20 61 6e 20 65 78 69 73 74 69 6e   open an existin
06f0: 67 20 53 51 4c 69 74 65 0a 64 61 74 61 62 61 73  g SQLite.databas
0700: 65 20 6f 72 20 74 6f 20 63 72 65 61 74 65 20 61  e or to create a
0710: 20 6e 65 77 20 53 51 4c 69 74 65 20 64 61 74 61   new SQLite data
0720: 62 61 73 65 2e 20 20 54 68 65 20 66 69 72 73 74  base.  The first
0730: 20 61 72 67 75 6d 65 6e 74 0a 69 73 20 74 68 65   argument.is the
0740: 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2e 20   database name. 
0750: 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   The second argu
0760: 6d 65 6e 74 20 69 73 20 61 20 63 6f 6e 73 74 61  ment is a consta
0770: 6e 74 20 30 36 36 36 20 74 6f 0a 6f 70 65 6e 20  nt 0666 to.open 
0780: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 6f 72  the database for
0790: 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69   reading and wri
07a0: 74 69 6e 67 20 61 6e 64 20 30 34 34 34 20 74 6f  ting and 0444 to
07b0: 20 6f 70 65 6e 20 74 68 65 0a 64 61 74 61 62 61   open the.databa
07c0: 73 65 20 72 65 61 64 20 6f 6e 6c 79 2e 20 20 54  se read only.  T
07d0: 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
07e0: 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  t is a pointer t
07f0: 6f 20 61 20 73 74 72 69 6e 67 0a 70 6f 69 6e 74  o a string.point
0800: 65 72 2e 20 20 49 66 20 74 68 65 20 74 68 69 72  er.  If the thir
0810: 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 6f  d argument is no
0820: 74 20 4e 55 4c 4c 20 61 6e 64 20 61 6e 20 65 72  t NULL and an er
0830: 72 6f 72 20 6f 63 63 75 72 73 0a 77 68 69 6c 65  ror occurs.while
0840: 20 74 72 79 69 6e 67 20 74 6f 20 6f 70 65 6e 20   trying to open 
0850: 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 74 68  the database, th
0860: 65 6e 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73  en an error mess
0870: 61 67 65 20 77 69 6c 6c 20 62 65 0a 77 72 69 74  age will be.writ
0880: 74 65 6e 20 74 6f 20 6d 65 6d 6f 72 79 20 6f 62  ten to memory ob
0890: 74 61 69 6e 65 64 20 66 72 6f 6d 20 6d 61 6c 6c  tained from mall
08a0: 6f 63 28 29 20 61 6e 64 20 2a 65 72 72 6d 73 67  oc() and *errmsg
08b0: 20 77 69 6c 6c 20 62 65 20 6d 61 64 65 0a 74 6f   will be made.to
08c0: 20 70 6f 69 6e 74 20 74 6f 20 74 68 69 73 20 65   point to this e
08d0: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 54  rror message.  T
08e0: 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74  he calling funct
08f0: 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e 73 69 62  ion is responsib
0900: 6c 65 0a 66 6f 72 20 66 72 65 65 69 6e 67 20 74  le.for freeing t
0910: 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 6e 20 69  he memory when i
0920: 74 20 68 61 73 20 66 69 6e 69 73 68 65 64 20 77  t has finished w
0930: 69 74 68 20 69 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ith it.</p>..<p>
0940: 41 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  An SQLite databa
0950: 73 65 20 69 73 20 6a 75 73 74 20 61 20 64 69 72  se is just a dir
0960: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
0970: 67 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f  g a collection o
0980: 66 0a 47 44 42 4d 20 66 69 6c 65 73 2e 20 20 54  f.GDBM files.  T
0990: 68 65 72 65 20 69 73 20 6f 6e 65 20 47 44 42 4d  here is one GDBM
09a0: 20 66 69 6c 65 20 66 6f 72 20 65 61 63 68 20 74   file for each t
09b0: 61 62 6c 65 20 61 6e 64 20 69 6e 64 65 78 20 69  able and index i
09c0: 6e 20 74 68 65 0a 64 61 74 61 62 61 73 65 2e 20  n the.database. 
09d0: 20 41 6c 6c 20 47 44 42 4d 20 66 69 6c 65 73 20   All GDBM files 
09e0: 65 6e 64 20 77 69 74 68 20 74 68 65 20 22 2e 74  end with the ".t
09f0: 62 6c 22 20 73 75 66 66 69 78 2e 20 20 45 76 65  bl" suffix.  Eve
0a00: 72 79 20 53 51 4c 69 74 65 0a 64 61 74 61 62 61  ry SQLite.databa
0a10: 73 65 20 61 6c 73 6f 20 63 6f 6e 74 61 69 6e 73  se also contains
0a20: 20 61 20 73 70 65 63 69 61 6c 20 64 61 74 61 62   a special datab
0a30: 61 73 65 20 74 61 62 6c 65 20 6e 61 6d 65 64 20  ase table named 
0a40: 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  <b>sqlite_master
0a50: 3c 2f 62 3e 0a 73 74 6f 72 65 64 20 69 6e 20 69  </b>.stored in i
0a60: 74 73 20 6f 77 6e 20 47 44 42 4d 20 66 69 6c 65  ts own GDBM file
0a70: 2e 20 20 54 68 69 73 20 73 70 65 63 69 61 6c 20  .  This special 
0a80: 74 61 62 6c 65 20 72 65 63 6f 72 64 73 20 74 68  table records th
0a90: 65 20 64 61 74 61 62 61 73 65 0a 73 63 68 65 6d  e database.schem
0aa0: 61 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 6f 20 63 72  a.</p>..<p>To cr
0ab0: 65 61 74 65 20 61 20 6e 65 77 20 53 51 4c 69 74  eate a new SQLit
0ac0: 65 20 64 61 74 61 62 61 73 65 2c 20 61 6c 6c 20  e database, all 
0ad0: 79 6f 75 20 68 61 76 65 20 74 6f 20 64 6f 20 69  you have to do i
0ae0: 73 20 63 61 6c 6c 0a 3c 62 3e 73 71 6c 69 74 65  s call.<b>sqlite
0af0: 5f 6f 70 65 6e 28 29 3c 2f 62 3e 20 77 69 74 68  _open()</b> with
0b00: 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   the first param
0b10: 65 74 65 72 20 73 65 74 20 74 6f 20 74 68 65 20  eter set to the 
0b20: 6e 61 6d 65 20 6f 66 0a 61 6e 20 65 6d 70 74 79  name of.an empty
0b30: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 74   directory and t
0b40: 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
0b50: 74 65 72 20 73 65 74 20 74 6f 20 30 36 36 36 2e  ter set to 0666.
0b60: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 72 65 74  </p>..<p>The ret
0b70: 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 65  urn value of the
0b80: 20 3c 62 3e 73 71 6c 69 74 65 5f 6f 70 65 6e 28   <b>sqlite_open(
0b90: 29 3c 2f 62 3e 20 66 75 6e 63 74 69 6f 6e 20 69  )</b> function i
0ba0: 73 20 61 0a 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a.pointer to a
0bb0: 6e 20 6f 70 61 71 75 65 20 3c 62 3e 73 71 6c 69  n opaque <b>sqli
0bc0: 74 65 3c 2f 62 3e 20 73 74 72 75 63 74 75 72 65  te</b> structure
0bd0: 2e 20 20 54 68 69 73 20 70 6f 69 6e 74 65 72 20  .  This pointer 
0be0: 77 69 6c 6c 0a 62 65 20 74 68 65 20 66 69 72 73  will.be the firs
0bf0: 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 61 6c  t argument to al
0c00: 6c 20 73 75 62 73 65 71 75 65 6e 74 20 53 51 4c  l subsequent SQL
0c10: 69 74 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c  ite function cal
0c20: 6c 73 20 74 68 61 74 0a 64 65 61 6c 20 77 69 74  ls that.deal wit
0c30: 68 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62  h the same datab
0c40: 61 73 65 2e 20 20 4e 55 4c 4c 20 69 73 20 72 65  ase.  NULL is re
0c50: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 6f 70  turned if the op
0c60: 65 6e 20 66 61 69 6c 73 0a 66 6f 72 20 61 6e 79  en fails.for any
0c70: 20 72 65 61 73 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68   reason.</p>..<h
0c80: 32 3e 43 6c 6f 73 69 6e 67 20 74 68 65 20 64 61  2>Closing the da
0c90: 74 61 62 61 73 65 3c 2f 68 32 3e 0a 0a 3c 70 3e  tabase</h2>..<p>
0ca0: 54 6f 20 63 6c 6f 73 65 20 61 6e 20 53 51 4c 69  To close an SQLi
0cb0: 74 65 20 64 61 74 61 62 61 73 65 2c 20 6a 75 73  te database, jus
0cc0: 74 20 63 61 6c 6c 20 74 68 65 20 3c 62 3e 73 71  t call the <b>sq
0cd0: 6c 69 74 65 5f 63 6c 6f 73 65 28 29 3c 2f 62 3e  lite_close()</b>
0ce0: 0a 66 75 6e 63 74 69 6f 6e 20 70 61 73 73 69 6e  .function passin
0cf0: 67 20 69 74 20 74 68 65 20 73 71 6c 69 74 65 20  g it the sqlite 
0d00: 73 74 72 75 63 74 75 72 65 20 70 6f 69 6e 74 65  structure pointe
0d10: 72 20 74 68 61 74 20 77 61 73 20 6f 62 74 61 69  r that was obtai
0d20: 6e 65 64 0a 66 72 6f 6d 20 61 20 70 72 69 6f 72  ned.from a prior
0d30: 20 63 61 6c 6c 20 74 6f 20 3c 62 3e 73 71 6c 69   call to <b>sqli
0d40: 74 65 5f 6f 70 65 6e 3c 2f 62 3e 2e 0a 0a 3c 68  te_open</b>...<h
0d50: 32 3e 45 78 65 63 75 74 69 6e 67 20 53 51 4c 20  2>Executing SQL 
0d60: 73 74 61 74 65 6d 65 6e 74 73 3c 2f 68 32 3e 0a  statements</h2>.
0d70: 0a 3c 70 3e 54 68 65 20 3c 62 3e 73 71 6c 69 74  .<p>The <b>sqlit
0d80: 65 5f 65 78 65 63 28 29 3c 2f 62 3e 20 66 75 6e  e_exec()</b> fun
0d90: 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ction is used to
0da0: 20 70 72 6f 63 65 73 73 20 53 51 4c 20 73 74 61   process SQL sta
0db0: 74 65 6d 65 6e 74 73 0a 61 6e 64 20 71 75 65 72  tements.and quer
0dc0: 69 65 73 2e 20 20 54 68 69 73 20 66 75 6e 63 74  ies.  This funct
0dd0: 69 6f 6e 20 72 65 71 75 69 72 65 73 20 35 20 70  ion requires 5 p
0de0: 61 72 61 6d 65 74 65 72 73 20 61 73 20 66 6f 6c  arameters as fol
0df0: 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a  lows:</p>..<ol>.
0e00: 3c 6c 69 3e 3c 70 3e 41 20 70 6f 69 6e 74 65 72  <li><p>A pointer
0e10: 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 20 73   to the sqlite s
0e20: 74 72 75 63 74 75 72 65 20 6f 62 74 61 69 6e 65  tructure obtaine
0e30: 64 20 66 72 6f 6d 20 61 20 70 72 69 6f 72 20 63  d from a prior c
0e40: 61 6c 6c 0a 20 20 20 20 20 20 20 74 6f 20 3c 62  all.       to <b
0e50: 3e 73 71 6c 69 74 65 5f 6f 70 65 6e 28 29 3c 2f  >sqlite_open()</
0e60: 62 3e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69  b>.</p></li>.<li
0e70: 3e 3c 70 3e 41 20 6e 75 6c 6c 2d 74 65 72 6d 69  ><p>A null-termi
0e80: 6e 61 74 65 64 20 73 74 72 69 6e 67 20 63 6f 6e  nated string con
0e90: 74 61 69 6e 69 6e 67 20 74 68 65 20 74 65 78 74  taining the text
0ea0: 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a   of one or more.
0eb0: 20 20 20 20 20 20 20 53 51 4c 20 73 74 61 74 65         SQL state
0ec0: 6d 65 6e 74 73 20 61 6e 64 2f 6f 72 20 71 75 65  ments and/or que
0ed0: 72 69 65 73 20 74 6f 20 62 65 20 70 72 6f 63 65  ries to be proce
0ee0: 73 73 65 64 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c  ssed.</p></li>.<
0ef0: 6c 69 3e 3c 70 3e 41 20 70 6f 69 6e 74 65 72 20  li><p>A pointer 
0f00: 74 6f 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75  to a callback fu
0f10: 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20  nction which is 
0f20: 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72  invoked once for
0f30: 20 65 61 63 68 0a 20 20 20 20 20 20 20 72 6f 77   each.       row
0f40: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f   in the result o
0f50: 66 20 61 20 71 75 65 72 79 2e 20 20 54 68 69 73  f a query.  This
0f60: 20 61 72 67 75 6d 65 6e 74 20 6d 61 79 20 62 65   argument may be
0f70: 20 4e 55 4c 4c 2c 20 69 6e 20 77 68 69 63 68 0a   NULL, in which.
0f80: 20 20 20 20 20 20 20 63 61 73 65 20 6e 6f 20 63         case no c
0f90: 61 6c 6c 62 61 63 6b 73 20 77 69 6c 6c 20 65 76  allbacks will ev
0fa0: 65 72 20 62 65 20 69 6e 76 6f 6b 65 64 2e 3c 2f  er be invoked.</
0fb0: 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 41  p></li>.<li><p>A
0fc0: 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 69 73   pointer that is
0fd0: 20 66 6f 72 77 61 72 64 65 64 20 74 6f 20 62 65   forwarded to be
0fe0: 63 6f 6d 65 20 74 68 65 20 66 69 72 73 74 20 61  come the first a
0ff0: 72 67 75 6d 65 6e 74 0a 20 20 20 20 20 20 20 74  rgument.       t
1000: 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  o the callback f
1010: 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69  unction.</p></li
1020: 3e 0a 3c 6c 69 3e 3c 70 3e 41 20 70 6f 69 6e 74  >.<li><p>A point
1030: 65 72 20 74 6f 20 61 6e 20 65 72 72 6f 72 20 73  er to an error s
1040: 74 72 69 6e 67 2e 20 20 45 72 72 6f 72 20 6d 65  tring.  Error me
1050: 73 73 61 67 65 73 20 61 72 65 20 77 72 69 74 74  ssages are writt
1060: 65 6e 20 74 6f 20 73 70 61 63 65 0a 20 20 20 20  en to space.    
1070: 20 20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d     obtained from
1080: 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20 74 68   malloc() and th
1090: 65 20 65 72 72 6f 72 20 73 74 72 69 6e 67 20 69  e error string i
10a0: 73 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74 20  s made to point 
10b0: 74 6f 0a 20 20 20 20 20 20 20 74 68 65 20 6d 61  to.       the ma
10c0: 6c 6c 6f 63 65 64 20 73 70 61 63 65 2e 20 20 54  lloced space.  T
10d0: 68 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74  he calling funct
10e0: 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e 73 69 62  ion is responsib
10f0: 6c 65 20 66 6f 72 20 66 72 65 65 69 6e 67 0a 20  le for freeing. 
1100: 20 20 20 20 20 20 74 68 69 73 20 73 70 61 63 65        this space
1110: 20 77 68 65 6e 20 69 74 20 68 61 73 20 66 69 6e   when it has fin
1120: 69 73 68 65 64 20 77 69 74 68 20 69 74 2e 0a 20  ished with it.. 
1130: 20 20 20 20 20 20 54 68 69 73 20 61 72 67 75 6d        This argum
1140: 65 6e 74 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2c  ent may be NULL,
1150: 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 65   in which case e
1160: 72 72 6f 72 20 6d 65 73 73 61 67 65 73 20 61 72  rror messages ar
1170: 65 20 6e 6f 74 0a 20 20 20 20 20 20 20 72 65 70  e not.       rep
1180: 6f 72 74 65 64 20 62 61 63 6b 20 74 6f 20 74 68  orted back to th
1190: 65 20 63 61 6c 6c 69 6e 67 20 66 75 6e 63 74 69  e calling functi
11a0: 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f  on.</p></li>.</o
11b0: 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63 61 6c 6c  l>..<p>.The call
11c0: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73  back function is
11d0: 20 75 73 65 64 20 74 6f 20 72 65 63 65 69 76 65   used to receive
11e0: 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20   the results of 
11f0: 61 20 71 75 65 72 79 2e 20 20 41 0a 70 72 6f 74  a query.  A.prot
1200: 6f 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 61  otype for the ca
1210: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
1220: 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f  is as follows:</
1230: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
1240: 3c 70 72 65 3e 0a 69 6e 74 20 43 61 6c 6c 62 61  <pre>.int Callba
1250: 63 6b 28 76 6f 69 64 20 2a 70 41 72 67 2c 20 69  ck(void *pArg, i
1260: 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 2a  nt argc, char **
1270: 61 72 67 76 2c 20 63 68 61 72 20 2a 2a 63 6f 6c  argv, char **col
1280: 75 6d 6e 4e 61 6d 65 73 29 7b 0a 20 20 72 65 74  umnNames){.  ret
1290: 75 72 6e 20 30 3b 0a 7d 0a 3c 2f 70 72 65 3e 3c  urn 0;.}.</pre><
12a0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
12b0: 3e 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d  >The first argum
12c0: 65 6e 74 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ent to the callb
12d0: 61 63 6b 20 69 73 20 6a 75 73 74 20 61 20 63 6f  ack is just a co
12e0: 70 79 20 6f 66 20 74 68 65 20 66 6f 75 72 74 68  py of the fourth
12f0: 20 61 72 67 75 6d 65 6e 74 0a 74 6f 20 3c 62 3e   argument.to <b>
1300: 73 71 6c 69 74 65 5f 65 78 65 63 28 29 3c 2f 62  sqlite_exec()</b
1310: 3e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  >  This paramete
1320: 72 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  r can be used to
1330: 20 70 61 73 73 20 61 72 62 69 74 72 61 72 79 0a   pass arbitrary.
1340: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 72 6f  information thro
1350: 75 67 68 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ugh to the callb
1360: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f  ack function fro
1370: 6d 20 63 6c 69 65 6e 74 20 63 6f 64 65 2e 0a 54  m client code..T
1380: 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
1390: 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72  nt is the number
13a0: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
13b0: 71 75 65 72 79 20 72 65 73 75 6c 74 2e 0a 54 68  query result..Th
13c0: 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74  e third argument
13d0: 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20   is an array of 
13e0: 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72 69  pointers to stri
13f0: 6e 67 73 20 77 68 65 72 65 20 65 61 63 68 20 73  ngs where each s
1400: 74 72 69 6e 67 0a 69 73 20 61 20 73 69 6e 67 6c  tring.is a singl
1410: 65 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20  e column of the 
1420: 72 65 73 75 6c 74 20 66 6f 72 20 74 68 61 74 20  result for that 
1430: 72 65 63 6f 72 64 2e 20 20 4e 6f 74 65 20 74 68  record.  Note th
1440: 61 74 20 74 68 65 0a 63 61 6c 6c 62 61 63 6b 20  at the.callback 
1450: 66 75 6e 63 74 69 6f 6e 20 72 65 70 6f 72 74 73  function reports
1460: 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 6e   a NULL value in
1470: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73   the database as
1480: 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c   a NULL pointer,
1490: 0a 77 68 69 63 68 20 69 73 20 76 65 72 79 20 64  .which is very d
14a0: 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 61 6e  ifferent from an
14b0: 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 20   empty string.  
14c0: 49 66 20 74 68 65 20 69 2d 74 68 20 70 61 72 61  If the i-th para
14d0: 6d 65 74 65 72 0a 69 73 20 61 6e 20 65 6d 70 74  meter.is an empt
14e0: 79 20 73 74 72 69 6e 67 2c 20 77 65 20 77 69 6c  y string, we wil
14f0: 6c 20 67 65 74 3a 3c 2f 70 3e 0a 3c 62 6c 6f 63  l get:</p>.<bloc
1500: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 61 72 67  kquote><pre>.arg
1510: 76 5b 69 5d 5b 30 5d 20 3d 3d 20 30 0a 3c 2f 70  v[i][0] == 0.</p
1520: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
1530: 0a 3c 70 3e 42 75 74 20 69 66 20 74 68 65 20 69  .<p>But if the i
1540: 2d 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  -th parameter is
1550: 20 4e 55 4c 4c 20 77 65 20 77 69 6c 6c 20 67 65   NULL we will ge
1560: 74 3a 3c 2f 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f  t:</p>.<blockquo
1570: 74 65 3e 3c 70 72 65 3e 0a 61 72 67 76 5b 69 5d  te><pre>.argv[i]
1580: 20 3d 3d 20 30 0a 3c 2f 70 72 65 3e 3c 2f 62 6c   == 0.</pre></bl
1590: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 70 3e 54 68 65  ockquote>.<p>The
15a0: 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f   names of the co
15b0: 6c 75 6d 6e 73 20 61 72 65 20 63 6f 6e 74 61 69  lumns are contai
15c0: 6e 65 64 20 69 6e 20 74 68 65 20 66 6f 75 72 74  ned in the fourt
15d0: 68 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 70 3e 0a  h argument.</p>.
15e0: 0a 3c 70 3e 54 68 65 20 63 61 6c 6c 62 61 63 6b  .<p>The callback
15f0: 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64   function should
1600: 20 6e 6f 72 6d 61 6c 6c 79 20 72 65 74 75 72 6e   normally return
1610: 20 30 2e 20 20 49 66 20 74 68 65 20 63 61 6c 6c   0.  If the call
1620: 62 61 63 6b 0a 66 75 6e 63 74 69 6f 6e 20 72 65  back.function re
1630: 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20  turns non-zero, 
1640: 74 68 65 20 71 75 65 72 79 20 69 73 20 69 6d 6d  the query is imm
1650: 65 64 69 61 74 65 6c 79 20 61 62 6f 72 74 65 64  ediately aborted
1660: 20 61 6e 64 20 0a 3c 62 3e 73 71 6c 69 74 65 5f   and .<b>sqlite_
1670: 65 78 65 63 28 29 3c 2f 62 3e 20 77 69 6c 6c 20  exec()</b> will 
1680: 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 41 42  return SQLITE_AB
1690: 4f 52 54 2e 3c 2f 70 3e 0a 0a 3c 68 32 3e 54 65  ORT.</p>..<h2>Te
16a0: 73 74 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d 70  sting for a comp
16b0: 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65  lete SQL stateme
16c0: 6e 74 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20  nt</h2>..<p>The 
16d0: 6c 61 73 74 20 69 6e 74 65 72 66 61 63 65 20 72  last interface r
16e0: 6f 75 74 69 6e 65 20 74 6f 20 53 51 4c 69 74 65  outine to SQLite
16f0: 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63   is a convenienc
1700: 65 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 0a  e function used.
1710: 74 6f 20 74 65 73 74 20 77 68 65 74 68 65 72 20  to test whether 
1720: 6f 72 20 6e 6f 74 20 61 20 73 74 72 69 6e 67 20  or not a string 
1730: 66 6f 72 6d 73 20 61 20 63 6f 6d 70 6c 65 74 65  forms a complete
1740: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 0a   SQL statement..
1750: 49 66 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  If the <b>sqlite
1760: 5f 63 6f 6d 70 6c 65 74 65 28 29 3c 2f 62 3e 20  _complete()</b> 
1770: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
1780: 20 74 72 75 65 20 77 68 65 6e 20 69 74 73 20 69   true when its i
1790: 6e 70 75 74 0a 69 73 20 61 20 73 74 72 69 6e 67  nput.is a string
17a0: 2c 20 74 68 65 6e 20 74 68 65 20 61 72 67 75 6d  , then the argum
17b0: 65 6e 74 20 66 6f 72 6d 73 20 61 20 63 6f 6d 70  ent forms a comp
17c0: 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65  lete SQL stateme
17d0: 6e 74 2e 0a 54 68 65 72 65 20 61 72 65 20 6e 6f  nt..There are no
17e0: 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74   guarantees that
17f0: 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74   the syntax of t
1800: 68 61 74 20 73 74 61 74 65 6d 65 6e 74 20 69 73  hat statement is
1810: 20 63 6f 72 72 65 63 74 2c 0a 62 75 74 20 77 65   correct,.but we
1820: 20 61 74 20 6c 65 61 73 74 20 6b 6e 6f 77 20 74   at least know t
1830: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  he statement is 
1840: 63 6f 6d 70 6c 65 74 65 2e 20 20 49 66 20 3c 62  complete.  If <b
1850: 3e 73 71 6c 69 74 65 5f 63 6f 6d 70 6c 65 74 65  >sqlite_complete
1860: 28 29 3c 2f 62 3e 0a 72 65 74 75 72 6e 73 20 66  ()</b>.returns f
1870: 61 6c 73 65 2c 20 74 68 65 6e 20 6d 6f 72 65 20  alse, then more 
1880: 74 65 78 74 20 69 73 20 72 65 71 75 69 72 65 64  text is required
1890: 20 74 6f 20 63 6f 6d 70 6c 65 74 65 20 74 68 65   to complete the
18a0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 3c   SQL statement.<
18b0: 2f 70 3e 0a 0a 3c 70 3e 46 6f 72 20 74 68 65 20  /p>..<p>For the 
18c0: 70 75 72 70 6f 73 65 20 6f 66 20 74 68 65 20 3c  purpose of the <
18d0: 62 3e 73 71 6c 69 74 65 5f 63 6f 6d 70 6c 65 74  b>sqlite_complet
18e0: 65 28 29 3c 2f 62 3e 20 66 75 6e 63 74 69 6f 6e  e()</b> function
18f0: 2c 20 61 6e 20 53 51 4c 0a 73 74 61 74 65 6d 65  , an SQL.stateme
1900: 6e 74 20 69 73 20 63 6f 6d 70 6c 65 74 65 20 69  nt is complete i
1910: 66 20 69 74 20 65 6e 64 73 20 69 6e 20 61 20 73  f it ends in a s
1920: 65 6d 69 63 6f 6c 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  emicolon.</p>..<
1930: 70 3e 54 68 65 20 3c 62 3e 73 71 6c 69 74 65 3c  p>The <b>sqlite<
1940: 2f 62 3e 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65  /b> command-line
1950: 20 75 74 69 6c 69 74 79 20 75 73 65 73 20 74 68   utility uses th
1960: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 63 6f 6d 70  e <b>sqlite_comp
1970: 6c 65 74 65 28 29 3c 2f 62 3e 0a 66 75 6e 63 74  lete()</b>.funct
1980: 69 6f 6e 20 74 6f 20 6b 6e 6f 77 20 77 68 65 6e  ion to know when
1990: 20 69 74 20 6e 65 65 64 73 20 74 6f 20 63 61 6c   it needs to cal
19a0: 6c 20 3c 62 3e 73 71 6c 69 74 65 5f 65 78 65 63  l <b>sqlite_exec
19b0: 28 29 3c 2f 62 3e 2e 20 20 41 66 74 65 72 20 65  ()</b>.  After e
19c0: 61 63 68 0a 6c 69 6e 65 20 6f 66 20 69 6e 70 75  ach.line of inpu
19d0: 74 20 69 73 20 72 65 63 65 69 76 65 64 2c 20 3c  t is received, <
19e0: 62 3e 73 71 6c 69 74 65 3c 2f 62 3e 20 63 61 6c  b>sqlite</b> cal
19f0: 6c 73 20 3c 62 3e 73 71 6c 69 74 65 5f 63 6f 6d  ls <b>sqlite_com
1a00: 70 6c 65 74 65 28 29 3c 2f 62 3e 0a 6f 6e 20 61  plete()</b>.on a
1a10: 6c 6c 20 69 6e 70 75 74 20 69 6e 20 69 74 73 20  ll input in its 
1a20: 62 75 66 66 65 72 2e 20 20 49 66 20 3c 62 3e 73  buffer.  If <b>s
1a30: 71 6c 69 74 65 5f 63 6f 6d 70 6c 65 74 65 28 29  qlite_complete()
1a40: 3c 2f 62 3e 20 72 65 74 75 72 6e 73 20 74 72 75  </b> returns tru
1a50: 65 2c 20 0a 74 68 65 6e 20 3c 62 3e 73 71 6c 69  e, .then <b>sqli
1a60: 74 65 5f 65 78 65 63 28 29 3c 2f 62 3e 20 69 73  te_exec()</b> is
1a70: 20 63 61 6c 6c 65 64 20 61 6e 64 20 74 68 65 20   called and the 
1a80: 69 6e 70 75 74 20 62 75 66 66 65 72 20 69 73 20  input buffer is 
1a90: 72 65 73 65 74 2e 20 20 49 66 0a 3c 62 3e 73 71  reset.  If.<b>sq
1aa0: 6c 69 74 65 5f 63 6f 6d 70 6c 65 74 65 28 29 3c  lite_complete()<
1ab0: 2f 62 3e 20 72 65 74 75 72 6e 73 20 66 61 6c 73  /b> returns fals
1ac0: 65 2c 20 74 68 65 6e 20 74 68 65 20 70 72 6f 6d  e, then the prom
1ad0: 70 74 20 69 73 20 63 68 61 6e 67 65 64 20 74 6f  pt is changed to
1ae0: 0a 74 68 65 20 63 6f 6e 74 69 6e 75 61 74 69 6f  .the continuatio
1af0: 6e 20 70 72 6f 6d 70 74 20 61 6e 64 20 61 6e 6f  n prompt and ano
1b00: 74 68 65 72 20 6c 69 6e 65 20 6f 66 20 74 65 78  ther line of tex
1b10: 74 20 69 73 20 72 65 61 64 20 61 6e 64 20 61 64  t is read and ad
1b20: 64 65 64 20 74 6f 0a 74 68 65 20 69 6e 70 75 74  ded to.the input
1b30: 20 62 75 66 66 65 72 2e 3c 2f 70 3e 0a 0a 3c 68   buffer.</p>..<h
1b40: 32 3e 55 73 61 67 65 20 45 78 61 6d 70 6c 65 73  2>Usage Examples
1b50: 3c 2f 68 32 3e 0a 0a 3c 70 3e 46 6f 72 20 65 78  </h2>..<p>For ex
1b60: 61 6d 70 6c 65 73 20 6f 66 20 68 6f 77 20 74 68  amples of how th
1b70: 65 20 53 51 4c 69 74 65 20 43 2f 43 2b 2b 20 69  e SQLite C/C++ i
1b80: 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20  nterface can be 
1b90: 75 73 65 64 2c 0a 72 65 66 65 72 20 74 6f 20 74  used,.refer to t
1ba0: 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66  he source code f
1bb0: 6f 72 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  or the <b>sqlite
1bc0: 3c 2f 62 3e 20 70 72 6f 67 72 61 6d 20 69 6e 20  </b> program in 
1bd0: 74 68 65 0a 66 69 6c 65 20 3c 62 3e 73 72 63 2f  the.file <b>src/
1be0: 73 68 65 6c 6c 2e 63 3c 2f 62 3e 20 6f 66 20 74  shell.c</b> of t
1bf0: 68 65 20 73 6f 75 72 63 65 20 74 72 65 65 2e 0a  he source tree..
1c00: 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  Additional infor
1c10: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 73 71 6c  mation about sql
1c20: 69 74 65 20 69 73 20 61 76 61 69 6c 61 62 6c 65  ite is available
1c30: 20 61 74 0a 3c 61 20 68 72 65 66 3d 22 73 71 6c   at.<a href="sql
1c40: 69 74 65 2e 68 74 6d 6c 22 3e 73 71 6c 69 74 65  ite.html">sqlite
1c50: 2e 68 74 6d 6c 3c 2f 61 3e 2e 0a 53 65 65 20 61  .html</a>..See a
1c60: 6c 73 6f 20 74 68 65 20 73 6f 75 72 63 65 73 20  lso the sources 
1c70: 74 6f 20 74 68 65 20 54 63 6c 20 69 6e 74 65 72  to the Tcl inter
1c80: 66 61 63 65 20 66 6f 72 20 53 51 4c 69 74 65 20  face for SQLite 
1c90: 69 6e 0a 74 68 65 20 73 6f 75 72 63 65 20 66 69  in.the source fi
1ca0: 6c 65 20 3c 62 3e 73 72 63 2f 74 63 6c 73 71 6c  le <b>src/tclsql
1cb0: 69 74 65 2e 63 3c 2f 62 3e 2e 3c 2f 70 3e 0a 7d  ite.c</b>.</p>.}
1cc0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 3c 68 72 20  ..puts {.<p><hr 
1cd0: 2f 3e 3c 2f 70 3e 0a 3c 70 3e 3c 61 20 68 72 65  /></p>.<p><a hre
1ce0: 66 3d 22 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 3c  f="index.html"><
1cf0: 69 6d 67 20 73 72 63 3d 22 2f 67 6f 62 61 63 6b  img src="/goback
1d00: 2e 6a 70 67 22 20 62 6f 72 64 65 72 3d 30 20 2f  .jpg" border=0 /
1d10: 3e 0a 42 61 63 6b 20 74 6f 20 74 68 65 20 53 51  >.Back to the SQ
1d20: 4c 69 74 65 20 48 6f 6d 65 20 50 61 67 65 3c 2f  Lite Home Page</
1d30: 61 3e 0a 3c 2f 70 3e 0a 0a 3c 2f 62 6f 64 79 3e  a>.</p>..</body>
1d40: 3c 2f 68 74 6d 6c 3e 7d 0a                       </html>}.