System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2dd06eaab5ed8f3716064df2b719b1e3f4c5fd92:


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 76 6f 69 64  al abstract void
35e0: 20 43 6f 6c 75 6d 6e 4d 65 74 61 44 61 74 61 28   ColumnMetaData(
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 2c 20 73   string table, s
3610: 74 72 69 6e 67 20 63 6f 6c 75 6d 6e 2c 20 72 65  tring column, re
3620: 66 20 73 74 72 69 6e 67 20 64 61 74 61 54 79 70  f string dataTyp
3630: 65 2c 20 72 65 66 20 73 74 72 69 6e 67 20 63 6f  e, ref string co
3640: 6c 6c 61 74 65 53 65 71 75 65 6e 63 65 2c 20 72  llateSequence, r
3650: 65 66 20 62 6f 6f 6c 20 6e 6f 74 4e 75 6c 6c 2c  ef bool notNull,
3660: 20 72 65 66 20 62 6f 6f 6c 20 70 72 69 6d 61 72   ref bool primar
3670: 79 4b 65 79 2c 20 72 65 66 20 62 6f 6f 6c 20 61  yKey, ref bool a
3680: 75 74 6f 49 6e 63 72 65 6d 65 6e 74 29 3b 0d 0a  utoIncrement);..
3690: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
36a0: 74 72 61 63 74 20 76 6f 69 64 20 47 65 74 49 6e  tract void GetIn
36b0: 64 65 78 43 6f 6c 75 6d 6e 45 78 74 65 6e 64 65  dexColumnExtende
36c0: 64 49 6e 66 6f 28 73 74 72 69 6e 67 20 64 61 74  dInfo(string dat
36d0: 61 62 61 73 65 2c 20 73 74 72 69 6e 67 20 69 6e  abase, string in
36e0: 64 65 78 2c 20 73 74 72 69 6e 67 20 63 6f 6c 75  dex, string colu
36f0: 6d 6e 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74  mn, ref int sort
3700: 4d 6f 64 65 2c 20 72 65 66 20 69 6e 74 20 6f 6e  Mode, ref int on
3710: 45 72 72 6f 72 2c 20 72 65 66 20 73 74 72 69 6e  Error, ref strin
3720: 67 20 63 6f 6c 6c 61 74 69 6f 6e 53 65 71 75 65  g collationSeque
3730: 6e 63 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74  nce);....    int
3740: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 6f  ernal abstract o
3750: 62 6a 65 63 74 20 47 65 74 4f 62 6a 65 63 74 28  bject GetObject(
3760: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3770: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3780: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3790: 61 62 73 74 72 61 63 74 20 64 6f 75 62 6c 65 20  abstract double 
37a0: 47 65 74 44 6f 75 62 6c 65 28 53 51 4c 69 74 65  GetDouble(SQLite
37b0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
37c0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
37d0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
37e0: 63 74 20 42 6f 6f 6c 65 61 6e 20 47 65 74 42 6f  ct Boolean GetBo
37f0: 6f 6c 65 61 6e 28 53 51 4c 69 74 65 53 74 61 74  olean(SQLiteStat
3800: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
3810: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
3820: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53  ernal abstract S
3830: 42 79 74 65 20 47 65 74 53 42 79 74 65 28 53 51  Byte GetSByte(SQ
3840: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3850: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3860: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3870: 73 74 72 61 63 74 20 42 79 74 65 20 47 65 74 42  stract Byte GetB
3880: 79 74 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  yte(SQLiteStatem
3890: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
38a0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
38b0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49 6e 74  nal abstract Int
38c0: 31 36 20 47 65 74 49 6e 74 31 36 28 53 51 4c 69  16 GetInt16(SQLi
38d0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
38e0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
38f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3900: 72 61 63 74 20 55 49 6e 74 31 36 20 47 65 74 55  ract UInt16 GetU
3910: 49 6e 74 31 36 28 53 51 4c 69 74 65 53 74 61 74  Int16(SQLiteStat
3920: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
3930: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
3940: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
3950: 6e 74 33 32 20 47 65 74 49 6e 74 33 32 28 53 51  nt32 GetInt32(SQ
3960: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3970: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3980: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3990: 73 74 72 61 63 74 20 55 49 6e 74 33 32 20 47 65  stract UInt32 Ge
39a0: 74 55 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  tUInt32(SQLiteSt
39b0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
39c0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
39d0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
39e0: 20 49 6e 74 36 34 20 47 65 74 49 6e 74 36 34 28   Int64 GetInt64(
39f0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3a00: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3a10: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3a20: 61 62 73 74 72 61 63 74 20 55 49 6e 74 36 34 20  abstract UInt64 
3a30: 47 65 74 55 49 6e 74 36 34 28 53 51 4c 69 74 65  GetUInt64(SQLite
3a40: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3a50: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
3a60: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3a70: 63 74 20 73 74 72 69 6e 67 20 47 65 74 54 65 78  ct string GetTex
3a80: 74 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  t(SQLiteStatemen
3a90: 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  t stmt, int inde
3aa0: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
3ab0: 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20  l abstract long 
3ac0: 47 65 74 42 79 74 65 73 28 53 51 4c 69 74 65 53  GetBytes(SQLiteS
3ad0: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69  tatement stmt, i
3ae0: 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 6e 44  nt index, int nD
3af0: 61 74 61 6f 66 66 73 65 74 2c 20 62 79 74 65 5b  ataoffset, byte[
3b00: 5d 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53 74  ] bDest, int nSt
3b10: 61 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74 68  art, int nLength
3b20: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3b30: 20 61 62 73 74 72 61 63 74 20 63 68 61 72 20 47   abstract char G
3b40: 65 74 43 68 61 72 28 53 51 4c 69 74 65 53 74 61  etChar(SQLiteSta
3b50: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3b60: 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e   index);..    in
3b70: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3b80: 6c 6f 6e 67 20 47 65 74 43 68 61 72 73 28 53 51  long GetChars(SQ
3b90: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3ba0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69  mt, int index, i
3bb0: 6e 74 20 6e 44 61 74 61 6f 66 66 73 65 74 2c 20  nt nDataoffset, 
3bc0: 63 68 61 72 5b 5d 20 62 44 65 73 74 2c 20 69 6e  char[] bDest, in
3bd0: 74 20 6e 53 74 61 72 74 2c 20 69 6e 74 20 6e 4c  t nStart, int nL
3be0: 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 69 6e 74  ength);..    int
3bf0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 44  ernal abstract D
3c00: 61 74 65 54 69 6d 65 20 47 65 74 44 61 74 65 54  ateTime GetDateT
3c10: 69 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ime(SQLiteStatem
3c20: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3c30: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3c40: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
3c50: 6c 20 49 73 4e 75 6c 6c 28 53 51 4c 69 74 65 53  l IsNull(SQLiteS
3c60: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69  tatement stmt, i
3c70: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  nt index);....  
3c80: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3c90: 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43  act SQLiteErrorC
3ca0: 6f 64 65 20 43 72 65 61 74 65 43 6f 6c 6c 61 74  ode CreateCollat
3cb0: 69 6f 6e 28 73 74 72 69 6e 67 20 73 74 72 43 6f  ion(string strCo
3cc0: 6c 6c 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65 43  llation, SQLiteC
3cd0: 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 2c 20 53  ollation func, S
3ce0: 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66  QLiteCollation f
3cf0: 75 6e 63 31 36 2c 20 62 6f 6f 6c 20 40 74 68 72  unc16, bool @thr
3d00: 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ow);..    intern
3d10: 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  al abstract SQLi
3d20: 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61  teErrorCode Crea
3d30: 74 65 46 75 6e 63 74 69 6f 6e 28 73 74 72 69 6e  teFunction(strin
3d40: 67 20 73 74 72 46 75 6e 63 74 69 6f 6e 2c 20 69  g strFunction, i
3d50: 6e 74 20 6e 41 72 67 73 2c 20 62 6f 6f 6c 20 6e  nt nArgs, bool n
3d60: 65 65 64 43 6f 6c 6c 53 65 71 2c 20 53 51 4c 69  eedCollSeq, SQLi
3d70: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
3d80: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
3d90: 66 75 6e 63 73 74 65 70 2c 20 53 51 4c 69 74 65  funcstep, SQLite
3da0: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 75  FinalCallback fu
3db0: 6e 63 66 69 6e 61 6c 2c 20 62 6f 6f 6c 20 40 74  ncfinal, bool @t
3dc0: 68 72 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74 65  hrow);..    inte
3dd0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 43 6f  rnal abstract Co
3de0: 6c 6c 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 20  llationSequence 
3df0: 47 65 74 43 6f 6c 6c 61 74 69 6f 6e 53 65 71 75  GetCollationSequ
3e00: 65 6e 63 65 28 53 51 4c 69 74 65 46 75 6e 63 74  ence(SQLiteFunct
3e10: 69 6f 6e 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ion func, IntPtr
3e20: 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20   context);..    
3e30: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3e40: 74 20 69 6e 74 20 43 6f 6e 74 65 78 74 43 6f 6c  t int ContextCol
3e50: 6c 61 74 65 43 6f 6d 70 61 72 65 28 43 6f 6c 6c  lateCompare(Coll
3e60: 61 74 69 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e 75  ationEncodingEnu
3e70: 6d 20 65 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f  m enc, IntPtr co
3e80: 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 31  ntext, string s1
3e90: 2c 20 73 74 72 69 6e 67 20 73 32 29 3b 0d 0a 20  , string s2);.. 
3ea0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3eb0: 72 61 63 74 20 69 6e 74 20 43 6f 6e 74 65 78 74  ract int Context
3ec0: 43 6f 6c 6c 61 74 65 43 6f 6d 70 61 72 65 28 43  CollateCompare(C
3ed0: 6f 6c 6c 61 74 69 6f 6e 45 6e 63 6f 64 69 6e 67  ollationEncoding
3ee0: 45 6e 75 6d 20 65 6e 63 2c 20 49 6e 74 50 74 72  Enum enc, IntPtr
3ef0: 20 63 6f 6e 74 65 78 74 2c 20 63 68 61 72 5b 5d   context, char[]
3f00: 20 63 31 2c 20 63 68 61 72 5b 5d 20 63 32 29 3b   c1, char[] c2);
3f10: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
3f20: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 41 67   abstract int Ag
3f30: 67 72 65 67 61 74 65 43 6f 75 6e 74 28 49 6e 74  gregateCount(Int
3f40: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 20  Ptr context);.. 
3f50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3f60: 72 61 63 74 20 49 6e 74 50 74 72 20 41 67 67 72  ract IntPtr Aggr
3f70: 65 67 61 74 65 43 6f 6e 74 65 78 74 28 49 6e 74  egateContext(Int
3f80: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
3f90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3fa0: 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65 74 50  stract long GetP
3fb0: 61 72 61 6d 56 61 6c 75 65 42 79 74 65 73 28 49  aramValueBytes(I
3fc0: 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20 6e  ntPtr ptr, int n
3fd0: 44 61 74 61 4f 66 66 73 65 74 2c 20 62 79 74 65  DataOffset, byte
3fe0: 5b 5d 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53  [] bDest, int nS
3ff0: 74 61 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74  tart, int nLengt
4000: 68 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  h);..    interna
4010: 6c 20 61 62 73 74 72 61 63 74 20 64 6f 75 62 6c  l abstract doubl
4020: 65 20 47 65 74 50 61 72 61 6d 56 61 6c 75 65 44  e GetParamValueD
4030: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 74 72  ouble(IntPtr ptr
4040: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
4050: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 47 65   abstract int Ge
4060: 74 50 61 72 61 6d 56 61 6c 75 65 49 6e 74 33 32  tParamValueInt32
4070: 28 49 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 20  (IntPtr ptr);.. 
4080: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
4090: 72 61 63 74 20 49 6e 74 36 34 20 47 65 74 50 61  ract Int64 GetPa
40a0: 72 61 6d 56 61 6c 75 65 49 6e 74 36 34 28 49 6e  ramValueInt64(In
40b0: 74 50 74 72 20 70 74 72 29 3b 0d 0a 20 20 20 20  tPtr ptr);..    
40c0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
40d0: 74 20 73 74 72 69 6e 67 20 47 65 74 50 61 72 61  t string GetPara
40e0: 6d 56 61 6c 75 65 54 65 78 74 28 49 6e 74 50 74  mValueText(IntPt
40f0: 72 20 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74  r ptr);..    int
4100: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 54  ernal abstract T
4110: 79 70 65 41 66 66 69 6e 69 74 79 20 47 65 74 50  ypeAffinity GetP
4120: 61 72 61 6d 56 61 6c 75 65 54 79 70 65 28 49 6e  aramValueType(In
4130: 74 50 74 72 20 70 74 72 29 3b 0d 0a 0d 0a 20 20  tPtr ptr);....  
4140: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
4150: 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 42  act void ReturnB
4160: 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
4170: 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
4180: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
4190: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52   abstract void R
41a0: 65 74 75 72 6e 44 6f 75 62 6c 65 28 49 6e 74 50  eturnDouble(IntP
41b0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62  tr context, doub
41c0: 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  le value);..    
41d0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
41e0: 74 20 76 6f 69 64 20 52 65 74 75 72 6e 45 72 72  t void ReturnErr
41f0: 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
4200: 74 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29  t, string value)
4210: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
4220: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52 65  abstract void Re
4230: 74 75 72 6e 49 6e 74 33 32 28 49 6e 74 50 74 72  turnInt32(IntPtr
4240: 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 33 32 20   context, Int32 
4250: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
4260: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
4270: 6f 69 64 20 52 65 74 75 72 6e 49 6e 74 36 34 28  oid ReturnInt64(
4280: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
4290: 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 20  Int64 value);.. 
42a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
42b0: 72 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e  ract void Return
42c0: 4e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  Null(IntPtr cont
42d0: 65 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  ext);..    inter
42e0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
42f0: 64 20 52 65 74 75 72 6e 54 65 78 74 28 49 6e 74  d ReturnText(Int
4300: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
4310: 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ing value);....#
4320: 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
4330: 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 2f 2f  AL_TABLE..    //
4340: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4350: 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e   /// Calls the n
4360: 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72  ative SQLite cor
4370: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64  e library in ord
4380: 65 72 20 74 6f 20 63 72 65 61 74 65 20 61 20 64  er to create a d
4390: 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 2f  isposable..    /
43a0: 2f 2f 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69  // module contai
43b0: 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65  ning the impleme
43c0: 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72  ntation of a vir
43d0: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
43e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
43f0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4400: 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
4410: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75      /// The modu
4420: 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20  le object to be 
4430: 75 73 65 64 20 77 68 65 6e 20 63 72 65 61 74 69  used when creati
4440: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 64 69  ng the native di
4450: 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 2e  sposable module.
4460: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
4470: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
4480: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
4490: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
44a0: 61 67 73 20 66 6f 72 20 74 68 65 20 61 73 73 6f  ags for the asso
44b0: 63 69 61 74 65 64 20 3c 73 65 65 20 63 72 65 66  ciated <see cref
44c0: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
44d0: 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
44e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
44f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69   </param>..    i
4500: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
4510: 20 76 6f 69 64 20 43 72 65 61 74 65 4d 6f 64 75   void CreateModu
4520: 6c 65 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20  le(SQLiteModule 
4530: 6d 6f 64 75 6c 65 2c 20 53 51 4c 69 74 65 43 6f  module, SQLiteCo
4540: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
4550: 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ags);....    ///
4560: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4570: 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61  /// Calls the na
4580: 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65  tive SQLite core
4590: 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65   library in orde
45a0: 72 20 74 6f 20 63 6c 65 61 6e 75 70 20 74 68 65  r to cleanup the
45b0: 20 72 65 73 6f 75 72 63 65 73 0d 0a 20 20 20 20   resources..    
45c0: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
45d0: 69 74 68 20 61 20 6d 6f 64 75 6c 65 20 63 6f 6e  ith a module con
45e0: 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c  taining the impl
45f0: 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20  ementation of a 
4600: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
4610: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4620: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
4630: 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
4640: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d  >..    /// The m
4650: 6f 64 75 6c 65 20 6f 62 6a 65 63 74 20 70 72 65  odule object pre
4660: 76 69 6f 75 73 6c 79 20 70 61 73 73 65 64 20 74  viously passed t
4670: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
4680: 22 43 72 65 61 74 65 4d 6f 64 75 6c 65 22 20 2f  "CreateModule" /
4690: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f  >..    /// metho
46a0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
46b0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
46c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
46d0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
46e0: 66 6c 61 67 73 20 66 6f 72 20 74 68 65 20 61 73  flags for the as
46f0: 73 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63 72  sociated <see cr
4700: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
4710: 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
4720: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
4730: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4740: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
4750: 63 74 20 76 6f 69 64 20 44 69 73 70 6f 73 65 4d  ct void DisposeM
4760: 6f 64 75 6c 65 28 53 51 4c 69 74 65 4d 6f 64 75  odule(SQLiteModu
4770: 6c 65 20 6d 6f 64 75 6c 65 2c 20 53 51 4c 69 74  le module, SQLit
4780: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
4790: 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20   flags);....    
47a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
47b0: 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65     /// Calls the
47c0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63   native SQLite c
47d0: 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f  ore library in o
47e0: 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20  rder to declare 
47f0: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  a virtual table.
4800: 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 72 65 73 70  .    /// in resp
4810: 6f 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c 20 69  onse to a call i
4820: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
4830: 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
4840: 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
4850: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20 3c  />..    /// or <
4860: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
4870: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
4880: 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72 74 75  onnect" /> virtu
4890: 61 6c 20 74 61 62 6c 65 20 6d 65 74 68 6f 64 73  al table methods
48a0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
48b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
48c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
48d0: 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  le">..    /// Th
48e0: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
48f0: 6d 6f 64 75 6c 65 20 74 68 61 74 20 69 73 20 74  module that is t
4900: 6f 20 62 65 20 72 65 73 70 6f 6e 73 69 62 6c 65  o be responsible
4910: 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
4920: 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20   table..    /// 
4930: 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64 2e 0d  being declared..
4940: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
4950: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
4960: 6d 20 6e 61 6d 65 3d 22 73 74 72 53 71 6c 22 3e  m name="strSql">
4970: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74  ..    /// The st
4980: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
4990: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
49a0: 74 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65  t describing the
49b0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74   virtual table t
49c0: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 20 64 65  o..    /// be de
49d0: 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  clared...    ///
49e0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
49f0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4a00: 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f  error">..    ///
4a10: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
4a20: 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74  he contents of t
4a30: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 61 72  his parameter ar
4a40: 65 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 55 70  e undefined.  Up
4a50: 6f 6e 20 66 61 69 6c 75 72 65 2c 0d 0a 20 20 20  on failure,..   
4a60: 20 2f 2f 2f 20 69 74 20 73 68 6f 75 6c 64 20 63   /// it should c
4a70: 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70  ontain an approp
4a80: 72 69 61 74 65 20 65 72 72 6f 72 20 6d 65 73 73  riate error mess
4a90: 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  age...    /// </
4aa0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
4ab0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
4ac0: 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
4ad0: 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
4ae0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
4af0: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
4b00: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c  nal abstract SQL
4b10: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65 63  iteErrorCode Dec
4b20: 6c 61 72 65 56 69 72 74 75 61 6c 54 61 62 6c 65  lareVirtualTable
4b30: 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f  (SQLiteModule mo
4b40: 64 75 6c 65 2c 20 73 74 72 69 6e 67 20 73 74 72  dule, string str
4b50: 53 71 6c 2c 20 72 65 66 20 73 74 72 69 6e 67 20  Sql, ref string 
4b60: 65 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f  error);....    /
4b70: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4b80: 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20    /// Calls the 
4b90: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f  native SQLite co
4ba0: 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72  re library in or
4bb0: 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20 61  der to declare a
4bc0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
4bd0: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
4be0: 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
4bf0: 61 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20  a call into the 
4c00: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
4c10: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
4c20: 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20  Create" />..    
4c30: 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66  /// or <see cref
4c40: 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
4c50: 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
4c60: 2f 3e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  /> virtual table
4c70: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 2f   methods...    /
4c80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4c90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
4ca0: 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
4cb0: 20 20 2f 2f 2f 20 54 68 65 20 76 69 72 74 75 61    /// The virtua
4cc0: 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 74  l table module t
4cd0: 68 61 74 20 69 73 20 74 6f 20 62 65 20 72 65 73  hat is to be res
4ce0: 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65  ponsible for the
4cf0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
4d00: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
4d10: 20 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64 2e   being declared.
4d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
4d30: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
4d40: 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e  am name="argumen
4d50: 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 2f 2f  tCount">..    //
4d60: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
4d70: 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
4d80: 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
4d90: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f  declared...    /
4da0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4db0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4dc0: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="name">..    //
4dd0: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
4de0: 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
4df0: 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
4e00: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4e10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4e20: 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
4e30: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
4e40: 2c 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f  , the contents o
4e50: 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  f this parameter
4e60: 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 20   are undefined. 
4e70: 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 0d 0a   Upon failure,..
4e80: 20 20 20 20 2f 2f 2f 20 69 74 20 73 68 6f 75 6c      /// it shoul
4e90: 64 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70  d contain an app
4ea0: 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20 6d  ropriate error m
4eb0: 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f  essage...    ///
4ec0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
4ed0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4ee0: 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
4ef0: 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
4f00: 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
4f10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
4f20: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
4f30: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
4f40: 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 46 75  DeclareVirtualFu
4f50: 6e 63 74 69 6f 6e 28 53 51 4c 69 74 65 4d 6f 64  nction(SQLiteMod
4f60: 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 69 6e 74 20  ule module, int 
4f70: 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 73  argumentCount, s
4f80: 74 72 69 6e 67 20 6e 61 6d 65 2c 20 72 65 66 20  tring name, ref 
4f90: 73 74 72 69 6e 67 20 65 72 72 6f 72 29 3b 0d 0a  string error);..
4fa0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
4fb0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4fc0: 20 2f 2f 2f 20 43 68 61 6e 67 65 20 61 20 63 6f   /// Change a co
4fd0: 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
4fe0: 6f 6e 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  on value for the
4ff0: 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
5000: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5010: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5020: 61 6d 65 3d 22 6f 70 74 69 6f 6e 22 3e 0d 0a 20  ame="option">.. 
5030: 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
5040: 61 73 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ase configuratio
5050: 6e 20 6f 70 74 69 6f 6e 20 74 6f 20 63 68 61 6e  n option to chan
5060: 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ge...    /// </p
5070: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5080: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
5090: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
50a0: 20 6e 65 77 20 76 61 6c 75 65 20 66 6f 72 20 74   new value for t
50b0: 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e  he specified con
50c0: 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
50d0: 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  n...    /// </pa
50e0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
50f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
5100: 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
5110: 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
5120: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
5130: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
5140: 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74  l abstract SQLit
5150: 65 45 72 72 6f 72 43 6f 64 65 20 53 65 74 43 6f  eErrorCode SetCo
5160: 6e 66 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f  nfigurationOptio
5170: 6e 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  n(SQLiteConfigDb
5180: 4f 70 73 45 6e 75 6d 20 6f 70 74 69 6f 6e 2c 20  OpsEnum option, 
5190: 6f 62 6a 65 63 74 20 76 61 6c 75 65 29 3b 0d 0a  object value);..
51a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
51b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  >..    /// Enabl
51c0: 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 65  es or disables e
51d0: 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
51e0: 20 62 79 20 53 51 4c 69 74 65 2e 0d 0a 20 20 20   by SQLite...   
51f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5200: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5210: 6e 61 6d 65 3d 22 62 4f 6e 4f 66 66 22 3e 0d 0a  name="bOnOff">..
5220: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 74 6f 20      /// True to 
5230: 65 6e 61 62 6c 65 20 6c 6f 61 64 69 6e 67 20 6f  enable loading o
5240: 66 20 65 78 74 65 6e 73 69 6f 6e 73 2c 20 66 61  f extensions, fa
5250: 6c 73 65 20 74 6f 20 64 69 73 61 62 6c 65 2e 0d  lse to disable..
5260: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
5270: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
5280: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65  abstract void Se
5290: 74 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28 62  tLoadExtension(b
52a0: 6f 6f 6c 20 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20  ool bOnOff);..  
52b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
52c0: 0a 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 73 20 61  .    /// Loads a
52d0: 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
52e0: 6e 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 74  n library from t
52f0: 68 65 20 6e 61 6d 65 64 20 66 69 6c 65 2e 0d 0a  he named file...
5300: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5310: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
5320: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
5330: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
5340: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 79 6e   name of the dyn
5350: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
5360: 79 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  y file containin
5370: 67 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e  g the extension.
5380: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5390: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
53a0: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 4e 61 6d  am name="procNam
53b0: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
53c0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 70   name of the exp
53d0: 6f 72 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 75  orted function u
53e0: 73 65 64 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  sed to initializ
53f0: 65 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e  e the extension.
5400: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 6e 75 6c  ..    /// If nul
5410: 6c 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 22  l, the default "
5420: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f  sqlite3_extensio
5430: 6e 5f 69 6e 69 74 22 20 77 69 6c 6c 20 62 65 20  n_init" will be 
5440: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  used...    /// <
5450: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
5460: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
5470: 6f 69 64 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f  oid LoadExtensio
5480: 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  n(string fileNam
5490: 65 2c 20 73 74 72 69 6e 67 20 70 72 6f 63 4e 61  e, string procNa
54a0: 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  me);..    /// <s
54b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
54c0: 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61   Enables or disa
54d0: 62 6c 65 64 20 65 78 74 65 6e 65 64 20 72 65 73  bled extened res
54e0: 75 6c 74 20 63 6f 64 65 73 20 72 65 74 75 72 6e  ult codes return
54f0: 65 64 20 62 79 20 53 51 4c 69 74 65 0d 0a 20 20  ed by SQLite..  
5500: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5510: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5520: 20 6e 61 6d 65 3d 22 62 4f 6e 4f 66 66 22 3e 74   name="bOnOff">t
5530: 72 75 65 20 74 6f 20 65 6e 61 62 6c 65 20 65 78  rue to enable ex
5540: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
5550: 64 65 73 2c 20 66 61 6c 73 65 20 74 6f 20 64 69  des, false to di
5560: 73 61 62 6c 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  sable.</param>..
5570: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
5580: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
5590: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
55a0: 63 74 20 76 6f 69 64 20 53 65 74 45 78 74 65 6e  ct void SetExten
55b0: 64 65 64 52 65 73 75 6c 74 43 6f 64 65 73 28 62  dedResultCodes(b
55c0: 6f 6f 6c 20 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20  ool bOnOff);..  
55d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
55e0: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
55f0: 20 74 68 65 20 6e 75 6d 65 72 69 63 20 72 65 73   the numeric res
5600: 75 6c 74 20 63 6f 64 65 20 66 6f 72 20 74 68 65  ult code for the
5610: 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 66 61 69   most recent fai
5620: 6c 65 64 20 53 51 4c 69 74 65 20 41 50 49 20 63  led SQLite API c
5630: 61 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 73  all..    /// ass
5640: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
5650: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
5660: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
5670: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
5680: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 73 75  // <returns>Resu
5690: 6c 74 20 63 6f 64 65 3c 2f 72 65 74 75 72 6e 73  lt code</returns
56a0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
56b0: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
56c0: 72 72 6f 72 43 6f 64 65 20 52 65 73 75 6c 74 43  rrorCode ResultC
56d0: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20  ode();..    /// 
56e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
56f0: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 65  // Returns the e
5700: 78 74 65 6e 64 65 64 20 6e 75 6d 65 72 69 63 20  xtended numeric 
5710: 72 65 73 75 6c 74 20 63 6f 64 65 20 66 6f 72 20  result code for 
5720: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
5730: 66 61 69 6c 65 64 20 53 51 4c 69 74 65 20 41 50  failed SQLite AP
5740: 49 20 63 61 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20  I call..    /// 
5750: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
5760: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
5770: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
5780: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5790: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45    /// <returns>E
57a0: 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
57b0: 6f 64 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ode</returns>.. 
57c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
57d0: 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
57e0: 43 6f 64 65 20 45 78 74 65 6e 64 65 64 52 65 73  Code ExtendedRes
57f0: 75 6c 74 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20  ultCode();....  
5800: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5810: 0a 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 6c  .    /// Add a l
5820: 6f 67 20 6d 65 73 73 61 67 65 20 76 69 61 20 74  og message via t
5830: 68 65 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65  he SQLite sqlite
5840: 33 5f 6c 6f 67 20 69 6e 74 65 72 66 61 63 65 2e  3_log interface.
5850: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5860: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
5870: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 45 72 72 43  aram name="iErrC
5880: 6f 64 65 22 3e 45 72 72 6f 72 20 63 6f 64 65 20  ode">Error code 
5890: 74 6f 20 62 65 20 6c 6f 67 67 65 64 20 77 69 74  to be logged wit
58a0: 68 20 74 68 65 20 6d 65 73 73 61 67 65 2e 3c 2f  h the message.</
58b0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
58c0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4d 65  <param name="zMe
58d0: 73 73 61 67 65 22 3e 53 74 72 69 6e 67 20 74 6f  ssage">String to
58e0: 20 62 65 20 6c 6f 67 67 65 64 2e 20 20 55 6e 6c   be logged.  Unl
58f0: 69 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 73  ike the SQLite s
5900: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 0d 0a 20 20  qlite3_log()..  
5910: 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2c    /// interface,
5920: 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20   this should be 
5930: 70 72 65 2d 66 6f 72 6d 61 74 74 65 64 2e 20 20  pre-formatted.  
5940: 43 6f 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74  Consider using t
5950: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 74 72 69  he..    /// Stri
5960: 6e 67 2e 46 6f 72 6d 61 74 28 29 20 66 75 6e 63  ng.Format() func
5970: 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  tion.</param>.. 
5980: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
5990: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
59a0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
59b0: 74 20 76 6f 69 64 20 4c 6f 67 4d 65 73 73 61 67  t void LogMessag
59c0: 65 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e(SQLiteErrorCod
59d0: 65 20 69 45 72 72 43 6f 64 65 2c 20 73 74 72 69  e iErrCode, stri
59e0: 6e 67 20 7a 4d 65 73 73 61 67 65 29 3b 0d 0a 0d  ng zMessage);...
59f0: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
5a00: 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
5a10: 43 4c 55 44 45 5f 53 45 45 0d 0a 20 20 20 20 69  CLUDE_SEE..    i
5a20: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5a30: 20 76 6f 69 64 20 53 65 74 50 61 73 73 77 6f 72   void SetPasswor
5a40: 64 28 62 79 74 65 5b 5d 20 70 61 73 73 77 6f 72  d(byte[] passwor
5a50: 64 42 79 74 65 73 29 3b 0d 0a 20 20 20 20 69 6e  dBytes);..    in
5a60: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5a70: 76 6f 69 64 20 43 68 61 6e 67 65 50 61 73 73 77  void ChangePassw
5a80: 6f 72 64 28 62 79 74 65 5b 5d 20 6e 65 77 50 61  ord(byte[] newPa
5a90: 73 73 77 6f 72 64 42 79 74 65 73 29 3b 0d 0a 23  sswordBytes);..#
5aa0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74  endif....    int
5ab0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
5ac0: 6f 69 64 20 53 65 74 50 72 6f 67 72 65 73 73 48  oid SetProgressH
5ad0: 6f 6f 6b 28 69 6e 74 20 6e 4f 70 73 2c 20 53 51  ook(int nOps, SQ
5ae0: 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c  LiteProgressCall
5af0: 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20  back func);..   
5b00: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5b10: 63 74 20 76 6f 69 64 20 53 65 74 41 75 74 68 6f  ct void SetAutho
5b20: 72 69 7a 65 72 48 6f 6f 6b 28 53 51 4c 69 74 65  rizerHook(SQLite
5b30: 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61  AuthorizerCallba
5b40: 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69  ck func);..    i
5b50: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5b60: 20 76 6f 69 64 20 53 65 74 55 70 64 61 74 65 48   void SetUpdateH
5b70: 6f 6f 6b 28 53 51 4c 69 74 65 55 70 64 61 74 65  ook(SQLiteUpdate
5b80: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d  Callback func);.
5b90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
5ba0: 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 43  stract void SetC
5bb0: 6f 6d 6d 69 74 48 6f 6f 6b 28 53 51 4c 69 74 65  ommitHook(SQLite
5bc0: 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66  CommitCallback f
5bd0: 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  unc);..    inter
5be0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
5bf0: 64 20 53 65 74 54 72 61 63 65 43 61 6c 6c 62 61  d SetTraceCallba
5c00: 63 6b 28 53 51 4c 69 74 65 54 72 61 63 65 43 61  ck(SQLiteTraceCa
5c10: 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20  llback func);.. 
5c20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
5c30: 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 72 61  ract void SetTra
5c40: 63 65 43 61 6c 6c 62 61 63 6b 32 28 53 51 4c 69  ceCallback2(SQLi
5c50: 74 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73  teTraceFlags mas
5c60: 6b 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  k, SQLiteTraceCa
5c70: 6c 6c 62 61 63 6b 32 20 66 75 6e 63 29 3b 0d 0a  llback2 func);..
5c80: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5c90: 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 52 6f  tract void SetRo
5ca0: 6c 6c 62 61 63 6b 48 6f 6f 6b 28 53 51 4c 69 74  llbackHook(SQLit
5cb0: 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63  eRollbackCallbac
5cc0: 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e  k func);..    in
5cd0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5ce0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
5cf0: 53 65 74 4c 6f 67 43 61 6c 6c 62 61 63 6b 28 53  SetLogCallback(S
5d00: 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
5d10: 20 66 75 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 2f   func);....    /
5d20: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5d30: 20 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20    /// Checks if 
5d40: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
5d50: 6c 69 62 72 61 72 79 20 68 61 73 20 62 65 65 6e  library has been
5d60: 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 69 6e 20   initialized in 
5d70: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
5d80: 65 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ess...    /// </
5d90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5da0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
5db0: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
5dc0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
5dd0: 20 6c 69 62 72 61 72 79 20 68 61 73 20 62 65 65   library has bee
5de0: 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 69 6e  n initialized in
5df0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
5e00: 63 65 73 73 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a  cess,..    /// z
5e10: 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
5e20: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
5e30: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
5e40: 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49   abstract bool I
5e50: 73 49 6e 69 74 69 61 6c 69 7a 65 64 28 29 3b 0d  sInitialized();.
5e60: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
5e70: 61 62 73 74 72 61 63 74 20 69 6e 74 20 47 65 74  abstract int Get
5e80: 43 75 72 73 6f 72 46 6f 72 54 61 62 6c 65 28 53  CursorForTable(S
5e90: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
5ea0: 74 6d 74 2c 20 69 6e 74 20 64 61 74 61 62 61 73  tmt, int databas
5eb0: 65 2c 20 69 6e 74 20 72 6f 6f 74 50 61 67 65 29  e, int rootPage)
5ec0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
5ed0: 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65  abstract long Ge
5ee0: 74 52 6f 77 49 64 46 6f 72 43 75 72 73 6f 72 28  tRowIdForCursor(
5ef0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
5f00: 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
5f10: 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e  );....    intern
5f20: 61 6c 20 61 62 73 74 72 61 63 74 20 6f 62 6a 65  al abstract obje
5f30: 63 74 20 47 65 74 56 61 6c 75 65 28 53 51 4c 69  ct GetValue(SQLi
5f40: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
5f50: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
5f60: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
5f70: 6e 74 20 69 6e 64 65 78 2c 20 53 51 4c 69 74 65  nt index, SQLite
5f80: 54 79 70 65 20 74 79 70 29 3b 0d 0a 0d 0a 20 20  Type typ);....  
5f90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5fa0: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
5fb0: 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   non-zero if the
5fc0: 20 67 69 76 65 6e 20 64 61 74 61 62 61 73 65 20   given database 
5fd0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69 6e  connection is in
5fe0: 20 61 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65   autocommit mode
5ff0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 41 75 74 6f 63  ...    /// Autoc
6000: 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73 20 6f 6e  ommit mode is on
6010: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 75   by default.  Au
6020: 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73  tocommit mode is
6030: 20 64 69 73 61 62 6c 65 64 20 62 79 20 61 20 42   disabled by a B
6040: 45 47 49 4e 0d 0a 20 20 20 20 2f 2f 2f 20 73 74  EGIN..    /// st
6050: 61 74 65 6d 65 6e 74 2e 20 20 41 75 74 6f 63 6f  atement.  Autoco
6060: 6d 6d 69 74 20 6d 6f 64 65 20 69 73 20 72 65 2d  mmit mode is re-
6070: 65 6e 61 62 6c 65 64 20 62 79 20 61 20 43 4f 4d  enabled by a COM
6080: 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 2e  MIT or ROLLBACK.
6090: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
60a0: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
60b0: 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  al abstract bool
60c0: 20 41 75 74 6f 43 6f 6d 6d 69 74 0d 0a 20 20 20   AutoCommit..   
60d0: 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
60e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
60f0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53  ernal abstract S
6100: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46  QLiteErrorCode F
6110: 69 6c 65 43 6f 6e 74 72 6f 6c 28 73 74 72 69 6e  ileControl(strin
6120: 67 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f  g zDbName, int o
6130: 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b  p, IntPtr pArg);
6140: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
6150: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
6160: 72 65 61 74 65 73 20 61 20 6e 65 77 20 53 51 4c  reates a new SQL
6170: 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  ite backup objec
6180: 74 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70  t based on the p
6190: 72 6f 76 69 64 65 64 20 64 65 73 74 69 6e 61 74  rovided destinat
61a0: 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74  ion..    /// dat
61b0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
61c0: 2e 20 20 54 68 65 20 73 6f 75 72 63 65 20 64 61  .  The source da
61d0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
61e0: 6e 20 69 73 20 74 68 65 20 6f 6e 65 0d 0a 20 20  n is the one..  
61f0: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
6200: 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
6210: 74 2e 20 20 54 68 65 20 73 6f 75 72 63 65 20 61  t.  The source a
6220: 6e 64 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64  nd destination d
6230: 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
6240: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 63 61 6e   connections can
6250: 6e 6f 74 20 62 65 20 74 68 65 20 73 61 6d 65 2e  not be the same.
6260: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6270: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
6280: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73 74 43  aram name="destC
6290: 6e 6e 22 3e 54 68 65 20 64 65 73 74 69 6e 61 74  nn">The destinat
62a0: 69 6f 6e 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ion database con
62b0: 6e 65 63 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e  nection.</param>
62c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
62d0: 20 6e 61 6d 65 3d 22 64 65 73 74 4e 61 6d 65 22   name="destName"
62e0: 3e 54 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e  >The destination
62f0: 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2e 3c   database name.<
6300: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6310: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
6320: 75 72 63 65 4e 61 6d 65 22 3e 54 68 65 20 73 6f  urceName">The so
6330: 75 72 63 65 20 64 61 74 61 62 61 73 65 20 6e 61  urce database na
6340: 6d 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  me.</param>..   
6350: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
6360: 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20  e newly created 
6370: 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 3c 2f  backup object.</
6380: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
6390: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
63a0: 53 51 4c 69 74 65 42 61 63 6b 75 70 20 49 6e 69  SQLiteBackup Ini
63b0: 74 69 61 6c 69 7a 65 42 61 63 6b 75 70 28 0d 0a  tializeBackup(..
63c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
63d0: 6e 6e 65 63 74 69 6f 6e 20 64 65 73 74 43 6e 6e  nnection destCnn
63e0: 2c 20 73 74 72 69 6e 67 20 64 65 73 74 4e 61 6d  , string destNam
63f0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e,..        stri
6400: 6e 67 20 73 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ng sourceName);.
6410: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
6420: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
6430: 70 69 65 73 20 75 70 20 74 6f 20 4e 20 70 61 67  pies up to N pag
6440: 65 73 20 66 72 6f 6d 20 74 68 65 20 73 6f 75 72  es from the sour
6450: 63 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 74  ce database to t
6460: 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a  he destination..
6470: 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65      /// database
6480: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
6490: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
64a0: 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20  ackup object... 
64b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
64c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
64d0: 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e  m name="backup">
64e0: 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  The backup objec
64f0: 74 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  t to use.</param
6500: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6510: 6d 20 6e 61 6d 65 3d 22 6e 50 61 67 65 22 3e 0d  m name="nPage">.
6520: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d  .    /// The num
6530: 62 65 72 20 6f 66 20 70 61 67 65 73 20 74 6f 20  ber of pages to 
6540: 63 6f 70 79 20 6f 72 20 6e 65 67 61 74 69 76 65  copy or negative
6550: 20 74 6f 20 63 6f 70 79 20 61 6c 6c 20 72 65 6d   to copy all rem
6560: 61 69 6e 69 6e 67 20 70 61 67 65 73 2e 0d 0a 20  aining pages... 
6570: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6580: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6590: 6e 61 6d 65 3d 22 72 65 74 72 79 22 3e 0d 0a 20  name="retry">.. 
65a0: 20 20 20 2f 2f 2f 20 53 65 74 20 74 6f 20 74 72     /// Set to tr
65b0: 75 65 20 69 66 20 74 68 65 20 6f 70 65 72 61 74  ue if the operat
65c0: 69 6f 6e 20 6e 65 65 64 73 20 74 6f 20 62 65 20  ion needs to be 
65d0: 72 65 74 72 69 65 64 20 64 75 65 20 74 6f 20 64  retried due to d
65e0: 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
65f0: 20 6c 6f 63 6b 69 6e 67 20 69 73 73 75 65 73 2e   locking issues.
6600: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
6610: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6620: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
6630: 72 75 65 20 69 66 20 74 68 65 72 65 20 61 72 65  rue if there are
6640: 20 6d 6f 72 65 20 70 61 67 65 73 20 74 6f 20 62   more pages to b
6650: 65 20 63 6f 70 69 65 64 2c 20 66 61 6c 73 65 20  e copied, false 
6660: 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
6670: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
6680: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
6690: 74 72 61 63 74 20 62 6f 6f 6c 20 53 74 65 70 42  tract bool StepB
66a0: 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63 6b  ackup(SQLiteBack
66b0: 75 70 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e  up backup, int n
66c0: 50 61 67 65 2c 20 72 65 66 20 62 6f 6f 6c 20 72  Page, ref bool r
66d0: 65 74 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  etry);....    //
66e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
66f0: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
6700: 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73   number of pages
6710: 20 72 65 6d 61 69 6e 69 6e 67 20 74 6f 20 62 65   remaining to be
6720: 20 63 6f 70 69 65 64 20 66 72 6f 6d 20 74 68 65   copied from the
6730: 20 73 6f 75 72 63 65 0d 0a 20 20 20 20 2f 2f 2f   source..    ///
6740: 20 64 61 74 61 62 61 73 65 20 74 6f 20 74 68 65   database to the
6750: 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74   destination dat
6760: 61 62 61 73 65 20 61 73 73 6f 63 69 61 74 65 64  abase associated
6770: 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
6780: 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 62 61 63  ied..    /// bac
6790: 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  kup object...   
67a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
67b0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
67c0: 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e 54 68  name="backup">Th
67d0: 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 20  e backup object 
67e0: 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72 61 6d  to check.</param
67f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6800: 72 6e 73 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  rns>The number o
6810: 66 20 70 61 67 65 73 20 72 65 6d 61 69 6e 69 6e  f pages remainin
6820: 67 20 74 6f 20 62 65 20 63 6f 70 69 65 64 2e 3c  g to be copied.<
6830: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
6840: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
6850: 20 69 6e 74 20 52 65 6d 61 69 6e 69 6e 67 42 61   int RemainingBa
6860: 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63 6b 75  ckup(SQLiteBacku
6870: 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  p backup);....  
6880: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6890: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
68a0: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
68b0: 72 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68  r of pages in th
68c0: 65 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73  e source databas
68d0: 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
68e0: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 73    /// with the s
68f0: 70 65 63 69 66 69 65 64 20 62 61 63 6b 75 70 20  pecified backup 
6900: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
6910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6920: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6930: 3d 22 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61  ="backup">The ba
6940: 63 6b 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 63  ckup object to c
6950: 68 65 63 6b 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  heck.</param>.. 
6960: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6970: 54 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  The total number
6980: 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68 65   of pages in the
6990: 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73 65   source database
69a0: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
69b0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
69c0: 63 74 20 69 6e 74 20 50 61 67 65 43 6f 75 6e 74  ct int PageCount
69d0: 42 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63  Backup(SQLiteBac
69e0: 6b 75 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  kup backup);....
69f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6a00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 73 74 72  >..    /// Destr
6a10: 6f 79 73 20 74 68 65 20 62 61 63 6b 75 70 20 6f  oys the backup o
6a20: 62 6a 65 63 74 2c 20 72 6f 6c 6c 69 6e 67 20 62  bject, rolling b
6a30: 61 63 6b 20 61 6e 79 20 62 61 63 6b 75 70 20 74  ack any backup t
6a40: 68 61 74 20 6d 61 79 20 62 65 20 69 6e 0d 0a 20  hat may be in.. 
6a50: 20 20 20 2f 2f 2f 20 70 72 6f 67 65 73 73 2e 0d     /// progess..
6a60: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
6a70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
6a80: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70  ram name="backup
6a90: 22 3e 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a  ">The backup obj
6aa0: 65 63 74 20 74 6f 20 64 65 73 74 72 6f 79 2e 3c  ect to destroy.<
6ab0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
6ac0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
6ad0: 6f 69 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70  oid FinishBackup
6ae0: 28 53 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61  (SQLiteBackup ba
6af0: 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  ckup);....    //
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6b60: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69  .    #region IDi
6b70: 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73  sposable Members
6b80: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
6b90: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
6ba0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 69 73 70   {..        Disp
6bb0: 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
6bc0: 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
6bd0: 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
6be0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6bf0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
6c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6c60: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
6c70: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
6c80: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70  " Members..    p
6c90: 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
6ca0: 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 69 76 61  osed;..    priva
6cb0: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
6cc0: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
6cd0: 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20   */..    {..#if 
6ce0: 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
6cf0: 44 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  D..        if (d
6d00: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
6d10: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
6d20: 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
6d30: 63 65 70 74 69 6f 6e 28 74 79 70 65 6f 66 28 53  ception(typeof(S
6d40: 51 4c 69 74 65 42 61 73 65 29 2e 4e 61 6d 65 29  QLiteBase).Name)
6d50: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  ;..#endif..    }
6d60: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6dc0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70  ///////....    p
6dd0: 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
6de0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
6df0: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
6e00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
6e10: 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
6e20: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6e30: 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
6e40: 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
6e50: 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20     //{..        
6e60: 20 20 20 20 2f 2f 20 20 20 20 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 0d 0a  //////////////..
6e90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6ea0: 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
6eb0: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
6ec0: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
6ed0: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
6ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6f00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d              //}.
6f10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
6f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f40: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
6f50: 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
6f60: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
6f70: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
6f80: 20 20 20 20 20 20 20 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 0d 0a 0d  /////////////...
6fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73  .            dis
6fc0: 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
6fd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
6fe0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
6ff0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
7000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7050: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
7060: 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
7070: 0d 0a 20 20 20 20 7e 53 51 4c 69 74 65 42 61 73  ..    ~SQLiteBas
7080: 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
7090: 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
70a0: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  e);..    }..    
70b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
70c0: 20 20 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  /....    // Thes
7130: 65 20 73 74 61 74 69 63 73 20 61 72 65 20 68 65  e statics are he
7140: 72 65 20 66 6f 72 20 6c 61 63 6b 20 6f 66 20 61  re for lack of a
7150: 20 62 65 74 74 65 72 20 70 6c 61 63 65 20 74 6f   better place to
7160: 20 70 75 74 20 74 68 65 6d 2e 0d 0a 20 20 20 20   put them...    
7170: 2f 2f 20 54 68 65 79 20 65 78 69 73 74 20 68 65  // They exist he
7180: 72 65 20 62 65 63 61 75 73 65 20 74 68 65 79 20  re because they 
7190: 61 72 65 20 63 61 6c 6c 65 64 20 64 75 72 69 6e  are called durin
71a0: 67 20 74 68 65 20 66 69 6e 61 6c 69 7a 61 74 69  g the finalizati
71b0: 6f 6e 20 6f 66 0d 0a 20 20 20 20 2f 2f 20 61 20  on of..    // a 
71c0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
71d0: 61 6e 64 6c 65 2c 20 53 51 4c 69 74 65 43 6f 6e  andle, SQLiteCon
71e0: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 2c 20 61  nectionHandle, a
71f0: 6e 64 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  nd SQLiteFunctio
7200: 6e 43 6f 6f 6b 69 65 48 61 6e 64 6c 65 2e 0d 0a  nCookieHandle...
7210: 20 20 20 20 2f 2f 20 54 68 65 72 65 66 6f 72 65      // Therefore
7220: 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   these functions
7230: 20 68 61 76 65 20 74 6f 20 62 65 20 73 74 61 74   have to be stat
7240: 69 63 2c 20 61 6e 64 20 68 61 76 65 20 74 6f 20  ic, and have to 
7250: 62 65 20 6c 6f 77 2d 6c 65 76 65 6c 2e 0d 0a 0d  be low-level....
7260: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72c0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 72 69 76  ////....    priv
72d0: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
72e0: 67 5b 5d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67  g[] _errorMessag
72f0: 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
7300: 2f 2a 20 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20  /* SQLITE_OK    
7310: 20 20 20 20 20 20 2a 2f 20 22 6e 6f 74 20 61 6e        */ "not an
7320: 20 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20   error",..      
7330: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 45 52 52 4f    /* SQLITE_ERRO
7340: 52 20 20 20 20 20 20 20 2a 2f 20 22 53 51 4c 20  R       */ "SQL 
7350: 6c 6f 67 69 63 20 65 72 72 6f 72 22 2c 0d 0a 20  logic error",.. 
7360: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7370: 5f 49 4e 54 45 52 4e 41 4c 20 20 20 20 2a 2f 20  _INTERNAL    */ 
7380: 22 69 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20  "internal logic 
7390: 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20  error",..       
73a0: 20 2f 2a 20 53 51 4c 49 54 45 5f 50 45 52 4d 20   /* SQLITE_PERM 
73b0: 20 20 20 20 20 20 20 2a 2f 20 22 61 63 63 65 73         */ "acces
73c0: 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e  s permission den
73d0: 69 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  ied",..        /
73e0: 2a 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20  * SQLITE_ABORT  
73f0: 20 20 20 20 20 2a 2f 20 22 71 75 65 72 79 20 61       */ "query a
7400: 62 6f 72 74 65 64 22 2c 0d 0a 20 20 20 20 20 20  borted",..      
7410: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 42 55 53 59    /* SQLITE_BUSY
7420: 20 20 20 20 20 20 20 20 2a 2f 20 22 64 61 74 61          */ "data
7430: 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c  base is locked",
7440: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7450: 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20  ITE_LOCKED      
7460: 2a 2f 20 22 64 61 74 61 62 61 73 65 20 74 61 62  */ "database tab
7470: 6c 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a  le is locked",..
7480: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
7490: 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 2a 2f  E_NOMEM       */
74a0: 20 22 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22   "out of memory"
74b0: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
74c0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20  LITE_READONLY   
74d0: 20 2a 2f 20 22 61 74 74 65 6d 70 74 20 74 6f 20   */ "attempt to 
74e0: 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79  write a readonly
74f0: 20 64 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20   database",..   
7500: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49       /* SQLITE_I
7510: 4e 54 45 52 52 55 50 54 20 20 20 2a 2f 20 22 69  NTERRUPT   */ "i
7520: 6e 74 65 72 72 75 70 74 65 64 22 2c 0d 0a 20 20  nterrupted",..  
7530: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
7540: 49 4f 45 52 52 20 20 20 20 20 20 20 2a 2f 20 22  IOERR       */ "
7550: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 22 2c  disk I/O error",
7560: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7570: 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20  ITE_CORRUPT     
7580: 2a 2f 20 22 64 61 74 61 62 61 73 65 20 64 69 73  */ "database dis
7590: 6b 20 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f  k image is malfo
75a0: 72 6d 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20  rmed",..        
75b0: 2f 2a 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  /* SQLITE_NOTFOU
75c0: 4e 44 20 20 20 20 2a 2f 20 22 75 6e 6b 6e 6f 77  ND    */ "unknow
75d0: 6e 20 6f 70 65 72 61 74 69 6f 6e 22 2c 0d 0a 20  n operation",.. 
75e0: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
75f0: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 2a 2f 20  _FULL        */ 
7600: 22 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73  "database or dis
7610: 6b 20 69 73 20 66 75 6c 6c 22 2c 0d 0a 20 20 20  k is full",..   
7620: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43       /* SQLITE_C
7630: 41 4e 54 4f 50 45 4e 20 20 20 20 2a 2f 20 22 75  ANTOPEN    */ "u
7640: 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61  nable to open da
7650: 74 61 62 61 73 65 20 66 69 6c 65 22 2c 0d 0a 20  tabase file",.. 
7660: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7670: 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 2a 2f 20  _PROTOCOL    */ 
7680: 22 6c 6f 63 6b 69 6e 67 20 70 72 6f 74 6f 63 6f  "locking protoco
7690: 6c 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  l",..        /* 
76a0: 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20  SQLITE_EMPTY    
76b0: 20 20 20 2a 2f 20 22 74 61 62 6c 65 20 63 6f 6e     */ "table con
76c0: 74 61 69 6e 73 20 6e 6f 20 64 61 74 61 22 2c 0d  tains no data",.
76d0: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
76e0: 54 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 2a  TE_SCHEMA      *
76f0: 2f 20 22 64 61 74 61 62 61 73 65 20 73 63 68 65  / "database sche
7700: 6d 61 20 68 61 73 20 63 68 61 6e 67 65 64 22 2c  ma has changed",
7710: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7720: 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20 20  ITE_TOOBIG      
7730: 2a 2f 20 22 73 74 72 69 6e 67 20 6f 72 20 62 6c  */ "string or bl
7740: 6f 62 20 74 6f 6f 20 62 69 67 22 2c 0d 0a 20 20  ob too big",..  
7750: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
7760: 43 4f 4e 53 54 52 41 49 4e 54 20 20 2a 2f 20 22  CONSTRAINT  */ "
7770: 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65  constraint faile
7780: 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  d",..        /* 
7790: 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20  SQLITE_MISMATCH 
77a0: 20 20 20 2a 2f 20 22 64 61 74 61 74 79 70 65 20     */ "datatype 
77b0: 6d 69 73 6d 61 74 63 68 22 2c 0d 0a 20 20 20 20  mismatch",..    
77c0: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4d 49      /* SQLITE_MI
77d0: 53 55 53 45 20 20 20 20 20 20 2a 2f 20 22 62 61  SUSE      */ "ba
77e0: 64 20 70 61 72 61 6d 65 74 65 72 20 6f 72 20 6f  d parameter or o
77f0: 74 68 65 72 20 41 50 49 20 6d 69 73 75 73 65 22  ther API misuse"
7800: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7810: 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20  LITE_NOLFS      
7820: 20 2a 2f 20 22 6c 61 72 67 65 20 66 69 6c 65 20   */ "large file 
7830: 73 75 70 70 6f 72 74 20 69 73 20 64 69 73 61 62  support is disab
7840: 6c 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  led",..        /
7850: 2a 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20  * SQLITE_AUTH   
7860: 20 20 20 20 20 2a 2f 20 22 61 75 74 68 6f 72 69       */ "authori
7870: 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 22 2c 0d  zation denied",.
7880: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7890: 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20 2a  TE_FORMAT      *
78a0: 2f 20 22 61 75 78 69 6c 69 61 72 79 20 64 61 74  / "auxiliary dat
78b0: 61 62 61 73 65 20 66 6f 72 6d 61 74 20 65 72 72  abase format err
78c0: 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a  or",..        /*
78d0: 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20   SQLITE_RANGE   
78e0: 20 20 20 20 2a 2f 20 22 63 6f 6c 75 6d 6e 20 69      */ "column i
78f0: 6e 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67  ndex out of rang
7900: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  e",..        /* 
7910: 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20  SQLITE_NOTADB   
7920: 20 20 20 2a 2f 20 22 66 69 6c 65 20 69 73 20 6e     */ "file is n
7930: 6f 74 20 61 20 64 61 74 61 62 61 73 65 22 2c 0d  ot a database",.
7940: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7950: 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 2a  TE_NOTICE      *
7960: 2f 20 22 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20  / "notification 
7970: 6d 65 73 73 61 67 65 22 2c 0d 0a 20 20 20 20 20  message",..     
7980: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 57 41 52     /* SQLITE_WAR
7990: 4e 49 4e 47 20 20 20 20 20 2a 2f 20 22 77 61 72  NING     */ "war
79a0: 6e 69 6e 67 20 6d 65 73 73 61 67 65 22 0d 0a 20  ning message".. 
79b0: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7a20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7a30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
7a40: 6e 73 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ns the error mes
7a50: 73 61 67 65 20 66 6f 72 20 74 68 65 20 73 70 65  sage for the spe
7a60: 63 69 66 69 65 64 20 53 51 4c 69 74 65 20 72 65  cified SQLite re
7a70: 74 75 72 6e 20 63 6f 64 65 20 75 73 69 6e 67 0d  turn code using.
7a80: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 74  .    /// the int
7a90: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6c 6f 6f  ernal static loo
7aa0: 6b 75 70 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  kup table...    
7ab0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7ac0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7ad0: 61 6d 65 3d 22 72 63 22 3e 54 68 65 20 53 51 4c  ame="rc">The SQL
7ae0: 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
7af0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
7b00: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 65  / <returns>The e
7b10: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6f 72 20  rror message or 
7b20: 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
7b30: 74 20 62 65 20 66 6f 75 6e 64 2e 3c 2f 72 65 74  t be found.</ret
7b40: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 6f 74 65  urns>..    prote
7b50: 63 74 65 64 20 73 74 61 74 69 63 20 73 74 72 69  cted static stri
7b60: 6e 67 20 46 61 6c 6c 62 61 63 6b 47 65 74 45 72  ng FallbackGetEr
7b70: 72 6f 72 53 74 72 69 6e 67 28 53 51 4c 69 74 65  rorString(SQLite
7b80: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 0d 0a 20  ErrorCode rc).. 
7b90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77     {..        sw
7ba0: 69 74 63 68 20 28 72 63 29 0d 0a 20 20 20 20 20  itch (rc)..     
7bb0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7bc0: 20 20 63 61 73 65 20 53 51 4c 69 74 65 45 72 72    case SQLiteErr
7bd0: 6f 72 43 6f 64 65 2e 41 62 6f 72 74 5f 52 6f 6c  orCode.Abort_Rol
7be0: 6c 62 61 63 6b 3a 0d 0a 20 20 20 20 20 20 20 20  lback:..        
7bf0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
7c00: 61 62 6f 72 74 20 64 75 65 20 74 6f 20 52 4f 4c  abort due to ROL
7c10: 4c 42 41 43 4b 22 3b 0d 0a 20 20 20 20 20 20 20  LBACK";..       
7c20: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
7c30: 45 72 72 6f 72 43 6f 64 65 2e 52 6f 77 3a 0d 0a  ErrorCode.Row:..
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 72 65 74 75 72 6e 20 22 61 6e 6f 74 68 65 72 20  return "another 
7c60: 72 6f 77 20 61 76 61 69 6c 61 62 6c 65 22 3b 0d  row available";.
7c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7c80: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
7c90: 65 2e 44 6f 6e 65 3a 0d 0a 20 20 20 20 20 20 20  e.Done:..       
7ca0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7cb0: 22 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61 76  "no more rows av
7cc0: 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20 20  ailable";..     
7cd0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7ce0: 69 66 20 28 5f 65 72 72 6f 72 4d 65 73 73 61 67  if (_errorMessag
7cf0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
7d00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7d10: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
7d20: 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 28 69 6e   int index = (in
7d30: 74 29 28 72 63 20 26 20 53 51 4c 69 74 65 45 72  t)(rc & SQLiteEr
7d40: 72 6f 72 43 6f 64 65 2e 4e 6f 6e 45 78 74 65 6e  rorCode.NonExten
7d50: 64 65 64 4d 61 73 6b 29 3b 0d 0a 0d 0a 20 20 20  dedMask);....   
7d60: 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
7d70: 3c 20 30 29 20 7c 7c 20 28 69 6e 64 65 78 20 3e  < 0) || (index >
7d80: 3d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67 65 73  = _errorMessages
7d90: 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
7da0: 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20 28         index = (
7db0: 69 6e 74 29 53 51 4c 69 74 65 45 72 72 6f 72 43  int)SQLiteErrorC
7dc0: 6f 64 65 2e 45 72 72 6f 72 3b 20 2f 2a 20 4d 61  ode.Error; /* Ma
7dd0: 6b 65 20 69 6e 74 6f 20 67 65 6e 65 72 69 63 20  ke into generic 
7de0: 65 72 72 6f 72 2e 20 2a 2f 0d 0a 0d 0a 20 20 20  error. */....   
7df0: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 65 72 72       return _err
7e00: 6f 72 4d 65 73 73 61 67 65 73 5b 69 6e 64 65 78  orMessages[index
7e10: 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ];..    }....   
7e20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
7e30: 20 73 74 72 69 6e 67 20 47 65 74 4c 61 73 74 45   string GetLastE
7e40: 72 72 6f 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65  rror(SQLiteConne
7e50: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
7e60: 20 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20 20   IntPtr db)..   
7e70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
7e80: 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  (hdl == null) ||
7e90: 20 28 64 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a   (db == IntPtr.Z
7ea0: 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
7eb0: 20 20 20 72 65 74 75 72 6e 20 22 6e 75 6c 6c 20     return "null 
7ec0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 72 20 64 61  connection or da
7ed0: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 22 3b 0d  tabase handle";.
7ee0: 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ...        strin
7ef0: 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c 3b  g result = null;
7f00: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
7f10: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
7f20: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
7f30: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
7f40: 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c  }..        final
7f50: 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65  ly /* NOTE: Thre
7f60: 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65  ad.Abort() prote
7f70: 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20  ction. */..     
7f80: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
7f90: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
7fa0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
7fb0: 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52   lock (hdl.syncR
7fc0: 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  oot)..#else..   
7fd0: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
7fe0: 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dl)..#endif..   
7ff0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8000: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8010: 21 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26  !hdl.IsInvalid &
8020: 26 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29  & !hdl.IsClosed)
8030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8040: 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45    {..#if !SQLITE
8050: 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8070: 6e 74 20 6c 65 6e 20 3d 20 30 3b 0d 0a 20 20 20  nt len = 0;..   
8080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8090: 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38 54 6f   result = UTF8To
80a0: 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e 61 74  String(UnsafeNat
80b0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
80c0: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
80d0: 70 28 64 62 2c 20 72 65 66 20 6c 65 6e 29 2c 20  p(db, ref len), 
80e0: 6c 65 6e 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  len);..#else..  
80f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8100: 20 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38 54    result = UTF8T
8110: 6f 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e 61  oString(UnsafeNa
8120: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
8130: 74 65 33 5f 65 72 72 6d 73 67 28 64 62 29 2c 20  te3_errmsg(db), 
8140: 2d 31 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  -1);..#endif..  
8150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8170: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
8180: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
81a0: 73 75 6c 74 20 3d 20 22 63 6c 6f 73 65 64 20 6f  sult = "closed o
81b0: 72 20 69 6e 76 61 6c 69 64 20 63 6f 6e 6e 65 63  r invalid connec
81c0: 74 69 6f 6e 20 68 61 6e 64 6c 65 22 3b 0d 0a 20  tion handle";.. 
81d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
81e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
81f0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8200: 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65      GC.KeepAlive
8210: 28 68 64 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  (hdl);..        
8220: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
8230: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
8240: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
8250: 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70 28 53  d FinishBackup(S
8260: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
8270: 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
8280: 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 7b  r backup)..    {
8290: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68  ..        if ((h
82a0: 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  dl == null) || (
82b0: 62 61 63 6b 75 70 20 3d 3d 20 49 6e 74 50 74 72  backup == IntPtr
82c0: 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d  .Zero)) return;.
82d0: 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
82e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
82f0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
8300: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
8310: 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
8320: 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61  y /* NOTE: Threa
8330: 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63  d.Abort() protec
8340: 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  tion. */..      
8350: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
8360: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
8370: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
8380: 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f  lock (hdl.syncRo
8390: 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ot)..#else..    
83a0: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
83b0: 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  l)..#endif..    
83c0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
83d0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
83e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
83f0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
8400: 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76   n = UnsafeNativ
8410: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
8420: 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69  _backup_finish_i
8430: 6e 74 65 72 6f 70 28 62 61 63 6b 75 70 29 3b 0d  nterop(backup);.
8440: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
8450: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
8460: 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61  rorCode n = Unsa
8470: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
8480: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
8490: 69 6e 69 73 68 28 62 61 63 6b 75 70 29 3b 0d 0a  inish(backup);..
84a0: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
84b0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 21 3d          if (n !=
84c0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
84d0: 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77 20 53  .Ok) throw new S
84e0: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e  QLiteException(n
84f0: 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
8500: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8510: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
8520: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8530: 20 76 6f 69 64 20 43 6c 6f 73 65 42 6c 6f 62 28   void CloseBlob(
8540: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
8550: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
8560: 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 7b 0d  tr blob)..    {.
8570: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64  .        if ((hd
8580: 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 62  l == null) || (b
8590: 6c 6f 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lob == IntPtr.Ze
85a0: 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a  ro)) return;....
85b0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
85c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
85d0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
85e0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
85f0: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f         finally /
8600: 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41  * NOTE: Thread.A
8610: 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f  bort() protectio
8620: 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  n. */..        {
8630: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
8640: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
8660: 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29  k (hdl.syncRoot)
8670: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8680: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d       lock (hdl).
8690: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
86a0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c       {..#if !SQL
86b0: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
86d0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20  LiteErrorCode n 
86e0: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
86f0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 62 6c  thods.sqlite3_bl
8700: 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
8710: 28 62 6c 6f 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a  (blob);..#else..
8720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8730: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8740: 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  n = UnsafeNative
8750: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
8760: 62 6c 6f 62 5f 63 6c 6f 73 65 28 62 6c 6f 62 29  blob_close(blob)
8770: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
8780: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
8790: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
87a0: 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65  ode.Ok) throw ne
87b0: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
87c0: 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20  n(n, null);..   
87d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
87e0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
87f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8800: 74 69 63 20 76 6f 69 64 20 46 69 6e 61 6c 69 7a  tic void Finaliz
8810: 65 53 74 61 74 65 6d 65 6e 74 28 53 51 4c 69 74  eStatement(SQLit
8820: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
8830: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 73 74  e hdl, IntPtr st
8840: 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  mt)..    {..    
8850: 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20      if ((hdl == 
8860: 6e 75 6c 6c 29 20 7c 7c 20 28 73 74 6d 74 20 3d  null) || (stmt =
8870: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
8880: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
8890: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
88a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
88b0: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
88c0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
88d0: 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54    finally /* NOT
88e0: 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28  E: Thread.Abort(
88f0: 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f  ) protection. */
8900: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
8910: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
8920: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8930: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
8940: 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c  l.syncRoot)..#el
8950: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
8960: 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64  lock (hdl)..#end
8970: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
8980: 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  {..#if !SQLITE_S
8990: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
89a0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
89b0: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
89c0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
89d0: 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  .sqlite3_finaliz
89e0: 65 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29 3b  e_interop(stmt);
89f0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8a00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
8a10: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
8a20: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8a30: 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  .sqlite3_finaliz
8a40: 65 28 73 74 6d 74 29 3b 0d 0a 23 65 6e 64 69 66  e(stmt);..#endif
8a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a60: 20 20 69 66 20 28 6e 20 21 3d 20 53 51 4c 69 74    if (n != SQLit
8a70: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74  eErrorCode.Ok) t
8a80: 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45  hrow new SQLiteE
8a90: 78 63 65 70 74 69 6f 6e 28 6e 2c 20 6e 75 6c 6c  xception(n, null
8aa0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
8ab0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
8ac0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72    }....    inter
8ad0: 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20  nal static void 
8ae0: 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
8af0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
8b00: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
8b10: 74 72 20 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20  tr db)..    {.. 
8b20: 20 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20         if ((hdl 
8b30: 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20  == null) || (db 
8b40: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  == IntPtr.Zero))
8b50: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
8b60: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
8b70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8b80: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8ba0: 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f     finally /* NO
8bb0: 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74  TE: Thread.Abort
8bc0: 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a  () protection. *
8bd0: 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  /..        {..#i
8be0: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
8bf0: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8c00: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8c10: 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  dl.syncRoot)..#e
8c20: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
8c30: 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e   lock (hdl)..#en
8c40: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
8c50: 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f   {..#if !SQLITE_
8c60: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
8c70: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
8c80: 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e  ErrorCode n = Un
8c90: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
8ca0: 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  s.sqlite3_close_
8cb0: 69 6e 74 65 72 6f 70 28 64 62 29 3b 0d 0a 23 65  interop(db);..#e
8cc0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
8cd0: 20 20 20 20 20 52 65 73 65 74 43 6f 6e 6e 65 63       ResetConnec
8ce0: 74 69 6f 6e 28 68 64 6c 2c 20 64 62 2c 20 66 61  tion(hdl, db, fa
8cf0: 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lse);....       
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 63 6c 6f 73 65 28 64  .sqlite3_close(d
8d40: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  b);..#endif..   
8d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8d60: 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  (n != SQLiteErro
8d70: 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20  rCode.Ok) throw 
8d80: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
8d90: 69 6f 6e 28 6e 2c 20 47 65 74 4c 61 73 74 45 72  ion(n, GetLastEr
8da0: 72 6f 72 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a  ror(hdl, db));..
8db0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8dc0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
8dd0: 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f  ...#if !INTEROP_
8de0: 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 20 20  LEGACY_CLOSE..  
8df0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
8e00: 63 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e  c void CloseConn
8e10: 65 63 74 69 6f 6e 56 32 28 53 51 4c 69 74 65 43  ectionV2(SQLiteC
8e20: 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
8e30: 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 0d  hdl, IntPtr db).
8e40: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
8e50: 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c  if ((hdl == null
8e60: 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e 74 50  ) || (db == IntP
8e70: 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e  tr.Zero)) return
8e80: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
8e90: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
8ea0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
8eb0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
8ec0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61   }..        fina
8ed0: 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72  lly /* NOTE: Thr
8ee0: 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74  ead.Abort() prot
8ef0: 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20  ection. */..    
8f00: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
8f10: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8f20: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
8f30: 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63    lock (hdl.sync
8f40: 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  Root)..#else..  
8f50: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
8f60: 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  hdl)..#endif..  
8f70: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
8f80: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
8f90: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
8fa0: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
8fb0: 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74  de n = UnsafeNat
8fc0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
8fd0: 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
8fe0: 28 64 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  (db);..#else..  
8ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
9000: 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28 68 64  setConnection(hd
9010: 6c 2c 20 64 62 2c 20 66 61 6c 73 65 29 3b 0d 0a  l, db, false);..
9020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9030: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
9040: 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  e n = UnsafeNati
9050: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
9060: 33 5f 63 6c 6f 73 65 5f 76 32 28 64 62 29 3b 0d  3_close_v2(db);.
9070: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
9080: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 21           if (n !
9090: 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
90a0: 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77 20  e.Ok) throw new 
90b0: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
90c0: 6e 2c 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28  n, GetLastError(
90d0: 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20  hdl, db));..    
90e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
90f0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e     }..    }..#en
9100: 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  dif....    inter
9110: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
9120: 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28  ResetConnection(
9130: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
9140: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
9150: 74 72 20 64 62 2c 20 62 6f 6f 6c 20 63 61 6e 54  tr db, bool canT
9160: 68 72 6f 77 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  hrow)..    {..  
9170: 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d        if ((hdl =
9180: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d  = null) || (db =
9190: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
91a0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
91b0: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65  .        bool re
91c0: 73 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  sult = false;...
91d0: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
91e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
91f0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
9200: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
9210: 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20          finally 
9220: 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e  /* NOTE: Thread.
9230: 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69  Abort() protecti
9240: 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  on. */..        
9250: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
9260: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9270: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
9280: 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74  ck (hdl.syncRoot
9290: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
92a0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29        lock (hdl)
92b0: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
92c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
92d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61 6e           if (can
92e0: 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49 73 49  Throw && hdl.IsI
92f0: 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20  nvalid)..       
9300: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
9310: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
9320: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
9330: 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  ("The connection
9340: 20 68 61 6e 64 6c 65 20 69 73 20 69 6e 76 61 6c   handle is inval
9350: 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  id.");....      
9360: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
9370: 6e 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49 73  nThrow && hdl.Is
9380: 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  Closed)..       
9390: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
93a0: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
93b0: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
93c0: 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  ("The connection
93d0: 20 68 61 6e 64 6c 65 20 69 73 20 63 6c 6f 73 65   handle is close
93e0: 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  d.");....       
93f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 68 64           if (!hd
9400: 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26 26 20 21  l.IsInvalid && !
9410: 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20  hdl.IsClosed).. 
9420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9440: 20 20 20 20 20 20 49 6e 74 50 74 72 20 73 74 6d        IntPtr stm
9450: 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
9460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9470: 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
9480: 72 43 6f 64 65 20 6e 3b 0d 0a 0d 0a 20 20 20 20  rCode n;....    
9490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94a0: 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  do..            
94b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
94c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94d0: 20 20 20 73 74 6d 74 20 3d 20 55 6e 73 61 66 65     stmt = Unsafe
94e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
94f0: 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28  lite3_next_stmt(
9500: 64 62 2c 20 73 74 6d 74 29 3b 0d 0a 20 20 20 20  db, stmt);..    
9510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9520: 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
9530: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
9540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9550: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51        {..#if !SQ
9560: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
9570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9580: 20 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 55             n = U
9590: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
95a0: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 65 74  ds.sqlite3_reset
95b0: 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29 3b 0d  _interop(stmt);.
95c0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95e0: 20 20 20 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61      n = UnsafeNa
95f0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
9600: 74 65 33 5f 72 65 73 65 74 28 73 74 6d 74 29 3b  te3_reset(stmt);
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 20 20 20 20 20 20 20 20 20 20                  
9630: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9640: 20 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65           } while
9650: 20 28 73 74 6d 74 20 21 3d 20 49 6e 74 50 74 72   (stmt != IntPtr
9660: 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9680: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
9690: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
96a0: 49 73 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  Is a transaction
96b0: 20 4e 4f 54 20 70 65 6e 64 69 6e 67 20 6f 6e 20   NOT pending on 
96c0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3f 0d  the connection?.
96d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
96e0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9700: 28 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28 68 64  (IsAutocommit(hd
9710: 6c 2c 20 64 62 29 29 0d 0a 20 20 20 20 20 20 20  l, db))..       
9720: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9740: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
9750: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
9760: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9780: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97b0: 20 20 20 20 20 20 20 20 6e 20 3d 20 55 6e 73 61          n = Unsa
97c0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
97d0: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0d 0a 20  sqlite3_exec(.. 
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97f0: 20 20 20 20 20 20 20 20 20 20 20 64 62 2c 20 54             db, T
9800: 6f 55 54 46 38 28 22 52 4f 4c 4c 42 41 43 4b 22  oUTF8("ROLLBACK"
9810: 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  ), IntPtr.Zero, 
9820: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
9830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9840: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
9850: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mt);....        
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9870: 69 66 20 28 6e 20 3d 3d 20 53 51 4c 69 74 65 45  if (n == SQLiteE
9880: 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
9890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
98b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98c0: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 74 72       result = tr
98d0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
98e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
98f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9900: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
9910: 28 63 61 6e 54 68 72 6f 77 29 0d 0a 20 20 20 20  (canThrow)..    
9920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9930: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9950: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c     throw new SQL
9960: 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e 2c 20  iteException(n, 
9970: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 68 64 6c  GetLastError(hdl
9980: 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20 20 20 20  , db));..       
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
99b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
99c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
99d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
99e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
99f0: 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68 64 6c  GC.KeepAlive(hdl
9a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  );..        retu
9a10: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
9a20: 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  }....    interna
9a30: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
9a40: 41 75 74 6f 63 6f 6d 6d 69 74 28 53 51 4c 69 74  Autocommit(SQLit
9a50: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
9a60: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
9a70: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
9a80: 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75    if ((hdl == nu
9a90: 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e  ll) || (db == In
9aa0: 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75  tPtr.Zero)) retu
9ab0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
9ac0: 20 20 20 20 20 62 6f 6f 6c 20 72 65 73 75 6c 74       bool result
9ad0: 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20   = false;....   
9ae0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
9af0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9b00: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
9b10: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9b20: 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e      finally /* N
9b30: 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72  OTE: Thread.Abor
9b40: 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20  t() protection. 
9b50: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  */..        {..#
9b60: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
9b70: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9b80: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
9b90: 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  hdl.syncRoot)..#
9ba0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
9bb0: 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65    lock (hdl)..#e
9bc0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9bd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9be0: 20 20 20 20 20 69 66 20 28 21 68 64 6c 2e 49 73       if (!hdl.Is
9bf0: 49 6e 76 61 6c 69 64 20 26 26 20 21 68 64 6c 2e  Invalid && !hdl.
9c00: 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
9c20: 65 73 75 6c 74 20 3d 20 28 55 6e 73 61 66 65 4e  esult = (UnsafeN
9c30: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9c40: 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d  ite3_get_autocom
9c50: 6d 69 74 28 64 62 29 20 3d 3d 20 31 29 3b 0d 0a  mit(db) == 1);..
9c60: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9c70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9c80: 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68    GC.KeepAlive(h
9c90: 64 6c 29 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 6e  dl); /* NOTE: Un
9ca0: 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 2e 20  reachable code. 
9cb0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  */..        retu
9cc0: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
9cd0: 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  }..  }....  /// 
9ce0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
9cf0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
9d00: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 69 6e 74  y>..  public int
9d10: 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 53 63  erface ISQLiteSc
9d20: 68 65 6d 61 45 78 74 65 6e 73 69 6f 6e 73 0d 0a  hemaExtensions..
9d30: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
9d40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9d50: 2f 2f 2f 20 43 72 65 61 74 65 73 20 74 65 6d 70  /// Creates temp
9d60: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 6f 6e 20  orary tables on 
9d70: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  the connection s
9d80: 6f 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61  o schema informa
9d90: 74 69 6f 6e 20 63 61 6e 20 62 65 20 71 75 65 72  tion can be quer
9da0: 69 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ied...      /// 
9db0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9dc0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9dd0: 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d  e="connection">.
9de0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
9df0: 6f 6e 6e 65 63 74 69 6f 6e 20 75 70 6f 6e 20 77  onnection upon w
9e00: 68 69 63 68 20 74 6f 20 62 75 69 6c 64 20 74 68  hich to build th
9e10: 65 20 73 63 68 65 6d 61 20 74 61 62 6c 65 73 2e  e schema tables.
9e20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
9e30: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 76 6f 69 64  ram>..      void
9e40: 20 42 75 69 6c 64 54 65 6d 70 53 63 68 65 6d 61   BuildTempSchema
9e50: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
9e60: 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a  n connection);..
9e70: 20 20 7d 0d 0a 0d 0a 20 20 5b 46 6c 61 67 73 5d    }....  [Flags]
9e80: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
9e90: 6d 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  m SQLiteOpenFlag
9ea0: 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  sEnum..  {..    
9eb0: 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 20 20 20 20 52  None = 0,..    R
9ec0: 65 61 64 4f 6e 6c 79 20 3d 20 30 78 31 2c 0d 0a  eadOnly = 0x1,..
9ed0: 20 20 20 20 52 65 61 64 57 72 69 74 65 20 3d 20      ReadWrite = 
9ee0: 30 78 32 2c 0d 0a 20 20 20 20 43 72 65 61 74 65  0x2,..    Create
9ef0: 20 3d 20 30 78 34 2c 0d 0a 20 20 20 20 55 72 69   = 0x4,..    Uri
9f00: 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 4d 65   = 0x40,..    Me
9f10: 6d 6f 72 79 20 3d 20 30 78 38 30 2c 0d 0a 20 20  mory = 0x80,..  
9f20: 20 20 44 65 66 61 75 6c 74 20 3d 20 52 65 61 64    Default = Read
9f30: 57 72 69 74 65 20 7c 20 43 72 65 61 74 65 2c 0d  Write | Create,.
9f40: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
9f50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
9f60: 68 65 20 65 78 74 72 61 20 62 65 68 61 76 69 6f  he extra behavio
9f70: 72 61 6c 20 66 6c 61 67 73 20 74 68 61 74 20 63  ral flags that c
9f80: 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f  an be applied to
9f90: 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a   a connection...
9fa0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9fb0: 0d 0a 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20  ..  [Flags()].. 
9fc0: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
9fd0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
9fe0: 67 73 20 3a 20 6c 6f 6e 67 0d 0a 20 20 7b 0d 0a  gs : long..  {..
9ff0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a000: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
a010: 6f 20 65 78 74 72 61 20 66 6c 61 67 73 2e 0d 0a  o extra flags...
a020: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a030: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
a040: 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20 20   = 0x0,....     
a050: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a060: 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65        /// Enable
a070: 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20   logging of all 
a080: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74  SQL statements t
a090: 6f 20 62 65 20 70 72 65 70 61 72 65 64 2e 0d 0a  o be prepared...
a0a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a0b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50  ary>..      LogP
a0c0: 72 65 70 61 72 65 20 3d 20 30 78 31 2c 0d 0a 0d  repare = 0x1,...
a0d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a0e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a0f0: 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f  Enable logging o
a100: 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61  f all bound para
a110: 6d 65 74 65 72 20 74 79 70 65 73 20 61 6e 64 20  meter types and 
a120: 72 61 77 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  raw values...   
a130: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a140: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50 72 65 42  >..      LogPreB
a150: 69 6e 64 20 3d 20 30 78 32 2c 0d 0a 0d 0a 20 20  ind = 0x2,....  
a160: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a170: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
a180: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61  ble logging of a
a190: 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61 6d 65 74  ll bound paramet
a1a0: 65 72 20 73 74 72 6f 6e 67 6c 79 20 74 79 70 65  er strongly type
a1b0: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  d values...     
a1c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a1d0: 0a 20 20 20 20 20 20 4c 6f 67 42 69 6e 64 20 3d  .      LogBind =
a1e0: 20 30 78 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x4,....      /
a1f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a200: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c      /// Enable l
a210: 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20 65 78  ogging of all ex
a220: 63 65 70 74 69 6f 6e 73 20 63 61 75 67 68 74 20  ceptions caught 
a230: 66 72 6f 6d 20 75 73 65 72 2d 70 72 6f 76 69 64  from user-provid
a240: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61  ed..      /// ma
a250: 6e 61 67 65 64 20 63 6f 64 65 20 63 61 6c 6c 65  naged code calle
a260: 64 20 66 72 6f 6d 20 6e 61 74 69 76 65 20 63 6f  d from native co
a270: 64 65 20 76 69 61 20 64 65 6c 65 67 61 74 65 73  de via delegates
a280: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a290: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
a2a0: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
a2b0: 69 6f 6e 20 3d 20 30 78 38 2c 0d 0a 0d 0a 20 20  ion = 0x8,....  
a2c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a2d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
a2e0: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 62  ble logging of b
a2f0: 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f 72 73  ackup API errors
a300: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a310: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
a320: 6f 67 42 61 63 6b 75 70 20 3d 20 30 78 31 30 2c  ogBackup = 0x10,
a330: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
a340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
a350: 2f 2f 20 53 6b 69 70 20 61 64 64 69 6e 67 20 74  // Skip adding t
a360: 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 75 6e  he extension fun
a370: 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20  ctions provided 
a380: 62 79 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  by the native.. 
a390: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 6f 70       /// interop
a3a0: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
a3b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a3c0: 0d 0a 20 20 20 20 20 20 4e 6f 45 78 74 65 6e 73  ..      NoExtens
a3d0: 69 6f 6e 46 75 6e 63 74 69 6f 6e 73 20 3d 20 30  ionFunctions = 0
a3e0: 78 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  x20,....      //
a3f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a400: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
a410: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
a420: 6c 75 65 73 20 77 69 74 68 20 74 68 65 20 3c 73  lues with the <s
a430: 65 65 20 63 72 65 66 3d 22 55 49 6e 74 33 32 22  ee cref="UInt32"
a440: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   />..      /// t
a450: 79 70 65 2c 20 75 73 65 20 74 68 65 20 69 6e 74  ype, use the int
a460: 65 72 6f 70 20 6d 65 74 68 6f 64 20 74 68 61 74  erop method that
a470: 20 61 63 63 65 70 74 73 20 61 6e 20 3c 73 65 65   accepts an <see
a480: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
a490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75  ..      /// valu
a4a0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
a4b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a4c0: 42 69 6e 64 55 49 6e 74 33 32 41 73 49 6e 74 36  BindUInt32AsInt6
a4d0: 34 20 3d 20 30 78 34 30 2c 0d 0a 0d 0a 20 20 20  4 = 0x40,....   
a4e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a4f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
a500: 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74   binding paramet
a510: 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  er values, alway
a520: 73 20 62 69 6e 64 20 74 68 65 6d 20 61 73 20 74  s bind them as t
a530: 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 0d  hough they were.
a540: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c 61 69 6e  .      /// plain
a550: 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e   text (i.e. no n
a560: 75 6d 65 72 69 63 2c 20 64 61 74 65 2f 74 69 6d  umeric, date/tim
a570: 65 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76  e, or other conv
a580: 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64 0d 0a  ersions should..
a590: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61 74 74        /// be att
a5a0: 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  empted)...      
a5b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a5c0: 20 20 20 20 20 20 42 69 6e 64 41 6c 6c 41 73 54        BindAllAsT
a5d0: 65 78 74 20 3d 20 30 78 38 30 2c 0d 0a 0d 0a 20  ext = 0x80,.... 
a5e0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a5f0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
a600: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  en returning col
a610: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
a620: 79 73 20 72 65 74 75 72 6e 20 74 68 65 6d 20 61  ys return them a
a630: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
a640: 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c  re..      /// pl
a650: 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e  ain text (i.e. n
a660: 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61 74 65 2f  o numeric, date/
a670: 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63  time, or other c
a680: 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c  onversions shoul
a690: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  d..      /// be 
a6a0: 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20  attempted)...   
a6b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a6c0: 3e 0d 0a 20 20 20 20 20 20 47 65 74 41 6c 6c 41  >..      GetAllA
a6d0: 73 54 65 78 74 20 3d 20 30 78 31 30 30 2c 0d 0a  sText = 0x100,..
a6e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a6f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a700: 20 50 72 65 76 65 6e 74 20 74 68 69 73 20 3c 73   Prevent this <s
a710: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
a720: 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  onnection" /> ob
a730: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 66 72  ject instance fr
a740: 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  om..      /// lo
a750: 61 64 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73  ading extensions
a760: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a770: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
a780: 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 20 3d  oLoadExtension =
a790: 20 30 78 32 30 30 2c 0d 0a 0d 0a 23 69 66 20 49   0x200,....#if I
a7a0: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
a7b0: 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ABLE..      /// 
a7c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a7d0: 20 2f 2f 2f 20 50 72 65 76 65 6e 74 20 74 68 69   /// Prevent thi
a7e0: 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  s <see cref="SQL
a7f0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
a800: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
a810: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f  e from..      //
a820: 2f 20 63 72 65 61 74 69 6e 67 20 76 69 72 74 75  / creating virtu
a830: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73  al table modules
a840: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a850: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
a860: 6f 43 72 65 61 74 65 4d 6f 64 75 6c 65 20 3d 20  oCreateModule = 
a870: 30 78 34 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a  0x400,..#endif..
a880: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a890: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a8a0: 20 53 6b 69 70 20 62 69 6e 64 69 6e 67 20 61 6e   Skip binding an
a8b0: 79 20 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76  y functions prov
a8c0: 69 64 65 64 20 62 79 20 6f 74 68 65 72 20 6d 61  ided by other ma
a8d0: 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73  naged assemblies
a8e0: 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f   when..      ///
a8f0: 20 6f 70 65 6e 69 6e 67 20 74 68 65 20 63 6f 6e   opening the con
a900: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
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 4e 6f 42 69 6e 64 46 75 6e 63        NoBindFunc
a930: 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 2c 0d 0a  tions = 0x800,..
a940: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
a950: 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
a960: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a970: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 6b 69 70  ..      /// Skip
a980: 20 73 65 74 74 69 6e 67 20 74 68 65 20 6c 6f 67   setting the log
a990: 67 69 6e 67 20 72 65 6c 61 74 65 64 20 70 72 6f  ging related pro
a9a0: 70 65 72 74 69 65 73 20 6f 66 20 74 68 65 0d 0a  perties of the..
a9b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
a9c0: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
a9d0: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
a9e0: 74 61 6e 63 65 20 74 68 61 74 20 77 61 73 20 70  tance that was p
a9f0: 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  assed to..      
aa00: 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63 72 65  /// the <see cre
aa10: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
aa20: 69 6f 6e 2e 43 72 65 61 74 65 4d 6f 64 75 6c 65  ion.CreateModule
aa30: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
aa40: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
aa50: 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 4c 6f 67 4d  y>..      NoLogM
aa60: 6f 64 75 6c 65 20 3d 20 30 78 31 30 30 30 2c 0d  odule = 0x1000,.
aa70: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
aa80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
aa90: 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67  / Enable logging
aaa0: 20 6f 66 20 61 6c 6c 20 76 69 72 74 75 61 6c 20   of all virtual 
aab0: 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 65 72 72  table module err
aac0: 6f 72 73 20 73 65 65 6e 20 62 79 20 74 68 65 0d  ors seen by the.
aad0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
aae0: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
aaf0: 6c 65 2e 53 65 74 54 61 62 6c 65 45 72 72 6f 72  le.SetTableError
ab00: 28 49 6e 74 50 74 72 2c 53 74 72 69 6e 67 29 22  (IntPtr,String)"
ab10: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
ab20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ab30: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75  >..      LogModu
ab40: 6c 65 45 72 72 6f 72 20 3d 20 30 78 32 30 30 30  leError = 0x2000
ab50: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
ab60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ab70: 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69  /// Enable loggi
ab80: 6e 67 20 6f 66 20 63 65 72 74 61 69 6e 20 76 69  ng of certain vi
ab90: 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
aba0: 6c 65 20 65 78 63 65 70 74 69 6f 6e 73 20 74 68  le exceptions th
abb0: 61 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20  at cannot..     
abc0: 20 2f 2f 2f 20 62 65 20 65 61 73 69 6c 79 20 64   /// be easily d
abd0: 69 73 63 6f 76 65 72 65 64 20 76 69 61 20 6f 74  iscovered via ot
abe0: 68 65 72 20 6d 65 61 6e 73 2e 0d 0a 20 20 20 20  her means...    
abf0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ac00: 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75 6c  ..      LogModul
ac10: 65 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 34  eException = 0x4
ac20: 30 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  000,..#endif....
ac30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ac40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
ac50: 6e 61 62 6c 65 20 74 72 61 63 69 6e 67 20 6f 66  nable tracing of
ac60: 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69 6d 70   potentially imp
ac70: 6f 72 74 61 6e 74 20 5b 6e 6f 6e 2d 66 61 74 61  ortant [non-fata
ac80: 6c 5d 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69  l] error conditi
ac90: 6f 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ons..      /// t
aca0: 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 65 61  hat cannot be ea
acb0: 73 69 6c 79 20 72 65 70 6f 72 74 65 64 20 74 68  sily reported th
acc0: 72 6f 75 67 68 20 6f 74 68 65 72 20 6d 65 61 6e  rough other mean
acd0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
ace0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
acf0: 54 72 61 63 65 57 61 72 6e 69 6e 67 20 3d 20 30  TraceWarning = 0
ad00: 78 38 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  x8000,....      
ad10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ad20: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
ad30: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
ad40: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 75  values, always u
ad50: 73 65 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74  se the invariant
ad60: 20 63 75 6c 74 75 72 65 20 77 68 65 6e 0d 0a 20   culture when.. 
ad70: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
ad80: 69 6e 67 20 74 68 65 69 72 20 76 61 6c 75 65 73  ing their values
ad90: 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d 0a   from strings...
ada0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
adb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 76  ary>..      Conv
adc0: 65 72 74 49 6e 76 61 72 69 61 6e 74 54 65 78 74  ertInvariantText
add0: 20 3d 20 30 78 31 30 30 30 30 2c 0d 0a 0d 0a 20   = 0x10000,.... 
ade0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
adf0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
ae00: 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d  en binding param
ae10: 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77  eter values, alw
ae20: 61 79 73 20 75 73 65 20 74 68 65 20 69 6e 76 61  ays use the inva
ae30: 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68  riant culture wh
ae40: 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  en..      /// co
ae50: 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20 76  nverting their v
ae60: 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73  alues to strings
ae70: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
ae80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 42  ummary>..      B
ae90: 69 6e 64 49 6e 76 61 72 69 61 6e 74 54 65 78 74  indInvariantText
aea0: 20 3d 20 30 78 32 30 30 30 30 2c 0d 0a 0d 0a 20   = 0x20000,.... 
aeb0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
aec0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 69  y>..      /// Di
aed0: 73 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 20  sable using the 
aee0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 20  connection pool 
aef0: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20  by default.  If 
af00: 74 68 65 20 22 50 6f 6f 6c 69 6e 67 22 0d 0a 20  the "Pooling".. 
af10: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
af20: 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f 70 65  ion string prope
af30: 72 74 79 20 69 73 20 73 70 65 63 69 66 69 65 64  rty is specified
af40: 2c 20 69 74 73 20 76 61 6c 75 65 20 77 69 6c 6c  , its value will
af50: 20 6f 76 65 72 72 69 64 65 0d 0a 20 20 20 20 20   override..     
af60: 20 2f 2f 2f 20 74 68 69 73 20 66 6c 61 67 2e 20   /// this flag. 
af70: 20 54 68 65 20 70 72 65 63 69 73 65 20 6f 75 74   The precise out
af80: 63 6f 6d 65 20 6f 66 20 63 6f 6d 62 69 6e 69 6e  come of combinin
af90: 67 20 74 68 69 73 20 66 6c 61 67 20 77 69 74 68  g this flag with
afa0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
afb0: 3c 73 65 65 20 63 72 65 66 3d 22 55 73 65 43 6f  <see cref="UseCo
afc0: 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 22 20 2f 3e  nnectionPool" />
afd0: 20 66 6c 61 67 20 69 73 20 75 6e 73 70 65 63 69   flag is unspeci
afe0: 66 69 65 64 3b 20 68 6f 77 65 76 65 72 2c 0d 0a  fied; however,..
aff0: 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 65 20 6f 66        /// one of
b000: 20 74 68 65 20 66 6c 61 67 73 20 77 69 6c 6c 20   the flags will 
b010: 62 65 20 69 6e 20 65 66 66 65 63 74 2e 0d 0a 20  be in effect... 
b020: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b030: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43 6f 6e  ry>..      NoCon
b040: 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20 3d 20 30 78  nectionPool = 0x
b050: 34 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  40000,....      
b060: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b070: 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20       /// Enable 
b080: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
b090: 74 69 6f 6e 20 70 6f 6f 6c 20 62 79 20 64 65 66  tion pool by def
b0a0: 61 75 6c 74 2e 20 20 49 66 20 74 68 65 20 22 50  ault.  If the "P
b0b0: 6f 6f 6c 69 6e 67 22 0d 0a 20 20 20 20 20 20 2f  ooling"..      /
b0c0: 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  // connection st
b0d0: 72 69 6e 67 20 70 72 6f 70 65 72 74 79 20 69 73  ring property is
b0e0: 20 73 70 65 63 69 66 69 65 64 2c 20 69 74 73 20   specified, its 
b0f0: 76 61 6c 75 65 20 77 69 6c 6c 20 6f 76 65 72 72  value will overr
b100: 69 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ide..      /// t
b110: 68 69 73 20 66 6c 61 67 2e 20 20 54 68 65 20 70  his flag.  The p
b120: 72 65 63 69 73 65 20 6f 75 74 63 6f 6d 65 20 6f  recise outcome o
b130: 66 20 63 6f 6d 62 69 6e 69 6e 67 20 74 68 69 73  f combining this
b140: 20 66 6c 61 67 20 77 69 74 68 20 74 68 65 0d 0a   flag with the..
b150: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b160: 72 65 66 3d 22 4e 6f 43 6f 6e 6e 65 63 74 69 6f  ref="NoConnectio
b170: 6e 50 6f 6f 6c 22 20 2f 3e 20 66 6c 61 67 20 69  nPool" /> flag i
b180: 73 20 75 6e 73 70 65 63 69 66 69 65 64 3b 20 68  s unspecified; h
b190: 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20 20 2f  owever,..      /
b1a0: 2f 2f 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6c  // one of the fl
b1b0: 61 67 73 20 77 69 6c 6c 20 62 65 20 69 6e 20 65  ags will be in e
b1c0: 66 66 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  ffect...      //
b1d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b1e0: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
b1f0: 6e 50 6f 6f 6c 20 3d 20 30 78 38 30 30 30 30 2c  nPool = 0x80000,
b200: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
b210: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
b220: 2f 2f 20 45 6e 61 62 6c 65 20 75 73 69 6e 67 20  // Enable using 
b230: 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d  per-connection m
b240: 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20  appings between 
b250: 74 79 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a  type names and..
b260: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b270: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
b280: 76 61 6c 75 65 73 2e 20 20 41 6c 73 6f 20 73 65  values.  Also se
b290: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
b2a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b2b0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65  teConnection.Cle
b2c0: 61 72 54 79 70 65 4d 61 70 70 69 6e 67 73 22 20  arTypeMappings" 
b2d0: 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  />,..      /// <
b2e0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b2f0: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 47 65 74 54 79  Connection.GetTy
b300: 70 65 4d 61 70 70 69 6e 67 73 22 20 2f 3e 2c 20  peMappings" />, 
b310: 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  and..      /// <
b320: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b330: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 64 64 54 79  Connection.AddTy
b340: 70 65 4d 61 70 70 69 6e 67 22 20 2f 3e 20 6d 65  peMapping" /> me
b350: 74 68 6f 64 73 2e 20 20 54 68 65 73 65 0d 0a 20  thods.  These.. 
b360: 20 20 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e       /// per-con
b370: 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73  nection mappings
b380: 2c 20 77 68 65 6e 20 70 72 65 73 65 6e 74 2c 20  , when present, 
b390: 6f 76 65 72 72 69 64 65 20 74 68 65 20 63 6f 72  override the cor
b3a0: 72 65 73 70 6f 6e 64 69 6e 67 0d 0a 20 20 20 20  responding..    
b3b0: 20 20 2f 2f 2f 20 67 6c 6f 62 61 6c 20 6d 61 70    /// global map
b3c0: 70 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  pings...      //
b3d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b3e0: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
b3f0: 6e 54 79 70 65 73 20 3d 20 30 78 31 30 30 30 30  nTypes = 0x10000
b400: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
b410: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b420: 20 2f 2f 2f 20 44 69 73 61 62 6c 65 20 75 73 69   /// Disable usi
b430: 6e 67 20 67 6c 6f 62 61 6c 20 6d 61 70 70 69 6e  ng global mappin
b440: 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65 20  gs between type 
b450: 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20 20  names and..     
b460: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b470: 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65  DbType" /> value
b480: 73 2e 20 20 54 68 69 73 20 6d 61 79 20 62 65 20  s.  This may be 
b490: 75 73 65 66 75 6c 20 69 6e 20 73 6f 6d 65 20 76  useful in some v
b4a0: 65 72 79 20 6e 61 72 72 6f 77 0d 0a 20 20 20 20  ery narrow..    
b4b0: 20 20 2f 2f 2f 20 63 61 73 65 73 3b 20 68 6f 77    /// cases; how
b4c0: 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20 61  ever, if there a
b4d0: 72 65 20 6e 6f 20 70 65 72 2d 63 6f 6e 6e 65 63  re no per-connec
b4e0: 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70 69 6e  tion type mappin
b4f0: 67 73 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  gs, the..      /
b500: 2f 2f 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61  // fallback defa
b510: 75 6c 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65  ults will be use
b520: 64 20 66 6f 72 20 62 6f 74 68 20 74 79 70 65 20  d for both type 
b530: 6e 61 6d 65 73 20 61 6e 64 20 74 68 65 69 72 0d  names and their.
b540: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63  .      /// assoc
b550: 69 61 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d  iated <see cref=
b560: 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
b570: 65 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20  es.  Therefore, 
b580: 75 73 65 20 6f 66 20 74 68 69 73 20 66 6c 61 67  use of this flag
b590: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e  ..      /// is n
b5a0: 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0d  ot recommended..
b5b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b5c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 47  mary>..      NoG
b5d0: 6c 6f 62 61 6c 54 79 70 65 73 20 3d 20 30 78 32  lobalTypes = 0x2
b5e0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
b5f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b600: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68       /// When th
b610: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
b620: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 48 61  iteDataReader.Ha
b630: 73 52 6f 77 73 22 20 2f 3e 20 70 72 6f 70 65 72  sRows" /> proper
b640: 74 79 20 69 73 20 75 73 65 64 2c 20 69 74 0d 0a  ty is used, it..
b650: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
b660: 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65 72 6f   return non-zero
b670: 20 69 66 20 74 68 65 72 65 20 77 65 72 65 20 65   if there were e
b680: 76 65 72 20 61 6e 79 20 72 6f 77 73 20 69 6e 20  ver any rows in 
b690: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  the associated..
b6a0: 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75 6c 74        /// result
b6b0: 20 73 65 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   sets...      //
b6c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b6d0: 20 20 20 20 53 74 69 63 6b 79 48 61 73 52 6f 77      StickyHasRow
b6e0: 73 20 3d 20 30 78 34 30 30 30 30 30 2c 0d 0a 0d  s = 0x400000,...
b6f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
b700: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
b710: 45 6e 61 62 6c 65 20 22 73 74 72 69 63 74 22 20  Enable "strict" 
b720: 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 6e 6c 69  transaction enli
b730: 73 74 6d 65 6e 74 20 73 65 6d 61 6e 74 69 63 73  stment semantics
b740: 2e 20 20 53 65 74 74 69 6e 67 20 74 68 69 73 20  .  Setting this 
b750: 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  flag..      /// 
b760: 77 69 6c 6c 20 63 61 75 73 65 20 61 6e 20 65 78  will cause an ex
b770: 63 65 70 74 69 6f 6e 20 74 6f 20 62 65 20 74 68  ception to be th
b780: 72 6f 77 6e 20 69 66 20 61 6e 20 61 74 74 65 6d  rown if an attem
b790: 70 74 20 69 73 20 6d 61 64 65 20 74 6f 20 65 6e  pt is made to en
b7a0: 6c 69 73 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  list..      /// 
b7b0: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
b7c0: 20 77 69 74 68 20 61 6e 20 75 6e 61 76 61 69 6c   with an unavail
b7d0: 61 62 6c 65 20 6f 72 20 75 6e 73 75 70 70 6f 72  able or unsuppor
b7e0: 74 65 64 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65  ted isolation le
b7f0: 76 65 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  vel...      /// 
b800: 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 6d  In the future, m
b810: 6f 72 65 20 65 78 74 65 6e 73 69 76 65 20 63 68  ore extensive ch
b820: 65 63 6b 73 20 6d 61 79 20 62 65 20 65 6e 61 62  ecks may be enab
b830: 6c 65 64 20 62 79 20 74 68 69 73 20 66 6c 61 67  led by this flag
b840: 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77   as..      /// w
b850: 65 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ell...      /// 
b860: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
b870: 20 20 53 74 72 69 63 74 45 6e 6c 69 73 74 6d 65    StrictEnlistme
b880: 6e 74 20 3d 20 30 78 38 30 30 30 30 30 2c 0d 0a  nt = 0x800000,..
b890: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
b8a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
b8b0: 20 45 6e 61 62 6c 65 20 6d 61 70 70 69 6e 67 20   Enable mapping 
b8c0: 6f 66 20 75 6e 73 75 70 70 6f 72 74 65 64 20 74  of unsupported t
b8d0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c 61  ransaction isola
b8e0: 74 69 6f 6e 20 6c 65 76 65 6c 73 20 74 6f 20 74  tion levels to t
b8f0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6c  he..      /// cl
b900: 6f 73 65 73 74 20 73 75 70 70 6f 72 74 65 64 20  osest supported 
b910: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c  transaction isol
b920: 61 74 69 6f 6e 20 6c 65 76 65 6c 2e 0d 0a 20 20  ation level...  
b930: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b940: 79 3e 0d 0a 20 20 20 20 20 20 4d 61 70 49 73 6f  y>..      MapIso
b950: 6c 61 74 69 6f 6e 4c 65 76 65 6c 73 20 3d 20 30  lationLevels = 0
b960: 78 31 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  x1000000,....   
b970: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
b980: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
b990: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d   returning colum
b9a0: 6e 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d 70  n values, attemp
b9b0: 74 20 74 6f 20 64 65 74 65 63 74 20 74 68 65 20  t to detect the 
b9c0: 61 66 66 69 6e 69 74 79 20 6f 66 0d 0a 20 20 20  affinity of..   
b9d0: 20 20 20 2f 2f 2f 20 74 65 78 74 75 61 6c 20 76     /// textual v
b9e0: 61 6c 75 65 73 20 62 79 20 63 68 65 63 6b 69 6e  alues by checkin
b9f0: 67 20 69 66 20 74 68 65 79 20 66 75 6c 6c 79 20  g if they fully 
ba00: 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 6f 73 65  conform to those
ba10: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   of the..      /
ba20: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79  // <see cref="Ty
ba30: 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 22  peAffinity.Null"
ba40: 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   />,..      /// 
ba50: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
ba60: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 22 20 2f  ffinity.Int64" /
ba70: 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  >,..      /// <s
ba80: 65 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66  ee cref="TypeAff
ba90: 69 6e 69 74 79 2e 44 6f 75 62 6c 65 22 20 2f 3e  inity.Double" />
baa0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  ,..      /// or 
bab0: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
bac0: 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65  ffinity.DateTime
bad0: 22 20 2f 3e 20 74 79 70 65 73 2e 0d 0a 20 20 20  " /> types...   
bae0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
baf0: 3e 0d 0a 20 20 20 20 20 20 44 65 74 65 63 74 54  >..      DetectT
bb00: 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20 30 78  extAffinity = 0x
bb10: 32 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  2000000,....    
bb20: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
bb30: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
bb40: 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e  returning column
bb50: 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d 70 74   values, attempt
bb60: 20 74 6f 20 64 65 74 65 63 74 20 74 68 65 20 74   to detect the t
bb70: 79 70 65 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f  ype of..      //
bb80: 2f 20 73 74 72 69 6e 67 20 76 61 6c 75 65 73 20  / string values 
bb90: 62 79 20 63 68 65 63 6b 69 6e 67 20 69 66 20 74  by checking if t
bba0: 68 65 79 20 66 75 6c 6c 79 20 63 6f 6e 66 6f 72  hey fully confor
bbb0: 6d 20 74 6f 20 74 68 6f 73 65 20 6f 66 0d 0a 20  m to those of.. 
bbc0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
bbd0: 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69  e cref="TypeAffi
bbe0: 6e 69 74 79 2e 4e 75 6c 6c 22 20 2f 3e 2c 0d 0a  nity.Null" />,..
bbf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
bc00: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
bc10: 79 2e 49 6e 74 36 34 22 20 2f 3e 2c 0d 0a 20 20  y.Int64" />,..  
bc20: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
bc30: 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74 79 2e  f="TypeAffinity.
bc40: 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a 20 20 20  Double" />,..   
bc50: 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63     /// or <see c
bc60: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
bc70: 79 2e 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 74  y.DateTime" /> t
bc80: 79 70 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ypes...      ///
bc90: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
bca0: 20 20 20 44 65 74 65 63 74 53 74 72 69 6e 67 54     DetectStringT
bcb0: 79 70 65 20 3d 20 30 78 34 30 30 30 30 30 30 2c  ype = 0x4000000,
bcc0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
bcd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
bce0: 2f 2f 20 53 6b 69 70 20 71 75 65 72 79 69 6e 67  // Skip querying
bcf0: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
bd00: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20  ration settings 
bd10: 66 6f 72 20 75 73 65 20 62 79 20 74 68 65 0d 0a  for use by the..
bd20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
bd30: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 76 65  ref="SQLiteConve
bd40: 72 74 22 20 2f 3e 20 63 6c 61 73 73 2c 20 69 6e  rt" /> class, in
bd50: 63 6c 75 64 69 6e 67 20 74 68 65 20 64 65 66 61  cluding the defa
bd60: 75 6c 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ult..      /// <
bd70: 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65  see cref="DbType
bd80: 22 20 2f 3e 20 76 61 6c 75 65 20 61 6e 64 20 64  " /> value and d
bd90: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
bda0: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
bdb0: 20 20 2f 2f 2f 20 3c 62 3e 4e 4f 54 45 3a 20 49    /// <b>NOTE: I
bdc0: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
bdd0: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
bde0: 6e 2e 44 65 66 61 75 6c 74 44 62 54 79 70 65 22  n.DefaultDbType"
bdf0: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   />..      /// a
be00: 6e 64 2f 6f 72 20 3c 73 65 65 20 63 72 65 66 3d  nd/or <see cref=
be10: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
be20: 6e 2e 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  n.DefaultTypeNam
be30: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  e" />..      ///
be40: 20 70 72 6f 70 65 72 74 69 65 73 20 61 72 65 20   properties are 
be50: 6e 6f 74 20 73 65 74 20 65 78 70 6c 69 63 69 74  not set explicit
be60: 6c 79 20 6e 6f 72 20 73 65 74 20 76 69 61 20 74  ly nor set via t
be70: 68 65 69 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  heir connection.
be80: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  .      /// strin
be90: 67 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64  g properties and
bea0: 20 72 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20   repeated calls 
beb0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
bec0: 73 65 20 72 75 6e 74 69 6d 65 0d 0a 20 20 20 20  se runtime..    
bed0: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
bee0: 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 61 72 65  ion settings are
bef0: 20 73 65 65 6e 20 74 6f 20 62 65 20 61 20 70 72   seen to be a pr
bf00: 6f 62 6c 65 6d 2c 20 74 68 69 73 20 66 6c 61 67  oblem, this flag
bf10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
bf20: 6c 64 20 62 65 20 73 65 74 2e 3c 2f 62 3e 0d 0a  ld be set.</b>..
bf30: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
bf40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43 6f  ary>..      NoCo
bf50: 6e 76 65 72 74 53 65 74 74 69 6e 67 73 20 3d 20  nvertSettings = 
bf60: 30 78 38 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  0x8000000,....  
bf70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
bf80: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
bf90: 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65  n binding parame
bfa0: 74 65 72 20 76 61 6c 75 65 73 20 77 69 74 68 20  ter values with 
bfb0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  the <see cref="D
bfc0: 61 74 65 54 69 6d 65 22 20 2f 3e 0d 0a 20 20 20  ateTime" />..   
bfd0: 20 20 20 2f 2f 2f 20 74 79 70 65 2c 20 74 61 6b     /// type, tak
bfe0: 65 20 74 68 65 69 72 20 3c 73 65 65 20 63 72 65  e their <see cre
bff0: 66 3d 22 44 61 74 65 54 69 6d 65 4b 69 6e 64 22  f="DateTimeKind"
c000: 20 2f 3e 20 69 6e 74 6f 20 61 63 63 6f 75 6e 74   /> into account
c010: 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77   as..      /// w
c020: 65 6c 6c 20 61 73 20 74 68 61 74 20 6f 66 20 74  ell as that of t
c030: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 3c 73  he associated <s
c040: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c050: 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a  onnection" />...
c060: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c070: 61 72 79 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64  ary>..      Bind
c080: 44 61 74 65 54 69 6d 65 57 69 74 68 4b 69 6e 64  DateTimeWithKind
c090: 20 3d 20 30 78 31 30 30 30 30 30 30 30 2c 0d 0a   = 0x10000000,..
c0a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
c0b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c0c0: 20 49 66 20 61 6e 20 65 78 63 65 70 74 69 6f 6e   If an exception
c0d0: 20 69 73 20 63 61 75 67 68 74 20 77 68 65 6e 20   is caught when 
c0e0: 72 61 69 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  raising the..   
c0f0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
c100: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
c110: 6f 6e 2e 43 6f 6d 6d 69 74 22 20 2f 3e 20 65 76  on.Commit" /> ev
c120: 65 6e 74 2c 20 74 68 65 20 74 72 61 6e 73 61 63  ent, the transac
c130: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
c140: 73 68 6f 75 6c 64 20 62 65 20 72 6f 6c 6c 65 64  should be rolled
c150: 20 62 61 63 6b 2e 20 20 49 66 20 74 68 69 73 20   back.  If this 
c160: 69 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  is not specified
c170: 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  , the transactio
c180: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  n..      /// wil
c190: 6c 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63  l continue the c
c1a0: 6f 6d 6d 69 74 20 70 72 6f 63 65 73 73 20 69 6e  ommit process in
c1b0: 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  stead...      //
c1c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c1d0: 20 20 20 20 52 6f 6c 6c 62 61 63 6b 4f 6e 45 78      RollbackOnEx
c1e0: 63 65 70 74 69 6f 6e 20 3d 20 30 78 32 30 30 30  ception = 0x2000
c1f0: 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  0000,....      /
c200: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c210: 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78      /// If an ex
c220: 63 65 70 74 69 6f 6e 20 69 73 20 63 61 75 67 68  ception is caugh
c230: 74 20 77 68 65 6e 20 72 61 69 73 69 6e 67 20 74  t when raising t
c240: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
c250: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c260: 6f 6e 6e 65 63 74 69 6f 6e 2e 41 75 74 68 6f 72  onnection.Author
c270: 69 7a 65 22 20 2f 3e 20 65 76 65 6e 74 2c 20 74  ize" /> event, t
c280: 68 65 20 61 63 74 69 6f 6e 20 73 68 6f 75 6c 64  he action should
c290: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
c2a0: 6c 64 20 62 65 20 64 65 6e 69 65 64 2e 20 20 49  ld be denied.  I
c2b0: 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73 70  f this is not sp
c2c0: 65 63 69 66 69 65 64 2c 20 74 68 65 20 61 63 74  ecified, the act
c2d0: 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ion will be..   
c2e0: 20 20 20 2f 2f 2f 20 61 6c 6c 6f 77 65 64 20 69     /// allowed i
c2f0: 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  nstead...      /
c300: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c310: 20 20 20 20 20 44 65 6e 79 4f 6e 45 78 63 65 70       DenyOnExcep
c320: 74 69 6f 6e 20 3d 20 30 78 34 30 30 30 30 30 30  tion = 0x4000000
c330: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
c340: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c350: 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78 63 65 70   /// If an excep
c360: 74 69 6f 6e 20 69 73 20 63 61 75 67 68 74 20 77  tion is caught w
c370: 68 65 6e 20 72 61 69 73 69 6e 67 20 74 68 65 0d  hen raising the.
c380: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
c390: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
c3a0: 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65 73 73 22  ection.Progress"
c3b0: 20 2f 3e 20 65 76 65 6e 74 2c 20 74 68 65 20 6f   /> event, the o
c3c0: 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  peration..      
c3d0: 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 69 6e  /// should be in
c3e0: 74 65 72 72 75 70 74 65 64 2e 20 20 49 66 20 74  terrupted.  If t
c3f0: 68 69 73 20 69 73 20 6e 6f 74 20 73 70 65 63 69  his is not speci
c400: 66 69 65 64 2c 20 74 68 65 20 6f 70 65 72 61 74  fied, the operat
c410: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ion..      /// w
c420: 69 6c 6c 20 73 69 6d 70 6c 79 20 63 6f 6e 74 69  ill simply conti
c430: 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nue...      /// 
c440: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c450: 20 20 49 6e 74 65 72 72 75 70 74 4f 6e 45 78 63    InterruptOnExc
c460: 65 70 74 69 6f 6e 20 3d 20 30 78 38 30 30 30 30  eption = 0x80000
c470: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
c480: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c490: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 20 74     /// Attempt t
c4a0: 6f 20 75 6e 62 69 6e 64 20 61 6c 6c 20 66 75 6e  o unbind all fun
c4b0: 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20  ctions provided 
c4c0: 62 79 20 6f 74 68 65 72 20 6d 61 6e 61 67 65 64  by other managed
c4d0: 20 61 73 73 65 6d 62 6c 69 65 73 0d 0a 20 20 20   assemblies..   
c4e0: 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63 6c 6f 73     /// when clos
c4f0: 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ing the connecti
c500: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
c510: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c520: 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e 73   UnbindFunctions
c530: 4f 6e 43 6c 6f 73 65 20 3d 20 30 78 31 30 30 30  OnClose = 0x1000
c540: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
c550: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c560: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72 65       /// When re
c570: 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76  turning column v
c580: 61 6c 75 65 73 20 61 73 20 61 20 3c 73 65 65 20  alues as a <see 
c590: 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e  cref="String" />
c5a0: 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 2f 2f  , skip..      //
c5b0: 2f 20 76 65 72 69 66 79 69 6e 67 20 74 68 65 69  / verifying thei
c5c0: 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a 20 20 20  r affinity...   
c5d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c5e0: 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65 72 69 66  >..      NoVerif
c5f0: 79 54 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20  yTextAffinity = 
c600: 30 78 32 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a  0x200000000,....
c610: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c620: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
c630: 6e 61 62 6c 65 20 75 73 69 6e 67 20 70 65 72 2d  nable using per-
c640: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69  connection mappi
c650: 6e 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65  ngs between type
c660: 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20   names and..    
c670: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c680: 22 53 51 4c 69 74 65 42 69 6e 64 56 61 6c 75 65  "SQLiteBindValue
c690: 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 76 61 6c  Callback" /> val
c6a0: 75 65 73 2e 20 20 41 6c 73 6f 20 73 65 65 20 74  ues.  Also see t
c6b0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
c6c0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c6d0: 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65 61 72 54  onnection.ClearT
c6e0: 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e  ypeCallbacks" />
c6f0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  ,..      /// <se
c700: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
c710: 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 54  nnection.TryGetT
c720: 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e  ypeCallbacks" />
c730: 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  , and..      ///
c740: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
c750: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74  teConnection.Set
c760: 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f  TypeCallbacks" /
c770: 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
c780: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c790: 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65  ..      UseConne
c7a0: 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61  ctionBindValueCa
c7b0: 6c 6c 62 61 63 6b 73 20 3d 20 30 78 34 30 30 30  llbacks = 0x4000
c7c0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
c7d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c7e0: 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20       /// Enable 
c7f0: 75 73 69 6e 67 20 70 65 72 2d 63 6f 6e 6e 65 63  using per-connec
c800: 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73 20 62 65  tion mappings be
c810: 74 77 65 65 6e 20 74 79 70 65 20 6e 61 6d 65 73  tween type names
c820: 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
c830: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
c840: 65 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61  eReadValueCallba
c850: 63 6b 22 20 2f 3e 20 76 61 6c 75 65 73 2e 20 20  ck" /> values.  
c860: 41 6c 73 6f 20 73 65 65 20 74 68 65 0d 0a 20 20  Also see the..  
c870: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
c880: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
c890: 69 6f 6e 2e 43 6c 65 61 72 54 79 70 65 43 61 6c  ion.ClearTypeCal
c8a0: 6c 62 61 63 6b 73 22 20 2f 3e 2c 0d 0a 20 20 20  lbacks" />,..   
c8b0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
c8c0: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
c8d0: 6f 6e 2e 54 72 79 47 65 74 54 79 70 65 43 61 6c  on.TryGetTypeCal
c8e0: 6c 62 61 63 6b 73 22 20 2f 3e 2c 20 61 6e 64 0d  lbacks" />, and.
c8f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
c900: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
c910: 65 63 74 69 6f 6e 2e 53 65 74 54 79 70 65 43 61  ection.SetTypeCa
c920: 6c 6c 62 61 63 6b 73 22 20 2f 3e 20 6d 65 74 68  llbacks" /> meth
c930: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ods...      /// 
c940: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c950: 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 52    UseConnectionR
c960: 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  eadValueCallback
c970: 73 20 3d 20 30 78 38 30 30 30 30 30 30 30 30 2c  s = 0x800000000,
c980: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
c990: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c9a0: 2f 2f 20 49 66 20 74 68 65 20 64 61 74 61 62 61  // If the databa
c9b0: 73 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61 73  se type name has
c9c0: 20 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69 63   not been explic
c9d0: 69 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68 65  itly set for the
c9e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61  ..      /// para
c9f0: 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 64 2c  meter specified,
ca00: 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73 69   fallback to usi
ca10: 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  ng the parameter
ca20: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
ca30: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ca40: 20 20 20 20 55 73 65 50 61 72 61 6d 65 74 65 72      UseParameter
ca50: 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 20  NameForTypeName 
ca60: 3d 20 30 78 31 30 30 30 30 30 30 30 30 30 2c 0d  = 0x1000000000,.
ca70: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ca80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ca90: 2f 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  / If the databas
caa0: 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61 73 20  e type name has 
cab0: 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69 63 69  not been explici
cac0: 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68 65 0d  tly set for the.
cad0: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d  .      /// param
cae0: 65 74 65 72 20 73 70 65 63 69 66 69 65 64 2c 20  eter specified, 
caf0: 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73 69 6e  fallback to usin
cb00: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  g the database t
cb10: 79 70 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ype name..      
cb20: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
cb30: 69 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65  ith the <see cre
cb40: 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
cb50: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
cb60: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
cb70: 20 20 55 73 65 50 61 72 61 6d 65 74 65 72 44 62    UseParameterDb
cb80: 54 79 70 65 46 6f 72 54 79 70 65 4e 61 6d 65 20  TypeForTypeName 
cb90: 3d 20 30 78 32 30 30 30 30 30 30 30 30 30 2c 0d  = 0x2000000000,.
cba0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
cbb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cbc0: 2f 20 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67  / When returning
cbd0: 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20   column values, 
cbe0: 73 6b 69 70 20 76 65 72 69 66 79 69 6e 67 20 74  skip verifying t
cbf0: 68 65 69 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a  heir affinity...
cc00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
cc10: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65  ary>..      NoVe
cc20: 72 69 66 79 54 79 70 65 41 66 66 69 6e 69 74 79  rifyTypeAffinity
cc30: 20 3d 20 30 78 34 30 30 30 30 30 30 30 30 30 2c   = 0x4000000000,
cc40: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
cc50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cc60: 2f 2f 20 41 6c 6c 6f 77 20 74 72 61 6e 73 61 63  // Allow transac
cc70: 74 69 6f 6e 73 20 74 6f 20 62 65 20 6e 65 73 74  tions to be nest
cc80: 65 64 2e 20 20 54 68 65 20 6f 75 74 65 72 6d 6f  ed.  The outermo
cc90: 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73  st transaction s
cca0: 74 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  till..      /// 
ccb0: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
ccc0: 20 6f 72 20 6e 6f 74 20 61 6e 79 20 63 68 61 6e   or not any chan
ccd0: 67 65 73 20 61 72 65 20 75 6c 74 69 6d 61 74 65  ges are ultimate
cce0: 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 72 0d  ly committed or.
ccf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65  .      /// rolle
cd00: 64 20 62 61 63 6b 2e 20 20 41 6c 6c 20 6e 6f 6e  d back.  All non
cd10: 2d 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73  -outermost trans
cd20: 61 63 74 69 6f 6e 73 20 61 72 65 20 69 6d 70 6c  actions are impl
cd30: 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 0d 0a 20  emented using.. 
cd40: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 41 56       /// the SAV
cd50: 45 50 4f 49 4e 54 20 63 6f 6e 73 74 72 75 63 74  EPOINT construct
cd60: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
cd70: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
cd80: 6c 6c 6f 77 4e 65 73 74 65 64 54 72 61 6e 73 61  llowNestedTransa
cd90: 63 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 30 30  ctions = 0x80000
cda0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
cdb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
cdc0: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
cdd0: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
cde0: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 62  values, always b
cdf0: 69 6e 64 20 3c 73 65 65 20 63 72 65 66 3d 22 44  ind <see cref="D
ce00: 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a 20 20 20 20  ecimal" />..    
ce10: 20 20 2f 2f 2f 20 76 61 6c 75 65 73 20 61 73 20    /// values as 
ce20: 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65  though they were
ce30: 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65   plain text (i.e
ce40: 2e 20 6e 6f 74 20 3c 73 65 65 20 63 72 65 66 3d  . not <see cref=
ce50: 22 44 65 63 69 6d 61 6c 22 20 2f 3e 2c 0d 0a 20  "Decimal" />,.. 
ce60: 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 69       /// which i
ce70: 73 20 74 68 65 20 6c 65 67 61 63 79 20 62 65 68  s the legacy beh
ce80: 61 76 69 6f 72 29 2e 0d 0a 20 20 20 20 20 20 2f  avior)...      /
ce90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
cea0: 20 20 20 20 20 42 69 6e 64 44 65 63 69 6d 61 6c       BindDecimal
ceb0: 41 73 54 65 78 74 20 3d 20 30 78 31 30 30 30 30  AsText = 0x10000
cec0: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
ced0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
cee0: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72        /// When r
cef0: 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20  eturning column 
cf00: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 72  values, always r
cf10: 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65 66 3d  eturn <see cref=
cf20: 22 44 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a 20 20  "Decimal" />..  
cf30: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 20 61      /// values a
cf40: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
cf50: 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69  re plain text (i
cf60: 2e 65 2e 20 6e 6f 74 20 3c 73 65 65 20 63 72 65  .e. not <see cre
cf70: 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a  f="Double" />,..
cf80: 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20        /// which 
cf90: 69 73 20 74 68 65 20 6c 65 67 61 63 79 20 62 65  is the legacy be
cfa0: 68 61 76 69 6f 72 29 2e 0d 0a 20 20 20 20 20 20  havior)...      
cfb0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cfc0: 20 20 20 20 20 20 47 65 74 44 65 63 69 6d 61 6c        GetDecimal
cfd0: 41 73 54 65 78 74 20 3d 20 30 78 32 30 30 30 30  AsText = 0x20000
cfe0: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
cff0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d000: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62        /// When b
d010: 69 6e 64 69 6e 67 20 3c 73 65 65 20 63 72 65 66  inding <see cref
d020: 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 20 70 61  ="Decimal" /> pa
d030: 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20  rameter values, 
d040: 61 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20 20  always use..    
d050: 20 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72 69    /// the invari
d060: 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e  ant culture when
d070: 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69   converting thei
d080: 72 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69  r values to stri
d090: 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ngs...      /// 
d0a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d0b0: 20 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 44    BindInvariantD
d0c0: 65 63 69 6d 61 6c 20 3d 20 30 78 34 30 30 30 30  ecimal = 0x40000
d0d0: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d0e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d0f0: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72        /// When r
d100: 65 74 75 72 6e 69 6e 67 20 3c 73 65 65 20 63 72  eturning <see cr
d110: 65 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 20  ef="Decimal" /> 
d120: 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61  column values, a
d130: 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20 20 20  lways use..     
d140: 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72 69 61   /// the invaria
d150: 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20  nt culture when 
d160: 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72  converting their
d170: 20 76 61 6c 75 65 73 20 66 72 6f 6d 20 73 74 72   values from str
d180: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
d190: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d1a0: 20 20 20 47 65 74 49 6e 76 61 72 69 61 6e 74 44     GetInvariantD
d1b0: 65 63 69 6d 61 6c 20 3d 20 30 78 38 30 30 30 30  ecimal = 0x80000
d1c0: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d1d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d1e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 62 3e 45 58 50        /// <b>EXP
d1f0: 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20 2d 2d  ERIMENTAL</b> --
d200: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62  ..      /// Enab
d210: 6c 65 20 77 61 69 74 69 6e 67 20 66 6f 72 20 74  le waiting for t
d220: 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74 20 74 6f  he enlistment to
d230: 20 62 65 20 72 65 73 65 74 20 70 72 69 6f 72 20   be reset prior 
d240: 74 6f 20 61 74 74 65 6d 70 74 69 6e 67 0d 0a 20  to attempting.. 
d250: 20 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61       /// to crea
d260: 74 65 20 61 20 6e 65 77 20 65 6e 6c 69 73 74 6d  te a new enlistm
d270: 65 6e 74 2e 20 20 54 68 69 73 20 6d 61 79 20 62  ent.  This may b
d280: 65 20 6e 65 63 65 73 73 61 72 79 20 64 75 65 20  e necessary due 
d290: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
d2a0: 2f 20 73 65 6d 61 6e 74 69 63 73 20 75 73 65 64  / semantics used
d2b0: 20 62 79 20 64 69 73 74 72 69 62 75 74 65 64 20   by distributed 
d2c0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 77 68  transactions, wh
d2d0: 69 63 68 20 63 6f 6d 70 6c 65 74 65 0d 0a 20 20  ich complete..  
d2e0: 20 20 20 20 2f 2f 2f 20 61 73 79 6e 63 68 72 6f      /// asynchro
d2f0: 6e 6f 75 73 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  nously...      /
d300: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d310: 20 20 20 20 20 57 61 69 74 46 6f 72 45 6e 6c 69       WaitForEnli
d320: 73 74 6d 65 6e 74 52 65 73 65 74 20 3d 20 30 78  stmentReset = 0x
d330: 31 30 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d  100000000000,...
d340: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
d350: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d360: 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72  When binding par
d370: 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20 6f 72  ameter values or
d380: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d   returning colum
d390: 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73  n values, always
d3a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 65 61  ..      /// trea
d3b0: 74 20 74 68 65 6d 20 61 73 20 74 68 6f 75 67 68  t them as though
d3c0: 20 74 68 65 79 20 77 65 72 65 20 70 6c 61 69 6e   they were plain
d3d0: 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e   text (i.e. no n
d3e0: 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20 20 2f  umeric,..      /
d3f0: 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20 6f 72  // date/time, or
d400: 20 6f 74 68 65 72 20 63 6f 6e 76 65 72 73 69 6f   other conversio
d410: 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 61 74 74  ns should be att
d420: 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  empted)...      
d430: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d440: 20 20 20 20 20 20 42 69 6e 64 41 6e 64 47 65 74        BindAndGet
d450: 41 6c 6c 41 73 54 65 78 74 20 3d 20 42 69 6e 64  AllAsText = Bind
d460: 41 6c 6c 41 73 54 65 78 74 20 7c 20 47 65 74 41  AllAsText | GetA
d470: 6c 6c 41 73 54 65 78 74 2c 0d 0a 0d 0a 20 20 20  llAsText,....   
d480: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
d4a0: 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74   binding paramet
d4b0: 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  er values, alway
d4c0: 73 20 75 73 65 20 74 68 65 20 69 6e 76 61 72 69  s use the invari
d4d0: 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e  ant culture when
d4e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76  ..      /// conv
d4f0: 65 72 74 69 6e 67 20 74 68 65 69 72 20 76 61 6c  erting their val
d500: 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73 20 6f  ues to strings o
d510: 72 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d  r from strings..
d520: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d530: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e  mary>..      Con
d540: 76 65 72 74 41 6e 64 42 69 6e 64 49 6e 76 61 72  vertAndBindInvar
d550: 69 61 6e 74 54 65 78 74 20 3d 20 43 6f 6e 76 65  iantText = Conve
d560: 72 74 49 6e 76 61 72 69 61 6e 74 54 65 78 74 20  rtInvariantText 
d570: 7c 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54  | BindInvariantT
d580: 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ext,....      //
d590: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d5a0: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
d5b0: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
d5c0: 6c 75 65 73 20 6f 72 20 72 65 74 75 72 6e 69 6e  lues or returnin
d5d0: 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c  g column values,
d5e0: 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 2f   always..      /
d5f0: 2f 2f 20 74 72 65 61 74 20 74 68 65 6d 20 61 73  // treat them as
d600: 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72   though they wer
d610: 65 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e  e plain text (i.
d620: 65 2e 20 6e 6f 20 6e 75 6d 65 72 69 63 2c 0d 0a  e. no numeric,..
d630: 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 65 2f 74        /// date/t
d640: 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f  ime, or other co
d650: 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64  nversions should
d660: 20 62 65 20 61 74 74 65 6d 70 74 65 64 29 20 61   be attempted) a
d670: 6e 64 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20  nd always..     
d680: 20 2f 2f 2f 20 75 73 65 20 74 68 65 20 69 6e 76   /// use the inv
d690: 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77  ariant culture w
d6a0: 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 20 74  hen converting t
d6b0: 68 65 69 72 20 76 61 6c 75 65 73 20 74 6f 20 73  heir values to s
d6c0: 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f  trings...      /
d6d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d6e0: 20 20 20 20 20 42 69 6e 64 41 6e 64 47 65 74 41       BindAndGetA
d6f0: 6c 6c 41 73 49 6e 76 61 72 69 61 6e 74 54 65 78  llAsInvariantTex
d700: 74 20 3d 20 42 69 6e 64 41 6e 64 47 65 74 41 6c  t = BindAndGetAl
d710: 6c 41 73 54 65 78 74 20 7c 20 42 69 6e 64 49 6e  lAsText | BindIn
d720: 76 61 72 69 61 6e 74 54 65 78 74 2c 0d 0a 0d 0a  variantText,....
d730: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
d740: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
d750: 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61  hen binding para
d760: 6d 65 74 65 72 20 76 61 6c 75 65 73 20 6f 72 20  meter values or 
d770: 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e  returning column
d780: 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 0d   values, always.
d790: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 65 61 74  .      /// treat
d7a0: 20 74 68 65 6d 20 61 73 20 74 68 6f 75 67 68 20   them as though 
d7b0: 74 68 65 79 20 77 65 72 65 20 70 6c 61 69 6e 20  they were plain 
d7c0: 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e 75  text (i.e. no nu
d7d0: 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20 20 2f 2f  meric,..      //
d7e0: 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20 6f 72 20  / date/time, or 
d7f0: 6f 74 68 65 72 20 63 6f 6e 76 65 72 73 69 6f 6e  other conversion
d800: 73 20 73 68 6f 75 6c 64 20 62 65 20 61 74 74 65  s should be atte
d810: 6d 70 74 65 64 29 20 61 6e 64 20 61 6c 77 61 79  mpted) and alway
d820: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75 73 65  s..      /// use
d830: 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63   the invariant c
d840: 75 6c 74 75 72 65 20 77 68 65 6e 20 63 6f 6e 76  ulture when 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 0d 0a  ues to strings..
d870: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 66 72 6f        /// or fro
d880: 6d 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20  m strings...    
d890: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d8a0: 0d 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 41  ..      ConvertA
d8b0: 6e 64 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41  ndBindAndGetAllA
d8c0: 73 49 6e 76 61 72 69 61 6e 74 54 65 78 74 20 3d  sInvariantText =
d8d0: 20 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73   BindAndGetAllAs
d8e0: 54 65 78 74 20 7c 0d 0a 20 20 20 20 20 20 20 20  Text |..        
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d910: 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 41 6e         ConvertAn
d920: 64 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54 65  dBindInvariantTe
d930: 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  xt,....      ///
d940: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d950: 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 75 73    /// Enables us
d960: 65 20 6f 66 20 61 6c 6c 20 70 65 72 2d 63 6f 6e  e of all per-con
d970: 6e 65 63 74 69 6f 6e 20 76 61 6c 75 65 20 68 61  nection value ha
d980: 6e 64 6c 69 6e 67 20 63 61 6c 6c 62 61 63 6b 73  ndling callbacks
d990: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
d9a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55  ummary>..      U
d9b0: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 41 6c 6c 56  seConnectionAllV
d9c0: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20 3d 20  alueCallbacks = 
d9d0: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e  UseConnectionBin
d9e0: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20  dValueCallbacks 
d9f0: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
da00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da10: 20 20 20 20 20 20 20 20 20 20 55 73 65 43 6f 6e            UseCon
da20: 6e 65 63 74 69 6f 6e 52 65 61 64 56 61 6c 75 65  nectionReadValue
da30: 43 61 6c 6c 62 61 63 6b 73 2c 0d 0a 0d 0a 20 20  Callbacks,....  
da40: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
da50: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
da60: 62 6c 65 73 20 75 73 65 20 6f 66 20 61 6c 6c 20  bles use of all 
da70: 61 70 70 6c 69 63 61 62 6c 65 20 3c 73 65 65 20  applicable <see 
da80: 63 72 65 66 3d 22 53 51 4c 69 74 65 50 61 72 61  cref="SQLitePara
da90: 6d 65 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20  meter" />..     
daa0: 20 2f 2f 2f 20 70 72 6f 70 65 72 74 69 65 73 20   /// properties 
dab0: 61 73 20 66 61 6c 6c 62 61 63 6b 73 20 66 6f 72  as fallbacks for
dac0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
dad0: 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  pe name...      
dae0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
daf0: 20 20 20 20 20 20 55 73 65 50 61 72 61 6d 65 74        UseParamet
db00: 65 72 41 6e 79 74 68 69 6e 67 46 6f 72 54 79 70  erAnythingForTyp
db10: 65 4e 61 6d 65 20 3d 20 55 73 65 50 61 72 61 6d  eName = UseParam
db20: 65 74 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e  eterNameForTypeN
db30: 61 6d 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  ame |..         
db40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
db60: 73 65 50 61 72 61 6d 65 74 65 72 44 62 54 79 70  seParameterDbTyp
db70: 65 46 6f 72 54 79 70 65 4e 61 6d 65 2c 0d 0a 0d  eForTypeName,...
db80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
db90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
dba0: 45 6e 61 62 6c 65 20 61 6c 6c 20 6c 6f 67 67 69  Enable all loggi
dbb0: 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ng...      /// <
dbc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 49  /summary>..#if I
dbd0: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
dbe0: 41 42 4c 45 0d 0a 20 20 20 20 20 20 4c 6f 67 41  ABLE..      LogA
dbf0: 6c 6c 20 3d 20 4c 6f 67 50 72 65 70 61 72 65 20  ll = LogPrepare 
dc00: 7c 20 4c 6f 67 50 72 65 42 69 6e 64 20 7c 20 4c  | LogPreBind | L
dc10: 6f 67 42 69 6e 64 20 7c 0d 0a 20 20 20 20 20 20  ogBind |..      
dc20: 20 20 20 20 20 20 20 20 20 4c 6f 67 43 61 6c 6c           LogCall
dc30: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 20 7c 20  backException | 
dc40: 4c 6f 67 42 61 63 6b 75 70 20 7c 20 4c 6f 67 4d  LogBackup | LogM
dc50: 6f 64 75 6c 65 45 72 72 6f 72 20 7c 0d 0a 20 20  oduleError |..  
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67               Log
dc70: 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 2c  ModuleException,
dc80: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 4c  ..#else..      L
dc90: 6f 67 41 6c 6c 20 3d 20 4c 6f 67 50 72 65 70 61  ogAll = LogPrepa
dca0: 72 65 20 7c 20 4c 6f 67 50 72 65 42 69 6e 64 20  re | LogPreBind 
dcb0: 7c 20 4c 6f 67 42 69 6e 64 20 7c 0d 0a 20 20 20  | LogBind |..   
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67 43              LogC
dcd0: 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e  allbackException
dce0: 20 7c 20 4c 6f 67 42 61 63 6b 75 70 2c 0d 0a 23   | LogBackup,..#
dcf0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f  endif....      /
dd00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
dd10: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
dd20: 75 6c 74 20 6c 6f 67 67 69 6e 67 20 72 65 6c 61  ult logging rela
dd30: 74 65 64 20 66 6c 61 67 73 20 66 6f 72 20 6e 65  ted flags for ne
dd40: 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0d 0a  w connections...
dd50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
dd60: 61 72 79 3e 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ary>..#if INTERO
dd70: 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
dd80: 0a 20 20 20 20 20 20 4c 6f 67 44 65 66 61 75 6c  .      LogDefaul
dd90: 74 20 3d 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45  t = LogCallbackE
dda0: 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f 67 4d 6f  xception | LogMo
ddb0: 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 2c 0d 0a  duleException,..
ddc0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 4c 6f 67  #else..      Log
ddd0: 44 65 66 61 75 6c 74 20 3d 20 4c 6f 67 43 61 6c  Default = LogCal
dde0: 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 2c 0d  lbackException,.
ddf0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
de00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
de10: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65        /// The de
de20: 66 61 75 6c 74 20 65 78 74 72 61 20 66 6c 61 67  fault extra flag
de30: 73 20 66 6f 72 20 6e 65 77 20 63 6f 6e 6e 65 63  s for new connec
de40: 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  tions...      //
de50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
de60: 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 4c 6f      Default = Lo
de70: 67 44 65 66 61 75 6c 74 20 7c 20 42 69 6e 64 49  gDefault | BindI
de80: 6e 76 61 72 69 61 6e 74 44 65 63 69 6d 61 6c 20  nvariantDecimal 
de90: 7c 20 47 65 74 49 6e 76 61 72 69 61 6e 74 44 65  | GetInvariantDe
dea0: 63 69 6d 61 6c 2c 0d 0a 0d 0a 20 20 20 20 20 20  cimal,....      
deb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
dec0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66       /// The def
ded0: 61 75 6c 74 20 65 78 74 72 61 20 66 6c 61 67 73  ault extra flags
dee0: 20 66 6f 72 20 6e 65 77 20 63 6f 6e 6e 65 63 74   for new connect
def0: 69 6f 6e 73 20 77 69 74 68 20 61 6c 6c 20 6c 6f  ions with all lo
df00: 67 67 69 6e 67 20 65 6e 61 62 6c 65 64 2e 0d 0a  gging enabled...
df10: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
df20: 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66 61  ary>..      Defa
df30: 75 6c 74 41 6e 64 4c 6f 67 41 6c 6c 20 3d 20 44  ultAndLogAll = D
df40: 65 66 61 75 6c 74 20 7c 20 4c 6f 67 41 6c 6c 0d  efault | LogAll.
df50: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
df60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
df70: 68 65 73 65 20 61 72 65 20 74 68 65 20 73 75 70  hese are the sup
df80: 70 6f 72 74 65 64 20 63 6f 6e 66 69 67 75 72 61  ported configura
df90: 74 69 6f 6e 20 76 65 72 62 73 20 66 6f 72 20 75  tion verbs for u
dfa0: 73 65 20 77 69 74 68 20 74 68 65 20 6e 61 74 69  se with the nati
dfb0: 76 65 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65  ve..  /// SQLite
dfc0: 20 6c 69 62 72 61 72 79 2e 20 20 54 68 65 79 20   library.  They 
dfd0: 61 72 65 20 75 73 65 64 20 77 69 74 68 20 74 68  are used with th
dfe0: 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  e..  /// <see cr
dff0: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
e000: 74 69 6f 6e 2e 53 65 74 43 6f 6e 66 69 67 75 72  tion.SetConfigur
e010: 61 74 69 6f 6e 4f 70 74 69 6f 6e 22 20 2f 3e 20  ationOption" /> 
e020: 6d 65 74 68 6f 64 2e 0d 0a 20 20 2f 2f 2f 20 3c  method...  /// <
e030: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
e040: 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43  lic enum SQLiteC
e050: 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 0d 0a  onfigDbOpsEnum..
e060: 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    {..    /// <su
e070: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e080: 54 68 69 73 20 76 61 6c 75 65 20 72 65 70 72 65  This value repre
e090: 73 65 6e 74 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e  sents an unknown
e0a0: 20 28 6f 72 20 69 6e 76 61 6c 69 64 29 20 6f 70   (or invalid) op
e0b0: 74 69 6f 6e 2c 20 64 6f 20 6e 6f 74 20 75 73 65  tion, do not use
e0c0: 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   it...    /// </
e0d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51  summary>..    SQ
e0e0: 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f  LITE_DBCONFIG_NO
e0f0: 4e 45 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a  NE = 0, // nil..
e100: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
e110: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
e120: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
e130: 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6e   to change the n
e140: 61 6d 65 20 6f 66 20 74 68 65 20 22 6d 61 69 6e  ame of the "main
e150: 22 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 2f  " database.    /
e160: 2f 2f 20 73 63 68 65 6d 61 2e 20 20 54 68 65 20  // schema.  The 
e170: 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20 69 73  sole argument is
e180: 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
e190: 63 6f 6e 73 74 61 6e 74 20 55 54 46 38 20 73 74  constant UTF8 st
e1a0: 72 69 6e 67 0a 20 20 20 20 2f 2f 2f 20 77 68 69  ring.    /// whi
e1b0: 63 68 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74  ch will become t
e1c0: 68 65 20 6e 65 77 20 73 63 68 65 6d 61 20 6e 61  he new schema na
e1d0: 6d 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 22  me in place of "
e1e0: 6d 61 69 6e 22 2e 0d 0a 20 20 20 20 2f 2f 2f 20  main"...    /// 
e1f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e200: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
e210: 4d 41 49 4e 44 42 4e 41 4d 45 20 3d 20 31 30 30  MAINDBNAME = 100
e220: 30 2c 20 2f 2f 20 63 68 61 72 2a 0d 0a 0d 0a 20  0, // char*.... 
e230: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e240: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f  ..    /// This o
e250: 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
e260: 20 63 6f 6e 66 69 67 75 72 65 20 74 68 65 20 6c   configure the l
e270: 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20  ookaside memory 
e280: 61 6c 6c 6f 63 61 74 6f 72 2e 0d 0a 20 20 20 20  allocator...    
e290: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6d 75  /// The value mu
e2a0: 73 74 20 62 65 20 61 6e 20 61 72 72 61 79 20 77  st be an array w
e2b0: 69 74 68 20 74 68 72 65 65 20 65 6c 65 6d 65 6e  ith three elemen
e2c0: 74 73 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  ts.  The second 
e2d0: 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f  element..    ///
e2e0: 20 6d 75 73 74 20 62 65 20 61 6e 20 3c 73 65 65   must be an <see
e2f0: 20 63 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e   cref="Int32" />
e300: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
e310: 73 69 7a 65 20 6f 66 20 65 61 63 68 20 62 75 66  size of each buf
e320: 66 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 73 6c 6f  fer..    /// slo
e330: 74 2e 20 20 54 68 65 20 74 68 69 72 64 20 65 6c  t.  The third el
e340: 65 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 61 6e  ement must be an
e350: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 33   <see cref="Int3
e360: 32 22 20 2f 3e 20 63 6f 6e 74 61 69 6e 69 6e 67  2" /> containing
e370: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 6e 75  ..    /// the nu
e380: 6d 62 65 72 20 6f 66 20 73 6c 6f 74 73 2e 20 20  mber of slots.  
e390: 54 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e  The first elemen
e3a0: 74 20 6d 75 73 74 20 62 65 20 61 6e 20 3c 73 65  t must be an <se
e3b0: 65 20 63 72 65 66 3d 22 49 6e 74 50 74 72 22 20  e cref="IntPtr" 
e3c0: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 61 74  />..    /// that
e3d0: 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 6e 61 74   points to a nat
e3e0: 69 76 65 20 6d 65 6d 6f 72 79 20 62 75 66 66 65  ive memory buffe
e3f0: 72 20 6f 66 20 62 79 74 65 73 20 65 71 75 61 6c  r of bytes equal
e400: 20 74 6f 20 6f 72 20 67 72 65 61 74 65 72 0d 0a   to or greater..
e410: 20 20 20 20 2f 2f 2f 20 74 68 61 6e 20 74 68 65      /// than the
e420: 20 70 72 6f 64 75 63 74 20 6f 66 20 74 68 65 20   product of the 
e430: 73 65 63 6f 6e 64 20 61 6e 64 20 74 68 69 72 64  second and third
e440: 20 65 6c 65 6d 65 6e 74 20 76 61 6c 75 65 73 2e   element values.
e450: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
e460: 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45  ary>..    SQLITE
e470: 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
e480: 49 44 45 20 3d 20 31 30 30 31 2c 20 2f 2f 20 76  IDE = 1001, // v
e490: 6f 69 64 2a 20 69 6e 74 20 69 6e 74 0d 0a 0d 0a  oid* int int....
e4a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e4b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
e4c0: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
e4d0: 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
e4e0: 62 6c 65 20 74 68 65 20 65 6e 66 6f 72 63 65 6d  ble the enforcem
e4f0: 65 6e 74 20 6f 66 0d 0a 20 20 20 20 2f 2f 2f 20  ent of..    /// 
e500: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
e510: 74 72 61 69 6e 74 73 2e 0d 0a 20 20 20 20 2f 2f  traints...    //
e520: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e530: 20 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49    SQLITE_DBCONFI
e540: 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 20 3d 20  G_ENABLE_FKEY = 
e550: 31 30 30 32 2c 20 2f 2f 20 69 6e 74 20 69 6e 74  1002, // int int
e560: 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  *....    /// <su
e570: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e580: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
e590: 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72  sed to enable or
e5a0: 20 64 69 73 61 62 6c 65 20 74 72 69 67 67 65 72   disable trigger
e5b0: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
e5c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49  mmary>..    SQLI
e5d0: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
e5e0: 4c 45 5f 54 52 49 47 47 45 52 20 3d 20 31 30 30  LE_TRIGGER = 100
e5f0: 33 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a  3, // int int*..
e600: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
e610: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
e620: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
e630: 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
e640: 73 61 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72  sable the two-ar
e650: 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e 0d 0a  gument version..
e660: 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 66      /// of the f
e670: 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20  ts3_tokenizer() 
e680: 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 69  function which i
e690: 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 46 54  s part of the FT
e6a0: 53 33 20 66 75 6c 6c 2d 74 65 78 74 0d 0a 20 20  S3 full-text..  
e6b0: 20 20 2f 2f 2f 20 73 65 61 72 63 68 20 65 6e 67    /// search eng
e6c0: 69 6e 65 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a  ine extension...
e6d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e6e0: 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44  y>..    SQLITE_D
e6f0: 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46  BCONFIG_ENABLE_F
e700: 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 20 3d 20  TS3_TOKENIZER = 
e710: 31 30 30 34 2c 20 2f 2f 20 69 6e 74 20 69 6e 74  1004, // int int
e720: 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  *....    /// <su
e730: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e740: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
e750: 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72  sed to enable or
e760: 20 64 69 73 61 62 6c 65 20 74 68 65 20 6c 6f 61   disable the loa
e770: 64 69 6e 67 20 6f 66 20 65 78 74 65 6e 73 69 6f  ding of extensio
e780: 6e 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ns...    /// </s
e790: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c  ummary>..    SQL
e7a0: 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
e7b0: 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49  BLE_LOAD_EXTENSI
e7c0: 4f 4e 20 3d 20 31 30 30 35 2c 20 2f 2f 20 69 6e  ON = 1005, // in
e7d0: 74 20 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 2f 2f  t int*....    //
e7e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e7f0: 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
e800: 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62   is used to enab
e810: 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68  le or disable th
e820: 65 20 61 75 74 6f 6d 61 74 69 63 20 63 68 65 63  e automatic chec
e830: 6b 70 6f 69 6e 74 69 6e 67 0d 0a 20 20 20 20 2f  kpointing..    /
e840: 2f 2f 20 77 68 65 6e 20 61 20 57 41 4c 20 64 61  // when a WAL da
e850: 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64  tabase is closed
e860: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
e870: 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54  mary>..    SQLIT
e880: 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 5f 43 4b  E_DBCONFIG_NO_CK
e890: 50 54 5f 4f 4e 5f 43 4c 4f 53 45 20 3d 20 31 30  PT_ON_CLOSE = 10
e8a0: 30 36 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d  06, // int int*.
e8b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
e8c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
e8d0: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
e8e0: 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64  d to enable or d
e8f0: 69 73 61 62 6c 65 20 74 68 65 20 71 75 65 72 79  isable the query
e900: 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69   planner stabili
e910: 74 79 0d 0a 20 20 20 20 2f 2f 2f 20 67 75 61 72  ty..    /// guar
e920: 61 6e 74 65 65 20 28 51 50 53 47 29 2e 0d 0a 20  antee (QPSG)... 
e930: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e940: 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42  >..    SQLITE_DB
e950: 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50  CONFIG_ENABLE_QP
e960: 53 47 20 3d 20 31 30 30 37 2c 20 2f 2f 20 69 6e  SG = 1007, // in
e970: 74 20 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 2f 2f  t int*....    //
e980: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e990: 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
e9a0: 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62   is used to enab
e9b0: 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68  le or disable th
e9c0: 65 20 65 78 74 72 61 20 45 58 50 4c 41 49 4e 20  e extra EXPLAIN 
e9d0: 51 55 45 52 59 20 50 4c 41 4e 0d 0a 20 20 20 20  QUERY PLAN..    
e9e0: 2f 2f 2f 20 6f 75 74 70 75 74 20 66 6f 72 20 74  /// output for t
e9f0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 2e  rigger programs.
ea00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ea10: 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45  ary>..    SQLITE
ea20: 5f 44 42 43 4f 4e 46 49 47 5f 54 52 49 47 47 45  _DBCONFIG_TRIGGE
ea30: 52 5f 45 51 50 20 3d 20 31 30 30 38 20 2f 2f 20  R_EQP = 1008 // 
ea40: 69 6e 74 20 69 6e 74 2a 0d 0a 20 20 7d 0d 0a 0d  int int*..  }...
ea50: 0a 20 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20  .  // These are 
ea60: 74 68 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 74  the options to t
ea70: 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 71 6c 69  he internal sqli
ea80: 74 65 33 5f 63 6f 6e 66 69 67 20 63 61 6c 6c 2e  te3_config call.
ea90: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
eaa0: 6d 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  m SQLiteConfigOp
eab0: 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  sEnum..  {..    
eac0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4e 4f  SQLITE_CONFIG_NO
ead0: 4e 45 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a  NE = 0, // nil..
eae0: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
eaf0: 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 3d  G_SINGLETHREAD =
eb00: 20 31 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20   1, // nil..    
eb10: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
eb20: 4c 54 49 54 48 52 45 41 44 20 3d 20 32 2c 20 2f  LTITHREAD = 2, /
eb30: 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54  / nil..    SQLIT
eb40: 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49  E_CONFIG_SERIALI
eb50: 5a 45 44 20 3d 20 33 2c 20 2f 2f 20 6e 69 6c 0d  ZED = 3, // nil.
eb60: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
eb70: 49 47 5f 4d 41 4c 4c 4f 43 20 3d 20 34 2c 20 2f  IG_MALLOC = 4, /
eb80: 2f 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65  / sqlite3_mem_me
eb90: 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49  thods*..    SQLI
eba0: 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c  TE_CONFIG_GETMAL
ebb0: 4c 4f 43 20 3d 20 35 2c 20 2f 2f 20 73 71 6c 69  LOC = 5, // sqli
ebc0: 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a  te3_mem_methods*
ebd0: 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
ebe0: 46 49 47 5f 53 43 52 41 54 43 48 20 3d 20 36 2c  FIG_SCRATCH = 6,
ebf0: 20 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73   // void*, int s
ec00: 7a 2c 20 69 6e 74 20 4e 0d 0a 20 20 20 20 53 51  z, int N..    SQ
ec10: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45  LITE_CONFIG_PAGE
ec20: 43 41 43 48 45 20 3d 20 37 2c 20 2f 2f 20 76 6f  CACHE = 7, // vo
ec30: 69 64 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74  id*, int sz, int
ec40: 20 4e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43   N..    SQLITE_C
ec50: 4f 4e 46 49 47 5f 48 45 41 50 20 3d 20 38 2c 20  ONFIG_HEAP = 8, 
ec60: 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42  // void*, int nB
ec70: 79 74 65 2c 20 69 6e 74 20 6d 69 6e 0d 0a 20 20  yte, int min..  
ec80: 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
ec90: 4d 45 4d 53 54 41 54 55 53 20 3d 20 39 2c 20 2f  MEMSTATUS = 9, /
eca0: 2f 20 62 6f 6f 6c 65 61 6e 0d 0a 20 20 20 20 53  / boolean..    S
ecb0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54  QLITE_CONFIG_MUT
ecc0: 45 58 20 3d 20 31 30 2c 20 2f 2f 20 73 71 6c 69  EX = 10, // sqli
ecd0: 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64  te3_mutex_method
ece0: 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  s*..    SQLITE_C
ecf0: 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 3d  ONFIG_GETMUTEX =
ed00: 20 31 31 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f   11, // sqlite3_
ed10: 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a 0d 0a  mutex_methods*..
ed20: 20 20 20 20 2f 2f 20 70 72 65 76 69 6f 75 73 6c      // previousl
ed30: 79 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  y SQLITE_CONFIG_
ed40: 43 48 55 4e 4b 41 4c 4c 4f 43 20 31 32 20 77 68  CHUNKALLOC 12 wh
ed50: 69 63 68 20 69 73 20 6e 6f 77 20 75 6e 75 73 65  ich is now unuse
ed60: 64 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  d..    SQLITE_CO
ed70: 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 3d  NFIG_LOOKASIDE =
ed80: 20 31 33 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 0d   13, // int int.
ed90: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
eda0: 49 47 5f 50 43 41 43 48 45 20 3d 20 31 34 2c 20  IG_PCACHE = 14, 
edb0: 2f 2f 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68  // sqlite3_pcach
edc0: 65 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20  e_methods*..    
edd0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
ede0: 54 50 43 41 43 48 45 20 3d 20 31 35 2c 20 2f 2f  TPCACHE = 15, //
edf0: 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f   sqlite3_pcache_
ee00: 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51  methods*..    SQ
ee10: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20  LITE_CONFIG_LOG 
ee20: 3d 20 31 36 2c 20 2f 2f 20 78 46 75 6e 63 2c 20  = 16, // xFunc, 
ee30: 76 6f 69 64 2a 0d 0a 20 20 20 20 53 51 4c 49 54  void*..    SQLIT
ee40: 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 3d 20 31  E_CONFIG_URI = 1
ee50: 37 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20 53  7, // int..    S
ee60: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
ee70: 43 48 45 32 20 3d 20 31 38 2c 20 2f 2f 20 73 71  CHE2 = 18, // sq
ee80: 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74  lite3_pcache_met
ee90: 68 6f 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49  hods2*..    SQLI
eea0: 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41  TE_CONFIG_GETPCA
eeb0: 43 48 45 32 20 3d 20 31 39 2c 20 2f 2f 20 73 71  CHE2 = 19, // sq
eec0: 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74  lite3_pcache_met
eed0: 68 6f 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49  hods2*..    SQLI
eee0: 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
eef0: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 3d 20  NG_INDEX_SCAN = 
ef00: 32 30 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20  20, // int..    
ef10: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51  SQLITE_CONFIG_SQ
ef20: 4c 4c 4f 47 20 3d 20 32 31 2c 20 2f 2f 20 78 53  LLOG = 21, // xS
ef30: 71 6c 6c 6f 67 2c 20 76 6f 69 64 2a 0d 0a 20 20  qllog, void*..  
ef40: 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
ef50: 4d 4d 41 50 5f 53 49 5a 45 20 3d 20 32 32 2c 20  MMAP_SIZE = 22, 
ef60: 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  // sqlite3_int64
ef70: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 0d  , sqlite3_int64.
ef80: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
ef90: 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a  IG_WIN32_HEAPSIZ
efa0: 45 20 3d 20 32 33 2c 20 2f 2f 20 69 6e 74 20 6e  E = 23, // int n
efb0: 42 79 74 65 0d 0a 20 20 20 20 53 51 4c 49 54 45  Byte..    SQLITE
efc0: 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48  _CONFIG_PCACHE_H
efd0: 44 52 53 5a 20 3d 20 32 34 2c 20 2f 2f 20 69 6e  DRSZ = 24, // in
efe0: 74 20 2a 70 73 7a 0d 0a 20 20 20 20 53 51 4c 49  t *psz..    SQLI
eff0: 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20  TE_CONFIG_PMASZ 
f000: 3d 20 32 35 20 2f 2f 20 75 6e 73 69 67 6e 65 64  = 25 // unsigned
f010: 20 69 6e 74 20 73 7a 50 6d 61 0d 0a 20 20 7d 0d   int szPma..  }.
f020: 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
f030: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20  y>..  /// These 
f040: 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 75 73  constants are us
f050: 65 64 20 77 69 74 68 20 74 68 65 20 73 71 6c 69  ed with the sqli
f060: 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 20 41  te3_trace_v2() A
f070: 50 49 20 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f  PI and the..  //
f080: 2f 20 63 61 6c 6c 62 61 63 6b 73 20 72 65 67 69  / callbacks regi
f090: 73 74 65 72 65 64 20 62 79 20 69 74 2e 0d 0a 20  stered by it... 
f0a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
f0b0: 0a 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20  .  [Flags()]..  
f0c0: 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 53 51  internal enum SQ
f0d0: 4c 69 74 65 54 72 61 63 65 46 6c 61 67 73 0d 0a  LiteTraceFlags..
f0e0: 20 20 7b 0d 0a 20 20 20 20 20 20 53 51 4c 49 54    {..      SQLIT
f0f0: 45 5f 54 52 41 43 45 5f 4e 4f 4e 45 20 3d 20 30  E_TRACE_NONE = 0
f100: 78 30 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20  x0, // nil..    
f110: 20 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53    SQLITE_TRACE_S
f120: 54 4d 54 20 3d 20 30 78 31 2c 20 2f 2f 20 70 53  TMT = 0x1, // pS
f130: 74 6d 74 2c 20 7a 53 71 6c 0d 0a 20 20 20 20 20  tmt, zSql..     
f140: 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52   SQLITE_TRACE_PR
f150: 4f 46 49 4c 45 20 3d 20 30 78 32 2c 20 2f 2f 20  OFILE = 0x2, // 
f160: 70 53 74 6d 74 2c 20 70 69 4e 73 65 63 36 34 0d  pStmt, piNsec64.
f170: 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f 54 52  .      SQLITE_TR
f180: 41 43 45 5f 52 4f 57 20 3d 20 30 78 34 2c 20 2f  ACE_ROW = 0x4, /
f190: 2f 20 70 53 74 6d 74 0d 0a 20 20 20 20 20 20 53  / pStmt..      S
f1a0: 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53  QLITE_TRACE_CLOS
f1b0: 45 20 3d 20 30 78 38 20 2f 2f 20 70 44 62 0d 0a  E = 0x8 // pDb..
f1c0: 20 20 7d 0d 0a 7d 0d 0a                            }..}..