System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 06a95a9126be071d84be55d4252ecfcde1db73d8:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
0170: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 0d 0a 23  ns.Generic;....#
0180: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0190: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
01a0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75   using System.Ru
01b0: 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72  ntime.InteropSer
01c0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01d0: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
01e0: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e  >..  /// This in
01f0: 74 65 72 6e 61 6c 20 63 6c 61 73 73 20 70 72 6f  ternal class pro
0200: 76 69 64 65 73 20 74 68 65 20 66 6f 75 6e 64 61  vides the founda
0210: 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 73  tion of SQLite s
0220: 75 70 70 6f 72 74 2e 20 20 49 74 20 64 65 66 69  upport.  It defi
0230: 6e 65 73 20 61 6c 6c 20 74 68 65 20 61 62 73 74  nes all the abst
0240: 72 61 63 74 20 6d 65 6d 62 65 72 73 20 6e 65 65  ract members nee
0250: 64 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  ded to implement
0260: 0d 0a 20 20 2f 2f 2f 20 61 20 53 51 4c 69 74 65  ..  /// a SQLite
0270: 20 64 61 74 61 20 70 72 6f 76 69 64 65 72 2c 20   data provider, 
0280: 61 6e 64 20 69 6e 68 65 72 69 74 73 20 66 72 6f  and inherits fro
0290: 6d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 20  m SQLiteConvert 
02a0: 77 68 69 63 68 20 61 6c 6c 6f 77 73 20 66 6f 72  which allows for
02b0: 20 73 69 6d 70 6c 65 20 74 72 61 6e 73 6c 61 74   simple translat
02c0: 69 6f 6e 73 20 6f 66 20 73 74 72 69 6e 67 20 74  ions of string t
02d0: 6f 20 61 6e 64 20 66 72 6f 6d 20 53 51 4c 69 74  o and from SQLit
02e0: 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  e...  /// </summ
02f0: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
0300: 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
0310: 53 51 4c 69 74 65 42 61 73 65 20 3a 20 53 51 4c  SQLiteBase : SQL
0320: 69 74 65 43 6f 6e 76 65 72 74 2c 20 49 44 69 73  iteConvert, IDis
0330: 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20  posable..  {..  
0340: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
0350: 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
0360: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0370: 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
0380: 72 20 63 6f 64 65 20 75 73 65 64 20 66 6f 72 20  r code used for 
0390: 6c 6f 67 67 69 6e 67 20 65 78 63 65 70 74 69 6f  logging exceptio
03a0: 6e 73 20 63 61 75 67 68 74 20 69 6e 20 75 73 65  ns caught in use
03b0: 72 2d 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  r-provided..    
03c0: 2f 2f 2f 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  /// code...    /
03d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
03e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
03f0: 74 20 69 6e 74 20 43 4f 52 5f 45 5f 45 58 43 45  t int COR_E_EXCE
0400: 50 54 49 4f 4e 20 3d 20 75 6e 63 68 65 63 6b 65  PTION = unchecke
0410: 64 28 28 69 6e 74 29 30 78 38 30 31 33 31 35 30  d((int)0x8013150
0420: 30 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  0);..    #endreg
0430: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
0440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0480: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  ////....    inte
0490: 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 73 65 28  rnal SQLiteBase(
04a0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
04b0: 73 20 66 6d 74 2c 20 44 61 74 65 54 69 6d 65 4b  s fmt, DateTimeK
04c0: 69 6e 64 20 6b 69 6e 64 2c 20 73 74 72 69 6e 67  ind kind, string
04d0: 20 66 6d 74 53 74 72 69 6e 67 29 0d 0a 20 20 20   fmtString)..   
04e0: 20 20 20 3a 20 62 61 73 65 28 66 6d 74 2c 20 6b     : base(fmt, k
04f0: 69 6e 64 2c 20 66 6d 74 53 74 72 69 6e 67 29 20  ind, fmtString) 
0500: 7b 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  { }....    /// <
0510: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0520: 2f 20 52 65 74 75 72 6e 73 20 61 20 73 74 72 69  / Returns a stri
0530: 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ng representing 
0540: 74 68 65 20 61 63 74 69 76 65 20 76 65 72 73 69  the active versi
0550: 6f 6e 20 6f 66 20 53 51 4c 69 74 65 0d 0a 20 20  on of SQLite..  
0560: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0570: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0580: 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20 56  bstract string V
0590: 65 72 73 69 6f 6e 20 7b 20 67 65 74 3b 20 7d 0d  ersion { get; }.
05a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
05c0: 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20 72  rns an integer r
05d0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
05e0: 61 63 74 69 76 65 20 76 65 72 73 69 6f 6e 20 6f  active version o
05f0: 66 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  f SQLite..    //
0600: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0610: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
0620: 61 63 74 20 69 6e 74 20 56 65 72 73 69 6f 6e 4e  act int VersionN
0630: 75 6d 62 65 72 20 7b 20 67 65 74 3b 20 7d 0d 0a  umber { get; }..
0640: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0650: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
0660: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  ns non-zero if t
0670: 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  his connection t
0680: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  o the database i
0690: 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20  s read-only...  
06a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
06b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
06c0: 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 52  bstract bool IsR
06d0: 65 61 64 4f 6e 6c 79 28 73 74 72 69 6e 67 20 6e  eadOnly(string n
06e0: 61 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ame);..    /// <
06f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0700: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 72 6f  / Returns the ro
0710: 77 69 64 20 6f 66 20 74 68 65 20 6d 6f 73 74 20  wid of the most 
0720: 72 65 63 65 6e 74 20 73 75 63 63 65 73 73 66 75  recent successfu
0730: 6c 20 49 4e 53 45 52 54 20 69 6e 74 6f 20 74 68  l INSERT into th
0740: 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20  e database from 
0750: 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  this connection.
0760: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0770: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
0780: 61 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67  al abstract long
0790: 20 4c 61 73 74 49 6e 73 65 72 74 52 6f 77 49 64   LastInsertRowId
07a0: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f   { get; }..    /
07b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
07c0: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
07d0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e  e number of chan
07e0: 67 65 73 20 74 68 65 20 6c 61 73 74 20 65 78 65  ges the last exe
07f0: 63 75 74 69 6e 67 20 69 6e 73 65 72 74 2f 75 70  cuting insert/up
0800: 64 61 74 65 20 63 61 75 73 65 64 2e 0d 0a 20 20  date caused...  
0810: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0820: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0830: 62 73 74 72 61 63 74 20 69 6e 74 20 43 68 61 6e  bstract int Chan
0840: 67 65 73 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20  ges { get; }..  
0850: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0860: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
0870: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 6d   the amount of m
0880: 65 6d 6f 72 79 20 28 69 6e 20 62 79 74 65 73 29  emory (in bytes)
0890: 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
08a0: 65 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  e by the SQLite 
08b0: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20 54  core library.  T
08c0: 68 69 73 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c  his is not reall
08d0: 79 20 61 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  y a per-connecti
08e0: 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75  on..    /// valu
08f0: 65 2c 20 69 74 20 69 73 20 67 6c 6f 62 61 6c 20  e, it is global 
0900: 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 2e 0d  to the process..
0910: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0920: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
0930: 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20  l abstract long 
0940: 4d 65 6d 6f 72 79 55 73 65 64 20 7b 20 67 65 74  MemoryUsed { get
0950: 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ; }..    /// <su
0960: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0970: 52 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69  Returns the maxi
0980: 6d 75 6d 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65  mum amount of me
0990: 6d 6f 72 79 20 28 69 6e 20 62 79 74 65 73 29 20  mory (in bytes) 
09a0: 75 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  used by the SQLi
09b0: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
09c0: 73 69 6e 63 65 20 74 68 65 20 68 69 67 68 2d 77  since the high-w
09d0: 61 74 65 72 20 6d 61 72 6b 20 77 61 73 20 6c 61  ater mark was la
09e0: 73 74 20 72 65 73 65 74 2e 0d 0a 20 20 20 20 2f  st reset...    /
09f0: 2f 2f 20 54 68 69 73 20 69 73 20 6e 6f 74 20 72  // This is not r
0a00: 65 61 6c 6c 79 20 61 20 70 65 72 2d 63 6f 6e 6e  eally a per-conn
0a10: 65 63 74 69 6f 6e 20 76 61 6c 75 65 2c 20 69 74  ection value, it
0a20: 20 69 73 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68   is global to th
0a30: 65 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  e process...    
0a40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0a50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
0a60: 74 72 61 63 74 20 6c 6f 6e 67 20 4d 65 6d 6f 72  tract long Memor
0a70: 79 48 69 67 68 77 61 74 65 72 20 7b 20 67 65 74  yHighwater { get
0a80: 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ; }..    /// <su
0a90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0aa0: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
0ab0: 20 69 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69   if the underlyi
0ac0: 6e 67 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63  ng native connec
0ad0: 74 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 6f  tion handle is o
0ae0: 77 6e 65 64 20 62 79 20 74 68 69 73 20 69 6e 73  wned by this ins
0af0: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tance...    /// 
0b00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0b10: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
0b20: 74 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  t bool OwnHandle
0b30: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f   { get; }..    /
0b40: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0b50: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
0b60: 65 20 6c 6f 67 69 63 61 6c 20 6c 69 73 74 20 6f  e logical list o
0b70: 66 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 73 6f  f functions asso
0b80: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
0b90: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
0ba0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0bb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0bc0: 62 73 74 72 61 63 74 20 49 44 69 63 74 69 6f 6e  bstract IDiction
0bd0: 61 72 79 3c 53 51 4c 69 74 65 46 75 6e 63 74 69  ary<SQLiteFuncti
0be0: 6f 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51 4c  onAttribute, SQL
0bf0: 69 74 65 46 75 6e 63 74 69 6f 6e 3e 20 46 75 6e  iteFunction> Fun
0c00: 63 74 69 6f 6e 73 20 7b 20 67 65 74 3b 20 7d 0d  ctions { get; }.
0c10: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0c20: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73  y>..    /// Sets
0c30: 20 74 68 65 20 73 74 61 74 75 73 20 6f 66 20 74   the status of t
0c40: 68 65 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20  he memory usage 
0c50: 74 72 61 63 6b 69 6e 67 20 73 75 62 73 79 73 74  tracking subsyst
0c60: 65 6d 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65  em in the SQLite
0c70: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20   core library.  
0c80: 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 69 73  By default, this
0c90: 20 69 73 20 65 6e 61 62 6c 65 64 2e 0d 0a 20 20   is enabled...  
0ca0: 20 20 2f 2f 2f 20 49 66 20 74 68 69 73 20 69 73    /// If this is
0cb0: 20 64 69 73 61 62 6c 65 64 2c 20 6d 65 6d 6f 72   disabled, memor
0cc0: 79 20 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67  y usage tracking
0cd0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 65 72   will not be per
0ce0: 66 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 69 73  formed.  This is
0cf0: 20 6e 6f 74 20 72 65 61 6c 6c 79 20 61 20 70 65   not really a pe
0d00: 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c  r-connection val
0d10: 75 65 2c 20 69 74 20 69 73 0d 0a 20 20 20 20 2f  ue, it is..    /
0d20: 2f 2f 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68 65  // global to the
0d30: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 2f   process...    /
0d40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0d50: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
0d60: 6d 65 3d 22 76 61 6c 75 65 22 3e 4e 6f 6e 2d 7a  me="value">Non-z
0d70: 65 72 6f 20 74 6f 20 65 6e 61 62 6c 65 20 6d 65  ero to enable me
0d80: 6d 6f 72 79 20 75 73 61 67 65 20 74 72 61 63 6b  mory usage track
0d90: 69 6e 67 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77  ing, zero otherw
0da0: 69 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ise.</param>..  
0db0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
0dc0: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
0dd0: 20 72 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e   return code (i.
0de0: 65 2e 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63  e. zero for succ
0df0: 65 73 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f  ess and non-zero
0e00: 20 66 6f 72 20 66 61 69 6c 75 72 65 29 2e 3c 2f   for failure).</
0e10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
0e20: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
0e30: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
0e40: 53 65 74 4d 65 6d 6f 72 79 53 74 61 74 75 73 28  SetMemoryStatus(
0e50: 62 6f 6f 6c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  bool value);..  
0e60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0e70: 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74  .    /// Attempt
0e80: 73 20 74 6f 20 66 72 65 65 20 61 73 20 6d 75 63  s to free as muc
0e90: 68 20 68 65 61 70 20 6d 65 6d 6f 72 79 20 61 73  h heap memory as
0ea0: 20 70 6f 73 73 69 62 6c 65 20 66 6f 72 20 74 68   possible for th
0eb0: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
0ec0: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ction...    /// 
0ed0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0ee0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73  /// <returns>A s
0ef0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
0f00: 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e 65 2e  eturn code (i.e.
0f10: 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63 65 73   zero for succes
0f20: 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f 20 66  s and non-zero f
0f30: 6f 72 20 66 61 69 6c 75 72 65 29 2e 3c 2f 72 65  or failure).</re
0f40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
0f50: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
0f60: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65  LiteErrorCode Re
0f70: 6c 65 61 73 65 4d 65 6d 6f 72 79 28 29 3b 0d 0a  leaseMemory();..
0f80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0f90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 68 75 74 64  >..    /// Shutd
0fa0: 6f 77 6e 20 74 68 65 20 53 51 4c 69 74 65 20 65  own the SQLite e
0fb0: 6e 67 69 6e 65 20 73 6f 20 74 68 61 74 20 69 74  ngine so that it
0fc0: 20 63 61 6e 20 62 65 20 72 65 73 74 61 72 74 65   can be restarte
0fd0: 64 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74  d with different
0fe0: 20 63 6f 6e 66 69 67 20 6f 70 74 69 6f 6e 73 2e   config options.
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 57 65 20 64 65 70  ..    /// We dep
1000: 65 6e 64 20 6f 6e 20 61 75 74 6f 20 69 6e 69 74  end on auto init
1010: 69 61 6c 69 7a 61 74 69 6f 6e 20 74 6f 20 72 65  ialization to re
1020: 63 6f 76 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20  cover...    /// 
1030: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1040: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
1050: 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
1060: 65 20 53 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 20  e Shutdown();.. 
1070: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
1090: 69 6e 65 73 20 69 66 20 74 68 65 20 61 73 73 6f  ines if the asso
10a0: 63 69 61 74 65 64 20 6e 61 74 69 76 65 20 63 6f  ciated native co
10b0: 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20  nnection handle 
10c0: 69 73 20 6f 70 65 6e 2e 0d 0a 20 20 20 20 2f 2f  is open...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
10f0: 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
1100: 6f 20 69 66 20 61 20 64 61 74 61 62 61 73 65 20  o if a database 
1110: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70  connection is op
1120: 65 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  en...    /// </r
1130: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
1140: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62  ernal abstract b
1150: 6f 6f 6c 20 49 73 4f 70 65 6e 28 29 3b 0d 0a 20  ool IsOpen();.. 
1160: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1170: 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
1180: 73 20 74 68 65 20 66 75 6c 6c 79 20 71 75 61 6c  s the fully qual
1190: 69 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66  ified path and f
11a0: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
11b0: 20 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 0d   currently open.
11c0: 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
11d0: 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  e, if any...    
11e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1200: 61 6d 65 3d 22 64 62 4e 61 6d 65 22 3e 0d 0a 20  ame="dbName">.. 
1210: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
1220: 6f 66 20 74 68 65 20 61 74 74 61 63 68 65 64 20  of the attached 
1230: 64 61 74 61 62 61 73 65 20 74 6f 20 71 75 65 72  database to quer
1240: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  y...    /// </pa
1250: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1260: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
1270: 20 54 68 65 20 66 75 6c 6c 79 20 71 75 61 6c 69   The fully quali
1280: 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66 69  fied path and fi
1290: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
12a0: 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 20 64  currently open d
12b0: 61 74 61 62 61 73 65 2c 0d 0a 20 20 20 20 2f 2f  atabase,..    //
12c0: 2f 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f  / if any...    /
12d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
12e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
12f0: 72 61 63 74 20 73 74 72 69 6e 67 20 47 65 74 46  ract string GetF
1300: 69 6c 65 4e 61 6d 65 28 73 74 72 69 6e 67 20 64  ileName(string d
1310: 62 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f  bName);..    ///
1320: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1330: 2f 2f 2f 20 4f 70 65 6e 73 20 61 20 64 61 74 61  /// Opens a data
1340: 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  base...    /// <
1350: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1360: 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  // <remarks>..  
1370: 20 20 2f 2f 2f 20 49 6d 70 6c 65 6d 65 6e 74 65    /// Implemente
1380: 72 73 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 53  rs should call S
1390: 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 42 69  QLiteFunction.Bi
13a0: 6e 64 46 75 6e 63 74 69 6f 6e 73 28 29 20 61 6e  ndFunctions() an
13b0: 64 20 73 61 76 65 20 74 68 65 20 61 72 72 61 79  d save the array
13c0: 20 61 66 74 65 72 20 6f 70 65 6e 69 6e 67 20 61   after opening a
13d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
13e0: 20 2f 2f 2f 20 74 6f 20 62 69 6e 64 20 61 6c 6c   /// to bind all
13f0: 20 61 74 74 72 69 62 75 74 65 64 20 75 73 65 72   attributed user
1400: 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f  -defined functio
1410: 6e 73 20 61 6e 64 20 63 6f 6c 6c 61 74 69 6e 67  ns and collating
1420: 20 73 65 71 75 65 6e 63 65 73 20 74 6f 20 74 68   sequences to th
1430: 65 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e  e new connection
1440: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
1450: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  arks>..    /// <
1460: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 46  param name="strF
1470: 69 6c 65 6e 61 6d 65 22 3e 54 68 65 20 66 69 6c  ilename">The fil
1480: 65 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74  ename of the dat
1490: 61 62 61 73 65 20 74 6f 20 6f 70 65 6e 2e 20 20  abase to open.  
14a0: 53 51 4c 69 74 65 20 61 75 74 6f 6d 61 74 69 63  SQLite automatic
14b0: 61 6c 6c 79 20 63 72 65 61 74 65 73 20 69 74 20  ally creates it 
14c0: 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 65 78  if it doesn't ex
14d0: 69 73 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ist.</param>..  
14e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
14f0: 65 3d 22 76 66 73 4e 61 6d 65 22 3e 54 68 65 20  e="vfsName">The 
1500: 6e 61 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20  name of the VFS 
1510: 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c 6c  to use -OR- null
1520: 20 74 6f 20 75 73 65 20 74 68 65 20 64 65 66 61   to use the defa
1530: 75 6c 74 20 56 46 53 2e 3c 2f 70 61 72 61 6d 3e  ult VFS.</param>
1540: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1550: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
1560: 6e 46 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67  nFlags">The flag
1570: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
1580: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
1590: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 3c 2f  nection object</
15a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
15b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 65  <param name="ope
15c0: 6e 46 6c 61 67 73 22 3e 54 68 65 20 6f 70 65 6e  nFlags">The open
15d0: 20 66 6c 61 67 73 20 74 6f 20 75 73 65 20 77 68   flags to use wh
15e0: 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20  en creating the 
15f0: 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 70 61 72 61  connection</para
1600: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
1610: 61 6d 20 6e 61 6d 65 3d 22 6d 61 78 50 6f 6f 6c  am name="maxPool
1620: 53 69 7a 65 22 3e 54 68 65 20 6d 61 78 69 6d 75  Size">The maximu
1630: 6d 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 6f  m size of the po
1640: 6f 6c 20 66 6f 72 20 74 68 65 20 67 69 76 65 6e  ol for the given
1650: 20 66 69 6c 65 6e 61 6d 65 3c 2f 70 61 72 61 6d   filename</param
1660: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1670: 6d 20 6e 61 6d 65 3d 22 75 73 65 50 6f 6f 6c 22  m name="usePool"
1680: 3e 49 66 20 74 72 75 65 2c 20 74 68 65 20 63 6f  >If true, the co
1690: 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  nnection can be 
16a0: 70 75 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20  pulled from the 
16b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 3c  connection pool<
16c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
16d0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
16e0: 6f 69 64 20 4f 70 65 6e 28 73 74 72 69 6e 67 20  oid Open(string 
16f0: 73 74 72 46 69 6c 65 6e 61 6d 65 2c 20 73 74 72  strFilename, str
1700: 69 6e 67 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c  ing vfsName, SQL
1710: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
1720: 67 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  gs connectionFla
1730: 67 73 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  gs, SQLiteOpenFl
1740: 61 67 73 45 6e 75 6d 20 6f 70 65 6e 46 6c 61 67  agsEnum openFlag
1750: 73 2c 20 69 6e 74 20 6d 61 78 50 6f 6f 6c 53 69  s, int maxPoolSi
1760: 7a 65 2c 20 62 6f 6f 6c 20 75 73 65 50 6f 6f 6c  ze, bool usePool
1770: 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  );..    /// <sum
1780: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1790: 6c 6f 73 65 73 20 74 68 65 20 63 75 72 72 65 6e  loses the curren
17a0: 74 6c 79 2d 6f 70 65 6e 20 64 61 74 61 62 61 73  tly-open databas
17b0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
17c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
17d0: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
17e0: 2f 2f 20 41 66 74 65 72 20 74 68 65 20 64 61 74  // After the dat
17f0: 61 62 61 73 65 20 68 61 73 20 62 65 65 6e 20 63  abase has been c
1800: 6c 6f 73 65 64 20 69 6d 70 6c 65 6d 65 74 65 72  losed implemeter
1810: 73 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 53 51  s should call SQ
1820: 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 55 6e 62  LiteFunction.Unb
1830: 69 6e 64 46 75 6e 63 74 69 6f 6e 73 28 29 20 74  indFunctions() t
1840: 6f 20 64 65 61 6c 6c 6f 63 61 74 65 20 61 6c 6c  o deallocate all
1850: 20 69 6e 74 65 72 6f 70 20 61 6c 6c 6f 63 61 74   interop allocat
1860: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f  ed..    /// memo
1870: 72 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ry associated wi
1880: 74 68 20 74 68 65 20 75 73 65 72 2d 64 65 66 69  th the user-defi
1890: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e  ned functions an
18a0: 64 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  d collating sequ
18b0: 65 6e 63 65 73 20 74 69 65 64 20 74 6f 20 74 68  ences tied to th
18c0: 65 20 63 6c 6f 73 65 64 20 63 6f 6e 6e 65 63 74  e closed connect
18d0: 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
18e0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f  remarks>..    //
18f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
1900: 69 73 70 6f 73 69 6e 67 22 3e 4e 6f 6e 2d 7a 65  isposing">Non-ze
1910: 72 6f 20 69 66 20 63 6f 6e 6e 65 63 74 69 6f 6e  ro if connection
1920: 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
1930: 65 64 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  ed, zero otherwi
1940: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
1950: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
1960: 63 74 20 76 6f 69 64 20 43 6c 6f 73 65 28 62 6f  ct void Close(bo
1970: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a  ol disposing);..
1980: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1990: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20  >..    /// Sets 
19a0: 74 68 65 20 62 75 73 79 20 74 69 6d 65 6f 75 74  the busy timeout
19b0: 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
19c0: 6f 6e 2e 20 20 53 51 4c 69 74 65 43 6f 6d 6d 61  on.  SQLiteComma
19d0: 6e 64 20 77 69 6c 6c 20 63 61 6c 6c 20 74 68 69  nd will call thi
19e0: 73 20 62 65 66 6f 72 65 20 65 78 65 63 75 74 69  s before executi
19f0: 6e 67 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 2e 0d  ng any command..
1a00: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1a10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
1a20: 72 61 6d 20 6e 61 6d 65 3d 22 6e 54 69 6d 65 6f  ram name="nTimeo
1a30: 75 74 4d 53 22 3e 54 68 65 20 6e 75 6d 62 65 72  utMS">The number
1a40: 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   of milliseconds
1a50: 20 74 6f 20 77 61 69 74 20 62 65 66 6f 72 65 20   to wait before 
1a60: 72 65 74 75 72 6e 69 6e 67 20 53 51 4c 49 54 45  returning SQLITE
1a70: 5f 42 55 53 59 3c 2f 70 61 72 61 6d 3e 0d 0a 20  _BUSY</param>.. 
1a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
1a90: 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 69 6d  ract void SetTim
1aa0: 65 6f 75 74 28 69 6e 74 20 6e 54 69 6d 65 6f 75  eout(int nTimeou
1ab0: 74 4d 53 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tMS);..    /// <
1ac0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1ad0: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74 65  / Returns the te
1ae0: 78 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65  xt of the last e
1af0: 72 72 6f 72 20 69 73 73 75 65 64 20 62 79 20 53  rror issued by S
1b00: 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  QLite..    /// <
1b10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1b20: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
1b30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1b40: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1b50: 72 69 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f  ring GetLastErro
1b60: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  r();....    /// 
1b70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1b80: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74  // Returns the t
1b90: 65 78 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20  ext of the last 
1ba0: 65 72 72 6f 72 20 69 73 73 75 65 64 20 62 79 20  error issued by 
1bb0: 53 51 4c 69 74 65 20 2d 4f 52 2d 20 74 68 65 20  SQLite -OR- the 
1bc0: 73 70 65 63 69 66 69 65 64 20 64 65 66 61 75 6c  specified defaul
1bd0: 74 20 65 72 72 6f 72 20 74 65 78 74 20 69 66 0d  t error text if.
1be0: 0a 20 20 20 20 2f 2f 2f 20 6e 6f 6e 65 20 69 73  .    /// none is
1bf0: 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20   available from 
1c00: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
1c10: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
1c20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1c30: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c40: 65 3d 22 64 65 66 56 61 6c 75 65 22 3e 0d 0a 20  e="defValue">.. 
1c50: 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72     /// The error
1c60: 20 74 65 78 74 20 74 6f 20 72 65 74 75 72 6e 20   text to return 
1c70: 69 6e 20 74 68 65 20 65 76 65 6e 74 20 74 68 61  in the event tha
1c80: 74 20 6f 6e 65 20 69 73 20 6e 6f 74 20 61 76 61  t one is not ava
1c90: 69 6c 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20  ilable from the 
1ca0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1cb0: 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1cc0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1cd0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
1ce0: 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 74 65 78  // The error tex
1cf0: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
1d00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1d10: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1d20: 72 69 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f  ring GetLastErro
1d30: 72 28 73 74 72 69 6e 67 20 64 65 66 56 61 6c 75  r(string defValu
1d40: 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  e);....    /// <
1d50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1d60: 2f 20 57 68 65 6e 20 70 6f 6f 6c 69 6e 67 20 69  / When pooling i
1d70: 73 20 65 6e 61 62 6c 65 64 2c 20 66 6f 72 63 65  s enabled, force
1d80: 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1d90: 20 74 6f 20 62 65 20 64 69 73 70 6f 73 65 64 20   to be disposed 
1da0: 72 61 74 68 65 72 20 74 68 61 6e 20 72 65 74 75  rather than retu
1db0: 72 6e 65 64 20 74 6f 20 74 68 65 20 70 6f 6f 6c  rned to the pool
1dc0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1dd0: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
1de0: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
1df0: 20 43 6c 65 61 72 50 6f 6f 6c 28 29 3b 0d 0a 0d   ClearPool();...
1e00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1e10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e  y>..    /// When
1e20: 20 70 6f 6f 6c 69 6e 67 20 69 73 20 65 6e 61 62   pooling is enab
1e30: 6c 65 64 2c 20 72 65 74 75 72 6e 73 20 74 68 65  led, returns the
1e40: 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c 20   number of pool 
1e50: 65 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e 67  entries matching
1e60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69 6c   the current fil
1e70: 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e name...    ///
1e80: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1e90: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
1ea0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c  e number of pool
1eb0: 20 65 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e   entries matchin
1ec0: 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69  g the current fi
1ed0: 6c 65 20 6e 61 6d 65 2e 3c 2f 72 65 74 75 72 6e  le name.</return
1ee0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
1ef0: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 43 6f   abstract int Co
1f00: 75 6e 74 50 6f 6f 6c 28 29 3b 0d 0a 0d 0a 20 20  untPool();....  
1f10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1f20: 0a 20 20 20 20 2f 2f 2f 20 50 72 65 70 61 72 65  .    /// Prepare
1f30: 73 20 61 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  s a SQL statemen
1f40: 74 20 66 6f 72 20 65 78 65 63 75 74 69 6f 6e 2e  t for execution.
1f50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1f60: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1f70: 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6e 6e 22 3e  aram name="cnn">
1f80: 54 68 65 20 73 6f 75 72 63 65 20 63 6f 6e 6e 65  The source conne
1f90: 63 74 69 6f 6e 20 70 72 65 70 61 72 69 6e 67 20  ction preparing 
1fa0: 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 43 61  the command.  Ca
1fb0: 6e 20 62 65 20 6e 75 6c 6c 20 66 6f 72 20 61 6e  n be null for an
1fc0: 79 20 63 61 6c 6c 65 72 20 65 78 63 65 70 74 20  y caller except 
1fd0: 4c 49 4e 51 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  LINQ</param>..  
1fe0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ff0: 65 3d 22 73 74 72 53 71 6c 22 3e 54 68 65 20 53  e="strSql">The S
2000: 51 4c 20 63 6f 6d 6d 61 6e 64 20 74 65 78 74 20  QL command text 
2010: 74 6f 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61  to prepare</para
2020: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2030: 61 6d 20 6e 61 6d 65 3d 22 70 72 65 76 69 6f 75  am name="previou
2040: 73 22 3e 54 68 65 20 70 72 65 76 69 6f 75 73 20  s">The previous 
2050: 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 61 20 6d  statement in a m
2060: 75 6c 74 69 2d 73 74 61 74 65 6d 65 6e 74 20 63  ulti-statement c
2070: 6f 6d 6d 61 6e 64 2c 20 6f 72 20 6e 75 6c 6c 20  ommand, or null 
2080: 69 66 20 6e 6f 20 70 72 65 76 69 6f 75 73 20 73  if no previous s
2090: 74 61 74 65 6d 65 6e 74 20 65 78 69 73 74 73 3c  tatement exists<
20a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
20b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69   <param name="ti
20c0: 6d 65 6f 75 74 4d 53 22 3e 54 68 65 20 74 69 6d  meoutMS">The tim
20d0: 65 6f 75 74 20 74 6f 20 77 61 69 74 20 62 65 66  eout to wait bef
20e0: 6f 72 65 20 61 62 6f 72 74 69 6e 67 20 74 68 65  ore aborting the
20f0: 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61 6d 3e   prepare</param>
2100: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2110: 20 6e 61 6d 65 3d 22 73 74 72 52 65 6d 61 69 6e   name="strRemain
2120: 22 3e 54 68 65 20 72 65 6d 61 69 6e 64 65 72 20  ">The remainder 
2130: 6f 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  of the statement
2140: 20 74 68 61 74 20 77 61 73 20 6e 6f 74 20 70 72   that was not pr
2150: 6f 63 65 73 73 65 64 2e 20 20 45 61 63 68 20 63  ocessed.  Each c
2160: 61 6c 6c 20 74 6f 20 70 72 65 70 61 72 65 20 70  all to prepare p
2170: 61 72 73 65 73 20 74 68 65 0d 0a 20 20 20 20 2f  arses the..    /
2180: 2f 2f 20 53 51 4c 20 75 70 20 74 6f 20 74 6f 20  // SQL up to to 
2190: 65 69 74 68 65 72 20 74 68 65 20 65 6e 64 20 6f  either the end o
21a0: 66 20 74 68 65 20 74 65 78 74 20 6f 72 20 74 6f  f the text or to
21b0: 20 74 68 65 20 66 69 72 73 74 20 73 65 6d 69 2d   the first semi-
21c0: 63 6f 6c 6f 6e 20 64 65 6c 69 6d 69 74 65 72 2e  colon delimiter.
21d0: 20 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20    The remaining 
21e0: 74 65 78 74 20 69 73 20 72 65 74 75 72 6e 65 64  text is returned
21f0: 0d 0a 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 66  ..    /// here f
2200: 6f 72 20 61 20 73 75 62 73 65 71 75 65 6e 74 20  or a subsequent 
2210: 63 61 6c 6c 20 74 6f 20 50 72 65 70 61 72 65 28  call to Prepare(
2220: 29 20 75 6e 74 69 6c 20 61 6c 6c 20 74 68 65 20  ) until all the 
2230: 74 65 78 74 20 68 61 73 20 62 65 65 6e 20 70 72  text has been pr
2240: 6f 63 65 73 73 65 64 2e 3c 2f 70 61 72 61 6d 3e  ocessed.</param>
2250: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
2260: 6e 73 3e 52 65 74 75 72 6e 73 20 61 6e 20 69 6e  ns>Returns an in
2270: 69 74 69 61 6c 69 7a 65 64 20 53 51 4c 69 74 65  itialized SQLite
2280: 53 74 61 74 65 6d 65 6e 74 2e 3c 2f 72 65 74 75  Statement.</retu
2290: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
22a0: 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  al abstract SQLi
22b0: 74 65 53 74 61 74 65 6d 65 6e 74 20 50 72 65 70  teStatement Prep
22c0: 61 72 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  are(SQLiteConnec
22d0: 74 69 6f 6e 20 63 6e 6e 2c 20 73 74 72 69 6e 67  tion cnn, string
22e0: 20 73 74 72 53 71 6c 2c 20 53 51 4c 69 74 65 53   strSql, SQLiteS
22f0: 74 61 74 65 6d 65 6e 74 20 70 72 65 76 69 6f 75  tatement previou
2300: 73 2c 20 75 69 6e 74 20 74 69 6d 65 6f 75 74 4d  s, uint timeoutM
2310: 53 2c 20 72 65 66 20 73 74 72 69 6e 67 20 73 74  S, ref string st
2320: 72 52 65 6d 61 69 6e 29 3b 0d 0a 20 20 20 20 2f  rRemain);..    /
2330: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2340: 20 20 2f 2f 2f 20 53 74 65 70 73 20 74 68 72 6f    /// Steps thro
2350: 75 67 68 20 61 20 70 72 65 70 61 72 65 64 20 73  ugh a prepared s
2360: 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 2f  tatement...    /
2370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2380: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2390: 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 53 51  me="stmt">The SQ
23a0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 74 6f  LiteStatement to
23b0: 20 73 74 65 70 20 74 68 72 6f 75 67 68 3c 2f 70   step through</p
23c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
23d0: 72 65 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20  returns>True if 
23e0: 61 20 72 6f 77 20 77 61 73 20 72 65 74 75 72 6e  a row was return
23f0: 65 64 2c 20 46 61 6c 73 65 20 69 66 20 6e 6f 74  ed, False if not
2400: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
2410: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2420: 63 74 20 62 6f 6f 6c 20 53 74 65 70 28 53 51 4c  ct bool Step(SQL
2430: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
2440: 74 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  t);..    /// <su
2450: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2460: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
2470: 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
2480: 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 72  d statement is r
2490: 65 61 64 2d 6f 6e 6c 79 20 69 6e 20 6e 61 74 75  ead-only in natu
24a0: 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  re...    /// </s
24b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
24c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74   <param name="st
24d0: 6d 74 22 3e 54 68 65 20 73 74 61 74 65 6d 65 6e  mt">The statemen
24e0: 74 20 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72  t to check.</par
24f0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
2500: 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68  turns>True if th
2510: 65 20 6f 75 74 65 72 20 71 75 65 72 79 20 69 73  e outer query is
2520: 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 72 65 74   read-only.</ret
2530: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
2540: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
2550: 6c 20 49 73 52 65 61 64 4f 6e 6c 79 28 53 51 4c  l IsReadOnly(SQL
2560: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
2570: 74 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  t);..    /// <su
2580: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2590: 52 65 73 65 74 73 20 61 20 70 72 65 70 61 72 65  Resets a prepare
25a0: 64 20 73 74 61 74 65 6d 65 6e 74 20 73 6f 20 69  d statement so i
25b0: 74 20 63 61 6e 20 62 65 20 65 78 65 63 75 74 65  t can be execute
25c0: 64 20 61 67 61 69 6e 2e 20 20 49 66 20 74 68 65  d again.  If the
25d0: 20 65 72 72 6f 72 20 72 65 74 75 72 6e 65 64 20   error returned 
25e0: 69 73 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  is SQLITE_SCHEMA
25f0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 72 61 6e 73  ,..    /// trans
2600: 70 61 72 65 6e 74 6c 79 20 61 74 74 65 6d 70 74  parently attempt
2610: 20 74 6f 20 72 65 62 75 69 6c 64 20 74 68 65 20   to rebuild the 
2620: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  SQL statement an
2630: 64 20 74 68 72 6f 77 20 61 6e 20 65 72 72 6f 72  d throw an error
2640: 20 69 66 20 74 68 61 74 20 77 61 73 20 6e 6f 74   if that was not
2650: 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20   possible...    
2660: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2670: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2680: 61 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 73  ame="stmt">The s
2690: 74 61 74 65 6d 65 6e 74 20 74 6f 20 72 65 73 65  tatement to rese
26a0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
26b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75  // <returns>Retu
26c0: 72 6e 73 20 2d 31 20 69 66 20 74 68 65 20 73 63  rns -1 if the sc
26d0: 68 65 6d 61 20 63 68 61 6e 67 65 64 20 77 68 69  hema changed whi
26e0: 6c 65 20 72 65 73 65 74 74 69 6e 67 2c 20 30 20  le resetting, 0 
26f0: 69 66 20 74 68 65 20 72 65 73 65 74 20 77 61 73  if the reset was
2700: 20 73 75 63 65 73 73 66 75 6c 20 6f 72 20 36 20   sucessful or 6 
2710: 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 29 20  (SQLITE_LOCKED) 
2720: 69 66 20 74 68 65 20 72 65 73 65 74 20 66 61 69  if the reset fai
2730: 6c 65 64 20 64 75 65 20 74 6f 20 61 20 6c 6f 63  led due to a loc
2740: 6b 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  k</returns>..   
2750: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2760: 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ct SQLiteErrorCo
2770: 64 65 20 52 65 73 65 74 28 53 51 4c 69 74 65 53  de Reset(SQLiteS
2780: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 29 3b 0d  tatement stmt);.
2790: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
27a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74  ary>..    /// At
27b0: 74 65 6d 70 74 73 20 74 6f 20 69 6e 74 65 72 72  tempts to interr
27c0: 75 70 74 20 74 68 65 20 71 75 65 72 79 20 63 75  upt the query cu
27d0: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
27e0: 67 20 6f 6e 20 74 68 65 20 61 73 73 6f 63 69 61  g on the associa
27f0: 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61 74  ted..    /// nat
2800: 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ive database con
2810: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
2820: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2830: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
2840: 61 63 74 20 76 6f 69 64 20 43 61 6e 63 65 6c 28  act void Cancel(
2850: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
2860: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2870: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 62   This function b
2880: 69 6e 64 73 20 61 20 75 73 65 72 2d 64 65 66 69  inds a user-defi
2890: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  ned function to 
28a0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
28b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
28c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
28d0: 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69  ram name="functi
28e0: 6f 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20  onAttribute">.. 
28f0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2900: 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63  cref="SQLiteFunc
2910: 74 69 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e  tionAttribute"/>
2920: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2930: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
2940: 20 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74   /// the metadat
2950: 61 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69  a for the functi
2960: 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
2970: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2980: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2990: 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  m name="function
29a0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
29b0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
29c0: 65 46 75 6e 63 74 69 6f 6e 22 2f 3e 20 6f 62 6a  eFunction"/> obj
29d0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 68 61  ect instance tha
29e0: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  t implements the
29f0: 0d 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69  ..    /// functi
2a00: 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
2a10: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2a20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2a30: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
2a40: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
2a50: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
2a60: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
2a70: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
2a80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2a90: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
2aa0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42   abstract void B
2ab0: 69 6e 64 46 75 6e 63 74 69 6f 6e 28 53 51 4c 69  indFunction(SQLi
2ac0: 74 65 46 75 6e 63 74 69 6f 6e 41 74 74 72 69 62  teFunctionAttrib
2ad0: 75 74 65 20 66 75 6e 63 74 69 6f 6e 41 74 74 72  ute functionAttr
2ae0: 69 62 75 74 65 2c 20 53 51 4c 69 74 65 46 75 6e  ibute, SQLiteFun
2af0: 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20  ction function, 
2b00: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2b10: 46 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d  Flags flags);...
2b20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2b30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
2b40: 20 66 75 6e 63 74 69 6f 6e 20 75 6e 62 69 6e 64   function unbind
2b50: 73 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64  s a user-defined
2b60: 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d 20 74   function from t
2b70: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
2b80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b90: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2ba0: 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  am name="functio
2bb0: 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20  nAttribute">..  
2bc0: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
2bd0: 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
2be0: 69 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e 20  ionAttribute"/> 
2bf0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2c00: 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
2c10: 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74 61  /// the metadata
2c20: 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f   for the functio
2c30: 6e 20 74 6f 20 62 65 20 75 6e 62 6f 75 6e 64 2e  n to be unbound.
2c40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2c50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2c60: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
2c70: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
2c80: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
2c90: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
2ca0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
2cb0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2cc0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
2cd0: 74 75 72 6e 73 3e 4e 6f 6e 2d 7a 65 72 6f 20 69  turns>Non-zero i
2ce0: 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 77  f the function w
2cf0: 61 73 20 75 6e 62 6f 75 6e 64 2e 3c 2f 72 65 74  as unbound.</ret
2d00: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
2d10: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
2d20: 6c 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e  l UnbindFunction
2d30: 28 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41  (SQLiteFunctionA
2d40: 74 74 72 69 62 75 74 65 20 66 75 6e 63 74 69 6f  ttribute functio
2d50: 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51 4c 69  nAttribute, SQLi
2d60: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
2d70: 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20  s flags);....   
2d80: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2d90: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44 6f 75  ct void Bind_Dou
2da0: 62 6c 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ble(SQLiteStatem
2db0: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
2dc0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2dd0: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
2de0: 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
2df0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2e00: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2e10: 64 5f 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  d_Int32(SQLiteSt
2e20: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
2e30: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2e40: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
2e50: 6e 64 65 78 2c 20 49 6e 74 33 32 20 76 61 6c 75  ndex, Int32 valu
2e60: 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  e);..    interna
2e70: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
2e80: 42 69 6e 64 5f 55 49 6e 74 33 32 28 53 51 4c 69  Bind_UInt32(SQLi
2e90: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
2ea0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
2eb0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
2ec0: 6e 74 20 69 6e 64 65 78 2c 20 55 49 6e 74 33 32  nt index, UInt32
2ed0: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e   value);..    in
2ee0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
2ef0: 76 6f 69 64 20 42 69 6e 64 5f 49 6e 74 36 34 28  void Bind_Int64(
2f00: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
2f10: 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  stmt, SQLiteConn
2f20: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
2f30: 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 49 6e  s, int index, In
2f40: 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  t64 value);..   
2f50: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2f60: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 55 49 6e  ct void Bind_UIn
2f70: 74 36 34 28 53 51 4c 69 74 65 53 74 61 74 65 6d  t64(SQLiteStatem
2f80: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
2f90: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2fa0: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
2fb0: 2c 20 55 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  , UInt64 value);
2fc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2fd0: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2fe0: 64 5f 42 6f 6f 6c 65 61 6e 28 53 51 4c 69 74 65  d_Boolean(SQLite
2ff0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3000: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
3010: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
3020: 20 69 6e 64 65 78 2c 20 62 6f 6f 6c 20 76 61 6c   index, bool val
3030: 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ue);..    intern
3040: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
3050: 20 42 69 6e 64 5f 54 65 78 74 28 53 51 4c 69 74   Bind_Text(SQLit
3060: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c  eStatement stmt,
3070: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3080: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e  nFlags flags, in
3090: 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20  t index, string 
30a0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
30b0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
30c0: 6f 69 64 20 42 69 6e 64 5f 42 6c 6f 62 28 53 51  oid Bind_Blob(SQ
30d0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
30e0: 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  mt, SQLiteConnec
30f0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c  tionFlags flags,
3100: 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65   int index, byte
3110: 5b 5d 20 62 6c 6f 62 44 61 74 61 29 3b 0d 0a 20  [] blobData);.. 
3120: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3130: 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44  ract void Bind_D
3140: 61 74 65 54 69 6d 65 28 53 51 4c 69 74 65 53 74  ateTime(SQLiteSt
3150: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
3160: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3170: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
3180: 6e 64 65 78 2c 20 44 61 74 65 54 69 6d 65 20 64  ndex, DateTime d
3190: 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  t);..    interna
31a0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
31b0: 42 69 6e 64 5f 4e 75 6c 6c 28 53 51 4c 69 74 65  Bind_Null(SQLite
31c0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
31d0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
31e0: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
31f0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20   index);....    
3200: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3210: 74 20 69 6e 74 20 42 69 6e 64 5f 50 61 72 61 6d  t int Bind_Param
3220: 43 6f 75 6e 74 28 53 51 4c 69 74 65 53 74 61 74  Count(SQLiteStat
3230: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69  ement stmt, SQLi
3240: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
3250: 73 20 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20 69  s flags);..    i
3260: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
3270: 20 73 74 72 69 6e 67 20 42 69 6e 64 5f 50 61 72   string Bind_Par
3280: 61 6d 4e 61 6d 65 28 53 51 4c 69 74 65 53 74 61  amName(SQLiteSta
3290: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c  tement stmt, SQL
32a0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
32b0: 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e  gs flags, int in
32c0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
32d0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74  nal abstract int
32e0: 20 42 69 6e 64 5f 50 61 72 61 6d 49 6e 64 65 78   Bind_ParamIndex
32f0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3300: 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e   stmt, SQLiteCon
3310: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
3320: 67 73 2c 20 73 74 72 69 6e 67 20 70 61 72 61 6d  gs, string param
3330: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e  Name);....    in
3340: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3350: 69 6e 74 20 43 6f 6c 75 6d 6e 43 6f 75 6e 74 28  int ColumnCount(
3360: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3370: 73 74 6d 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65  stmt);..    inte
3380: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
3390: 72 69 6e 67 20 43 6f 6c 75 6d 6e 4e 61 6d 65 28  ring ColumnName(
33a0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
33b0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
33c0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
33d0: 61 62 73 74 72 61 63 74 20 54 79 70 65 41 66 66  abstract TypeAff
33e0: 69 6e 69 74 79 20 43 6f 6c 75 6d 6e 41 66 66 69  inity ColumnAffi
33f0: 6e 69 74 79 28 53 51 4c 69 74 65 53 74 61 74 65  nity(SQLiteState
3400: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
3410: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
3420: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
3430: 72 69 6e 67 20 43 6f 6c 75 6d 6e 54 79 70 65 28  ring ColumnType(
3440: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3450: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
3460: 20 72 65 66 20 54 79 70 65 41 66 66 69 6e 69 74   ref TypeAffinit
3470: 79 20 6e 41 66 66 69 6e 69 74 79 29 3b 0d 0a 20  y nAffinity);.. 
3480: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3490: 72 61 63 74 20 69 6e 74 20 43 6f 6c 75 6d 6e 49  ract int ColumnI
34a0: 6e 64 65 78 28 53 51 4c 69 74 65 53 74 61 74 65  ndex(SQLiteState
34b0: 6d 65 6e 74 20 73 74 6d 74 2c 20 73 74 72 69 6e  ment stmt, strin
34c0: 67 20 63 6f 6c 75 6d 6e 4e 61 6d 65 29 3b 0d 0a  g columnName);..
34d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
34e0: 74 72 61 63 74 20 73 74 72 69 6e 67 20 43 6f 6c  tract string Col
34f0: 75 6d 6e 4f 72 69 67 69 6e 61 6c 4e 61 6d 65 28  umnOriginalName(
3500: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3510: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3520: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3530: 61 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20  abstract string 
3540: 43 6f 6c 75 6d 6e 44 61 74 61 62 61 73 65 4e 61  ColumnDatabaseNa
3550: 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  me(SQLiteStateme
3560: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3570: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
3580: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
3590: 6e 67 20 43 6f 6c 75 6d 6e 54 61 62 6c 65 4e 61  ng ColumnTableNa
35a0: 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  me(SQLiteStateme
35b0: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
35c0: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
35d0: 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  al abstract bool
35e0: 20 44 6f 65 73 54 61 62 6c 65 45 78 69 73 74 28   DoesTableExist(
35f0: 73 74 72 69 6e 67 20 64 61 74 61 42 61 73 65 2c  string dataBase,
3600: 20 73 74 72 69 6e 67 20 74 61 62 6c 65 29 3b 0d   string table);.
3610: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3620: 73 74 72 61 63 74 20 62 6f 6f 6c 20 43 6f 6c 75  stract bool Colu
3630: 6d 6e 4d 65 74 61 44 61 74 61 28 73 74 72 69 6e  mnMetaData(strin
3640: 67 20 64 61 74 61 42 61 73 65 2c 20 73 74 72 69  g dataBase, stri
3650: 6e 67 20 74 61 62 6c 65 2c 20 73 74 72 69 6e 67  ng table, string
3660: 20 63 6f 6c 75 6d 6e 2c 20 62 6f 6f 6c 20 63 61   column, bool ca
3670: 6e 54 68 72 6f 77 2c 20 72 65 66 20 73 74 72 69  nThrow, ref stri
3680: 6e 67 20 64 61 74 61 54 79 70 65 2c 20 72 65 66  ng dataType, ref
3690: 20 73 74 72 69 6e 67 20 63 6f 6c 6c 61 74 65 53   string collateS
36a0: 65 71 75 65 6e 63 65 2c 20 72 65 66 20 62 6f 6f  equence, ref boo
36b0: 6c 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 62  l notNull, ref b
36c0: 6f 6f 6c 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  ool primaryKey, 
36d0: 72 65 66 20 62 6f 6f 6c 20 61 75 74 6f 49 6e 63  ref bool autoInc
36e0: 72 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 69 6e  rement);..    in
36f0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3700: 76 6f 69 64 20 47 65 74 49 6e 64 65 78 43 6f 6c  void GetIndexCol
3710: 75 6d 6e 45 78 74 65 6e 64 65 64 49 6e 66 6f 28  umnExtendedInfo(
3720: 73 74 72 69 6e 67 20 64 61 74 61 62 61 73 65 2c  string database,
3730: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 2c 20 73   string index, s
3740: 74 72 69 6e 67 20 63 6f 6c 75 6d 6e 2c 20 72 65  tring column, re
3750: 66 20 69 6e 74 20 73 6f 72 74 4d 6f 64 65 2c 20  f int sortMode, 
3760: 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c  ref int onError,
3770: 20 72 65 66 20 73 74 72 69 6e 67 20 63 6f 6c 6c   ref string coll
3780: 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 29 3b 0d  ationSequence);.
3790: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
37a0: 61 62 73 74 72 61 63 74 20 6f 62 6a 65 63 74 20  abstract object 
37b0: 47 65 74 4f 62 6a 65 63 74 28 53 51 4c 69 74 65  GetObject(SQLite
37c0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
37d0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
37e0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
37f0: 63 74 20 64 6f 75 62 6c 65 20 47 65 74 44 6f 75  ct double GetDou
3800: 62 6c 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ble(SQLiteStatem
3810: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3820: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3830: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 42 6f 6f  nal abstract Boo
3840: 6c 65 61 6e 20 47 65 74 42 6f 6f 6c 65 61 6e 28  lean GetBoolean(
3850: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3860: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3870: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3880: 61 62 73 74 72 61 63 74 20 53 42 79 74 65 20 47  abstract SByte G
3890: 65 74 53 42 79 74 65 28 53 51 4c 69 74 65 53 74  etSByte(SQLiteSt
38a0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
38b0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
38c0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
38d0: 20 42 79 74 65 20 47 65 74 42 79 74 65 28 53 51   Byte GetByte(SQ
38e0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
38f0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3900: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3910: 73 74 72 61 63 74 20 49 6e 74 31 36 20 47 65 74  stract Int16 Get
3920: 49 6e 74 31 36 28 53 51 4c 69 74 65 53 74 61 74  Int16(SQLiteStat
3930: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
3940: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
3950: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 55  ernal abstract U
3960: 49 6e 74 31 36 20 47 65 74 55 49 6e 74 31 36 28  Int16 GetUInt16(
3970: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3980: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3990: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
39a0: 61 62 73 74 72 61 63 74 20 49 6e 74 33 32 20 47  abstract Int32 G
39b0: 65 74 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  etInt32(SQLiteSt
39c0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
39d0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
39e0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
39f0: 20 55 49 6e 74 33 32 20 47 65 74 55 49 6e 74 33   UInt32 GetUInt3
3a00: 32 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  2(SQLiteStatemen
3a10: 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  t stmt, int inde
3a20: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
3a30: 6c 20 61 62 73 74 72 61 63 74 20 49 6e 74 36 34  l abstract Int64
3a40: 20 47 65 74 49 6e 74 36 34 28 53 51 4c 69 74 65   GetInt64(SQLite
3a50: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3a60: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
3a70: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3a80: 63 74 20 55 49 6e 74 36 34 20 47 65 74 55 49 6e  ct UInt64 GetUIn
3a90: 74 36 34 28 53 51 4c 69 74 65 53 74 61 74 65 6d  t64(SQLiteStatem
3aa0: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3ab0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3ac0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72  nal abstract str
3ad0: 69 6e 67 20 47 65 74 54 65 78 74 28 53 51 4c 69  ing GetText(SQLi
3ae0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3af0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
3b00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3b10: 72 61 63 74 20 6c 6f 6e 67 20 47 65 74 42 79 74  ract long GetByt
3b20: 65 73 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  es(SQLiteStateme
3b30: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3b40: 65 78 2c 20 69 6e 74 20 6e 44 61 74 61 6f 66 66  ex, int nDataoff
3b50: 73 65 74 2c 20 62 79 74 65 5b 5d 20 62 44 65 73  set, byte[] bDes
3b60: 74 2c 20 69 6e 74 20 6e 53 74 61 72 74 2c 20 69  t, int nStart, i
3b70: 6e 74 20 6e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20  nt nLength);..  
3b80: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3b90: 61 63 74 20 63 68 61 72 20 47 65 74 43 68 61 72  act char GetChar
3ba0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3bb0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
3bc0: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3bd0: 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47   abstract long G
3be0: 65 74 43 68 61 72 73 28 53 51 4c 69 74 65 53 74  etChars(SQLiteSt
3bf0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
3c00: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 6e 44 61  t index, int nDa
3c10: 74 61 6f 66 66 73 65 74 2c 20 63 68 61 72 5b 5d  taoffset, char[]
3c20: 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53 74 61   bDest, int nSta
3c30: 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74 68 29  rt, int nLength)
3c40: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3c50: 61 62 73 74 72 61 63 74 20 44 61 74 65 54 69 6d  abstract DateTim
3c60: 65 20 47 65 74 44 61 74 65 54 69 6d 65 28 53 51  e GetDateTime(SQ
3c70: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3c80: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3c90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3ca0: 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 4e 75  stract bool IsNu
3cb0: 6c 6c 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ll(SQLiteStateme
3cc0: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3cd0: 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  ex);....    inte
3ce0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
3cf0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72  LiteErrorCode Cr
3d00: 65 61 74 65 43 6f 6c 6c 61 74 69 6f 6e 28 73 74  eateCollation(st
3d10: 72 69 6e 67 20 73 74 72 43 6f 6c 6c 61 74 69 6f  ring strCollatio
3d20: 6e 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69  n, SQLiteCollati
3d30: 6f 6e 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43  on func, SQLiteC
3d40: 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 31 36 2c  ollation func16,
3d50: 20 62 6f 6f 6c 20 40 74 68 72 6f 77 29 3b 0d 0a   bool @throw);..
3d60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3d70: 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f  tract SQLiteErro
3d80: 72 43 6f 64 65 20 43 72 65 61 74 65 46 75 6e 63  rCode CreateFunc
3d90: 74 69 6f 6e 28 73 74 72 69 6e 67 20 73 74 72 46  tion(string strF
3da0: 75 6e 63 74 69 6f 6e 2c 20 69 6e 74 20 6e 41 72  unction, int nAr
3db0: 67 73 2c 20 62 6f 6f 6c 20 6e 65 65 64 43 6f 6c  gs, bool needCol
3dc0: 6c 53 65 71 2c 20 53 51 4c 69 74 65 43 61 6c 6c  lSeq, SQLiteCall
3dd0: 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
3de0: 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 73 74  eCallback funcst
3df0: 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43  ep, SQLiteFinalC
3e00: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 66 69 6e 61  allback funcfina
3e10: 6c 2c 20 62 6f 6f 6c 20 40 74 68 72 6f 77 29 3b  l, bool @throw);
3e20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
3e30: 62 73 74 72 61 63 74 20 43 6f 6c 6c 61 74 69 6f  bstract Collatio
3e40: 6e 53 65 71 75 65 6e 63 65 20 47 65 74 43 6f 6c  nSequence GetCol
3e50: 6c 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 28 53  lationSequence(S
3e60: 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75  QLiteFunction fu
3e70: 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  nc, IntPtr conte
3e80: 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  xt);..    intern
3e90: 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20  al abstract int 
3ea0: 43 6f 6e 74 65 78 74 43 6f 6c 6c 61 74 65 43 6f  ContextCollateCo
3eb0: 6d 70 61 72 65 28 43 6f 6c 6c 61 74 69 6f 6e 45  mpare(CollationE
3ec0: 6e 63 6f 64 69 6e 67 45 6e 75 6d 20 65 6e 63 2c  ncodingEnum enc,
3ed0: 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c   IntPtr context,
3ee0: 20 73 74 72 69 6e 67 20 73 31 2c 20 73 74 72 69   string s1, stri
3ef0: 6e 67 20 73 32 29 3b 0d 0a 20 20 20 20 69 6e 74  ng s2);..    int
3f00: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69  ernal abstract i
3f10: 6e 74 20 43 6f 6e 74 65 78 74 43 6f 6c 6c 61 74  nt ContextCollat
3f20: 65 43 6f 6d 70 61 72 65 28 43 6f 6c 6c 61 74 69  eCompare(Collati
3f30: 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e 75 6d 20 65  onEncodingEnum e
3f40: 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  nc, IntPtr conte
3f50: 78 74 2c 20 63 68 61 72 5b 5d 20 63 31 2c 20 63  xt, char[] c1, c
3f60: 68 61 72 5b 5d 20 63 32 29 3b 0d 0a 0d 0a 20 20  har[] c2);....  
3f70: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3f80: 61 63 74 20 69 6e 74 20 41 67 67 72 65 67 61 74  act int Aggregat
3f90: 65 43 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  eCount(IntPtr co
3fa0: 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74  ntext);..    int
3fb0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
3fc0: 6e 74 50 74 72 20 41 67 67 72 65 67 61 74 65 43  ntPtr AggregateC
3fd0: 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
3fe0: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 69  ntext);....    i
3ff0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
4000: 20 6c 6f 6e 67 20 47 65 74 50 61 72 61 6d 56 61   long GetParamVa
4010: 6c 75 65 42 79 74 65 73 28 49 6e 74 50 74 72 20  lueBytes(IntPtr 
4020: 70 74 72 2c 20 69 6e 74 20 6e 44 61 74 61 4f 66  ptr, int nDataOf
4030: 66 73 65 74 2c 20 62 79 74 65 5b 5d 20 62 44 65  fset, byte[] bDe
4040: 73 74 2c 20 69 6e 74 20 6e 53 74 61 72 74 2c 20  st, int nStart, 
4050: 69 6e 74 20 6e 4c 65 6e 67 74 68 29 3b 0d 0a 20  int nLength);.. 
4060: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
4070: 72 61 63 74 20 64 6f 75 62 6c 65 20 47 65 74 50  ract double GetP
4080: 61 72 61 6d 56 61 6c 75 65 44 6f 75 62 6c 65 28  aramValueDouble(
4090: 49 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 20 20  IntPtr ptr);..  
40a0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
40b0: 61 63 74 20 69 6e 74 20 47 65 74 50 61 72 61 6d  act int GetParam
40c0: 56 61 6c 75 65 49 6e 74 33 32 28 49 6e 74 50 74  ValueInt32(IntPt
40d0: 72 20 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74  r ptr);..    int
40e0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
40f0: 6e 74 36 34 20 47 65 74 50 61 72 61 6d 56 61 6c  nt64 GetParamVal
4100: 75 65 49 6e 74 36 34 28 49 6e 74 50 74 72 20 70  ueInt64(IntPtr p
4110: 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  tr);..    intern
4120: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
4130: 6e 67 20 47 65 74 50 61 72 61 6d 56 61 6c 75 65  ng GetParamValue
4140: 54 65 78 74 28 49 6e 74 50 74 72 20 70 74 72 29  Text(IntPtr ptr)
4150: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
4160: 61 62 73 74 72 61 63 74 20 54 79 70 65 41 66 66  abstract TypeAff
4170: 69 6e 69 74 79 20 47 65 74 50 61 72 61 6d 56 61  inity GetParamVa
4180: 6c 75 65 54 79 70 65 28 49 6e 74 50 74 72 20 70  lueType(IntPtr p
4190: 74 72 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  tr);....    inte
41a0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
41b0: 69 64 20 52 65 74 75 72 6e 42 6c 6f 62 28 49 6e  id ReturnBlob(In
41c0: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
41d0: 74 65 5b 5d 20 76 61 6c 75 65 29 3b 0d 0a 20 20  te[] value);..  
41e0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
41f0: 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 44  act void ReturnD
4200: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e  ouble(IntPtr con
4210: 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c  text, double val
4220: 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ue);..    intern
4230: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
4240: 20 52 65 74 75 72 6e 45 72 72 6f 72 28 49 6e 74   ReturnError(Int
4250: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
4260: 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ing value);..   
4270: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
4280: 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 49 6e  ct void ReturnIn
4290: 74 33 32 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t32(IntPtr conte
42a0: 78 74 2c 20 49 6e 74 33 32 20 76 61 6c 75 65 29  xt, Int32 value)
42b0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
42c0: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52 65  abstract void Re
42d0: 74 75 72 6e 49 6e 74 36 34 28 49 6e 74 50 74 72  turnInt64(IntPtr
42e0: 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 36 34 20   context, Int64 
42f0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
4300: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
4310: 6f 69 64 20 52 65 74 75 72 6e 4e 75 6c 6c 28 49  oid ReturnNull(I
4320: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
4330: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
4340: 73 74 72 61 63 74 20 76 6f 69 64 20 52 65 74 75  stract void Retu
4350: 72 6e 54 65 78 74 28 49 6e 74 50 74 72 20 63 6f  rnText(IntPtr co
4360: 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 76 61  ntext, string va
4370: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  lue);....#if INT
4380: 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
4390: 4c 45 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  LE..    /// <sum
43a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
43b0: 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20  alls the native 
43c0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
43d0: 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ary in order to 
43e0: 63 72 65 61 74 65 20 61 20 64 69 73 70 6f 73 61  create a disposa
43f0: 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 6d 6f 64  ble..    /// mod
4400: 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ule containing t
4410: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
4420: 6e 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20 74  n of a virtual t
4430: 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
4440: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
4450: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4460: 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f  module">..    //
4470: 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6f 62 6a  / The module obj
4480: 65 63 74 20 74 6f 20 62 65 20 75 73 65 64 20 77  ect to be used w
4490: 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65  hen creating the
44a0: 20 6e 61 74 69 76 65 20 64 69 73 70 6f 73 61 62   native disposab
44b0: 6c 65 20 6d 6f 64 75 6c 65 2e 0d 0a 20 20 20 20  le module...    
44c0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
44d0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
44e0: 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20  e="flags">..    
44f0: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 66 6f  /// The flags fo
4500: 72 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  r the associated
4510: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
4520: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e  teConnection" />
4530: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
4540: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4550: 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  am>..    interna
4560: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
4570: 43 72 65 61 74 65 4d 6f 64 75 6c 65 28 53 51 4c  CreateModule(SQL
4580: 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
4590: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
45a0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d  onFlags flags);.
45b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
45c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 61  ary>..    /// Ca
45d0: 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20 53  lls the native S
45e0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
45f0: 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63  ry in order to c
4600: 6c 65 61 6e 75 70 20 74 68 65 20 72 65 73 6f 75  leanup the resou
4610: 72 63 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 61 73  rces..    /// as
4620: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20  sociated with a 
4630: 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  module containin
4640: 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  g the implementa
4650: 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75 61  tion of a virtua
4660: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  l table...    //
4670: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4680: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4690: 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
46a0: 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20   /// The module 
46b0: 6f 62 6a 65 63 74 20 70 72 65 76 69 6f 75 73 6c  object previousl
46c0: 79 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  y passed to the 
46d0: 3c 73 65 65 20 63 72 65 66 3d 22 43 72 65 61 74  <see cref="Creat
46e0: 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
46f0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
4700: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
4710: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4720: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
4730: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4740: 66 6f 72 20 74 68 65 20 61 73 73 6f 63 69 61 74  for the associat
4750: 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ed <see cref="SQ
4760: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
4770: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
4780: 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ce...    /// </p
4790: 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72  aram>..    inter
47a0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
47b0: 64 20 44 69 73 70 6f 73 65 4d 6f 64 75 6c 65 28  d DisposeModule(
47c0: 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
47d0: 75 6c 65 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ule, SQLiteConne
47e0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
47f0: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
4800: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4810: 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76   Calls the nativ
4820: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
4830: 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74  brary in order t
4840: 6f 20 64 65 63 6c 61 72 65 20 61 20 76 69 72 74  o declare a virt
4850: 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f  ual table..    /
4860: 2f 2f 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  // in response t
4870: 6f 20 61 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68  o a call into th
4880: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
4890: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
48a0: 2e 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20  .xCreate" />..  
48b0: 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72    /// or <see cr
48c0: 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
48d0: 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
48e0: 22 20 2f 3e 20 76 69 72 74 75 61 6c 20 74 61 62  " /> virtual tab
48f0: 6c 65 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  le methods...   
4900: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4910: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4920: 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
4930: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 69 72 74      /// The virt
4940: 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65  ual table module
4950: 20 74 68 61 74 20 69 73 20 74 6f 20 62 65 20 72   that is to be r
4960: 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74  esponsible for t
4970: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
4980: 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20  ..    /// being 
4990: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f  declared...    /
49a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
49b0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
49c0: 3d 22 73 74 72 53 71 6c 22 3e 0d 0a 20 20 20 20  ="strSql">..    
49d0: 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20 63  /// The string c
49e0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 53 51  ontaining the SQ
49f0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 64 65 73 63  L statement desc
4a00: 72 69 62 69 6e 67 20 74 68 65 20 76 69 72 74 75  ribing the virtu
4a10: 61 6c 20 74 61 62 6c 65 20 74 6f 0d 0a 20 20 20  al table to..   
4a20: 20 2f 2f 2f 20 62 65 20 64 65 63 6c 61 72 65 64   /// be declared
4a30: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4a40: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
4a50: 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
4a60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20  >..    /// Upon 
4a70: 73 75 63 63 65 73 73 2c 20 74 68 65 20 63 6f 6e  success, the con
4a80: 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 70 61  tents of this pa
4a90: 72 61 6d 65 74 65 72 20 61 72 65 20 75 6e 64 65  rameter are unde
4aa0: 66 69 6e 65 64 2e 20 20 55 70 6f 6e 20 66 61 69  fined.  Upon fai
4ab0: 6c 75 72 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 69  lure,..    /// i
4ac0: 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  t should contain
4ad0: 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
4ae0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
4af0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4b00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
4b10: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 73  ns>..    /// A s
4b20: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
4b30: 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
4b40: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
4b50: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
4b60: 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
4b70: 6f 72 43 6f 64 65 20 44 65 63 6c 61 72 65 56 69  orCode DeclareVi
4b80: 72 74 75 61 6c 54 61 62 6c 65 28 53 51 4c 69 74  rtualTable(SQLit
4b90: 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20  eModule module, 
4ba0: 73 74 72 69 6e 67 20 73 74 72 53 71 6c 2c 20 72  string strSql, r
4bb0: 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 29  ef string error)
4bc0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
4bd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
4be0: 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65  Calls the native
4bf0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
4c00: 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f  rary in order to
4c10: 20 64 65 63 6c 61 72 65 20 61 20 76 69 72 74 75   declare a virtu
4c20: 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f  al table..    //
4c30: 2f 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 72 65  / function in re
4c40: 73 70 6f 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c  sponse to a call
4c50: 20 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63   into the <see c
4c60: 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
4c70: 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
4c80: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72  " />..    /// or
4c90: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
4ca0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
4cb0: 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72  xConnect" /> vir
4cc0: 74 75 61 6c 20 74 61 62 6c 65 20 6d 65 74 68 6f  tual table metho
4cd0: 64 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ds...    /// </s
4ce0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4cf0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
4d00: 64 75 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  dule">..    /// 
4d10: 54 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  The virtual tabl
4d20: 65 20 6d 6f 64 75 6c 65 20 74 68 61 74 20 69 73  e module that is
4d30: 20 74 6f 20 62 65 20 72 65 73 70 6f 6e 73 69 62   to be responsib
4d40: 6c 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  le for the virtu
4d50: 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f  al table..    //
4d60: 2f 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  / function being
4d70: 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
4d80: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4d90: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4da0: 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  e="argumentCount
4db0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
4dc0: 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
4dd0: 6e 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74  nts to the funct
4de0: 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61 72  ion being declar
4df0: 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ed...    /// </p
4e00: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
4e10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
4e20: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
4e30: 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63  name of the func
4e40: 74 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61  tion being decla
4e50: 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  red...    /// </
4e60: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
4e70: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
4e80: 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70  or">..    /// Up
4e90: 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65 20  on success, the 
4ea0: 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73  contents of this
4eb0: 20 70 61 72 61 6d 65 74 65 72 20 61 72 65 20 75   parameter are u
4ec0: 6e 64 65 66 69 6e 65 64 2e 20 20 55 70 6f 6e 20  ndefined.  Upon 
4ed0: 66 61 69 6c 75 72 65 2c 0d 0a 20 20 20 20 2f 2f  failure,..    //
4ee0: 2f 20 69 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74  / it should cont
4ef0: 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61  ain an appropria
4f00: 74 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  te error message
4f10: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4f20: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
4f30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
4f40: 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
4f50: 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
4f60: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4f70: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
4f80: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
4f90: 45 72 72 6f 72 43 6f 64 65 20 44 65 63 6c 61 72  ErrorCode Declar
4fa0: 65 56 69 72 74 75 61 6c 46 75 6e 63 74 69 6f 6e  eVirtualFunction
4fb0: 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f  (SQLiteModule mo
4fc0: 64 75 6c 65 2c 20 69 6e 74 20 61 72 67 75 6d 65  dule, int argume
4fd0: 6e 74 43 6f 75 6e 74 2c 20 73 74 72 69 6e 67 20  ntCount, string 
4fe0: 6e 61 6d 65 2c 20 72 65 66 20 73 74 72 69 6e 67  name, ref string
4ff0: 20 65 72 72 6f 72 29 3b 0d 0a 23 65 6e 64 69 66   error);..#endif
5000: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
5010: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
5020: 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65  eturns the curre
5030: 6e 74 20 61 6e 64 2f 6f 72 20 68 69 67 68 77 61  nt and/or highwa
5040: 74 65 72 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ter values for t
5050: 68 65 20 73 70 65 63 69 66 69 65 64 20 64 61 74  he specified dat
5060: 61 62 61 73 65 20 73 74 61 74 75 73 20 70 61 72  abase status par
5070: 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  ameter...    ///
5080: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5090: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
50a0: 3d 22 6f 70 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  ="option">..    
50b0: 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65  /// The database
50c0: 20 73 74 61 74 75 73 20 70 61 72 61 6d 65 74 65   status paramete
50d0: 72 20 74 6f 20 71 75 65 72 79 2e 0d 0a 20 20 20  r to query...   
50e0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
50f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5100: 6d 65 3d 22 72 65 73 65 74 22 3e 0d 0a 20 20 20  me="reset">..   
5110: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
5120: 20 72 65 73 65 74 20 74 68 65 20 68 69 67 68 77   reset the highw
5130: 61 74 65 72 20 76 61 6c 75 65 20 74 6f 20 74 68  ater value to th
5140: 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 2e  e current value.
5150: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5160: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
5170: 61 6d 20 6e 61 6d 65 3d 22 63 75 72 72 65 6e 74  am name="current
5180: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61  ">..    /// If a
5190: 70 70 6c 69 63 61 62 6c 65 2c 20 72 65 63 65 69  pplicable, recei
51a0: 76 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  ves the current 
51b0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
51c0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
51d0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 68  / <param name="h
51e0: 69 67 68 77 61 74 65 72 22 3e 0d 0a 20 20 20 20  ighwater">..    
51f0: 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63 61 62 6c  /// If applicabl
5200: 65 2c 20 72 65 63 65 69 76 65 73 20 74 68 65 20  e, receives the 
5210: 68 69 67 68 77 61 74 65 72 20 76 61 6c 75 65 2e  highwater value.
5220: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5230: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
5240: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  urns>..    /// A
5250: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
5260: 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
5270: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5280: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
5290: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
52a0: 72 72 6f 72 43 6f 64 65 20 47 65 74 53 74 61 74  rrorCode GetStat
52b0: 75 73 50 61 72 61 6d 65 74 65 72 28 53 51 4c 69  usParameter(SQLi
52c0: 74 65 53 74 61 74 75 73 4f 70 73 45 6e 75 6d 20  teStatusOpsEnum 
52d0: 6f 70 74 69 6f 6e 2c 20 62 6f 6f 6c 20 72 65 73  option, bool res
52e0: 65 74 2c 20 72 65 66 20 69 6e 74 20 63 75 72 72  et, ref int curr
52f0: 65 6e 74 2c 20 72 65 66 20 69 6e 74 20 68 69 67  ent, ref int hig
5300: 68 77 61 74 65 72 29 3b 0d 0a 20 20 20 20 2f 2f  hwater);..    //
5310: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5320: 20 2f 2f 2f 20 43 68 61 6e 67 65 20 61 20 63 6f   /// Change a co
5330: 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
5340: 6f 6e 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  on value for the
5350: 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
5360: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5370: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5380: 61 6d 65 3d 22 6f 70 74 69 6f 6e 22 3e 0d 0a 20  ame="option">.. 
5390: 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
53a0: 61 73 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ase configuratio
53b0: 6e 20 6f 70 74 69 6f 6e 20 74 6f 20 63 68 61 6e  n option to chan
53c0: 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ge...    /// </p
53d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
53e0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
53f0: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
5400: 20 6e 65 77 20 76 61 6c 75 65 20 66 6f 72 20 74   new value for t
5410: 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e  he specified con
5420: 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
5430: 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  n...    /// </pa
5440: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
5450: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
5460: 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
5470: 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
5480: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
5490: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
54a0: 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74  l abstract SQLit
54b0: 65 45 72 72 6f 72 43 6f 64 65 20 53 65 74 43 6f  eErrorCode SetCo
54c0: 6e 66 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f  nfigurationOptio
54d0: 6e 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  n(SQLiteConfigDb
54e0: 4f 70 73 45 6e 75 6d 20 6f 70 74 69 6f 6e 2c 20  OpsEnum option, 
54f0: 6f 62 6a 65 63 74 20 76 61 6c 75 65 29 3b 0d 0a  object value);..
5500: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5510: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  >..    /// Enabl
5520: 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 65  es or disables e
5530: 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
5540: 20 62 79 20 53 51 4c 69 74 65 2e 0d 0a 20 20 20   by SQLite...   
5550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5560: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5570: 6e 61 6d 65 3d 22 62 4f 6e 4f 66 66 22 3e 0d 0a  name="bOnOff">..
5580: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 74 6f 20      /// True to 
5590: 65 6e 61 62 6c 65 20 6c 6f 61 64 69 6e 67 20 6f  enable loading o
55a0: 66 20 65 78 74 65 6e 73 69 6f 6e 73 2c 20 66 61  f extensions, fa
55b0: 6c 73 65 20 74 6f 20 64 69 73 61 62 6c 65 2e 0d  lse to disable..
55c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
55d0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
55e0: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65  abstract void Se
55f0: 74 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28 62  tLoadExtension(b
5600: 6f 6f 6c 20 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20  ool bOnOff);..  
5610: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5620: 0a 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 73 20 61  .    /// Loads a
5630: 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
5640: 6e 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 74  n library from t
5650: 68 65 20 6e 61 6d 65 64 20 66 69 6c 65 2e 0d 0a  he named file...
5660: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5670: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
5680: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
5690: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
56a0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 79 6e   name of the dyn
56b0: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
56c0: 79 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  y file containin
56d0: 67 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e  g the extension.
56e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
56f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
5700: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 4e 61 6d  am name="procNam
5710: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
5720: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 70   name of the exp
5730: 6f 72 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 75  orted function u
5740: 73 65 64 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  sed to initializ
5750: 65 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e  e the extension.
5760: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 6e 75 6c  ..    /// If nul
5770: 6c 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 22  l, the default "
5780: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f  sqlite3_extensio
5790: 6e 5f 69 6e 69 74 22 20 77 69 6c 6c 20 62 65 20  n_init" will be 
57a0: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  used...    /// <
57b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
57c0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
57d0: 6f 69 64 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f  oid LoadExtensio
57e0: 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  n(string fileNam
57f0: 65 2c 20 73 74 72 69 6e 67 20 70 72 6f 63 4e 61  e, string procNa
5800: 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  me);..    /// <s
5810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5820: 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61   Enables or disa
5830: 62 6c 65 64 20 65 78 74 65 6e 65 64 20 72 65 73  bled extened res
5840: 75 6c 74 20 63 6f 64 65 73 20 72 65 74 75 72 6e  ult codes return
5850: 65 64 20 62 79 20 53 51 4c 69 74 65 0d 0a 20 20  ed by SQLite..  
5860: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5870: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5880: 20 6e 61 6d 65 3d 22 62 4f 6e 4f 66 66 22 3e 74   name="bOnOff">t
5890: 72 75 65 20 74 6f 20 65 6e 61 62 6c 65 20 65 78  rue to enable ex
58a0: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
58b0: 64 65 73 2c 20 66 61 6c 73 65 20 74 6f 20 64 69  des, false to di
58c0: 73 61 62 6c 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  sable.</param>..
58d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
58e0: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
58f0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5900: 63 74 20 76 6f 69 64 20 53 65 74 45 78 74 65 6e  ct void SetExten
5910: 64 65 64 52 65 73 75 6c 74 43 6f 64 65 73 28 62  dedResultCodes(b
5920: 6f 6f 6c 20 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20  ool bOnOff);..  
5930: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5940: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
5950: 20 74 68 65 20 6e 75 6d 65 72 69 63 20 72 65 73   the numeric res
5960: 75 6c 74 20 63 6f 64 65 20 66 6f 72 20 74 68 65  ult code for the
5970: 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 66 61 69   most recent fai
5980: 6c 65 64 20 53 51 4c 69 74 65 20 41 50 49 20 63  led SQLite API c
5990: 61 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 73  all..    /// ass
59a0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
59b0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
59c0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
59d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
59e0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 73 75  // <returns>Resu
59f0: 6c 74 20 63 6f 64 65 3c 2f 72 65 74 75 72 6e 73  lt code</returns
5a00: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
5a10: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
5a20: 72 72 6f 72 43 6f 64 65 20 52 65 73 75 6c 74 43  rrorCode ResultC
5a30: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20  ode();..    /// 
5a40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
5a50: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 65  // Returns the e
5a60: 78 74 65 6e 64 65 64 20 6e 75 6d 65 72 69 63 20  xtended numeric 
5a70: 72 65 73 75 6c 74 20 63 6f 64 65 20 66 6f 72 20  result code for 
5a80: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
5a90: 66 61 69 6c 65 64 20 53 51 4c 69 74 65 20 41 50  failed SQLite AP
5aa0: 49 20 63 61 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20  I call..    /// 
5ab0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
5ac0: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
5ad0: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
5ae0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5af0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45    /// <returns>E
5b00: 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
5b10: 6f 64 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ode</returns>.. 
5b20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
5b30: 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
5b40: 43 6f 64 65 20 45 78 74 65 6e 64 65 64 52 65 73  Code ExtendedRes
5b50: 75 6c 74 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20  ultCode();....  
5b60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5b70: 0a 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 6c  .    /// Add a l
5b80: 6f 67 20 6d 65 73 73 61 67 65 20 76 69 61 20 74  og message via t
5b90: 68 65 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65  he SQLite sqlite
5ba0: 33 5f 6c 6f 67 20 69 6e 74 65 72 66 61 63 65 2e  3_log interface.
5bb0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5bc0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
5bd0: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 45 72 72 43  aram name="iErrC
5be0: 6f 64 65 22 3e 45 72 72 6f 72 20 63 6f 64 65 20  ode">Error code 
5bf0: 74 6f 20 62 65 20 6c 6f 67 67 65 64 20 77 69 74  to be logged wit
5c00: 68 20 74 68 65 20 6d 65 73 73 61 67 65 2e 3c 2f  h the message.</
5c10: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5c20: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4d 65  <param name="zMe
5c30: 73 73 61 67 65 22 3e 53 74 72 69 6e 67 20 74 6f  ssage">String to
5c40: 20 62 65 20 6c 6f 67 67 65 64 2e 20 20 55 6e 6c   be logged.  Unl
5c50: 69 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 73  ike the SQLite s
5c60: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 0d 0a 20 20  qlite3_log()..  
5c70: 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2c    /// interface,
5c80: 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20   this should be 
5c90: 70 72 65 2d 66 6f 72 6d 61 74 74 65 64 2e 20 20  pre-formatted.  
5ca0: 43 6f 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74  Consider using t
5cb0: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 74 72 69  he..    /// Stri
5cc0: 6e 67 2e 46 6f 72 6d 61 74 28 29 20 66 75 6e 63  ng.Format() func
5cd0: 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  tion.</param>.. 
5ce0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
5cf0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
5d00: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
5d10: 74 20 76 6f 69 64 20 4c 6f 67 4d 65 73 73 61 67  t void LogMessag
5d20: 65 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e(SQLiteErrorCod
5d30: 65 20 69 45 72 72 43 6f 64 65 2c 20 73 74 72 69  e iErrCode, stri
5d40: 6e 67 20 7a 4d 65 73 73 61 67 65 29 3b 0d 0a 0d  ng zMessage);...
5d50: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
5d60: 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
5d70: 43 4c 55 44 45 5f 53 45 45 0d 0a 20 20 20 20 69  CLUDE_SEE..    i
5d80: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5d90: 20 76 6f 69 64 20 53 65 74 50 61 73 73 77 6f 72   void SetPasswor
5da0: 64 28 62 79 74 65 5b 5d 20 70 61 73 73 77 6f 72  d(byte[] passwor
5db0: 64 42 79 74 65 73 29 3b 0d 0a 20 20 20 20 69 6e  dBytes);..    in
5dc0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5dd0: 76 6f 69 64 20 43 68 61 6e 67 65 50 61 73 73 77  void ChangePassw
5de0: 6f 72 64 28 62 79 74 65 5b 5d 20 6e 65 77 50 61  ord(byte[] newPa
5df0: 73 73 77 6f 72 64 42 79 74 65 73 29 3b 0d 0a 23  sswordBytes);..#
5e00: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74  endif....    int
5e10: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
5e20: 6f 69 64 20 53 65 74 50 72 6f 67 72 65 73 73 48  oid SetProgressH
5e30: 6f 6f 6b 28 69 6e 74 20 6e 4f 70 73 2c 20 53 51  ook(int nOps, SQ
5e40: 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c  LiteProgressCall
5e50: 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20  back func);..   
5e60: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5e70: 63 74 20 76 6f 69 64 20 53 65 74 41 75 74 68 6f  ct void SetAutho
5e80: 72 69 7a 65 72 48 6f 6f 6b 28 53 51 4c 69 74 65  rizerHook(SQLite
5e90: 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61  AuthorizerCallba
5ea0: 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69  ck func);..    i
5eb0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5ec0: 20 76 6f 69 64 20 53 65 74 55 70 64 61 74 65 48   void SetUpdateH
5ed0: 6f 6f 6b 28 53 51 4c 69 74 65 55 70 64 61 74 65  ook(SQLiteUpdate
5ee0: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d  Callback func);.
5ef0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
5f00: 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 43  stract void SetC
5f10: 6f 6d 6d 69 74 48 6f 6f 6b 28 53 51 4c 69 74 65  ommitHook(SQLite
5f20: 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66  CommitCallback f
5f30: 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  unc);..    inter
5f40: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
5f50: 64 20 53 65 74 54 72 61 63 65 43 61 6c 6c 62 61  d SetTraceCallba
5f60: 63 6b 28 53 51 4c 69 74 65 54 72 61 63 65 43 61  ck(SQLiteTraceCa
5f70: 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20  llback func);.. 
5f80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
5f90: 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 72 61  ract void SetTra
5fa0: 63 65 43 61 6c 6c 62 61 63 6b 32 28 53 51 4c 69  ceCallback2(SQLi
5fb0: 74 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73  teTraceFlags mas
5fc0: 6b 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  k, SQLiteTraceCa
5fd0: 6c 6c 62 61 63 6b 32 20 66 75 6e 63 29 3b 0d 0a  llback2 func);..
5fe0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5ff0: 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 52 6f  tract void SetRo
6000: 6c 6c 62 61 63 6b 48 6f 6f 6b 28 53 51 4c 69 74  llbackHook(SQLit
6010: 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63  eRollbackCallbac
6020: 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e  k func);..    in
6030: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
6040: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6050: 53 65 74 4c 6f 67 43 61 6c 6c 62 61 63 6b 28 53  SetLogCallback(S
6060: 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
6070: 20 66 75 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 2f   func);....    /
6080: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6090: 20 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20    /// Checks if 
60a0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
60b0: 6c 69 62 72 61 72 79 20 68 61 73 20 62 65 65 6e  library has been
60c0: 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 69 6e 20   initialized in 
60d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
60e0: 65 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ess...    /// </
60f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
6100: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6110: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
6120: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
6130: 20 6c 69 62 72 61 72 79 20 68 61 73 20 62 65 65   library has bee
6140: 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 69 6e  n initialized in
6150: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
6160: 63 65 73 73 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a  cess,..    /// z
6170: 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
6180: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6190: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
61a0: 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49   abstract bool I
61b0: 73 49 6e 69 74 69 61 6c 69 7a 65 64 28 29 3b 0d  sInitialized();.
61c0: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
61d0: 61 62 73 74 72 61 63 74 20 69 6e 74 20 47 65 74  abstract int Get
61e0: 43 75 72 73 6f 72 46 6f 72 54 61 62 6c 65 28 53  CursorForTable(S
61f0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
6200: 74 6d 74 2c 20 69 6e 74 20 64 61 74 61 62 61 73  tmt, int databas
6210: 65 2c 20 69 6e 74 20 72 6f 6f 74 50 61 67 65 29  e, int rootPage)
6220: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
6230: 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65  abstract long Ge
6240: 74 52 6f 77 49 64 46 6f 72 43 75 72 73 6f 72 28  tRowIdForCursor(
6250: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
6260: 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
6270: 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e  );....    intern
6280: 61 6c 20 61 62 73 74 72 61 63 74 20 6f 62 6a 65  al abstract obje
6290: 63 74 20 47 65 74 56 61 6c 75 65 28 53 51 4c 69  ct GetValue(SQLi
62a0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
62b0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
62c0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
62d0: 6e 74 20 69 6e 64 65 78 2c 20 53 51 4c 69 74 65  nt index, SQLite
62e0: 54 79 70 65 20 74 79 70 29 3b 0d 0a 0d 0a 20 20  Type typ);....  
62f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6300: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
6310: 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   non-zero if the
6320: 20 67 69 76 65 6e 20 64 61 74 61 62 61 73 65 20   given database 
6330: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69 6e  connection is in
6340: 20 61 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65   autocommit mode
6350: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 41 75 74 6f 63  ...    /// Autoc
6360: 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73 20 6f 6e  ommit mode is on
6370: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 75   by default.  Au
6380: 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73  tocommit mode is
6390: 20 64 69 73 61 62 6c 65 64 20 62 79 20 61 20 42   disabled by a B
63a0: 45 47 49 4e 0d 0a 20 20 20 20 2f 2f 2f 20 73 74  EGIN..    /// st
63b0: 61 74 65 6d 65 6e 74 2e 20 20 41 75 74 6f 63 6f  atement.  Autoco
63c0: 6d 6d 69 74 20 6d 6f 64 65 20 69 73 20 72 65 2d  mmit mode is re-
63d0: 65 6e 61 62 6c 65 64 20 62 79 20 61 20 43 4f 4d  enabled by a COM
63e0: 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 2e  MIT or ROLLBACK.
63f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6400: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
6410: 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  al abstract bool
6420: 20 41 75 74 6f 43 6f 6d 6d 69 74 0d 0a 20 20 20   AutoCommit..   
6430: 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
6440: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
6450: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53  ernal abstract S
6460: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46  QLiteErrorCode F
6470: 69 6c 65 43 6f 6e 74 72 6f 6c 28 73 74 72 69 6e  ileControl(strin
6480: 67 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f  g zDbName, int o
6490: 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b  p, IntPtr pArg);
64a0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
64b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
64c0: 72 65 61 74 65 73 20 61 20 6e 65 77 20 53 51 4c  reates a new SQL
64d0: 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  ite backup objec
64e0: 74 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70  t based on the p
64f0: 72 6f 76 69 64 65 64 20 64 65 73 74 69 6e 61 74  rovided destinat
6500: 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74  ion..    /// dat
6510: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
6520: 2e 20 20 54 68 65 20 73 6f 75 72 63 65 20 64 61  .  The source da
6530: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
6540: 6e 20 69 73 20 74 68 65 20 6f 6e 65 0d 0a 20 20  n is the one..  
6550: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
6560: 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
6570: 74 2e 20 20 54 68 65 20 73 6f 75 72 63 65 20 61  t.  The source a
6580: 6e 64 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64  nd destination d
6590: 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
65a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 63 61 6e   connections can
65b0: 6e 6f 74 20 62 65 20 74 68 65 20 73 61 6d 65 2e  not be the same.
65c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
65d0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
65e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73 74 43  aram name="destC
65f0: 6e 6e 22 3e 54 68 65 20 64 65 73 74 69 6e 61 74  nn">The destinat
6600: 69 6f 6e 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ion database con
6610: 6e 65 63 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e  nection.</param>
6620: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
6630: 20 6e 61 6d 65 3d 22 64 65 73 74 4e 61 6d 65 22   name="destName"
6640: 3e 54 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e  >The destination
6650: 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2e 3c   database name.<
6660: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6670: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
6680: 75 72 63 65 4e 61 6d 65 22 3e 54 68 65 20 73 6f  urceName">The so
6690: 75 72 63 65 20 64 61 74 61 62 61 73 65 20 6e 61  urce database na
66a0: 6d 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  me.</param>..   
66b0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
66c0: 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20  e newly created 
66d0: 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 3c 2f  backup object.</
66e0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
66f0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
6700: 53 51 4c 69 74 65 42 61 63 6b 75 70 20 49 6e 69  SQLiteBackup Ini
6710: 74 69 61 6c 69 7a 65 42 61 63 6b 75 70 28 0d 0a  tializeBackup(..
6720: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
6730: 6e 6e 65 63 74 69 6f 6e 20 64 65 73 74 43 6e 6e  nnection destCnn
6740: 2c 20 73 74 72 69 6e 67 20 64 65 73 74 4e 61 6d  , string destNam
6750: 65 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e,..        stri
6760: 6e 67 20 73 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ng sourceName);.
6770: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
6780: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
6790: 70 69 65 73 20 75 70 20 74 6f 20 4e 20 70 61 67  pies up to N pag
67a0: 65 73 20 66 72 6f 6d 20 74 68 65 20 73 6f 75 72  es from the sour
67b0: 63 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 74  ce database to t
67c0: 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a  he destination..
67d0: 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65      /// database
67e0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
67f0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
6800: 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20  ackup object... 
6810: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6820: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6830: 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e  m name="backup">
6840: 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  The backup objec
6850: 74 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  t to use.</param
6860: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6870: 6d 20 6e 61 6d 65 3d 22 6e 50 61 67 65 22 3e 0d  m name="nPage">.
6880: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d  .    /// The num
6890: 62 65 72 20 6f 66 20 70 61 67 65 73 20 74 6f 20  ber of pages to 
68a0: 63 6f 70 79 20 6f 72 20 6e 65 67 61 74 69 76 65  copy or negative
68b0: 20 74 6f 20 63 6f 70 79 20 61 6c 6c 20 72 65 6d   to copy all rem
68c0: 61 69 6e 69 6e 67 20 70 61 67 65 73 2e 0d 0a 20  aining pages... 
68d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
68e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
68f0: 6e 61 6d 65 3d 22 72 65 74 72 79 22 3e 0d 0a 20  name="retry">.. 
6900: 20 20 20 2f 2f 2f 20 53 65 74 20 74 6f 20 74 72     /// Set to tr
6910: 75 65 20 69 66 20 74 68 65 20 6f 70 65 72 61 74  ue if the operat
6920: 69 6f 6e 20 6e 65 65 64 73 20 74 6f 20 62 65 20  ion needs to be 
6930: 72 65 74 72 69 65 64 20 64 75 65 20 74 6f 20 64  retried due to d
6940: 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
6950: 20 6c 6f 63 6b 69 6e 67 20 69 73 73 75 65 73 2e   locking issues.
6960: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
6970: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6980: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
6990: 72 75 65 20 69 66 20 74 68 65 72 65 20 61 72 65  rue if there are
69a0: 20 6d 6f 72 65 20 70 61 67 65 73 20 74 6f 20 62   more pages to b
69b0: 65 20 63 6f 70 69 65 64 2c 20 66 61 6c 73 65 20  e copied, false 
69c0: 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
69d0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
69e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
69f0: 74 72 61 63 74 20 62 6f 6f 6c 20 53 74 65 70 42  tract bool StepB
6a00: 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63 6b  ackup(SQLiteBack
6a10: 75 70 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e  up backup, int n
6a20: 50 61 67 65 2c 20 72 65 66 20 62 6f 6f 6c 20 72  Page, ref bool r
6a30: 65 74 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  etry);....    //
6a40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6a50: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
6a60: 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73   number of pages
6a70: 20 72 65 6d 61 69 6e 69 6e 67 20 74 6f 20 62 65   remaining to be
6a80: 20 63 6f 70 69 65 64 20 66 72 6f 6d 20 74 68 65   copied from the
6a90: 20 73 6f 75 72 63 65 0d 0a 20 20 20 20 2f 2f 2f   source..    ///
6aa0: 20 64 61 74 61 62 61 73 65 20 74 6f 20 74 68 65   database to the
6ab0: 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74   destination dat
6ac0: 61 62 61 73 65 20 61 73 73 6f 63 69 61 74 65 64  abase associated
6ad0: 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
6ae0: 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 62 61 63  ied..    /// bac
6af0: 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  kup object...   
6b00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b10: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6b20: 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e 54 68  name="backup">Th
6b30: 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 20  e backup object 
6b40: 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72 61 6d  to check.</param
6b50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6b60: 72 6e 73 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  rns>The number o
6b70: 66 20 70 61 67 65 73 20 72 65 6d 61 69 6e 69 6e  f pages remainin
6b80: 67 20 74 6f 20 62 65 20 63 6f 70 69 65 64 2e 3c  g to be copied.<
6b90: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
6ba0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
6bb0: 20 69 6e 74 20 52 65 6d 61 69 6e 69 6e 67 42 61   int RemainingBa
6bc0: 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63 6b 75  ckup(SQLiteBacku
6bd0: 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  p backup);....  
6be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6bf0: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
6c00: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
6c10: 72 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68  r of pages in th
6c20: 65 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73  e source databas
6c30: 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
6c40: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 73    /// with the s
6c50: 70 65 63 69 66 69 65 64 20 62 61 63 6b 75 70 20  pecified backup 
6c60: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
6c70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6c80: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6c90: 3d 22 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61  ="backup">The ba
6ca0: 63 6b 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 63  ckup object to c
6cb0: 68 65 63 6b 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  heck.</param>.. 
6cc0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6cd0: 54 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  The total number
6ce0: 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68 65   of pages in the
6cf0: 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73 65   source database
6d00: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
6d10: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
6d20: 63 74 20 69 6e 74 20 50 61 67 65 43 6f 75 6e 74  ct int PageCount
6d30: 42 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63  Backup(SQLiteBac
6d40: 6b 75 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  kup backup);....
6d50: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6d60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 73 74 72  >..    /// Destr
6d70: 6f 79 73 20 74 68 65 20 62 61 63 6b 75 70 20 6f  oys the backup o
6d80: 62 6a 65 63 74 2c 20 72 6f 6c 6c 69 6e 67 20 62  bject, rolling b
6d90: 61 63 6b 20 61 6e 79 20 62 61 63 6b 75 70 20 74  ack any backup t
6da0: 68 61 74 20 6d 61 79 20 62 65 20 69 6e 0d 0a 20  hat may be in.. 
6db0: 20 20 20 2f 2f 2f 20 70 72 6f 67 65 73 73 2e 0d     /// progess..
6dc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
6dd0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
6de0: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70  ram name="backup
6df0: 22 3e 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a  ">The backup obj
6e00: 65 63 74 20 74 6f 20 64 65 73 74 72 6f 79 2e 3c  ect to destroy.<
6e10: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
6e20: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
6e30: 6f 69 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70  oid FinishBackup
6e40: 28 53 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61  (SQLiteBackup ba
6e50: 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  ckup);....    //
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6ec0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69  .    #region IDi
6ed0: 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73  sposable Members
6ee0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
6ef0: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
6f00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 69 73 70   {..        Disp
6f10: 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
6f20: 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
6f30: 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
6f40: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6f50: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6fc0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
6fd0: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
6fe0: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70  " Members..    p
6ff0: 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
7000: 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 69 76 61  osed;..    priva
7010: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
7020: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
7030: 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20   */..    {..#if 
7040: 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
7050: 44 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  D..        if (d
7060: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
7070: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
7080: 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
7090: 63 65 70 74 69 6f 6e 28 74 79 70 65 6f 66 28 53  ception(typeof(S
70a0: 51 4c 69 74 65 42 61 73 65 29 2e 4e 61 6d 65 29  QLiteBase).Name)
70b0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  ;..#endif..    }
70c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70  ///////....    p
7130: 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
7140: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
7150: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
7160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
7170: 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
7180: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7190: 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
71a0: 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
71b0: 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20     //{..        
71c0: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
7200: 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
7210: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
7220: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
7230: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7260: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d              //}.
7270: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
72b0: 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
72c0: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
72d0: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
72e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
72f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73  .            dis
7320: 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
7330: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
7340: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
7350: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
73c0: 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
73d0: 0d 0a 20 20 20 20 7e 53 51 4c 69 74 65 42 61 73  ..    ~SQLiteBas
73e0: 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
73f0: 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
7400: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  e);..    }..    
7410: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7420: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  /....    // Thes
7490: 65 20 73 74 61 74 69 63 73 20 61 72 65 20 68 65  e statics are he
74a0: 72 65 20 66 6f 72 20 6c 61 63 6b 20 6f 66 20 61  re for lack of a
74b0: 20 62 65 74 74 65 72 20 70 6c 61 63 65 20 74 6f   better place to
74c0: 20 70 75 74 20 74 68 65 6d 2e 0d 0a 20 20 20 20   put them...    
74d0: 2f 2f 20 54 68 65 79 20 65 78 69 73 74 20 68 65  // They exist he
74e0: 72 65 20 62 65 63 61 75 73 65 20 74 68 65 79 20  re because they 
74f0: 61 72 65 20 63 61 6c 6c 65 64 20 64 75 72 69 6e  are called durin
7500: 67 20 74 68 65 20 66 69 6e 61 6c 69 7a 61 74 69  g the finalizati
7510: 6f 6e 20 6f 66 0d 0a 20 20 20 20 2f 2f 20 61 20  on of..    // a 
7520: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
7530: 61 6e 64 6c 65 2c 20 53 51 4c 69 74 65 43 6f 6e  andle, SQLiteCon
7540: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 2c 20 61  nectionHandle, a
7550: 6e 64 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  nd SQLiteFunctio
7560: 6e 43 6f 6f 6b 69 65 48 61 6e 64 6c 65 2e 0d 0a  nCookieHandle...
7570: 20 20 20 20 2f 2f 20 54 68 65 72 65 66 6f 72 65      // Therefore
7580: 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   these functions
7590: 20 68 61 76 65 20 74 6f 20 62 65 20 73 74 61 74   have to be stat
75a0: 69 63 2c 20 61 6e 64 20 68 61 76 65 20 74 6f 20  ic, and have to 
75b0: 62 65 20 6c 6f 77 2d 6c 65 76 65 6c 2e 0d 0a 0d  be low-level....
75c0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7620: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 72 69 76  ////....    priv
7630: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
7640: 67 5b 5d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67  g[] _errorMessag
7650: 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
7660: 2f 2a 20 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20  /* SQLITE_OK    
7670: 20 20 20 20 20 20 2a 2f 20 22 6e 6f 74 20 61 6e        */ "not an
7680: 20 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20   error",..      
7690: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 45 52 52 4f    /* SQLITE_ERRO
76a0: 52 20 20 20 20 20 20 20 2a 2f 20 22 53 51 4c 20  R       */ "SQL 
76b0: 6c 6f 67 69 63 20 65 72 72 6f 72 22 2c 0d 0a 20  logic error",.. 
76c0: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
76d0: 5f 49 4e 54 45 52 4e 41 4c 20 20 20 20 2a 2f 20  _INTERNAL    */ 
76e0: 22 69 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20  "internal logic 
76f0: 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20  error",..       
7700: 20 2f 2a 20 53 51 4c 49 54 45 5f 50 45 52 4d 20   /* SQLITE_PERM 
7710: 20 20 20 20 20 20 20 2a 2f 20 22 61 63 63 65 73         */ "acces
7720: 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e  s permission den
7730: 69 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  ied",..        /
7740: 2a 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20  * SQLITE_ABORT  
7750: 20 20 20 20 20 2a 2f 20 22 71 75 65 72 79 20 61       */ "query a
7760: 62 6f 72 74 65 64 22 2c 0d 0a 20 20 20 20 20 20  borted",..      
7770: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 42 55 53 59    /* SQLITE_BUSY
7780: 20 20 20 20 20 20 20 20 2a 2f 20 22 64 61 74 61          */ "data
7790: 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c  base is locked",
77a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
77b0: 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20  ITE_LOCKED      
77c0: 2a 2f 20 22 64 61 74 61 62 61 73 65 20 74 61 62  */ "database tab
77d0: 6c 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a  le is locked",..
77e0: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
77f0: 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 2a 2f  E_NOMEM       */
7800: 20 22 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22   "out of memory"
7810: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7820: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20  LITE_READONLY   
7830: 20 2a 2f 20 22 61 74 74 65 6d 70 74 20 74 6f 20   */ "attempt to 
7840: 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79  write a readonly
7850: 20 64 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20   database",..   
7860: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49       /* SQLITE_I
7870: 4e 54 45 52 52 55 50 54 20 20 20 2a 2f 20 22 69  NTERRUPT   */ "i
7880: 6e 74 65 72 72 75 70 74 65 64 22 2c 0d 0a 20 20  nterrupted",..  
7890: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
78a0: 49 4f 45 52 52 20 20 20 20 20 20 20 2a 2f 20 22  IOERR       */ "
78b0: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 22 2c  disk I/O error",
78c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
78d0: 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20  ITE_CORRUPT     
78e0: 2a 2f 20 22 64 61 74 61 62 61 73 65 20 64 69 73  */ "database dis
78f0: 6b 20 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f  k image is malfo
7900: 72 6d 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20  rmed",..        
7910: 2f 2a 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  /* SQLITE_NOTFOU
7920: 4e 44 20 20 20 20 2a 2f 20 22 75 6e 6b 6e 6f 77  ND    */ "unknow
7930: 6e 20 6f 70 65 72 61 74 69 6f 6e 22 2c 0d 0a 20  n operation",.. 
7940: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7950: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 2a 2f 20  _FULL        */ 
7960: 22 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73  "database or dis
7970: 6b 20 69 73 20 66 75 6c 6c 22 2c 0d 0a 20 20 20  k is full",..   
7980: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43       /* SQLITE_C
7990: 41 4e 54 4f 50 45 4e 20 20 20 20 2a 2f 20 22 75  ANTOPEN    */ "u
79a0: 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61  nable to open da
79b0: 74 61 62 61 73 65 20 66 69 6c 65 22 2c 0d 0a 20  tabase file",.. 
79c0: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
79d0: 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 2a 2f 20  _PROTOCOL    */ 
79e0: 22 6c 6f 63 6b 69 6e 67 20 70 72 6f 74 6f 63 6f  "locking protoco
79f0: 6c 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  l",..        /* 
7a00: 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20  SQLITE_EMPTY    
7a10: 20 20 20 2a 2f 20 22 74 61 62 6c 65 20 63 6f 6e     */ "table con
7a20: 74 61 69 6e 73 20 6e 6f 20 64 61 74 61 22 2c 0d  tains no data",.
7a30: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7a40: 54 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 2a  TE_SCHEMA      *
7a50: 2f 20 22 64 61 74 61 62 61 73 65 20 73 63 68 65  / "database sche
7a60: 6d 61 20 68 61 73 20 63 68 61 6e 67 65 64 22 2c  ma has changed",
7a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7a80: 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20 20  ITE_TOOBIG      
7a90: 2a 2f 20 22 73 74 72 69 6e 67 20 6f 72 20 62 6c  */ "string or bl
7aa0: 6f 62 20 74 6f 6f 20 62 69 67 22 2c 0d 0a 20 20  ob too big",..  
7ab0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
7ac0: 43 4f 4e 53 54 52 41 49 4e 54 20 20 2a 2f 20 22  CONSTRAINT  */ "
7ad0: 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65  constraint faile
7ae0: 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  d",..        /* 
7af0: 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20  SQLITE_MISMATCH 
7b00: 20 20 20 2a 2f 20 22 64 61 74 61 74 79 70 65 20     */ "datatype 
7b10: 6d 69 73 6d 61 74 63 68 22 2c 0d 0a 20 20 20 20  mismatch",..    
7b20: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4d 49      /* SQLITE_MI
7b30: 53 55 53 45 20 20 20 20 20 20 2a 2f 20 22 62 61  SUSE      */ "ba
7b40: 64 20 70 61 72 61 6d 65 74 65 72 20 6f 72 20 6f  d parameter or o
7b50: 74 68 65 72 20 41 50 49 20 6d 69 73 75 73 65 22  ther API misuse"
7b60: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7b70: 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20  LITE_NOLFS      
7b80: 20 2a 2f 20 22 6c 61 72 67 65 20 66 69 6c 65 20   */ "large file 
7b90: 73 75 70 70 6f 72 74 20 69 73 20 64 69 73 61 62  support is disab
7ba0: 6c 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  led",..        /
7bb0: 2a 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20  * SQLITE_AUTH   
7bc0: 20 20 20 20 20 2a 2f 20 22 61 75 74 68 6f 72 69       */ "authori
7bd0: 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 22 2c 0d  zation denied",.
7be0: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7bf0: 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20 2a  TE_FORMAT      *
7c00: 2f 20 22 61 75 78 69 6c 69 61 72 79 20 64 61 74  / "auxiliary dat
7c10: 61 62 61 73 65 20 66 6f 72 6d 61 74 20 65 72 72  abase format err
7c20: 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a  or",..        /*
7c30: 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20   SQLITE_RANGE   
7c40: 20 20 20 20 2a 2f 20 22 63 6f 6c 75 6d 6e 20 69      */ "column i
7c50: 6e 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67  ndex out of rang
7c60: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  e",..        /* 
7c70: 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20  SQLITE_NOTADB   
7c80: 20 20 20 2a 2f 20 22 66 69 6c 65 20 69 73 20 6e     */ "file is n
7c90: 6f 74 20 61 20 64 61 74 61 62 61 73 65 22 2c 0d  ot a database",.
7ca0: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7cb0: 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 2a  TE_NOTICE      *
7cc0: 2f 20 22 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20  / "notification 
7cd0: 6d 65 73 73 61 67 65 22 2c 0d 0a 20 20 20 20 20  message",..     
7ce0: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 57 41 52     /* SQLITE_WAR
7cf0: 4e 49 4e 47 20 20 20 20 20 2a 2f 20 22 77 61 72  NING     */ "war
7d00: 6e 69 6e 67 20 6d 65 73 73 61 67 65 22 0d 0a 20  ning message".. 
7d10: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7d80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7d90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
7da0: 6e 73 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ns the error mes
7db0: 73 61 67 65 20 66 6f 72 20 74 68 65 20 73 70 65  sage for the spe
7dc0: 63 69 66 69 65 64 20 53 51 4c 69 74 65 20 72 65  cified SQLite re
7dd0: 74 75 72 6e 20 63 6f 64 65 20 75 73 69 6e 67 0d  turn code using.
7de0: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 74  .    /// the int
7df0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6c 6f 6f  ernal static loo
7e00: 6b 75 70 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  kup table...    
7e10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e20: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7e30: 61 6d 65 3d 22 72 63 22 3e 54 68 65 20 53 51 4c  ame="rc">The SQL
7e40: 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
7e50: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
7e60: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 65  / <returns>The e
7e70: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6f 72 20  rror message or 
7e80: 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
7e90: 74 20 62 65 20 66 6f 75 6e 64 2e 3c 2f 72 65 74  t be found.</ret
7ea0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 6f 74 65  urns>..    prote
7eb0: 63 74 65 64 20 73 74 61 74 69 63 20 73 74 72 69  cted static stri
7ec0: 6e 67 20 46 61 6c 6c 62 61 63 6b 47 65 74 45 72  ng FallbackGetEr
7ed0: 72 6f 72 53 74 72 69 6e 67 28 53 51 4c 69 74 65  rorString(SQLite
7ee0: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 0d 0a 20  ErrorCode rc).. 
7ef0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77     {..        sw
7f00: 69 74 63 68 20 28 72 63 29 0d 0a 20 20 20 20 20  itch (rc)..     
7f10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7f20: 20 20 63 61 73 65 20 53 51 4c 69 74 65 45 72 72    case SQLiteErr
7f30: 6f 72 43 6f 64 65 2e 41 62 6f 72 74 5f 52 6f 6c  orCode.Abort_Rol
7f40: 6c 62 61 63 6b 3a 0d 0a 20 20 20 20 20 20 20 20  lback:..        
7f50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
7f60: 61 62 6f 72 74 20 64 75 65 20 74 6f 20 52 4f 4c  abort due to ROL
7f70: 4c 42 41 43 4b 22 3b 0d 0a 20 20 20 20 20 20 20  LBACK";..       
7f80: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
7f90: 45 72 72 6f 72 43 6f 64 65 2e 52 6f 77 3a 0d 0a  ErrorCode.Row:..
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 72 65 74 75 72 6e 20 22 61 6e 6f 74 68 65 72 20  return "another 
7fc0: 72 6f 77 20 61 76 61 69 6c 61 62 6c 65 22 3b 0d  row available";.
7fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7fe0: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
7ff0: 65 2e 44 6f 6e 65 3a 0d 0a 20 20 20 20 20 20 20  e.Done:..       
8000: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8010: 22 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61 76  "no more rows av
8020: 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20 20  ailable";..     
8030: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8040: 69 66 20 28 5f 65 72 72 6f 72 4d 65 73 73 61 67  if (_errorMessag
8050: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
8060: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8070: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
8080: 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 28 69 6e   int index = (in
8090: 74 29 28 72 63 20 26 20 53 51 4c 69 74 65 45 72  t)(rc & SQLiteEr
80a0: 72 6f 72 43 6f 64 65 2e 4e 6f 6e 45 78 74 65 6e  rorCode.NonExten
80b0: 64 65 64 4d 61 73 6b 29 3b 0d 0a 0d 0a 20 20 20  dedMask);....   
80c0: 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
80d0: 3c 20 30 29 20 7c 7c 20 28 69 6e 64 65 78 20 3e  < 0) || (index >
80e0: 3d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67 65 73  = _errorMessages
80f0: 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
8100: 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20 28         index = (
8110: 69 6e 74 29 53 51 4c 69 74 65 45 72 72 6f 72 43  int)SQLiteErrorC
8120: 6f 64 65 2e 45 72 72 6f 72 3b 20 2f 2a 20 4d 61  ode.Error; /* Ma
8130: 6b 65 20 69 6e 74 6f 20 67 65 6e 65 72 69 63 20  ke into generic 
8140: 65 72 72 6f 72 2e 20 2a 2f 0d 0a 0d 0a 20 20 20  error. */....   
8150: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 65 72 72       return _err
8160: 6f 72 4d 65 73 73 61 67 65 73 5b 69 6e 64 65 78  orMessages[index
8170: 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ];..    }....   
8180: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8190: 20 73 74 72 69 6e 67 20 47 65 74 4c 61 73 74 45   string GetLastE
81a0: 72 72 6f 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65  rror(SQLiteConne
81b0: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
81c0: 20 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20 20   IntPtr db)..   
81d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
81e0: 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  (hdl == null) ||
81f0: 20 28 64 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a   (db == IntPtr.Z
8200: 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
8210: 20 20 20 72 65 74 75 72 6e 20 22 6e 75 6c 6c 20     return "null 
8220: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 72 20 64 61  connection or da
8230: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 22 3b 0d  tabase handle";.
8240: 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ...        strin
8250: 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c 3b  g result = null;
8260: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
8270: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8280: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
8290: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
82a0: 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c  }..        final
82b0: 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65  ly /* NOTE: Thre
82c0: 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65  ad.Abort() prote
82d0: 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20  ction. */..     
82e0: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
82f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8300: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
8310: 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52   lock (hdl.syncR
8320: 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  oot)..#else..   
8330: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8340: 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dl)..#endif..   
8350: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8360: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8370: 21 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26  !hdl.IsInvalid &
8380: 26 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29  & !hdl.IsClosed)
8390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83a0: 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45    {..#if !SQLITE
83b0: 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
83d0: 6e 74 20 6c 65 6e 20 3d 20 30 3b 0d 0a 20 20 20  nt len = 0;..   
83e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83f0: 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38 54 6f   result = UTF8To
8400: 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e 61 74  String(UnsafeNat
8410: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
8420: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
8430: 70 28 64 62 2c 20 72 65 66 20 6c 65 6e 29 2c 20  p(db, ref len), 
8440: 6c 65 6e 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  len);..#else..  
8450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8460: 20 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38 54    result = UTF8T
8470: 6f 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e 61  oString(UnsafeNa
8480: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
8490: 74 65 33 5f 65 72 72 6d 73 67 28 64 62 29 2c 20  te3_errmsg(db), 
84a0: 2d 31 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  -1);..#endif..  
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
84c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84d0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
84e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8500: 73 75 6c 74 20 3d 20 22 63 6c 6f 73 65 64 20 6f  sult = "closed o
8510: 72 20 69 6e 76 61 6c 69 64 20 63 6f 6e 6e 65 63  r invalid connec
8520: 74 69 6f 6e 20 68 61 6e 64 6c 65 22 3b 0d 0a 20  tion handle";.. 
8530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8550: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8560: 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65      GC.KeepAlive
8570: 28 68 64 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  (hdl);..        
8580: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
8590: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
85a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
85b0: 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70 28 53  d FinishBackup(S
85c0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
85d0: 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
85e0: 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 7b  r backup)..    {
85f0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68  ..        if ((h
8600: 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  dl == null) || (
8610: 62 61 63 6b 75 70 20 3d 3d 20 49 6e 74 50 74 72  backup == IntPtr
8620: 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d  .Zero)) return;.
8630: 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
8640: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8650: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
8660: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
8670: 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
8680: 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61  y /* NOTE: Threa
8690: 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63  d.Abort() protec
86a0: 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  tion. */..      
86b0: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
86c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
86d0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
86e0: 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f  lock (hdl.syncRo
86f0: 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ot)..#else..    
8700: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
8710: 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  l)..#endif..    
8720: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8730: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
8740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8750: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
8760: 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76   n = UnsafeNativ
8770: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
8780: 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69  _backup_finish_i
8790: 6e 74 65 72 6f 70 28 62 61 63 6b 75 70 29 3b 0d  nterop(backup);.
87a0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
87b0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
87c0: 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61  rorCode n = Unsa
87d0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
87e0: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
87f0: 69 6e 69 73 68 28 62 61 63 6b 75 70 29 3b 0d 0a  inish(backup);..
8800: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
8810: 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 21 3d          if (n !=
8820: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
8830: 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77 20 53  .Ok) throw new S
8840: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e  QLiteException(n
8850: 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
8860: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8870: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
8880: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8890: 20 76 6f 69 64 20 43 6c 6f 73 65 42 6c 6f 62 28   void CloseBlob(
88a0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
88b0: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
88c0: 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 7b 0d  tr blob)..    {.
88d0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64  .        if ((hd
88e0: 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 62  l == null) || (b
88f0: 6c 6f 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lob == IntPtr.Ze
8900: 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a  ro)) return;....
8910: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8930: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
8940: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
8950: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f         finally /
8960: 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41  * NOTE: Thread.A
8970: 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f  bort() protectio
8980: 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  n. */..        {
8990: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
89a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
89b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
89c0: 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29  k (hdl.syncRoot)
89d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
89e0: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d       lock (hdl).
89f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8a00: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c       {..#if !SQL
8a10: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
8a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
8a30: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20  LiteErrorCode n 
8a40: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
8a50: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 62 6c  thods.sqlite3_bl
8a60: 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
8a70: 28 62 6c 6f 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a  (blob);..#else..
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8aa0: 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  n = UnsafeNative
8ab0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
8ac0: 62 6c 6f 62 5f 63 6c 6f 73 65 28 62 6c 6f 62 29  blob_close(blob)
8ad0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
8ae0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
8af0: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
8b00: 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65  ode.Ok) throw ne
8b10: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
8b20: 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20  n(n, null);..   
8b30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8b40: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
8b50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8b60: 74 69 63 20 76 6f 69 64 20 46 69 6e 61 6c 69 7a  tic void Finaliz
8b70: 65 53 74 61 74 65 6d 65 6e 74 28 53 51 4c 69 74  eStatement(SQLit
8b80: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
8b90: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 73 74  e hdl, IntPtr st
8ba0: 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  mt)..    {..    
8bb0: 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20      if ((hdl == 
8bc0: 6e 75 6c 6c 29 20 7c 7c 20 28 73 74 6d 74 20 3d  null) || (stmt =
8bd0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
8be0: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
8bf0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
8c00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
8c10: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
8c20: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8c30: 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54    finally /* NOT
8c40: 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28  E: Thread.Abort(
8c50: 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f  ) protection. */
8c60: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
8c70: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
8c80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8c90: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
8ca0: 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c  l.syncRoot)..#el
8cb0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
8cc0: 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64  lock (hdl)..#end
8cd0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
8ce0: 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  {..#if !SQLITE_S
8cf0: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
8d00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
8d10: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
8d20: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8d30: 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  .sqlite3_finaliz
8d40: 65 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29 3b  e_interop(stmt);
8d50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8d60: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
8d70: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
8d80: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8d90: 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  .sqlite3_finaliz
8da0: 65 28 73 74 6d 74 29 3b 0d 0a 23 65 6e 64 69 66  e(stmt);..#endif
8db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8dc0: 20 20 69 66 20 28 6e 20 21 3d 20 53 51 4c 69 74    if (n != SQLit
8dd0: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74  eErrorCode.Ok) t
8de0: 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45  hrow new SQLiteE
8df0: 78 63 65 70 74 69 6f 6e 28 6e 2c 20 6e 75 6c 6c  xception(n, null
8e00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
8e10: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
8e20: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72    }....    inter
8e30: 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20  nal static void 
8e40: 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
8e50: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
8e60: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
8e70: 74 72 20 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20  tr db)..    {.. 
8e80: 20 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20         if ((hdl 
8e90: 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20  == null) || (db 
8ea0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  == IntPtr.Zero))
8eb0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
8ec0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
8ed0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8ee0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8ef0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8f00: 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f     finally /* NO
8f10: 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74  TE: Thread.Abort
8f20: 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a  () protection. *
8f30: 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  /..        {..#i
8f40: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
8f50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8f60: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8f70: 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  dl.syncRoot)..#e
8f80: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
8f90: 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e   lock (hdl)..#en
8fa0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
8fb0: 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f   {..#if !SQLITE_
8fc0: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
8fd0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
8fe0: 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e  ErrorCode n = Un
8ff0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
9000: 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  s.sqlite3_close_
9010: 69 6e 74 65 72 6f 70 28 64 62 29 3b 0d 0a 23 65  interop(db);..#e
9020: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
9030: 20 20 20 20 20 52 65 73 65 74 43 6f 6e 6e 65 63       ResetConnec
9040: 74 69 6f 6e 28 68 64 6c 2c 20 64 62 2c 20 66 61  tion(hdl, db, fa
9050: 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lse);....       
9060: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
9070: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
9080: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9090: 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 64  .sqlite3_close(d
90a0: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  b);..#endif..   
90b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
90c0: 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  (n != SQLiteErro
90d0: 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20  rCode.Ok) throw 
90e0: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
90f0: 69 6f 6e 28 6e 2c 20 47 65 74 4c 61 73 74 45 72  ion(n, GetLastEr
9100: 72 6f 72 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a  ror(hdl, db));..
9110: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9120: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
9130: 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f  ...#if !INTEROP_
9140: 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 20 20  LEGACY_CLOSE..  
9150: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9160: 63 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e  c void CloseConn
9170: 65 63 74 69 6f 6e 56 32 28 53 51 4c 69 74 65 43  ectionV2(SQLiteC
9180: 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
9190: 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 0d  hdl, IntPtr db).
91a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
91b0: 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c  if ((hdl == null
91c0: 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e 74 50  ) || (db == IntP
91d0: 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e  tr.Zero)) return
91e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
91f0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9200: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
9210: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
9220: 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61   }..        fina
9230: 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72  lly /* NOTE: Thr
9240: 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74  ead.Abort() prot
9250: 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20  ection. */..    
9260: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
9270: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9280: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
9290: 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63    lock (hdl.sync
92a0: 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  Root)..#else..  
92b0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
92c0: 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  hdl)..#endif..  
92d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
92e0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
92f0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
9300: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
9310: 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74  de n = UnsafeNat
9320: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
9330: 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
9340: 28 64 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  (db);..#else..  
9350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
9360: 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28 68 64  setConnection(hd
9370: 6c 2c 20 64 62 2c 20 66 61 6c 73 65 29 3b 0d 0a  l, db, false);..
9380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9390: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
93a0: 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  e n = UnsafeNati
93b0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
93c0: 33 5f 63 6c 6f 73 65 5f 76 32 28 64 62 29 3b 0d  3_close_v2(db);.
93d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
93e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 21           if (n !
93f0: 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
9400: 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77 20  e.Ok) throw new 
9410: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
9420: 6e 2c 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28  n, GetLastError(
9430: 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20  hdl, db));..    
9440: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9450: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e     }..    }..#en
9460: 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  dif....    inter
9470: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
9480: 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28  ResetConnection(
9490: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
94a0: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
94b0: 74 72 20 64 62 2c 20 62 6f 6f 6c 20 63 61 6e 54  tr db, bool canT
94c0: 68 72 6f 77 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  hrow)..    {..  
94d0: 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d        if ((hdl =
94e0: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d  = null) || (db =
94f0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
9500: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
9510: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65  .        bool re
9520: 73 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  sult = false;...
9530: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
9540: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9550: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
9560: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
9570: 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20          finally 
9580: 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e  /* NOTE: Thread.
9590: 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69  Abort() protecti
95a0: 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  on. */..        
95b0: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
95c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
95d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
95e0: 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74  ck (hdl.syncRoot
95f0: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
9600: 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29        lock (hdl)
9610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
9620: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9630: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61 6e           if (can
9640: 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49 73 49  Throw && hdl.IsI
9650: 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20  nvalid)..       
9660: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
9670: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
9680: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
9690: 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  ("The connection
96a0: 20 68 61 6e 64 6c 65 20 69 73 20 69 6e 76 61 6c   handle is inval
96b0: 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  id.");....      
96c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
96d0: 6e 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49 73  nThrow && hdl.Is
96e0: 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  Closed)..       
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
9700: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
9710: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
9720: 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  ("The connection
9730: 20 68 61 6e 64 6c 65 20 69 73 20 63 6c 6f 73 65   handle is close
9740: 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  d.");....       
9750: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 68 64           if (!hd
9760: 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26 26 20 21  l.IsInvalid && !
9770: 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20  hdl.IsClosed).. 
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97a0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 73 74 6d        IntPtr stm
97b0: 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
97c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97d0: 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
97e0: 72 43 6f 64 65 20 6e 3b 0d 0a 0d 0a 20 20 20 20  rCode n;....    
97f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9800: 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  do..            
9810: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9830: 20 20 20 73 74 6d 74 20 3d 20 55 6e 73 61 66 65     stmt = Unsafe
9840: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
9850: 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28  lite3_next_stmt(
9860: 64 62 2c 20 73 74 6d 74 29 3b 0d 0a 20 20 20 20  db, stmt);..    
9870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9880: 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
9890: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98b0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51        {..#if !SQ
98c0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98e0: 20 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 55             n = U
98f0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
9900: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 65 74  ds.sqlite3_reset
9910: 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29 3b 0d  _interop(stmt);.
9920: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
9930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9940: 20 20 20 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61      n = UnsafeNa
9950: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
9960: 74 65 33 5f 72 65 73 65 74 28 73 74 6d 74 29 3b  te3_reset(stmt);
9970: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
99a0: 20 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65           } while
99b0: 20 28 73 74 6d 74 20 21 3d 20 49 6e 74 50 74 72   (stmt != IntPtr
99c0: 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
99e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
99f0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9a00: 49 73 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  Is a transaction
9a10: 20 4e 4f 54 20 70 65 6e 64 69 6e 67 20 6f 6e 20   NOT pending on 
9a20: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3f 0d  the connection?.
9a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a40: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9a60: 28 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28 68 64  (IsAutocommit(hd
9a70: 6c 2c 20 64 62 29 29 0d 0a 20 20 20 20 20 20 20  l, db))..       
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9aa0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
9ab0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ae0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b10: 20 20 20 20 20 20 20 20 6e 20 3d 20 55 6e 73 61          n = Unsa
9b20: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
9b30: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0d 0a 20  sqlite3_exec(.. 
9b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b50: 20 20 20 20 20 20 20 20 20 20 20 64 62 2c 20 54             db, T
9b60: 6f 55 54 46 38 28 22 52 4f 4c 4c 42 41 43 4b 22  oUTF8("ROLLBACK"
9b70: 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  ), IntPtr.Zero, 
9b80: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
9b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ba0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
9bb0: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mt);....        
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 69 66 20 28 6e 20 3d 3d 20 53 51 4c 69 74 65 45  if (n == SQLiteE
9be0: 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
9bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c00: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c20: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 74 72       result = tr
9c30: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
9c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c60: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
9c70: 28 63 61 6e 54 68 72 6f 77 29 0d 0a 20 20 20 20  (canThrow)..    
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cb0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c     throw new SQL
9cc0: 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e 2c 20  iteException(n, 
9cd0: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 68 64 6c  GetLastError(hdl
9ce0: 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20 20 20 20  , db));..       
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9d10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9d20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9d30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9d40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9d50: 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68 64 6c  GC.KeepAlive(hdl
9d60: 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  );..        retu
9d70: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
9d80: 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  }....    interna
9d90: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
9da0: 41 75 74 6f 63 6f 6d 6d 69 74 28 53 51 4c 69 74  Autocommit(SQLit
9db0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
9dc0: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
9dd0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
9de0: 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75    if ((hdl == nu
9df0: 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e  ll) || (db == In
9e00: 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75  tPtr.Zero)) retu
9e10: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
9e20: 20 20 20 20 20 62 6f 6f 6c 20 72 65 73 75 6c 74       bool result
9e30: 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20   = false;....   
9e40: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
9e50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9e60: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
9e70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9e80: 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e      finally /* N
9e90: 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72  OTE: Thread.Abor
9ea0: 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20  t() protection. 
9eb0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  */..        {..#
9ec0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
9ed0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9ee0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
9ef0: 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  hdl.syncRoot)..#
9f00: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
9f10: 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65    lock (hdl)..#e
9f20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9f30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9f40: 20 20 20 20 20 69 66 20 28 21 68 64 6c 2e 49 73       if (!hdl.Is
9f50: 49 6e 76 61 6c 69 64 20 26 26 20 21 68 64 6c 2e  Invalid && !hdl.
9f60: 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
9f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
9f80: 65 73 75 6c 74 20 3d 20 28 55 6e 73 61 66 65 4e  esult = (UnsafeN
9f90: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9fa0: 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d  ite3_get_autocom
9fb0: 6d 69 74 28 64 62 29 20 3d 3d 20 31 29 3b 0d 0a  mit(db) == 1);..
9fc0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9fd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9fe0: 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68    GC.KeepAlive(h
9ff0: 64 6c 29 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 6e  dl); /* NOTE: Un
a000: 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 2e 20  reachable code. 
a010: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  */..        retu
a020: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
a030: 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  }..  }....  /// 
a040: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
a050: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
a060: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 69 6e 74  y>..  public int
a070: 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 53 63  erface ISQLiteSc
a080: 68 65 6d 61 45 78 74 65 6e 73 69 6f 6e 73 0d 0a  hemaExtensions..
a090: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
a0a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a0b0: 2f 2f 2f 20 43 72 65 61 74 65 73 20 74 65 6d 70  /// Creates temp
a0c0: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 6f 6e 20  orary tables on 
a0d0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  the connection s
a0e0: 6f 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61  o schema informa
a0f0: 74 69 6f 6e 20 63 61 6e 20 62 65 20 71 75 65 72  tion can be quer
a100: 69 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ied...      /// 
a110: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a120: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
a130: 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d  e="connection">.
a140: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
a150: 6f 6e 6e 65 63 74 69 6f 6e 20 75 70 6f 6e 20 77  onnection upon w
a160: 68 69 63 68 20 74 6f 20 62 75 69 6c 64 20 74 68  hich to build th
a170: 65 20 73 63 68 65 6d 61 20 74 61 62 6c 65 73 2e  e schema tables.
a180: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
a190: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 76 6f 69 64  ram>..      void
a1a0: 20 42 75 69 6c 64 54 65 6d 70 53 63 68 65 6d 61   BuildTempSchema
a1b0: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
a1c0: 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a  n connection);..
a1d0: 20 20 7d 0d 0a 0d 0a 20 20 5b 46 6c 61 67 73 5d    }....  [Flags]
a1e0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
a1f0: 6d 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  m SQLiteOpenFlag
a200: 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  sEnum..  {..    
a210: 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 20 20 20 20 52  None = 0,..    R
a220: 65 61 64 4f 6e 6c 79 20 3d 20 30 78 31 2c 0d 0a  eadOnly = 0x1,..
a230: 20 20 20 20 52 65 61 64 57 72 69 74 65 20 3d 20      ReadWrite = 
a240: 30 78 32 2c 0d 0a 20 20 20 20 43 72 65 61 74 65  0x2,..    Create
a250: 20 3d 20 30 78 34 2c 0d 0a 20 20 20 20 55 72 69   = 0x4,..    Uri
a260: 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 4d 65   = 0x40,..    Me
a270: 6d 6f 72 79 20 3d 20 30 78 38 30 2c 0d 0a 20 20  mory = 0x80,..  
a280: 20 20 44 65 66 61 75 6c 74 20 3d 20 52 65 61 64    Default = Read
a290: 57 72 69 74 65 20 7c 20 43 72 65 61 74 65 2c 0d  Write | Create,.
a2a0: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
a2b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
a2c0: 68 65 20 65 78 74 72 61 20 62 65 68 61 76 69 6f  he extra behavio
a2d0: 72 61 6c 20 66 6c 61 67 73 20 74 68 61 74 20 63  ral flags that c
a2e0: 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f  an be applied to
a2f0: 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a   a connection...
a300: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a310: 0d 0a 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20  ..  [Flags()].. 
a320: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
a330: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
a340: 67 73 20 3a 20 6c 6f 6e 67 0d 0a 20 20 7b 0d 0a  gs : long..  {..
a350: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a360: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
a370: 6f 20 65 78 74 72 61 20 66 6c 61 67 73 2e 0d 0a  o extra flags...
a380: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a390: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
a3a0: 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20 20   = 0x0,....     
a3b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a3c0: 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65        /// Enable
a3d0: 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20   logging of all 
a3e0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74  SQL statements t
a3f0: 6f 20 62 65 20 70 72 65 70 61 72 65 64 2e 0d 0a  o be prepared...
a400: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a410: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50  ary>..      LogP
a420: 72 65 70 61 72 65 20 3d 20 30 78 31 2c 0d 0a 0d  repare = 0x1,...
a430: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a440: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a450: 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f  Enable logging o
a460: 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61  f all bound para
a470: 6d 65 74 65 72 20 74 79 70 65 73 20 61 6e 64 20  meter types and 
a480: 72 61 77 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  raw values...   
a490: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a4a0: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50 72 65 42  >..      LogPreB
a4b0: 69 6e 64 20 3d 20 30 78 32 2c 0d 0a 0d 0a 20 20  ind = 0x2,....  
a4c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a4d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
a4e0: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61  ble logging of a
a4f0: 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61 6d 65 74  ll bound paramet
a500: 65 72 20 73 74 72 6f 6e 67 6c 79 20 74 79 70 65  er strongly type
a510: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  d values...     
a520: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a530: 0a 20 20 20 20 20 20 4c 6f 67 42 69 6e 64 20 3d  .      LogBind =
a540: 20 30 78 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x4,....      /
a550: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a560: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c      /// Enable l
a570: 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20 65 78  ogging of all ex
a580: 63 65 70 74 69 6f 6e 73 20 63 61 75 67 68 74 20  ceptions caught 
a590: 66 72 6f 6d 20 75 73 65 72 2d 70 72 6f 76 69 64  from user-provid
a5a0: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61  ed..      /// ma
a5b0: 6e 61 67 65 64 20 63 6f 64 65 20 63 61 6c 6c 65  naged code calle
a5c0: 64 20 66 72 6f 6d 20 6e 61 74 69 76 65 20 63 6f  d from native co
a5d0: 64 65 20 76 69 61 20 64 65 6c 65 67 61 74 65 73  de via delegates
a5e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a5f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
a600: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
a610: 69 6f 6e 20 3d 20 30 78 38 2c 0d 0a 0d 0a 20 20  ion = 0x8,....  
a620: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a630: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
a640: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 62  ble logging of b
a650: 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f 72 73  ackup API errors
a660: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
a680: 6f 67 42 61 63 6b 75 70 20 3d 20 30 78 31 30 2c  ogBackup = 0x10,
a690: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
a6a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
a6b0: 2f 2f 20 53 6b 69 70 20 61 64 64 69 6e 67 20 74  // Skip adding t
a6c0: 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 75 6e  he extension fun
a6d0: 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20  ctions provided 
a6e0: 62 79 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  by the native.. 
a6f0: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 6f 70       /// interop
a700: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
a710: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a720: 0d 0a 20 20 20 20 20 20 4e 6f 45 78 74 65 6e 73  ..      NoExtens
a730: 69 6f 6e 46 75 6e 63 74 69 6f 6e 73 20 3d 20 30  ionFunctions = 0
a740: 78 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  x20,....      //
a750: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a760: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
a770: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
a780: 6c 75 65 73 20 77 69 74 68 20 74 68 65 20 3c 73  lues with the <s
a790: 65 65 20 63 72 65 66 3d 22 55 49 6e 74 33 32 22  ee cref="UInt32"
a7a0: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   />..      /// t
a7b0: 79 70 65 2c 20 75 73 65 20 74 68 65 20 69 6e 74  ype, use the int
a7c0: 65 72 6f 70 20 6d 65 74 68 6f 64 20 74 68 61 74  erop method that
a7d0: 20 61 63 63 65 70 74 73 20 61 6e 20 3c 73 65 65   accepts an <see
a7e0: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
a7f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75  ..      /// valu
a800: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
a810: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a820: 42 69 6e 64 55 49 6e 74 33 32 41 73 49 6e 74 36  BindUInt32AsInt6
a830: 34 20 3d 20 30 78 34 30 2c 0d 0a 0d 0a 20 20 20  4 = 0x40,....   
a840: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a850: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
a860: 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74   binding paramet
a870: 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  er values, alway
a880: 73 20 62 69 6e 64 20 74 68 65 6d 20 61 73 20 74  s bind them as t
a890: 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 0d  hough they were.
a8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c 61 69 6e  .      /// plain
a8b0: 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e   text (i.e. no n
a8c0: 75 6d 65 72 69 63 2c 20 64 61 74 65 2f 74 69 6d  umeric, date/tim
a8d0: 65 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76  e, or other conv
a8e0: 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64 0d 0a  ersions should..
a8f0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61 74 74        /// be att
a900: 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  empted)...      
a910: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a920: 20 20 20 20 20 20 42 69 6e 64 41 6c 6c 41 73 54        BindAllAsT
a930: 65 78 74 20 3d 20 30 78 38 30 2c 0d 0a 0d 0a 20  ext = 0x80,.... 
a940: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a950: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
a960: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  en returning col
a970: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
a980: 79 73 20 72 65 74 75 72 6e 20 74 68 65 6d 20 61  ys return them a
a990: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
a9a0: 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c  re..      /// pl
a9b0: 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e  ain text (i.e. n
a9c0: 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61 74 65 2f  o numeric, date/
a9d0: 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63  time, or other c
a9e0: 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c  onversions shoul
a9f0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  d..      /// be 
aa00: 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20  attempted)...   
aa10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
aa20: 3e 0d 0a 20 20 20 20 20 20 47 65 74 41 6c 6c 41  >..      GetAllA
aa30: 73 54 65 78 74 20 3d 20 30 78 31 30 30 2c 0d 0a  sText = 0x100,..
aa40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
aa50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
aa60: 20 50 72 65 76 65 6e 74 20 74 68 69 73 20 3c 73   Prevent this <s
aa70: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
aa80: 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  onnection" /> ob
aa90: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 66 72  ject instance fr
aaa0: 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  om..      /// lo
aab0: 61 64 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73  ading extensions
aac0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
aad0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
aae0: 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 20 3d  oLoadExtension =
aaf0: 20 30 78 32 30 30 2c 0d 0a 0d 0a 23 69 66 20 49   0x200,....#if I
ab00: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
ab10: 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ABLE..      /// 
ab20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ab30: 20 2f 2f 2f 20 50 72 65 76 65 6e 74 20 74 68 69   /// Prevent thi
ab40: 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  s <see cref="SQL
ab50: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
ab60: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
ab70: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f  e from..      //
ab80: 2f 20 63 72 65 61 74 69 6e 67 20 76 69 72 74 75  / creating virtu
ab90: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73  al table modules
aba0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
abb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
abc0: 6f 43 72 65 61 74 65 4d 6f 64 75 6c 65 20 3d 20  oCreateModule = 
abd0: 30 78 34 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a  0x400,..#endif..
abe0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
abf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
ac00: 20 53 6b 69 70 20 62 69 6e 64 69 6e 67 20 61 6e   Skip binding an
ac10: 79 20 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76  y functions prov
ac20: 69 64 65 64 20 62 79 20 6f 74 68 65 72 20 6d 61  ided by other ma
ac30: 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73  naged assemblies
ac40: 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f   when..      ///
ac50: 20 6f 70 65 6e 69 6e 67 20 74 68 65 20 63 6f 6e   opening the con
ac60: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
ac70: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ac80: 20 20 20 20 20 20 4e 6f 42 69 6e 64 46 75 6e 63        NoBindFunc
ac90: 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 2c 0d 0a  tions = 0x800,..
aca0: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
acb0: 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
acc0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
acd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 6b 69 70  ..      /// Skip
ace0: 20 73 65 74 74 69 6e 67 20 74 68 65 20 6c 6f 67   setting the log
acf0: 67 69 6e 67 20 72 65 6c 61 74 65 64 20 70 72 6f  ging related pro
ad00: 70 65 72 74 69 65 73 20 6f 66 20 74 68 65 0d 0a  perties of the..
ad10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
ad20: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
ad30: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
ad40: 74 61 6e 63 65 20 74 68 61 74 20 77 61 73 20 70  tance that was p
ad50: 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  assed to..      
ad60: 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63 72 65  /// the <see cre
ad70: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
ad80: 69 6f 6e 2e 43 72 65 61 74 65 4d 6f 64 75 6c 65  ion.CreateModule
ad90: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
ada0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
adb0: 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 4c 6f 67 4d  y>..      NoLogM
adc0: 6f 64 75 6c 65 20 3d 20 30 78 31 30 30 30 2c 0d  odule = 0x1000,.
add0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ade0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
adf0: 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67  / Enable logging
ae00: 20 6f 66 20 61 6c 6c 20 76 69 72 74 75 61 6c 20   of all virtual 
ae10: 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 65 72 72  table module err
ae20: 6f 72 73 20 73 65 65 6e 20 62 79 20 74 68 65 0d  ors seen by the.
ae30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
ae40: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
ae50: 6c 65 2e 53 65 74 54 61 62 6c 65 45 72 72 6f 72  le.SetTableError
ae60: 28 49 6e 74 50 74 72 2c 53 74 72 69 6e 67 29 22  (IntPtr,String)"
ae70: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
ae80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ae90: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75  >..      LogModu
aea0: 6c 65 45 72 72 6f 72 20 3d 20 30 78 32 30 30 30  leError = 0x2000
aeb0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
aec0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
aed0: 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69  /// Enable loggi
aee0: 6e 67 20 6f 66 20 63 65 72 74 61 69 6e 20 76 69  ng of certain vi
aef0: 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
af00: 6c 65 20 65 78 63 65 70 74 69 6f 6e 73 20 74 68  le exceptions th
af10: 61 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20  at cannot..     
af20: 20 2f 2f 2f 20 62 65 20 65 61 73 69 6c 79 20 64   /// be easily d
af30: 69 73 63 6f 76 65 72 65 64 20 76 69 61 20 6f 74  iscovered via ot
af40: 68 65 72 20 6d 65 61 6e 73 2e 0d 0a 20 20 20 20  her means...    
af50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
af60: 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75 6c  ..      LogModul
af70: 65 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 34  eException = 0x4
af80: 30 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  000,..#endif....
af90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
afa0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
afb0: 6e 61 62 6c 65 20 74 72 61 63 69 6e 67 20 6f 66  nable tracing of
afc0: 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69 6d 70   potentially imp
afd0: 6f 72 74 61 6e 74 20 5b 6e 6f 6e 2d 66 61 74 61  ortant [non-fata
afe0: 6c 5d 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69  l] error conditi
aff0: 6f 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ons..      /// t
b000: 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 65 61  hat cannot be ea
b010: 73 69 6c 79 20 72 65 70 6f 72 74 65 64 20 74 68  sily reported th
b020: 72 6f 75 67 68 20 6f 74 68 65 72 20 6d 65 61 6e  rough other mean
b030: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
b040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b050: 54 72 61 63 65 57 61 72 6e 69 6e 67 20 3d 20 30  TraceWarning = 0
b060: 78 38 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  x8000,....      
b070: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b080: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
b090: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
b0a0: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 75  values, always u
b0b0: 73 65 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74  se the invariant
b0c0: 20 63 75 6c 74 75 72 65 20 77 68 65 6e 0d 0a 20   culture when.. 
b0d0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
b0e0: 69 6e 67 20 74 68 65 69 72 20 76 61 6c 75 65 73  ing their values
b0f0: 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d 0a   from strings...
b100: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
b110: 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 76  ary>..      Conv
b120: 65 72 74 49 6e 76 61 72 69 61 6e 74 54 65 78 74  ertInvariantText
b130: 20 3d 20 30 78 31 30 30 30 30 2c 0d 0a 0d 0a 20   = 0x10000,.... 
b140: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b150: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
b160: 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d  en binding param
b170: 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77  eter values, alw
b180: 61 79 73 20 75 73 65 20 74 68 65 20 69 6e 76 61  ays use the inva
b190: 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68  riant culture wh
b1a0: 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  en..      /// co
b1b0: 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20 76  nverting their v
b1c0: 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73  alues to strings
b1d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b1e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 42  ummary>..      B
b1f0: 69 6e 64 49 6e 76 61 72 69 61 6e 74 54 65 78 74  indInvariantText
b200: 20 3d 20 30 78 32 30 30 30 30 2c 0d 0a 0d 0a 20   = 0x20000,.... 
b210: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b220: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 69  y>..      /// Di
b230: 73 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 20  sable using the 
b240: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 20  connection pool 
b250: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20  by default.  If 
b260: 74 68 65 20 22 50 6f 6f 6c 69 6e 67 22 0d 0a 20  the "Pooling".. 
b270: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
b280: 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f 70 65  ion string prope
b290: 72 74 79 20 69 73 20 73 70 65 63 69 66 69 65 64  rty is specified
b2a0: 2c 20 69 74 73 20 76 61 6c 75 65 20 77 69 6c 6c  , its value will
b2b0: 20 6f 76 65 72 72 69 64 65 0d 0a 20 20 20 20 20   override..     
b2c0: 20 2f 2f 2f 20 74 68 69 73 20 66 6c 61 67 2e 20   /// this flag. 
b2d0: 20 54 68 65 20 70 72 65 63 69 73 65 20 6f 75 74   The precise out
b2e0: 63 6f 6d 65 20 6f 66 20 63 6f 6d 62 69 6e 69 6e  come of combinin
b2f0: 67 20 74 68 69 73 20 66 6c 61 67 20 77 69 74 68  g this flag with
b300: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
b310: 3c 73 65 65 20 63 72 65 66 3d 22 55 73 65 43 6f  <see cref="UseCo
b320: 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 22 20 2f 3e  nnectionPool" />
b330: 20 66 6c 61 67 20 69 73 20 75 6e 73 70 65 63 69   flag is unspeci
b340: 66 69 65 64 3b 20 68 6f 77 65 76 65 72 2c 0d 0a  fied; however,..
b350: 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 65 20 6f 66        /// one of
b360: 20 74 68 65 20 66 6c 61 67 73 20 77 69 6c 6c 20   the flags will 
b370: 62 65 20 69 6e 20 65 66 66 65 63 74 2e 0d 0a 20  be in effect... 
b380: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b390: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43 6f 6e  ry>..      NoCon
b3a0: 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20 3d 20 30 78  nectionPool = 0x
b3b0: 34 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  40000,....      
b3c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b3d0: 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20       /// Enable 
b3e0: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
b3f0: 74 69 6f 6e 20 70 6f 6f 6c 20 62 79 20 64 65 66  tion pool by def
b400: 61 75 6c 74 2e 20 20 49 66 20 74 68 65 20 22 50  ault.  If the "P
b410: 6f 6f 6c 69 6e 67 22 0d 0a 20 20 20 20 20 20 2f  ooling"..      /
b420: 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  // connection st
b430: 72 69 6e 67 20 70 72 6f 70 65 72 74 79 20 69 73  ring property is
b440: 20 73 70 65 63 69 66 69 65 64 2c 20 69 74 73 20   specified, its 
b450: 76 61 6c 75 65 20 77 69 6c 6c 20 6f 76 65 72 72  value will overr
b460: 69 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ide..      /// t
b470: 68 69 73 20 66 6c 61 67 2e 20 20 54 68 65 20 70  his flag.  The p
b480: 72 65 63 69 73 65 20 6f 75 74 63 6f 6d 65 20 6f  recise outcome o
b490: 66 20 63 6f 6d 62 69 6e 69 6e 67 20 74 68 69 73  f combining this
b4a0: 20 66 6c 61 67 20 77 69 74 68 20 74 68 65 0d 0a   flag with the..
b4b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b4c0: 72 65 66 3d 22 4e 6f 43 6f 6e 6e 65 63 74 69 6f  ref="NoConnectio
b4d0: 6e 50 6f 6f 6c 22 20 2f 3e 20 66 6c 61 67 20 69  nPool" /> flag i
b4e0: 73 20 75 6e 73 70 65 63 69 66 69 65 64 3b 20 68  s unspecified; h
b4f0: 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20 20 2f  owever,..      /
b500: 2f 2f 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6c  // one of the fl
b510: 61 67 73 20 77 69 6c 6c 20 62 65 20 69 6e 20 65  ags will be in e
b520: 66 66 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  ffect...      //
b530: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b540: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
b550: 6e 50 6f 6f 6c 20 3d 20 30 78 38 30 30 30 30 2c  nPool = 0x80000,
b560: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
b570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
b580: 2f 2f 20 45 6e 61 62 6c 65 20 75 73 69 6e 67 20  // Enable using 
b590: 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d  per-connection m
b5a0: 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20  appings between 
b5b0: 74 79 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a  type names and..
b5c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b5d0: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
b5e0: 76 61 6c 75 65 73 2e 20 20 41 6c 73 6f 20 73 65  values.  Also se
b5f0: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
b600: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b610: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65  teConnection.Cle
b620: 61 72 54 79 70 65 4d 61 70 70 69 6e 67 73 22 20  arTypeMappings" 
b630: 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  />,..      /// <
b640: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b650: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 47 65 74 54 79  Connection.GetTy
b660: 70 65 4d 61 70 70 69 6e 67 73 22 20 2f 3e 2c 20  peMappings" />, 
b670: 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  and..      /// <
b680: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b690: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 64 64 54 79  Connection.AddTy
b6a0: 70 65 4d 61 70 70 69 6e 67 22 20 2f 3e 20 6d 65  peMapping" /> me
b6b0: 74 68 6f 64 73 2e 20 20 54 68 65 73 65 0d 0a 20  thods.  These.. 
b6c0: 20 20 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e       /// per-con
b6d0: 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73  nection mappings
b6e0: 2c 20 77 68 65 6e 20 70 72 65 73 65 6e 74 2c 20  , when present, 
b6f0: 6f 76 65 72 72 69 64 65 20 74 68 65 20 63 6f 72  override the cor
b700: 72 65 73 70 6f 6e 64 69 6e 67 0d 0a 20 20 20 20  responding..    
b710: 20 20 2f 2f 2f 20 67 6c 6f 62 61 6c 20 6d 61 70    /// global map
b720: 70 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  pings...      //
b730: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b740: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
b750: 6e 54 79 70 65 73 20 3d 20 30 78 31 30 30 30 30  nTypes = 0x10000
b760: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
b770: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b780: 20 2f 2f 2f 20 44 69 73 61 62 6c 65 20 75 73 69   /// Disable usi
b790: 6e 67 20 67 6c 6f 62 61 6c 20 6d 61 70 70 69 6e  ng global mappin
b7a0: 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65 20  gs between type 
b7b0: 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20 20  names and..     
b7c0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b7d0: 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65  DbType" /> value
b7e0: 73 2e 20 20 54 68 69 73 20 6d 61 79 20 62 65 20  s.  This may be 
b7f0: 75 73 65 66 75 6c 20 69 6e 20 73 6f 6d 65 20 76  useful in some v
b800: 65 72 79 20 6e 61 72 72 6f 77 0d 0a 20 20 20 20  ery narrow..    
b810: 20 20 2f 2f 2f 20 63 61 73 65 73 3b 20 68 6f 77    /// cases; how
b820: 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20 61  ever, if there a
b830: 72 65 20 6e 6f 20 70 65 72 2d 63 6f 6e 6e 65 63  re no per-connec
b840: 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70 69 6e  tion type mappin
b850: 67 73 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  gs, the..      /
b860: 2f 2f 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61  // fallback defa
b870: 75 6c 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65  ults will be use
b880: 64 20 66 6f 72 20 62 6f 74 68 20 74 79 70 65 20  d for both type 
b890: 6e 61 6d 65 73 20 61 6e 64 20 74 68 65 69 72 0d  names and their.
b8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63  .      /// assoc
b8b0: 69 61 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d  iated <see cref=
b8c0: 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
b8d0: 65 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20  es.  Therefore, 
b8e0: 75 73 65 20 6f 66 20 74 68 69 73 20 66 6c 61 67  use of this flag
b8f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e  ..      /// is n
b900: 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0d  ot recommended..
b910: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b920: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 47  mary>..      NoG
b930: 6c 6f 62 61 6c 54 79 70 65 73 20 3d 20 30 78 32  lobalTypes = 0x2
b940: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
b950: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b960: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68       /// When th
b970: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
b980: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 48 61  iteDataReader.Ha
b990: 73 52 6f 77 73 22 20 2f 3e 20 70 72 6f 70 65 72  sRows" /> proper
b9a0: 74 79 20 69 73 20 75 73 65 64 2c 20 69 74 0d 0a  ty is used, it..
b9b0: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
b9c0: 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65 72 6f   return non-zero
b9d0: 20 69 66 20 74 68 65 72 65 20 77 65 72 65 20 65   if there were e
b9e0: 76 65 72 20 61 6e 79 20 72 6f 77 73 20 69 6e 20  ver any rows in 
b9f0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  the associated..
ba00: 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75 6c 74        /// result
ba10: 20 73 65 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   sets...      //
ba20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ba30: 20 20 20 20 53 74 69 63 6b 79 48 61 73 52 6f 77      StickyHasRow
ba40: 73 20 3d 20 30 78 34 30 30 30 30 30 2c 0d 0a 0d  s = 0x400000,...
ba50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
ba60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
ba70: 45 6e 61 62 6c 65 20 22 73 74 72 69 63 74 22 20  Enable "strict" 
ba80: 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 6e 6c 69  transaction enli
ba90: 73 74 6d 65 6e 74 20 73 65 6d 61 6e 74 69 63 73  stment semantics
baa0: 2e 20 20 53 65 74 74 69 6e 67 20 74 68 69 73 20  .  Setting this 
bab0: 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  flag..      /// 
bac0: 77 69 6c 6c 20 63 61 75 73 65 20 61 6e 20 65 78  will cause an ex
bad0: 63 65 70 74 69 6f 6e 20 74 6f 20 62 65 20 74 68  ception to be th
bae0: 72 6f 77 6e 20 69 66 20 61 6e 20 61 74 74 65 6d  rown if an attem
baf0: 70 74 20 69 73 20 6d 61 64 65 20 74 6f 20 65 6e  pt is made to en
bb00: 6c 69 73 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  list..      /// 
bb10: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
bb20: 20 77 69 74 68 20 61 6e 20 75 6e 61 76 61 69 6c   with an unavail
bb30: 61 62 6c 65 20 6f 72 20 75 6e 73 75 70 70 6f 72  able or unsuppor
bb40: 74 65 64 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65  ted isolation le
bb50: 76 65 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  vel...      /// 
bb60: 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 6d  In the future, m
bb70: 6f 72 65 20 65 78 74 65 6e 73 69 76 65 20 63 68  ore extensive ch
bb80: 65 63 6b 73 20 6d 61 79 20 62 65 20 65 6e 61 62  ecks may be enab
bb90: 6c 65 64 20 62 79 20 74 68 69 73 20 66 6c 61 67  led by this flag
bba0: 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77   as..      /// w
bbb0: 65 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ell...      /// 
bbc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
bbd0: 20 20 53 74 72 69 63 74 45 6e 6c 69 73 74 6d 65    StrictEnlistme
bbe0: 6e 74 20 3d 20 30 78 38 30 30 30 30 30 2c 0d 0a  nt = 0x800000,..
bbf0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
bc00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
bc10: 20 45 6e 61 62 6c 65 20 6d 61 70 70 69 6e 67 20   Enable mapping 
bc20: 6f 66 20 75 6e 73 75 70 70 6f 72 74 65 64 20 74  of unsupported t
bc30: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c 61  ransaction isola
bc40: 74 69 6f 6e 20 6c 65 76 65 6c 73 20 74 6f 20 74  tion levels to t
bc50: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6c  he..      /// cl
bc60: 6f 73 65 73 74 20 73 75 70 70 6f 72 74 65 64 20  osest supported 
bc70: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c  transaction isol
bc80: 61 74 69 6f 6e 20 6c 65 76 65 6c 2e 0d 0a 20 20  ation level...  
bc90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
bca0: 79 3e 0d 0a 20 20 20 20 20 20 4d 61 70 49 73 6f  y>..      MapIso
bcb0: 6c 61 74 69 6f 6e 4c 65 76 65 6c 73 20 3d 20 30  lationLevels = 0
bcc0: 78 31 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  x1000000,....   
bcd0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
bce0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
bcf0: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d   returning colum
bd00: 6e 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d 70  n values, attemp
bd10: 74 20 74 6f 20 64 65 74 65 63 74 20 74 68 65 20  t to detect the 
bd20: 61 66 66 69 6e 69 74 79 20 6f 66 0d 0a 20 20 20  affinity of..   
bd30: 20 20 20 2f 2f 2f 20 74 65 78 74 75 61 6c 20 76     /// textual v
bd40: 61 6c 75 65 73 20 62 79 20 63 68 65 63 6b 69 6e  alues by checkin
bd50: 67 20 69 66 20 74 68 65 79 20 66 75 6c 6c 79 20  g if they fully 
bd60: 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 6f 73 65  conform to those
bd70: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   of the..      /
bd80: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79  // <see cref="Ty
bd90: 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 22  peAffinity.Null"
bda0: 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   />,..      /// 
bdb0: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
bdc0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 22 20 2f  ffinity.Int64" /
bdd0: 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  >,..      /// <s
bde0: 65 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66  ee cref="TypeAff
bdf0: 69 6e 69 74 79 2e 44 6f 75 62 6c 65 22 20 2f 3e  inity.Double" />
be00: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  ,..      /// or 
be10: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
be20: 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65  ffinity.DateTime
be30: 22 20 2f 3e 20 74 79 70 65 73 2e 0d 0a 20 20 20  " /> types...   
be40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
be50: 3e 0d 0a 20 20 20 20 20 20 44 65 74 65 63 74 54  >..      DetectT
be60: 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20 30 78  extAffinity = 0x
be70: 32 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  2000000,....    
be80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
be90: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
bea0: 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e  returning column
beb0: 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d 70 74   values, attempt
bec0: 20 74 6f 20 64 65 74 65 63 74 20 74 68 65 20 74   to detect the t
bed0: 79 70 65 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f  ype of..      //
bee0: 2f 20 73 74 72 69 6e 67 20 76 61 6c 75 65 73 20  / string values 
bef0: 62 79 20 63 68 65 63 6b 69 6e 67 20 69 66 20 74  by checking if t
bf00: 68 65 79 20 66 75 6c 6c 79 20 63 6f 6e 66 6f 72  hey fully confor
bf10: 6d 20 74 6f 20 74 68 6f 73 65 20 6f 66 0d 0a 20  m to those of.. 
bf20: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
bf30: 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69  e cref="TypeAffi
bf40: 6e 69 74 79 2e 4e 75 6c 6c 22 20 2f 3e 2c 0d 0a  nity.Null" />,..
bf50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
bf60: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
bf70: 79 2e 49 6e 74 36 34 22 20 2f 3e 2c 0d 0a 20 20  y.Int64" />,..  
bf80: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
bf90: 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74 79 2e  f="TypeAffinity.
bfa0: 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a 20 20 20  Double" />,..   
bfb0: 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63     /// or <see c
bfc0: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
bfd0: 79 2e 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 74  y.DateTime" /> t
bfe0: 79 70 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ypes...      ///
bff0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c000: 20 20 20 44 65 74 65 63 74 53 74 72 69 6e 67 54     DetectStringT
c010: 79 70 65 20 3d 20 30 78 34 30 30 30 30 30 30 2c  ype = 0x4000000,
c020: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
c030: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c040: 2f 2f 20 53 6b 69 70 20 71 75 65 72 79 69 6e 67  // Skip querying
c050: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
c060: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20  ration settings 
c070: 66 6f 72 20 75 73 65 20 62 79 20 74 68 65 0d 0a  for use by the..
c080: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
c090: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 76 65  ref="SQLiteConve
c0a0: 72 74 22 20 2f 3e 20 63 6c 61 73 73 2c 20 69 6e  rt" /> class, in
c0b0: 63 6c 75 64 69 6e 67 20 74 68 65 20 64 65 66 61  cluding the defa
c0c0: 75 6c 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ult..      /// <
c0d0: 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65  see cref="DbType
c0e0: 22 20 2f 3e 20 76 61 6c 75 65 20 61 6e 64 20 64  " /> value and d
c0f0: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
c100: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
c110: 20 20 2f 2f 2f 20 3c 62 3e 4e 4f 54 45 3a 20 49    /// <b>NOTE: I
c120: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
c130: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
c140: 6e 2e 44 65 66 61 75 6c 74 44 62 54 79 70 65 22  n.DefaultDbType"
c150: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   />..      /// a
c160: 6e 64 2f 6f 72 20 3c 73 65 65 20 63 72 65 66 3d  nd/or <see cref=
c170: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
c180: 6e 2e 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  n.DefaultTypeNam
c190: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  e" />..      ///
c1a0: 20 70 72 6f 70 65 72 74 69 65 73 20 61 72 65 20   properties are 
c1b0: 6e 6f 74 20 73 65 74 20 65 78 70 6c 69 63 69 74  not set explicit
c1c0: 6c 79 20 6e 6f 72 20 73 65 74 20 76 69 61 20 74  ly nor set via t
c1d0: 68 65 69 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  heir connection.
c1e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  .      /// strin
c1f0: 67 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64  g properties and
c200: 20 72 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20   repeated calls 
c210: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
c220: 73 65 20 72 75 6e 74 69 6d 65 0d 0a 20 20 20 20  se runtime..    
c230: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
c240: 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 61 72 65  ion settings are
c250: 20 73 65 65 6e 20 74 6f 20 62 65 20 61 20 70 72   seen to be a pr
c260: 6f 62 6c 65 6d 2c 20 74 68 69 73 20 66 6c 61 67  oblem, this flag
c270: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
c280: 6c 64 20 62 65 20 73 65 74 2e 3c 2f 62 3e 0d 0a  ld be set.</b>..
c290: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c2a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43 6f  ary>..      NoCo
c2b0: 6e 76 65 72 74 53 65 74 74 69 6e 67 73 20 3d 20  nvertSettings = 
c2c0: 30 78 38 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  0x8000000,....  
c2d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c2e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
c2f0: 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65  n binding parame
c300: 74 65 72 20 76 61 6c 75 65 73 20 77 69 74 68 20  ter values with 
c310: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  the <see cref="D
c320: 61 74 65 54 69 6d 65 22 20 2f 3e 0d 0a 20 20 20  ateTime" />..   
c330: 20 20 20 2f 2f 2f 20 74 79 70 65 2c 20 74 61 6b     /// type, tak
c340: 65 20 74 68 65 69 72 20 3c 73 65 65 20 63 72 65  e their <see cre
c350: 66 3d 22 44 61 74 65 54 69 6d 65 4b 69 6e 64 22  f="DateTimeKind"
c360: 20 2f 3e 20 69 6e 74 6f 20 61 63 63 6f 75 6e 74   /> into account
c370: 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77   as..      /// w
c380: 65 6c 6c 20 61 73 20 74 68 61 74 20 6f 66 20 74  ell as that of t
c390: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 3c 73  he associated <s
c3a0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c3b0: 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a  onnection" />...
c3c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c3d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64  ary>..      Bind
c3e0: 44 61 74 65 54 69 6d 65 57 69 74 68 4b 69 6e 64  DateTimeWithKind
c3f0: 20 3d 20 30 78 31 30 30 30 30 30 30 30 2c 0d 0a   = 0x10000000,..
c400: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
c410: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c420: 20 49 66 20 61 6e 20 65 78 63 65 70 74 69 6f 6e   If an exception
c430: 20 69 73 20 63 61 75 67 68 74 20 77 68 65 6e 20   is caught when 
c440: 72 61 69 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  raising the..   
c450: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
c460: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
c470: 6f 6e 2e 43 6f 6d 6d 69 74 22 20 2f 3e 20 65 76  on.Commit" /> ev
c480: 65 6e 74 2c 20 74 68 65 20 74 72 61 6e 73 61 63  ent, the transac
c490: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
c4a0: 73 68 6f 75 6c 64 20 62 65 20 72 6f 6c 6c 65 64  should be rolled
c4b0: 20 62 61 63 6b 2e 20 20 49 66 20 74 68 69 73 20   back.  If this 
c4c0: 69 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  is not specified
c4d0: 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  , the transactio
c4e0: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  n..      /// wil
c4f0: 6c 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63  l continue the c
c500: 6f 6d 6d 69 74 20 70 72 6f 63 65 73 73 20 69 6e  ommit process in
c510: 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  stead...      //
c520: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c530: 20 20 20 20 52 6f 6c 6c 62 61 63 6b 4f 6e 45 78      RollbackOnEx
c540: 63 65 70 74 69 6f 6e 20 3d 20 30 78 32 30 30 30  ception = 0x2000
c550: 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  0000,....      /
c560: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c570: 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78      /// If an ex
c580: 63 65 70 74 69 6f 6e 20 69 73 20 63 61 75 67 68  ception is caugh
c590: 74 20 77 68 65 6e 20 72 61 69 73 69 6e 67 20 74  t when raising t
c5a0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
c5b0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c5c0: 6f 6e 6e 65 63 74 69 6f 6e 2e 41 75 74 68 6f 72  onnection.Author
c5d0: 69 7a 65 22 20 2f 3e 20 65 76 65 6e 74 2c 20 74  ize" /> event, t
c5e0: 68 65 20 61 63 74 69 6f 6e 20 73 68 6f 75 6c 64  he action should
c5f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
c600: 6c 64 20 62 65 20 64 65 6e 69 65 64 2e 20 20 49  ld be denied.  I
c610: 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73 70  f this is not sp
c620: 65 63 69 66 69 65 64 2c 20 74 68 65 20 61 63 74  ecified, the act
c630: 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ion will be..   
c640: 20 20 20 2f 2f 2f 20 61 6c 6c 6f 77 65 64 20 69     /// allowed i
c650: 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  nstead...      /
c660: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c670: 20 20 20 20 20 44 65 6e 79 4f 6e 45 78 63 65 70       DenyOnExcep
c680: 74 69 6f 6e 20 3d 20 30 78 34 30 30 30 30 30 30  tion = 0x4000000
c690: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
c6a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c6b0: 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78 63 65 70   /// If an excep
c6c0: 74 69 6f 6e 20 69 73 20 63 61 75 67 68 74 20 77  tion is caught w
c6d0: 68 65 6e 20 72 61 69 73 69 6e 67 20 74 68 65 0d  hen raising the.
c6e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
c6f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
c700: 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65 73 73 22  ection.Progress"
c710: 20 2f 3e 20 65 76 65 6e 74 2c 20 74 68 65 20 6f   /> event, the o
c720: 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  peration..      
c730: 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 69 6e  /// should be in
c740: 74 65 72 72 75 70 74 65 64 2e 20 20 49 66 20 74  terrupted.  If t
c750: 68 69 73 20 69 73 20 6e 6f 74 20 73 70 65 63 69  his is not speci
c760: 66 69 65 64 2c 20 74 68 65 20 6f 70 65 72 61 74  fied, the operat
c770: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ion..      /// w
c780: 69 6c 6c 20 73 69 6d 70 6c 79 20 63 6f 6e 74 69  ill simply conti
c790: 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nue...      /// 
c7a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c7b0: 20 20 49 6e 74 65 72 72 75 70 74 4f 6e 45 78 63    InterruptOnExc
c7c0: 65 70 74 69 6f 6e 20 3d 20 30 78 38 30 30 30 30  eption = 0x80000
c7d0: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
c7e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c7f0: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 20 74     /// Attempt t
c800: 6f 20 75 6e 62 69 6e 64 20 61 6c 6c 20 66 75 6e  o unbind all fun
c810: 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20  ctions provided 
c820: 62 79 20 6f 74 68 65 72 20 6d 61 6e 61 67 65 64  by other managed
c830: 20 61 73 73 65 6d 62 6c 69 65 73 0d 0a 20 20 20   assemblies..   
c840: 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63 6c 6f 73     /// when clos
c850: 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ing the connecti
c860: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
c870: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c880: 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e 73   UnbindFunctions
c890: 4f 6e 43 6c 6f 73 65 20 3d 20 30 78 31 30 30 30  OnClose = 0x1000
c8a0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
c8b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c8c0: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72 65       /// When re
c8d0: 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76  turning column v
c8e0: 61 6c 75 65 73 20 61 73 20 61 20 3c 73 65 65 20  alues as a <see 
c8f0: 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e  cref="String" />
c900: 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 2f 2f  , skip..      //
c910: 2f 20 76 65 72 69 66 79 69 6e 67 20 74 68 65 69  / verifying thei
c920: 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a 20 20 20  r affinity...   
c930: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c940: 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65 72 69 66  >..      NoVerif
c950: 79 54 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20  yTextAffinity = 
c960: 30 78 32 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a  0x200000000,....
c970: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c980: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
c990: 6e 61 62 6c 65 20 75 73 69 6e 67 20 70 65 72 2d  nable using per-
c9a0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69  connection mappi
c9b0: 6e 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65  ngs between type
c9c0: 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20   names and..    
c9d0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c9e0: 22 53 51 4c 69 74 65 42 69 6e 64 56 61 6c 75 65  "SQLiteBindValue
c9f0: 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 76 61 6c  Callback" /> val
ca00: 75 65 73 2e 20 20 41 6c 73 6f 20 73 65 65 20 74  ues.  Also see t
ca10: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
ca20: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
ca30: 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65 61 72 54  onnection.ClearT
ca40: 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e  ypeCallbacks" />
ca50: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  ,..      /// <se
ca60: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
ca70: 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 54  nnection.TryGetT
ca80: 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e  ypeCallbacks" />
ca90: 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  , and..      ///
caa0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
cab0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74  teConnection.Set
cac0: 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f  TypeCallbacks" /
cad0: 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
cae0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
caf0: 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65  ..      UseConne
cb00: 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61  ctionBindValueCa
cb10: 6c 6c 62 61 63 6b 73 20 3d 20 30 78 34 30 30 30  llbacks = 0x4000
cb20: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
cb30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
cb40: 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20       /// Enable 
cb50: 75 73 69 6e 67 20 70 65 72 2d 63 6f 6e 6e 65 63  using per-connec
cb60: 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73 20 62 65  tion mappings be
cb70: 74 77 65 65 6e 20 74 79 70 65 20 6e 61 6d 65 73  tween type names
cb80: 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
cb90: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
cba0: 65 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61  eReadValueCallba
cbb0: 63 6b 22 20 2f 3e 20 76 61 6c 75 65 73 2e 20 20  ck" /> values.  
cbc0: 41 6c 73 6f 20 73 65 65 20 74 68 65 0d 0a 20 20  Also see the..  
cbd0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
cbe0: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
cbf0: 69 6f 6e 2e 43 6c 65 61 72 54 79 70 65 43 61 6c  ion.ClearTypeCal
cc00: 6c 62 61 63 6b 73 22 20 2f 3e 2c 0d 0a 20 20 20  lbacks" />,..   
cc10: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
cc20: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
cc30: 6f 6e 2e 54 72 79 47 65 74 54 79 70 65 43 61 6c  on.TryGetTypeCal
cc40: 6c 62 61 63 6b 73 22 20 2f 3e 2c 20 61 6e 64 0d  lbacks" />, and.
cc50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
cc60: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
cc70: 65 63 74 69 6f 6e 2e 53 65 74 54 79 70 65 43 61  ection.SetTypeCa
cc80: 6c 6c 62 61 63 6b 73 22 20 2f 3e 20 6d 65 74 68  llbacks" /> meth
cc90: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ods...      /// 
cca0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ccb0: 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 52    UseConnectionR
ccc0: 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  eadValueCallback
ccd0: 73 20 3d 20 30 78 38 30 30 30 30 30 30 30 30 2c  s = 0x800000000,
cce0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
ccf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cd00: 2f 2f 20 49 66 20 74 68 65 20 64 61 74 61 62 61  // If the databa
cd10: 73 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61 73  se type name has
cd20: 20 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69 63   not been explic
cd30: 69 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68 65  itly set for the
cd40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61  ..      /// para
cd50: 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 64 2c  meter specified,
cd60: 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73 69   fallback to usi
cd70: 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  ng the parameter
cd80: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
cd90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
cda0: 20 20 20 20 55 73 65 50 61 72 61 6d 65 74 65 72      UseParameter
cdb0: 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 20  NameForTypeName 
cdc0: 3d 20 30 78 31 30 30 30 30 30 30 30 30 30 2c 0d  = 0x1000000000,.
cdd0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
cde0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cdf0: 2f 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  / If the databas
ce00: 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61 73 20  e type name has 
ce10: 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69 63 69  not been explici
ce20: 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68 65 0d  tly set for the.
ce30: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d  .      /// param
ce40: 65 74 65 72 20 73 70 65 63 69 66 69 65 64 2c 20  eter specified, 
ce50: 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73 69 6e  fallback to usin
ce60: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  g the database t
ce70: 79 70 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ype name..      
ce80: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
ce90: 69 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65  ith the <see cre
cea0: 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
ceb0: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
cec0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ced0: 20 20 55 73 65 50 61 72 61 6d 65 74 65 72 44 62    UseParameterDb
cee0: 54 79 70 65 46 6f 72 54 79 70 65 4e 61 6d 65 20  TypeForTypeName 
cef0: 3d 20 30 78 32 30 30 30 30 30 30 30 30 30 2c 0d  = 0x2000000000,.
cf00: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
cf10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cf20: 2f 20 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67  / When returning
cf30: 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20   column values, 
cf40: 73 6b 69 70 20 76 65 72 69 66 79 69 6e 67 20 74  skip verifying t
cf50: 68 65 69 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a  heir affinity...
cf60: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
cf70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65  ary>..      NoVe
cf80: 72 69 66 79 54 79 70 65 41 66 66 69 6e 69 74 79  rifyTypeAffinity
cf90: 20 3d 20 30 78 34 30 30 30 30 30 30 30 30 30 2c   = 0x4000000000,
cfa0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
cfb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cfc0: 2f 2f 20 41 6c 6c 6f 77 20 74 72 61 6e 73 61 63  // Allow transac
cfd0: 74 69 6f 6e 73 20 74 6f 20 62 65 20 6e 65 73 74  tions to be nest
cfe0: 65 64 2e 20 20 54 68 65 20 6f 75 74 65 72 6d 6f  ed.  The outermo
cff0: 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73  st transaction s
d000: 74 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  till..      /// 
d010: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
d020: 20 6f 72 20 6e 6f 74 20 61 6e 79 20 63 68 61 6e   or not any chan
d030: 67 65 73 20 61 72 65 20 75 6c 74 69 6d 61 74 65  ges are ultimate
d040: 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 72 0d  ly committed or.
d050: 0a 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65  .      /// rolle
d060: 64 20 62 61 63 6b 2e 20 20 41 6c 6c 20 6e 6f 6e  d back.  All non
d070: 2d 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73  -outermost trans
d080: 61 63 74 69 6f 6e 73 20 61 72 65 20 69 6d 70 6c  actions are impl
d090: 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 0d 0a 20  emented using.. 
d0a0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 41 56       /// the SAV
d0b0: 45 50 4f 49 4e 54 20 63 6f 6e 73 74 72 75 63 74  EPOINT construct
d0c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
d0d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
d0e0: 6c 6c 6f 77 4e 65 73 74 65 64 54 72 61 6e 73 61  llowNestedTransa
d0f0: 63 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 30 30  ctions = 0x80000
d100: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
d110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d120: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
d130: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
d140: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 62  values, always b
d150: 69 6e 64 20 3c 73 65 65 20 63 72 65 66 3d 22 44  ind <see cref="D
d160: 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a 20 20 20 20  ecimal" />..    
d170: 20 20 2f 2f 2f 20 76 61 6c 75 65 73 20 61 73 20    /// values as 
d180: 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65  though they were
d190: 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65   plain text (i.e
d1a0: 2e 20 6e 6f 74 20 3c 73 65 65 20 63 72 65 66 3d  . not <see cref=
d1b0: 22 44 65 63 69 6d 61 6c 22 20 2f 3e 2c 0d 0a 20  "Decimal" />,.. 
d1c0: 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 69       /// which i
d1d0: 73 20 74 68 65 20 6c 65 67 61 63 79 20 62 65 68  s the legacy beh
d1e0: 61 76 69 6f 72 29 2e 0d 0a 20 20 20 20 20 20 2f  avior)...      /
d1f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d200: 20 20 20 20 20 42 69 6e 64 44 65 63 69 6d 61 6c       BindDecimal
d210: 41 73 54 65 78 74 20 3d 20 30 78 31 30 30 30 30  AsText = 0x10000
d220: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d230: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d240: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72        /// When r
d250: 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20  eturning column 
d260: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 72  values, always r
d270: 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65 66 3d  eturn <see cref=
d280: 22 44 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a 20 20  "Decimal" />..  
d290: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 20 61      /// values a
d2a0: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
d2b0: 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69  re plain text (i
d2c0: 2e 65 2e 20 6e 6f 74 20 3c 73 65 65 20 63 72 65  .e. not <see cre
d2d0: 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a  f="Double" />,..
d2e0: 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20        /// which 
d2f0: 69 73 20 74 68 65 20 6c 65 67 61 63 79 20 62 65  is the legacy be
d300: 68 61 76 69 6f 72 29 2e 0d 0a 20 20 20 20 20 20  havior)...      
d310: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d320: 20 20 20 20 20 20 47 65 74 44 65 63 69 6d 61 6c        GetDecimal
d330: 41 73 54 65 78 74 20 3d 20 30 78 32 30 30 30 30  AsText = 0x20000
d340: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d350: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d360: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62        /// When b
d370: 69 6e 64 69 6e 67 20 3c 73 65 65 20 63 72 65 66  inding <see cref
d380: 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 20 70 61  ="Decimal" /> pa
d390: 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20  rameter values, 
d3a0: 61 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20 20  always use..    
d3b0: 20 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72 69    /// the invari
d3c0: 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e  ant culture when
d3d0: 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69   converting thei
d3e0: 72 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69  r values to stri
d3f0: 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ngs...      /// 
d400: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d410: 20 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 44    BindInvariantD
d420: 65 63 69 6d 61 6c 20 3d 20 30 78 34 30 30 30 30  ecimal = 0x40000
d430: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d440: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d450: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72        /// When r
d460: 65 74 75 72 6e 69 6e 67 20 3c 73 65 65 20 63 72  eturning <see cr
d470: 65 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 20  ef="Decimal" /> 
d480: 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61  column values, a
d490: 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20 20 20  lways use..     
d4a0: 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72 69 61   /// the invaria
d4b0: 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20  nt culture when 
d4c0: 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72  converting their
d4d0: 20 76 61 6c 75 65 73 20 66 72 6f 6d 20 73 74 72   values from str
d4e0: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
d4f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d500: 20 20 20 47 65 74 49 6e 76 61 72 69 61 6e 74 44     GetInvariantD
d510: 65 63 69 6d 61 6c 20 3d 20 30 78 38 30 30 30 30  ecimal = 0x80000
d520: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d530: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d540: 20 20 20 20 20 20 2f 2f 2f 20 3c 62 3e 45 58 50        /// <b>EXP
d550: 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20 2d 2d  ERIMENTAL</b> --
d560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62  ..      /// Enab
d570: 6c 65 20 77 61 69 74 69 6e 67 20 66 6f 72 20 74  le waiting for t
d580: 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74 20 74 6f  he enlistment to
d590: 20 62 65 20 72 65 73 65 74 20 70 72 69 6f 72 20   be reset prior 
d5a0: 74 6f 20 61 74 74 65 6d 70 74 69 6e 67 0d 0a 20  to attempting.. 
d5b0: 20 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61       /// to crea
d5c0: 74 65 20 61 20 6e 65 77 20 65 6e 6c 69 73 74 6d  te a new enlistm
d5d0: 65 6e 74 2e 20 20 54 68 69 73 20 6d 61 79 20 62  ent.  This may b
d5e0: 65 20 6e 65 63 65 73 73 61 72 79 20 64 75 65 20  e necessary due 
d5f0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
d600: 2f 20 73 65 6d 61 6e 74 69 63 73 20 75 73 65 64  / semantics used
d610: 20 62 79 20 64 69 73 74 72 69 62 75 74 65 64 20   by distributed 
d620: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 77 68  transactions, wh
d630: 69 63 68 20 63 6f 6d 70 6c 65 74 65 0d 0a 20 20  ich complete..  
d640: 20 20 20 20 2f 2f 2f 20 61 73 79 6e 63 68 72 6f      /// asynchro
d650: 6e 6f 75 73 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  nously...      /
d660: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d670: 20 20 20 20 20 57 61 69 74 46 6f 72 45 6e 6c 69       WaitForEnli
d680: 73 74 6d 65 6e 74 52 65 73 65 74 20 3d 20 30 78  stmentReset = 0x
d690: 31 30 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d  100000000000,...
d6a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
d6b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d6c0: 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72  When binding par
d6d0: 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20 6f 72  ameter values or
d6e0: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d   returning colum
d6f0: 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73  n values, always
d700: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 65 61  ..      /// trea
d710: 74 20 74 68 65 6d 20 61 73 20 74 68 6f 75 67 68  t them as though
d720: 20 74 68 65 79 20 77 65 72 65 20 70 6c 61 69 6e   they were plain
d730: 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e   text (i.e. no n
d740: 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20 20 2f  umeric,..      /
d750: 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20 6f 72  // date/time, or
d760: 20 6f 74 68 65 72 20 63 6f 6e 76 65 72 73 69 6f   other conversio
d770: 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 61 74 74  ns should be att
d780: 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  empted)...      
d790: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d7a0: 20 20 20 20 20 20 42 69 6e 64 41 6e 64 47 65 74        BindAndGet
d7b0: 41 6c 6c 41 73 54 65 78 74 20 3d 20 42 69 6e 64  AllAsText = Bind
d7c0: 41 6c 6c 41 73 54 65 78 74 20 7c 20 47 65 74 41  AllAsText | GetA
d7d0: 6c 6c 41 73 54 65 78 74 2c 0d 0a 0d 0a 20 20 20  llAsText,....   
d7e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d7f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
d800: 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74   binding paramet
d810: 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  er values, alway
d820: 73 20 75 73 65 20 74 68 65 20 69 6e 76 61 72 69  s use the invari
d830: 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e  ant culture when
d840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76  ..      /// conv
d850: 65 72 74 69 6e 67 20 74 68 65 69 72 20 76 61 6c  erting their val
d860: 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73 20 6f  ues to strings o
d870: 72 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d  r from strings..
d880: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d890: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e  mary>..      Con
d8a0: 76 65 72 74 41 6e 64 42 69 6e 64 49 6e 76 61 72  vertAndBindInvar
d8b0: 69 61 6e 74 54 65 78 74 20 3d 20 43 6f 6e 76 65  iantText = Conve
d8c0: 72 74 49 6e 76 61 72 69 61 6e 74 54 65 78 74 20  rtInvariantText 
d8d0: 7c 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54  | BindInvariantT
d8e0: 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ext,....      //
d8f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d900: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
d910: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
d920: 6c 75 65 73 20 6f 72 20 72 65 74 75 72 6e 69 6e  lues or returnin
d930: 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c  g column values,
d940: 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 2f   always..      /
d950: 2f 2f 20 74 72 65 61 74 20 74 68 65 6d 20 61 73  // treat them as
d960: 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72   though they wer
d970: 65 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e  e plain text (i.
d980: 65 2e 20 6e 6f 20 6e 75 6d 65 72 69 63 2c 0d 0a  e. no numeric,..
d990: 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 65 2f 74        /// date/t
d9a0: 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f  ime, or other co
d9b0: 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64  nversions should
d9c0: 20 62 65 20 61 74 74 65 6d 70 74 65 64 29 20 61   be attempted) a
d9d0: 6e 64 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20  nd always..     
d9e0: 20 2f 2f 2f 20 75 73 65 20 74 68 65 20 69 6e 76   /// use the inv
d9f0: 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77  ariant culture w
da00: 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 20 74  hen converting t
da10: 68 65 69 72 20 76 61 6c 75 65 73 20 74 6f 20 73  heir values to s
da20: 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f  trings...      /
da30: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
da40: 20 20 20 20 20 42 69 6e 64 41 6e 64 47 65 74 41       BindAndGetA
da50: 6c 6c 41 73 49 6e 76 61 72 69 61 6e 74 54 65 78  llAsInvariantTex
da60: 74 20 3d 20 42 69 6e 64 41 6e 64 47 65 74 41 6c  t = BindAndGetAl
da70: 6c 41 73 54 65 78 74 20 7c 20 42 69 6e 64 49 6e  lAsText | BindIn
da80: 76 61 72 69 61 6e 74 54 65 78 74 2c 0d 0a 0d 0a  variantText,....
da90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
daa0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
dab0: 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61  hen binding para
dac0: 6d 65 74 65 72 20 76 61 6c 75 65 73 20 6f 72 20  meter values or 
dad0: 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e  returning column
dae0: 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 0d   values, always.
daf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 65 61 74  .      /// treat
db00: 20 74 68 65 6d 20 61 73 20 74 68 6f 75 67 68 20   them as though 
db10: 74 68 65 79 20 77 65 72 65 20 70 6c 61 69 6e 20  they were plain 
db20: 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e 75  text (i.e. no nu
db30: 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20 20 2f 2f  meric,..      //
db40: 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20 6f 72 20  / date/time, or 
db50: 6f 74 68 65 72 20 63 6f 6e 76 65 72 73 69 6f 6e  other conversion
db60: 73 20 73 68 6f 75 6c 64 20 62 65 20 61 74 74 65  s should be atte
db70: 6d 70 74 65 64 29 20 61 6e 64 20 61 6c 77 61 79  mpted) and alway
db80: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  s..      /// use
db90: 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63   the invariant c
dba0: 75 6c 74 75 72 65 20 77 68 65 6e 20 63 6f 6e 76  ulture when conv
dbb0: 65 72 74 69 6e 67 20 74 68 65 69 72 20 76 61 6c  erting their val
dbc0: 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73 0d 0a  ues to strings..
dbd0: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 66 72 6f        /// or fro
dbe0: 6d 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20  m strings...    
dbf0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
dc00: 0d 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 41  ..      ConvertA
dc10: 6e 64 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41  ndBindAndGetAllA
dc20: 73 49 6e 76 61 72 69 61 6e 74 54 65 78 74 20 3d  sInvariantText =
dc30: 20 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73   BindAndGetAllAs
dc40: 54 65 78 74 20 7c 0d 0a 20 20 20 20 20 20 20 20  Text |..        
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc70: 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 41 6e         ConvertAn
dc80: 64 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54 65  dBindInvariantTe
dc90: 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  xt,....      ///
dca0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
dcb0: 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 75 73    /// Enables us
dcc0: 65 20 6f 66 20 61 6c 6c 20 70 65 72 2d 63 6f 6e  e of all per-con
dcd0: 6e 65 63 74 69 6f 6e 20 76 61 6c 75 65 20 68 61  nection value ha
dce0: 6e 64 6c 69 6e 67 20 63 61 6c 6c 62 61 63 6b 73  ndling callbacks
dcf0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
dd00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55  ummary>..      U
dd10: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 41 6c 6c 56  seConnectionAllV
dd20: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20 3d 20  alueCallbacks = 
dd30: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e  UseConnectionBin
dd40: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20  dValueCallbacks 
dd50: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
dd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd70: 20 20 20 20 20 20 20 20 20 20 55 73 65 43 6f 6e            UseCon
dd80: 6e 65 63 74 69 6f 6e 52 65 61 64 56 61 6c 75 65  nectionReadValue
dd90: 43 61 6c 6c 62 61 63 6b 73 2c 0d 0a 0d 0a 20 20  Callbacks,....  
dda0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ddb0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
ddc0: 62 6c 65 73 20 75 73 65 20 6f 66 20 61 6c 6c 20  bles use of all 
ddd0: 61 70 70 6c 69 63 61 62 6c 65 20 3c 73 65 65 20  applicable <see 
dde0: 63 72 65 66 3d 22 53 51 4c 69 74 65 50 61 72 61  cref="SQLitePara
ddf0: 6d 65 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  meter" />..     
de00: 20 2f 2f 2f 20 70 72 6f 70 65 72 74 69 65 73 20   /// properties 
de10: 61 73 20 66 61 6c 6c 62 61 63 6b 73 20 66 6f 72  as fallbacks for
de20: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
de30: 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  pe name...      
de40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
de50: 20 20 20 20 20 20 55 73 65 50 61 72 61 6d 65 74        UseParamet
de60: 65 72 41 6e 79 74 68 69 6e 67 46 6f 72 54 79 70  erAnythingForTyp
de70: 65 4e 61 6d 65 20 3d 20 55 73 65 50 61 72 61 6d  eName = UseParam
de80: 65 74 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e  eterNameForTypeN
de90: 61 6d 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  ame |..         
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
deb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
dec0: 73 65 50 61 72 61 6d 65 74 65 72 44 62 54 79 70  seParameterDbTyp
ded0: 65 46 6f 72 54 79 70 65 4e 61 6d 65 2c 0d 0a 0d  eForTypeName,...
dee0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
def0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
df00: 45 6e 61 62 6c 65 20 61 6c 6c 20 6c 6f 67 67 69  Enable all loggi
df10: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
df20: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 49  /summary>..#if I
df30: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
df40: 41 42 4c 45 0d 0a 20 20 20 20 20 20 4c 6f 67 41  ABLE..      LogA
df50: 6c 6c 20 3d 20 4c 6f 67 50 72 65 70 61 72 65 20  ll = LogPrepare 
df60: 7c 20 4c 6f 67 50 72 65 42 69 6e 64 20 7c 20 4c  | LogPreBind | L
df70: 6f 67 42 69 6e 64 20 7c 0d 0a 20 20 20 20 20 20  ogBind |..      
df80: 20 20 20 20 20 20 20 20 20 4c 6f 67 43 61 6c 6c           LogCall
df90: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 20 7c 20  backException | 
dfa0: 4c 6f 67 42 61 63 6b 75 70 20 7c 20 4c 6f 67 4d  LogBackup | LogM
dfb0: 6f 64 75 6c 65 45 72 72 6f 72 20 7c 0d 0a 20 20  oduleError |..  
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67               Log
dfd0: 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 2c  ModuleException,
dfe0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 4c  ..#else..      L
dff0: 6f 67 41 6c 6c 20 3d 20 4c 6f 67 50 72 65 70 61  ogAll = LogPrepa
e000: 72 65 20 7c 20 4c 6f 67 50 72 65 42 69 6e 64 20  re | LogPreBind 
e010: 7c 20 4c 6f 67 42 69 6e 64 20 7c 0d 0a 20 20 20  | LogBind |..   
e020: 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67 43              LogC
e030: 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e  allbackException
e040: 20 7c 20 4c 6f 67 42 61 63 6b 75 70 2c 0d 0a 23   | LogBackup,..#
e050: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
e060: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e070: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
e080: 75 6c 74 20 6c 6f 67 67 69 6e 67 20 72 65 6c 61  ult logging rela
e090: 74 65 64 20 66 6c 61 67 73 20 66 6f 72 20 6e 65  ted flags for ne
e0a0: 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0d 0a  w connections...
e0b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e0c0: 61 72 79 3e 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ary>..#if INTERO
e0d0: 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
e0e0: 0a 20 20 20 20 20 20 4c 6f 67 44 65 66 61 75 6c  .      LogDefaul
e0f0: 74 20 3d 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45  t = LogCallbackE
e100: 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f 67 4d 6f  xception | LogMo
e110: 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 2c 0d 0a  duleException,..
e120: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 4c 6f 67  #else..      Log
e130: 44 65 66 61 75 6c 74 20 3d 20 4c 6f 67 43 61 6c  Default = LogCal
e140: 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 2c 0d  lbackException,.
e150: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
e160: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e170: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65        /// The de
e180: 66 61 75 6c 74 20 65 78 74 72 61 20 66 6c 61 67  fault extra flag
e190: 73 20 66 6f 72 20 6e 65 77 20 63 6f 6e 6e 65 63  s for new connec
e1a0: 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  tions...      //
e1b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e1c0: 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 4c 6f      Default = Lo
e1d0: 67 44 65 66 61 75 6c 74 20 7c 20 42 69 6e 64 49  gDefault | BindI
e1e0: 6e 76 61 72 69 61 6e 74 44 65 63 69 6d 61 6c 20  nvariantDecimal 
e1f0: 7c 20 47 65 74 49 6e 76 61 72 69 61 6e 74 44 65  | GetInvariantDe
e200: 63 69 6d 61 6c 2c 0d 0a 0d 0a 20 20 20 20 20 20  cimal,....      
e210: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e220: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66       /// The def
e230: 61 75 6c 74 20 65 78 74 72 61 20 66 6c 61 67 73  ault extra flags
e240: 20 66 6f 72 20 6e 65 77 20 63 6f 6e 6e 65 63 74   for new connect
e250: 69 6f 6e 73 20 77 69 74 68 20 61 6c 6c 20 6c 6f  ions with all lo
e260: 67 67 69 6e 67 20 65 6e 61 62 6c 65 64 2e 0d 0a  gging enabled...
e270: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e280: 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66 61  ary>..      Defa
e290: 75 6c 74 41 6e 64 4c 6f 67 41 6c 6c 20 3d 20 44  ultAndLogAll = D
e2a0: 65 66 61 75 6c 74 20 7c 20 4c 6f 67 41 6c 6c 0d  efault | LogAll.
e2b0: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
e2c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
e2d0: 68 65 73 65 20 61 72 65 20 74 68 65 20 73 75 70  hese are the sup
e2e0: 70 6f 72 74 65 64 20 73 74 61 74 75 73 20 70 61  ported status pa
e2f0: 72 61 6d 65 74 65 72 73 20 66 6f 72 20 75 73 65  rameters for use
e300: 20 77 69 74 68 20 74 68 65 20 6e 61 74 69 76 65   with the native
e310: 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 6c  ..  /// SQLite l
e320: 69 62 72 61 72 79 2e 0d 0a 20 20 2f 2f 2f 20 3c  ibrary...  /// <
e330: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74  /summary>..  int
e340: 65 72 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74  ernal enum SQLit
e350: 65 53 74 61 74 75 73 4f 70 73 45 6e 75 6d 0d 0a  eStatusOpsEnum..
e360: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
e370: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e380: 2f 2f 2f 20 54 68 69 73 20 70 61 72 61 6d 65 74  /// This paramet
e390: 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  er returns the n
e3a0: 75 6d 62 65 72 20 6f 66 20 6c 6f 6f 6b 61 73 69  umber of lookasi
e3b0: 64 65 20 6d 65 6d 6f 72 79 20 73 6c 6f 74 73 0d  de memory slots.
e3c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 72 65  .      /// curre
e3d0: 6e 74 6c 79 20 63 68 65 63 6b 65 64 20 6f 75 74  ntly checked out
e3e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
e3f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
e400: 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 4c  QLITE_DBSTATUS_L
e410: 4f 4f 4b 41 53 49 44 45 5f 55 53 45 44 20 3d 20  OOKASIDE_USED = 
e420: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
e430: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e440: 20 2f 2f 2f 20 54 68 69 73 20 70 61 72 61 6d 65   /// This parame
e450: 74 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20  ter returns the 
e460: 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75 6d 62  approximate numb
e470: 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 0d 0a  er of bytes of..
e480: 20 20 20 20 20 20 2f 2f 2f 20 68 65 61 70 20 6d        /// heap m
e490: 65 6d 6f 72 79 20 75 73 65 64 20 62 79 20 61 6c  emory used by al
e4a0: 6c 20 70 61 67 65 72 20 63 61 63 68 65 73 20 61  l pager caches a
e4b0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
e4c0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61  he..      /// da
e4d0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
e4e0: 6e 2e 20 54 68 65 20 68 69 67 68 77 61 74 65 72  n. The highwater
e4f0: 20 6d 61 72 6b 20 61 73 73 6f 63 69 61 74 65 64   mark associated
e500: 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f   with..      ///
e510: 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53   SQLITE_DBSTATUS
e520: 5f 43 41 43 48 45 5f 55 53 45 44 20 69 73 20 61  _CACHE_USED is a
e530: 6c 77 61 79 73 20 30 2e 0d 0a 20 20 20 20 20 20  lways 0...      
e540: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e550: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42 53        SQLITE_DBS
e560: 54 41 54 55 53 5f 43 41 43 48 45 5f 55 53 45 44  TATUS_CACHE_USED
e570: 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
e580: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e590: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 70 61 72      /// This par
e5a0: 61 6d 65 74 65 72 20 72 65 74 75 72 6e 73 20 74  ameter returns t
e5b0: 68 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20 6e  he approximate n
e5c0: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f  umber of bytes o
e5d0: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68 65 61  f..      /// hea
e5e0: 70 20 6d 65 6d 6f 72 79 20 75 73 65 64 20 74 6f  p memory used to
e5f0: 20 73 74 6f 72 65 20 74 68 65 20 73 63 68 65 6d   store the schem
e600: 61 20 66 6f 72 20 61 6c 6c 20 64 61 74 61 62 61  a for all databa
e610: 73 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  ses..      /// a
e620: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
e630: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 2d 20  he connection - 
e640: 6d 61 69 6e 2c 20 74 65 6d 70 2c 20 61 6e 64 20  main, temp, and 
e650: 61 6e 79 20 41 54 54 41 43 48 2d 65 64 0d 0a 20  any ATTACH-ed.. 
e660: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73       /// databas
e670: 65 73 2e 20 54 68 65 20 66 75 6c 6c 20 61 6d 6f  es. The full amo
e680: 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 75 73  unt of memory us
e690: 65 64 20 62 79 20 74 68 65 20 73 63 68 65 6d 61  ed by the schema
e6a0: 73 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  s is..      /// 
e6b0: 72 65 70 6f 72 74 65 64 2c 20 65 76 65 6e 20 69  reported, even i
e6c0: 66 20 74 68 65 20 73 63 68 65 6d 61 20 6d 65 6d  f the schema mem
e6d0: 6f 72 79 20 69 73 20 73 68 61 72 65 64 20 77 69  ory is shared wi
e6e0: 74 68 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20  th other..      
e6f0: 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 63 6f 6e  /// database con
e700: 6e 65 63 74 69 6f 6e 73 20 64 75 65 20 74 6f 20  nections due to 
e710: 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64  shared cache mod
e720: 65 20 62 65 69 6e 67 20 65 6e 61 62 6c 65 64 2e  e being enabled.
e730: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e740: 68 69 67 68 77 61 74 65 72 20 6d 61 72 6b 20 61  highwater mark a
e750: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 53  ssociated with S
e760: 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 53  QLITE_DBSTATUS_S
e770: 43 48 45 4d 41 5f 55 53 45 44 0d 0a 20 20 20 20  CHEMA_USED..    
e780: 20 20 2f 2f 2f 20 69 73 20 61 6c 77 61 79 73 20    /// is always 
e790: 30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  0...      /// </
e7a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e7b0: 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f  SQLITE_DBSTATUS_
e7c0: 53 43 48 45 4d 41 5f 55 53 45 44 20 3d 20 32 2c  SCHEMA_USED = 2,
e7d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
e7e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
e7f0: 2f 2f 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  // This paramete
e800: 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  r returns the nu
e810: 6d 62 65 72 20 6d 61 6c 6c 6f 63 20 61 74 74 65  mber malloc atte
e820: 6d 70 74 73 20 74 68 61 74 20 6d 69 67 68 74 0a  mpts that might.
e830: 20 20 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 62        /// have b
e840: 65 65 6e 20 73 61 74 69 73 66 69 65 64 20 75 73  een satisfied us
e850: 69 6e 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65  ing lookaside me
e860: 6d 6f 72 79 20 62 75 74 20 66 61 69 6c 65 64 20  mory but failed 
e870: 64 75 65 20 74 6f 0a 20 20 20 20 20 20 2f 2f 2f  due to.      ///
e880: 20 61 6c 6c 20 6c 6f 6f 6b 61 73 69 64 65 20 6d   all lookaside m
e890: 65 6d 6f 72 79 20 61 6c 72 65 61 64 79 20 62 65  emory already be
e8a0: 69 6e 67 20 69 6e 20 75 73 65 2e 20 4f 6e 6c 79  ing in use. Only
e8b0: 20 74 68 65 20 68 69 67 68 2d 77 61 74 65 72 0d   the high-water.
e8c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65  .      /// value
e8d0: 20 69 73 20 6d 65 61 6e 69 6e 67 66 75 6c 3b 20   is meaningful; 
e8e0: 74 68 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75  the current valu
e8f0: 65 20 69 73 20 61 6c 77 61 79 73 20 7a 65 72 6f  e is always zero
e900: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
e910: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
e920: 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 53  QLITE_DBSTATUS_S
e930: 54 4d 54 5f 55 53 45 44 20 3d 20 33 2c 0d 0a 0d  TMT_USED = 3,...
e940: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
e950: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
e960: 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 72  This parameter r
e970: 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
e980: 72 20 6d 61 6c 6c 6f 63 20 61 74 74 65 6d 70 74  r malloc attempt
e990: 73 20 74 68 61 74 20 77 65 72 65 0d 0a 20 20 20  s that were..   
e9a0: 20 20 20 2f 2f 2f 20 73 61 74 69 73 66 69 65 64     /// satisfied
e9b0: 20 75 73 69 6e 67 20 6c 6f 6f 6b 61 73 69 64 65   using lookaside
e9c0: 20 6d 65 6d 6f 72 79 2e 20 4f 6e 6c 79 20 74 68   memory. Only th
e9d0: 65 20 68 69 67 68 2d 77 61 74 65 72 20 76 61 6c  e high-water val
e9e0: 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73  ue..      /// is
e9f0: 20 6d 65 61 6e 69 6e 67 66 75 6c 3b 20 74 68 65   meaningful; the
ea00: 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 69   current value i
ea10: 73 20 61 6c 77 61 79 73 20 7a 65 72 6f 2e 0d 0a  s always zero...
ea20: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ea30: 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49  ary>..      SQLI
ea40: 54 45 5f 44 42 53 54 41 54 55 53 5f 4c 4f 4f 4b  TE_DBSTATUS_LOOK
ea50: 41 53 49 44 45 5f 48 49 54 20 3d 20 34 2c 0d 0a  ASIDE_HIT = 4,..
ea60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
ea70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
ea80: 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
ea90: 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
eaa0: 65 72 20 6d 61 6c 6c 6f 63 20 61 74 74 65 6d 70  er malloc attemp
eab0: 74 73 20 74 68 61 74 20 6d 69 67 68 74 0a 20 20  ts that might.  
eac0: 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 62 65 65      /// have bee
ead0: 6e 20 73 61 74 69 73 66 69 65 64 20 75 73 69 6e  n satisfied usin
eae0: 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f  g lookaside memo
eaf0: 72 79 20 62 75 74 20 66 61 69 6c 65 64 20 64 75  ry but failed du
eb00: 65 20 74 6f 0a 20 20 20 20 20 20 2f 2f 2f 20 74  e to.      /// t
eb10: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d  he amount of mem
eb20: 6f 72 79 20 72 65 71 75 65 73 74 65 64 20 62 65  ory requested be
eb30: 69 6e 67 20 6c 61 72 67 65 72 20 74 68 61 6e 20  ing larger than 
eb40: 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 0a 20 20  the lookaside.  
eb50: 20 20 20 20 2f 2f 2f 20 73 6c 6f 74 20 73 69 7a      /// slot siz
eb60: 65 2e 20 4f 6e 6c 79 20 74 68 65 20 68 69 67 68  e. Only the high
eb70: 2d 77 61 74 65 72 20 76 61 6c 75 65 20 69 73 20  -water value is 
eb80: 6d 65 61 6e 69 6e 67 66 75 6c 3b 20 74 68 65 20  meaningful; the 
eb90: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f  current..      /
eba0: 2f 2f 20 76 61 6c 75 65 20 69 73 20 61 6c 77 61  // value is alwa
ebb0: 79 73 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  ys zero...      
ebc0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ebd0: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42 53        SQLITE_DBS
ebe0: 54 41 54 55 53 5f 4c 4f 4f 4b 41 53 49 44 45 5f  TATUS_LOOKASIDE_
ebf0: 4d 49 53 53 5f 53 49 5a 45 20 3d 20 35 2c 0d 0a  MISS_SIZE = 5,..
ec00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
ec10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
ec20: 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
ec30: 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
ec40: 65 72 20 6d 61 6c 6c 6f 63 20 61 74 74 65 6d 70  er malloc attemp
ec50: 74 73 20 74 68 61 74 20 6d 69 67 68 74 0d 0a 20  ts that might.. 
ec60: 20 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 62 65       /// have be
ec70: 65 6e 20 73 61 74 69 73 66 69 65 64 20 75 73 69  en satisfied usi
ec80: 6e 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  ng lookaside mem
ec90: 6f 72 79 20 62 75 74 20 66 61 69 6c 65 64 20 64  ory but failed d
eca0: 75 65 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  ue to..      ///
ecb0: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 6d   the amount of m
ecc0: 65 6d 6f 72 79 20 72 65 71 75 65 73 74 65 64 20  emory requested 
ecd0: 62 65 69 6e 67 20 6c 61 72 67 65 72 20 74 68 61  being larger tha
ece0: 6e 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 0d  n the lookaside.
ecf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 6c 6f 74 20  .      /// slot 
ed00: 73 69 7a 65 2e 20 4f 6e 6c 79 20 74 68 65 20 68  size. Only the h
ed10: 69 67 68 2d 77 61 74 65 72 20 76 61 6c 75 65 20  igh-water value 
ed20: 69 73 20 6d 65 61 6e 69 6e 67 66 75 6c 3b 20 74  is meaningful; t
ed30: 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
ed40: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 69 73 20 61    /// value is a
ed50: 6c 77 61 79 73 20 7a 65 72 6f 2e 0d 0a 20 20 20  lways zero...   
ed60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ed70: 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f  >..      SQLITE_
ed80: 44 42 53 54 41 54 55 53 5f 4c 4f 4f 4b 41 53 49  DBSTATUS_LOOKASI
ed90: 44 45 5f 4d 49 53 53 5f 46 55 4c 4c 20 3d 20 36  DE_MISS_FULL = 6
eda0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
edb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
edc0: 2f 2f 2f 20 54 68 69 73 20 70 61 72 61 6d 65 74  /// This paramet
edd0: 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  er returns the n
ede0: 75 6d 62 65 72 20 6f 66 20 70 61 67 65 72 20 63  umber of pager c
edf0: 61 63 68 65 20 68 69 74 73 20 74 68 61 74 0a 20  ache hits that. 
ee00: 20 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 6f 63       /// have oc
ee10: 63 75 72 72 65 64 2e 20 54 68 65 20 68 69 67 68  curred. The high
ee20: 77 61 74 65 72 20 6d 61 72 6b 20 61 73 73 6f 63  water mark assoc
ee30: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
ee40: 20 20 2f 2f 2f 20 53 51 4c 49 54 45 5f 44 42 53    /// SQLITE_DBS
ee50: 54 41 54 55 53 5f 43 41 43 48 45 5f 48 49 54 20  TATUS_CACHE_HIT 
ee60: 69 73 20 61 6c 77 61 79 73 20 30 2e 0d 0a 20 20  is always 0...  
ee70: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ee80: 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45  y>..      SQLITE
ee90: 5f 44 42 53 54 41 54 55 53 5f 43 41 43 48 45 5f  _DBSTATUS_CACHE_
eea0: 48 49 54 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20  HIT = 7,....    
eeb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
eec0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
eed0: 70 61 72 61 6d 65 74 65 72 20 72 65 74 75 72 6e  parameter return
eee0: 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
eef0: 70 61 67 65 72 20 63 61 63 68 65 20 6d 69 73 73  pager cache miss
ef00: 65 73 20 74 68 61 74 0a 20 20 20 20 20 20 2f 2f  es that.      //
ef10: 2f 20 68 61 76 65 20 6f 63 63 75 72 72 65 64 2e  / have occurred.
ef20: 20 54 68 65 20 68 69 67 68 77 61 74 65 72 20 6d   The highwater m
ef30: 61 72 6b 20 61 73 73 6f 63 69 61 74 65 64 20 77  ark associated w
ef40: 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ith..      /// S
ef50: 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 43  QLITE_DBSTATUS_C
ef60: 41 43 48 45 5f 4d 49 53 53 20 69 73 20 61 6c 77  ACHE_MISS is alw
ef70: 61 79 73 20 30 2e 0d 0a 20 20 20 20 20 20 2f 2f  ays 0...      //
ef80: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ef90: 20 20 20 20 53 51 4c 49 54 45 5f 44 42 53 54 41      SQLITE_DBSTA
efa0: 54 55 53 5f 43 41 43 48 45 5f 4d 49 53 53 20 3d  TUS_CACHE_MISS =
efb0: 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   8,....      ///
efc0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
efd0: 20 20 2f 2f 2f 20 54 68 69 73 20 70 61 72 61 6d    /// This param
efe0: 65 74 65 72 20 72 65 74 75 72 6e 73 20 74 68 65  eter returns the
eff0: 20 6e 75 6d 62 65 72 20 6f 66 20 64 69 72 74 79   number of dirty
f000: 20 63 61 63 68 65 20 65 6e 74 72 69 65 73 20 74   cache entries t
f010: 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 68  hat..      /// h
f020: 61 76 65 20 62 65 65 6e 20 77 72 69 74 74 65 6e  ave been written
f030: 20 74 6f 20 64 69 73 6b 2e 20 53 70 65 63 69 66   to disk. Specif
f040: 69 63 61 6c 6c 79 2c 20 74 68 65 20 6e 75 6d 62  ically, the numb
f050: 65 72 20 6f 66 20 70 61 67 65 73 0d 0a 20 20 20  er of pages..   
f060: 20 20 20 2f 2f 2f 20 77 72 69 74 74 65 6e 20 74     /// written t
f070: 6f 20 74 68 65 20 77 61 6c 20 66 69 6c 65 20 69  o the wal file i
f080: 6e 20 77 61 6c 20 6d 6f 64 65 20 64 61 74 61 62  n wal mode datab
f090: 61 73 65 73 2c 20 6f 72 20 74 68 65 20 6e 75 6d  ases, or the num
f0a0: 62 65 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ber..      /// o
f0b0: 66 20 70 61 67 65 73 20 77 72 69 74 74 65 6e 20  f pages written 
f0c0: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
f0d0: 66 69 6c 65 20 69 6e 20 72 6f 6c 6c 62 61 63 6b  file in rollback
f0e0: 20 6d 6f 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   mode..      ///
f0f0: 20 64 61 74 61 62 61 73 65 73 2e 20 41 6e 79 20   databases. Any 
f100: 70 61 67 65 73 20 77 72 69 74 74 65 6e 20 61 73  pages written as
f110: 20 70 61 72 74 20 6f 66 20 74 72 61 6e 73 61 63   part of transac
f120: 74 69 6f 6e 20 72 6f 6c 6c 62 61 63 6b 0d 0a 20  tion rollback.. 
f130: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 64 61 74 61       /// or data
f140: 62 61 73 65 20 72 65 63 6f 76 65 72 79 20 6f 70  base recovery op
f150: 65 72 61 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74  erations are not
f160: 20 69 6e 63 6c 75 64 65 64 2e 20 49 66 20 61 6e   included. If an
f170: 20 49 4f 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f   IO or..      //
f180: 2f 20 6f 74 68 65 72 20 65 72 72 6f 72 20 6f 63  / other error oc
f190: 63 75 72 73 20 77 68 69 6c 65 20 77 72 69 74 69  curs while writi
f1a0: 6e 67 20 61 20 70 61 67 65 20 74 6f 20 64 69 73  ng a page to dis
f1b0: 6b 2c 20 74 68 65 20 65 66 66 65 63 74 0d 0a 20  k, the effect.. 
f1c0: 20 20 20 20 20 2f 2f 2f 20 6f 6e 20 73 75 62 73       /// on subs
f1d0: 65 71 75 65 6e 74 20 53 51 4c 49 54 45 5f 44 42  equent SQLITE_DB
f1e0: 53 54 41 54 55 53 5f 43 41 43 48 45 5f 57 52 49  STATUS_CACHE_WRI
f1f0: 54 45 20 72 65 71 75 65 73 74 73 20 69 73 0d 0a  TE requests is..
f200: 20 20 20 20 20 20 2f 2f 2f 20 75 6e 64 65 66 69        /// undefi
f210: 6e 65 64 2e 20 54 68 65 20 68 69 67 68 77 61 74  ned. The highwat
f220: 65 72 20 6d 61 72 6b 20 61 73 73 6f 63 69 61 74  er mark associat
f230: 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f  ed with..      /
f240: 2f 2f 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54  // SQLITE_DBSTAT
f250: 55 53 5f 43 41 43 48 45 5f 57 52 49 54 45 20 69  US_CACHE_WRITE i
f260: 73 20 61 6c 77 61 79 73 20 30 2e 0d 0a 20 20 20  s always 0...   
f270: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f280: 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f  >..      SQLITE_
f290: 44 42 53 54 41 54 55 53 5f 43 41 43 48 45 5f 57  DBSTATUS_CACHE_W
f2a0: 52 49 54 45 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20  RITE = 9,....   
f2b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f2c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
f2d0: 20 70 61 72 61 6d 65 74 65 72 20 72 65 74 75 72   parameter retur
f2e0: 6e 73 20 7a 65 72 6f 20 66 6f 72 20 74 68 65 20  ns zero for the 
f2f0: 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 69 66  current value if
f300: 20 61 6e 64 20 6f 6e 6c 79 0a 20 20 20 20 20 20   and only.      
f310: 2f 2f 2f 20 69 66 20 61 6c 6c 20 66 6f 72 65 69  /// if all forei
f320: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
f330: 74 73 20 28 64 65 66 65 72 72 65 64 20 6f 72 20  ts (deferred or 
f340: 69 6d 6d 65 64 69 61 74 65 29 20 68 61 76 65 0d  immediate) have.
f350: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20  .      /// been 
f360: 72 65 73 6f 6c 76 65 64 2e 20 54 68 65 20 68 69  resolved. The hi
f370: 67 68 77 61 74 65 72 20 6d 61 72 6b 20 69 73 20  ghwater mark is 
f380: 61 6c 77 61 79 73 20 30 2e 0d 0a 20 20 20 20 20  always 0...     
f390: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
f3a0: 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42  .      SQLITE_DB
f3b0: 53 54 41 54 55 53 5f 44 45 46 45 52 52 45 44 5f  STATUS_DEFERRED_
f3c0: 46 4b 53 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20  FKS = 10,....   
f3d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f3e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
f3f0: 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 73 69   parameter is si
f400: 6d 69 6c 61 72 20 74 6f 20 44 42 53 54 41 54 55  milar to DBSTATU
f410: 53 5f 43 41 43 48 45 5f 55 53 45 44 2c 20 65 78  S_CACHE_USED, ex
f420: 63 65 70 74 20 74 68 61 74 0d 0a 20 20 20 20 20  cept that..     
f430: 20 2f 2f 2f 20 69 66 20 61 20 70 61 67 65 72 20   /// if a pager 
f440: 63 61 63 68 65 20 69 73 20 73 68 61 72 65 64 20  cache is shared 
f450: 62 65 74 77 65 65 6e 20 74 77 6f 20 6f 72 20 6d  between two or m
f460: 6f 72 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ore connections 
f470: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  the..      /// b
f480: 79 74 65 73 20 6f 66 20 68 65 61 70 20 6d 65 6d  ytes of heap mem
f490: 6f 72 79 20 75 73 65 64 20 62 79 20 74 68 61 74  ory used by that
f4a0: 20 70 61 67 65 72 20 63 61 63 68 65 20 69 73 20   pager cache is 
f4b0: 64 69 76 69 64 65 64 20 65 76 65 6e 6c 79 0d 0a  divided evenly..
f4c0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 74 77 65 65        /// betwee
f4d0: 6e 20 74 68 65 20 61 74 74 61 63 68 65 64 20 63  n the attached c
f4e0: 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20 49 6e 20 6f  onnections. In o
f4f0: 74 68 65 72 20 77 6f 72 64 73 2c 20 69 66 20 6e  ther words, if n
f500: 6f 6e 65 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f  one of..      //
f510: 2f 20 74 68 65 20 70 61 67 65 72 20 63 61 63 68  / the pager cach
f520: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
f530: 74 68 20 74 68 65 20 64 61 74 61 62 61 73 65 20  th the database 
f540: 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 72 65 0d 0a  connection are..
f550: 20 20 20 20 20 20 2f 2f 2f 20 73 68 61 72 65 64        /// shared
f560: 2c 20 74 68 69 73 20 72 65 71 75 65 73 74 20 72  , this request r
f570: 65 74 75 72 6e 73 20 74 68 65 20 73 61 6d 65 20  eturns the same 
f580: 76 61 6c 75 65 20 61 73 20 44 42 53 54 41 54 55  value as DBSTATU
f590: 53 5f 43 41 43 48 45 5f 55 53 45 44 2e 0d 0a 20  S_CACHE_USED... 
f5a0: 20 20 20 20 20 2f 2f 2f 20 4f 72 2c 20 69 66 20       /// Or, if 
f5b0: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 72 20 74  one or more or t
f5c0: 68 65 20 70 61 67 65 72 20 63 61 63 68 65 73 20  he pager caches 
f5d0: 61 72 65 20 73 68 61 72 65 64 2c 20 74 68 65 20  are shared, the 
f5e0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  value..      ///
f5f0: 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69   returned by thi
f600: 73 20 63 61 6c 6c 20 77 69 6c 6c 20 62 65 20 73  s call will be s
f610: 6d 61 6c 6c 65 72 20 74 68 61 6e 20 74 68 61 74  maller than that
f620: 20 72 65 74 75 72 6e 65 64 20 62 79 0d 0a 20 20   returned by..  
f630: 20 20 20 20 2f 2f 2f 20 44 42 53 54 41 54 55 53      /// DBSTATUS
f640: 5f 43 41 43 48 45 5f 55 53 45 44 2e 20 54 68 65  _CACHE_USED. The
f650: 20 68 69 67 68 77 61 74 65 72 20 6d 61 72 6b 20   highwater mark 
f660: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d  associated with.
f670: 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 49 54  .      /// SQLIT
f680: 45 5f 44 42 53 54 41 54 55 53 5f 43 41 43 48 45  E_DBSTATUS_CACHE
f690: 5f 55 53 45 44 5f 53 48 41 52 45 44 20 69 73 20  _USED_SHARED is 
f6a0: 61 6c 77 61 79 73 20 30 2e 0d 0a 20 20 20 20 20  always 0...     
f6b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
f6c0: 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42  .      SQLITE_DB
f6d0: 53 54 41 54 55 53 5f 43 41 43 48 45 5f 55 53 45  STATUS_CACHE_USE
f6e0: 44 5f 53 48 41 52 45 44 20 3d 20 31 31 0d 0a 20  D_SHARED = 11.. 
f6f0: 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
f700: 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
f710: 73 65 20 61 72 65 20 74 68 65 20 73 75 70 70 6f  se are the suppo
f720: 72 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69  rted configurati
f730: 6f 6e 20 76 65 72 62 73 20 66 6f 72 20 75 73 65  on verbs for use
f740: 20 77 69 74 68 20 74 68 65 20 6e 61 74 69 76 65   with the native
f750: 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 6c  ..  /// SQLite l
f760: 69 62 72 61 72 79 2e 20 20 54 68 65 79 20 61 72  ibrary.  They ar
f770: 65 20 75 73 65 64 20 77 69 74 68 20 74 68 65 0d  e used with the.
f780: 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66  .  /// <see cref
f790: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
f7a0: 6f 6e 2e 53 65 74 43 6f 6e 66 69 67 75 72 61 74  on.SetConfigurat
f7b0: 69 6f 6e 4f 70 74 69 6f 6e 22 20 2f 3e 20 6d 65  ionOption" /> me
f7c0: 74 68 6f 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  thod...  /// </s
f7d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
f7e0: 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f 6e  c enum SQLiteCon
f7f0: 66 69 67 44 62 4f 70 73 45 6e 75 6d 0d 0a 20 20  figDbOpsEnum..  
f800: 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  {..    /// <summ
f810: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
f820: 69 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65  is value represe
f830: 6e 74 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 28  nts an unknown (
f840: 6f 72 20 69 6e 76 61 6c 69 64 29 20 6f 70 74 69  or invalid) opti
f850: 6f 6e 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 69  on, do not use i
f860: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  t...    /// </su
f870: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49  mmary>..    SQLI
f880: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 4e 45  TE_DBCONFIG_NONE
f890: 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a 0d 0a   = 0, // nil....
f8a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
f8b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
f8c0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
f8d0: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6e 61 6d  o change the nam
f8e0: 65 20 6f 66 20 74 68 65 20 22 6d 61 69 6e 22 20  e of the "main" 
f8f0: 64 61 74 61 62 61 73 65 0a 20 20 20 20 2f 2f 2f  database.    ///
f900: 20 73 63 68 65 6d 61 2e 20 20 54 68 65 20 73 6f   schema.  The so
f910: 6c 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  le argument is a
f920: 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f   pointer to a co
f930: 6e 73 74 61 6e 74 20 55 54 46 38 20 73 74 72 69  nstant UTF8 stri
f940: 6e 67 0a 20 20 20 20 2f 2f 2f 20 77 68 69 63 68  ng.    /// which
f950: 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65   will become the
f960: 20 6e 65 77 20 73 63 68 65 6d 61 20 6e 61 6d 65   new schema name
f970: 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 22 6d 61   in place of "ma
f980: 69 6e 22 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  in"...    /// </
f990: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51  summary>..    SQ
f9a0: 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41  LITE_DBCONFIG_MA
f9b0: 49 4e 44 42 4e 41 4d 45 20 3d 20 31 30 30 30 2c  INDBNAME = 1000,
f9c0: 20 2f 2f 20 63 68 61 72 2a 0d 0a 0d 0a 20 20 20   // char*....   
f9d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f9e0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74      /// This opt
f9f0: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 63  ion is used to c
fa00: 6f 6e 66 69 67 75 72 65 20 74 68 65 20 6c 6f 6f  onfigure the loo
fa10: 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c  kaside memory al
fa20: 6c 6f 63 61 74 6f 72 2e 0d 0a 20 20 20 20 2f 2f  locator...    //
fa30: 2f 20 54 68 65 20 76 61 6c 75 65 20 6d 75 73 74  / The value must
fa40: 20 62 65 20 61 6e 20 61 72 72 61 79 20 77 69 74   be an array wit
fa50: 68 20 74 68 72 65 65 20 65 6c 65 6d 65 6e 74 73  h three elements
fa60: 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 65 6c  .  The second el
fa70: 65 6d 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f 20 6d  ement..    /// m
fa80: 75 73 74 20 62 65 20 61 6e 20 3c 73 65 65 20 63  ust be an <see c
fa90: 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 63  ref="Int32" /> c
faa0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 73 69  ontaining the si
fab0: 7a 65 20 6f 66 20 65 61 63 68 20 62 75 66 66 65  ze of each buffe
fac0: 72 0d 0a 20 20 20 20 2f 2f 2f 20 73 6c 6f 74 2e  r..    /// slot.
fad0: 20 20 54 68 65 20 74 68 69 72 64 20 65 6c 65 6d    The third elem
fae0: 65 6e 74 20 6d 75 73 74 20 62 65 20 61 6e 20 3c  ent must be an <
faf0: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33 32 22  see cref="Int32"
fb00: 20 2f 3e 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a   /> containing..
fb10: 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 75 6d 62      /// the numb
fb20: 65 72 20 6f 66 20 73 6c 6f 74 73 2e 20 20 54 68  er of slots.  Th
fb30: 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20  e first element 
fb40: 6d 75 73 74 20 62 65 20 61 6e 20 3c 73 65 65 20  must be an <see 
fb50: 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e  cref="IntPtr" />
fb60: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 70  ..    /// that p
fb70: 6f 69 6e 74 73 20 74 6f 20 61 20 6e 61 74 69 76  oints to a nativ
fb80: 65 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20  e memory buffer 
fb90: 6f 66 20 62 79 74 65 73 20 65 71 75 61 6c 20 74  of bytes equal t
fba0: 6f 20 6f 72 20 67 72 65 61 74 65 72 0d 0a 20 20  o or greater..  
fbb0: 20 20 2f 2f 2f 20 74 68 61 6e 20 74 68 65 20 70    /// than the p
fbc0: 72 6f 64 75 63 74 20 6f 66 20 74 68 65 20 73 65  roduct of the se
fbd0: 63 6f 6e 64 20 61 6e 64 20 74 68 69 72 64 20 65  cond and third e
fbe0: 6c 65 6d 65 6e 74 20 76 61 6c 75 65 73 2e 0d 0a  lement values...
fbf0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
fc00: 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44  y>..    SQLITE_D
fc10: 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  BCONFIG_LOOKASID
fc20: 45 20 3d 20 31 30 30 31 2c 20 2f 2f 20 76 6f 69  E = 1001, // voi
fc30: 64 2a 20 69 6e 74 20 69 6e 74 0d 0a 0d 0a 20 20  d* int int....  
fc40: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
fc50: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70  .    /// This op
fc60: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
fc70: 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c  enable or disabl
fc80: 65 20 74 68 65 20 65 6e 66 6f 72 63 65 6d 65 6e  e the enforcemen
fc90: 74 20 6f 66 0d 0a 20 20 20 20 2f 2f 2f 20 66 6f  t of..    /// fo
fca0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
fcb0: 61 69 6e 74 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  aints...    /// 
fcc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
fcd0: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
fce0: 45 4e 41 42 4c 45 5f 46 4b 45 59 20 3d 20 31 30  ENABLE_FKEY = 10
fcf0: 30 32 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d  02, // int int*.
fd00: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
fd10: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
fd20: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
fd30: 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64  d to enable or d
fd40: 69 73 61 62 6c 65 20 74 72 69 67 67 65 72 73 2e  isable triggers.
fd50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
fd60: 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45  ary>..    SQLITE
fd70: 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
fd80: 5f 54 52 49 47 47 45 52 20 3d 20 31 30 30 33 2c  _TRIGGER = 1003,
fd90: 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 0d 0a   // int int*....
fda0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
fdb0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
fdc0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
fdd0: 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
fde0: 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72 67 75  ble the two-argu
fdf0: 6d 65 6e 74 20 76 65 72 73 69 6f 6e 0d 0a 20 20  ment version..  
fe00: 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 66 74 73    /// of the fts
fe10: 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 66 75  3_tokenizer() fu
fe20: 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20  nction which is 
fe30: 70 61 72 74 20 6f 66 20 74 68 65 20 46 54 53 33  part of the FTS3
fe40: 20 66 75 6c 6c 2d 74 65 78 74 0d 0a 20 20 20 20   full-text..    
fe50: 2f 2f 2f 20 73 65 61 72 63 68 20 65 6e 67 69 6e  /// search engin
fe60: 65 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20  e extension...  
fe70: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
fe80: 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43  ..    SQLITE_DBC
fe90: 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53  ONFIG_ENABLE_FTS
fea0: 33 5f 54 4f 4b 45 4e 49 5a 45 52 20 3d 20 31 30  3_TOKENIZER = 10
feb0: 30 34 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d  04, // int int*.
fec0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
fed0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
fee0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
fef0: 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64  d to enable or d
ff00: 69 73 61 62 6c 65 20 74 68 65 20 6c 6f 61 64 69  isable the loadi
ff10: 6e 67 20 6f 66 20 65 78 74 65 6e 73 69 6f 6e 73  ng of extensions
ff20: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
ff30: 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54  mary>..    SQLIT
ff40: 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c  E_DBCONFIG_ENABL
ff50: 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e  E_LOAD_EXTENSION
ff60: 20 3d 20 31 30 30 35 2c 20 2f 2f 20 69 6e 74 20   = 1005, // int 
ff70: 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  int*....    /// 
ff80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
ff90: 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  // This option i
ffa0: 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
ffb0: 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20   or disable the 
ffc0: 61 75 74 6f 6d 61 74 69 63 20 63 68 65 63 6b 70  automatic checkp
ffd0: 6f 69 6e 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f  ointing..    ///
ffe0: 20 77 68 65 6e 20 61 20 57 41 4c 20 64 61 74 61   when a WAL data
fff0: 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 2e 0d  base is closed..
10000 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
10010 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f  ry>..    SQLITE_
10020 44 42 43 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54  DBCONFIG_NO_CKPT
10030 5f 4f 4e 5f 43 4c 4f 53 45 20 3d 20 31 30 30 36  _ON_CLOSE = 1006
10040 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 0d  , // int int*...
10050 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
10060 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
10070 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
10080 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73  to enable or dis
10090 61 62 6c 65 20 74 68 65 20 71 75 65 72 79 20 70  able the query p
100a0 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79  lanner stability
100b0 0d 0a 20 20 20 20 2f 2f 2f 20 67 75 61 72 61 6e  ..    /// guaran
100c0 74 65 65 20 28 51 50 53 47 29 2e 0d 0a 20 20 20  tee (QPSG)...   
100d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
100e0 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f  .    SQLITE_DBCO
100f0 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47  NFIG_ENABLE_QPSG
10100 20 3d 20 31 30 30 37 2c 20 2f 2f 20 69 6e 74 20   = 1007, // int 
10110 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  int*....    /// 
10120 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10130 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  // This option i
10140 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
10150 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20   or disable the 
10160 65 78 74 72 61 20 45 58 50 4c 41 49 4e 20 51 55  extra EXPLAIN QU
10170 45 52 59 20 50 4c 41 4e 0d 0a 20 20 20 20 2f 2f  ERY PLAN..    //
10180 2f 20 6f 75 74 70 75 74 20 66 6f 72 20 74 72 69  / output for tri
10190 67 67 65 72 20 70 72 6f 67 72 61 6d 73 2e 0d 0a  gger programs...
101a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
101b0 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44  y>..    SQLITE_D
101c0 42 43 4f 4e 46 49 47 5f 54 52 49 47 47 45 52 5f  BCONFIG_TRIGGER_
101d0 45 51 50 20 3d 20 31 30 30 38 20 2f 2f 20 69 6e  EQP = 1008 // in
101e0 74 20 69 6e 74 2a 0d 0a 20 20 7d 0d 0a 0d 0a 20  t int*..  }.... 
101f0 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68   // These are th
10200 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 74 68 65  e options to the
10210 20 69 6e 74 65 72 6e 61 6c 20 73 71 6c 69 74 65   internal sqlite
10220 33 5f 63 6f 6e 66 69 67 20 63 61 6c 6c 2e 0d 0a  3_config call...
10230 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20    internal enum 
10240 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73 45  SQLiteConfigOpsE
10250 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 53 51  num..  {..    SQ
10260 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4e 4f 4e 45  LITE_CONFIG_NONE
10270 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20   = 0, // nil..  
10280 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
10290 53 49 4e 47 4c 45 54 48 52 45 41 44 20 3d 20 31  SINGLETHREAD = 1
102a0 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51  , // nil..    SQ
102b0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54  LITE_CONFIG_MULT
102c0 49 54 48 52 45 41 44 20 3d 20 32 2c 20 2f 2f 20  ITHREAD = 2, // 
102d0 6e 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f  nil..    SQLITE_
102e0 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45  CONFIG_SERIALIZE
102f0 44 20 3d 20 33 2c 20 2f 2f 20 6e 69 6c 0d 0a 20  D = 3, // nil.. 
10300 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
10310 5f 4d 41 4c 4c 4f 43 20 3d 20 34 2c 20 2f 2f 20  _MALLOC = 4, // 
10320 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
10330 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45  ods*..    SQLITE
10340 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f  _CONFIG_GETMALLO
10350 43 20 3d 20 35 2c 20 2f 2f 20 73 71 6c 69 74 65  C = 5, // sqlite
10360 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 0d 0a  3_mem_methods*..
10370 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
10380 47 5f 53 43 52 41 54 43 48 20 3d 20 36 2c 20 2f  G_SCRATCH = 6, /
10390 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a 2c  / void*, int sz,
103a0 20 69 6e 74 20 4e 0d 0a 20 20 20 20 53 51 4c 49   int N..    SQLI
103b0 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41  TE_CONFIG_PAGECA
103c0 43 48 45 20 3d 20 37 2c 20 2f 2f 20 76 6f 69 64  CHE = 7, // void
103d0 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74 20 4e  *, int sz, int N
103e0 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
103f0 46 49 47 5f 48 45 41 50 20 3d 20 38 2c 20 2f 2f  FIG_HEAP = 8, //
10400 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42 79 74   void*, int nByt
10410 65 2c 20 69 6e 74 20 6d 69 6e 0d 0a 20 20 20 20  e, int min..    
10420 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45  SQLITE_CONFIG_ME
10430 4d 53 54 41 54 55 53 20 3d 20 39 2c 20 2f 2f 20  MSTATUS = 9, // 
10440 62 6f 6f 6c 65 61 6e 0d 0a 20 20 20 20 53 51 4c  boolean..    SQL
10450 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58  ITE_CONFIG_MUTEX
10460 20 3d 20 31 30 2c 20 2f 2f 20 73 71 6c 69 74 65   = 10, // sqlite
10470 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a  3_mutex_methods*
10480 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
10490 46 49 47 5f 47 45 54 4d 55 54 45 58 20 3d 20 31  FIG_GETMUTEX = 1
104a0 31 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 75  1, // sqlite3_mu
104b0 74 65 78 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20  tex_methods*..  
104c0 20 20 2f 2f 20 70 72 65 76 69 6f 75 73 6c 79 20    // previously 
104d0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 48  SQLITE_CONFIG_CH
104e0 55 4e 4b 41 4c 4c 4f 43 20 31 32 20 77 68 69 63  UNKALLOC 12 whic
104f0 68 20 69 73 20 6e 6f 77 20 75 6e 75 73 65 64 0d  h is now unused.
10500 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
10510 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 3d 20 31  IG_LOOKASIDE = 1
10520 33 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 0d 0a 20  3, // int int.. 
10530 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
10540 5f 50 43 41 43 48 45 20 3d 20 31 34 2c 20 2f 2f  _PCACHE = 14, //
10550 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f   sqlite3_pcache_
10560 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51  methods*..    SQ
10570 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50  LITE_CONFIG_GETP
10580 43 41 43 48 45 20 3d 20 31 35 2c 20 2f 2f 20 73  CACHE = 15, // s
10590 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65  qlite3_pcache_me
105a0 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49  thods*..    SQLI
105b0 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 3d 20  TE_CONFIG_LOG = 
105c0 31 36 2c 20 2f 2f 20 78 46 75 6e 63 2c 20 76 6f  16, // xFunc, vo
105d0 69 64 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f  id*..    SQLITE_
105e0 43 4f 4e 46 49 47 5f 55 52 49 20 3d 20 31 37 2c  CONFIG_URI = 17,
105f0 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20 53 51 4c   // int..    SQL
10600 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
10610 45 32 20 3d 20 31 38 2c 20 2f 2f 20 73 71 6c 69  E2 = 18, // sqli
10620 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
10630 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45  ds2*..    SQLITE
10640 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48  _CONFIG_GETPCACH
10650 45 32 20 3d 20 31 39 2c 20 2f 2f 20 73 71 6c 69  E2 = 19, // sqli
10660 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
10670 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45  ds2*..    SQLITE
10680 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47  _CONFIG_COVERING
10690 5f 49 4e 44 45 58 5f 53 43 41 4e 20 3d 20 32 30  _INDEX_SCAN = 20
106a0 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20 53 51  , // int..    SQ
106b0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c  LITE_CONFIG_SQLL
106c0 4f 47 20 3d 20 32 31 2c 20 2f 2f 20 78 53 71 6c  OG = 21, // xSql
106d0 6c 6f 67 2c 20 76 6f 69 64 2a 0d 0a 20 20 20 20  log, void*..    
106e0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d  SQLITE_CONFIG_MM
106f0 41 50 5f 53 49 5a 45 20 3d 20 32 32 2c 20 2f 2f  AP_SIZE = 22, //
10700 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2c 20   sqlite3_int64, 
10710 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 0d 0a 20  sqlite3_int64.. 
10720 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
10730 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 20  _WIN32_HEAPSIZE 
10740 3d 20 32 33 2c 20 2f 2f 20 69 6e 74 20 6e 42 79  = 23, // int nBy
10750 74 65 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  te..    SQLITE_C
10760 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52  ONFIG_PCACHE_HDR
10770 53 5a 20 3d 20 32 34 2c 20 2f 2f 20 69 6e 74 20  SZ = 24, // int 
10780 2a 70 73 7a 0d 0a 20 20 20 20 53 51 4c 49 54 45  *psz..    SQLITE
10790 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20 3d 20  _CONFIG_PMASZ = 
107a0 32 35 20 2f 2f 20 75 6e 73 69 67 6e 65 64 20 69  25 // unsigned i
107b0 6e 74 20 73 7a 50 6d 61 0d 0a 20 20 7d 0d 0a 0d  nt szPma..  }...
107c0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
107d0 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20 63 6f  ..  /// These co
107e0 6e 73 74 61 6e 74 73 20 61 72 65 20 75 73 65 64  nstants are used
107f0 20 77 69 74 68 20 74 68 65 20 73 71 6c 69 74 65   with the sqlite
10800 33 5f 74 72 61 63 65 5f 76 32 28 29 20 41 50 49  3_trace_v2() API
10810 20 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20   and the..  /// 
10820 63 61 6c 6c 62 61 63 6b 73 20 72 65 67 69 73 74  callbacks regist
10830 65 72 65 64 20 62 79 20 69 74 2e 0d 0a 20 20 2f  ered by it...  /
10840 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10850 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 69 6e   [Flags()]..  in
10860 74 65 72 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69  ternal enum SQLi
10870 74 65 54 72 61 63 65 46 6c 61 67 73 0d 0a 20 20  teTraceFlags..  
10880 7b 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f  {..      SQLITE_
10890 54 52 41 43 45 5f 4e 4f 4e 45 20 3d 20 30 78 30  TRACE_NONE = 0x0
108a0 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20 20 20  , // nil..      
108b0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d  SQLITE_TRACE_STM
108c0 54 20 3d 20 30 78 31 2c 20 2f 2f 20 70 53 74 6d  T = 0x1, // pStm
108d0 74 2c 20 7a 53 71 6c 0d 0a 20 20 20 20 20 20 53  t, zSql..      S
108e0 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46  QLITE_TRACE_PROF
108f0 49 4c 45 20 3d 20 30 78 32 2c 20 2f 2f 20 70 53  ILE = 0x2, // pS
10900 74 6d 74 2c 20 70 69 4e 73 65 63 36 34 0d 0a 20  tmt, piNsec64.. 
10910 20 20 20 20 20 53 51 4c 49 54 45 5f 54 52 41 43       SQLITE_TRAC
10920 45 5f 52 4f 57 20 3d 20 30 78 34 2c 20 2f 2f 20  E_ROW = 0x4, // 
10930 70 53 74 6d 74 0d 0a 20 20 20 20 20 20 53 51 4c  pStmt..      SQL
10940 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45 20  ITE_TRACE_CLOSE 
10950 3d 20 30 78 38 20 2f 2f 20 70 44 62 0d 0a 20 20  = 0x8 // pDb..  
10960 7d 0d 0a 7d 0d 0a                                }..}..