System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact d02b4e9b0feb4af0ac884673136706df4181fd6f:


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 74 68 65 20 72 6f 77 69 64 20 6f 66 20  ns the rowid of 
0670: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
0680: 73 75 63 63 65 73 73 66 75 6c 20 49 4e 53 45 52  successful INSER
0690: 54 20 69 6e 74 6f 20 74 68 65 20 64 61 74 61 62  T into the datab
06a0: 61 73 65 20 66 72 6f 6d 20 74 68 69 73 20 63 6f  ase from this co
06b0: 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  nnection...    /
06c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
06d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
06e0: 72 61 63 74 20 6c 6f 6e 67 20 4c 61 73 74 49 6e  ract long LastIn
06f0: 73 65 72 74 52 6f 77 49 64 20 7b 20 67 65 74 3b  sertRowId { get;
0700: 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   }..    /// <sum
0710: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
0720: 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
0730: 72 20 6f 66 20 63 68 61 6e 67 65 73 20 74 68 65  r of changes the
0740: 20 6c 61 73 74 20 65 78 65 63 75 74 69 6e 67 20   last executing 
0750: 69 6e 73 65 72 74 2f 75 70 64 61 74 65 20 63 61  insert/update ca
0760: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  used...    /// <
0770: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
0780: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
0790: 20 69 6e 74 20 43 68 61 6e 67 65 73 20 7b 20 67   int Changes { g
07a0: 65 74 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c  et; }..    /// <
07b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
07c0: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 61 6d  / Returns the am
07d0: 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 28  ount of memory (
07e0: 69 6e 20 62 79 74 65 73 29 20 63 75 72 72 65 6e  in bytes) curren
07f0: 74 6c 79 20 69 6e 20 75 73 65 20 62 79 20 74 68  tly in use by th
0800: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
0810: 62 72 61 72 79 2e 20 20 54 68 69 73 20 69 73 20  brary.  This is 
0820: 6e 6f 74 20 72 65 61 6c 6c 79 20 61 20 70 65 72  not really a per
0830: 2d 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20  -connection..   
0840: 20 2f 2f 2f 20 76 61 6c 75 65 2c 20 69 74 20 69   /// value, it i
0850: 73 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68 65 20  s global to the 
0860: 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 2f 2f  process...    //
0870: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0880: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
0890: 61 63 74 20 6c 6f 6e 67 20 4d 65 6d 6f 72 79 55  act long MemoryU
08a0: 73 65 64 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20  sed { get; }..  
08b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
08c0: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
08d0: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 61 6d 6f   the maximum amo
08e0: 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 28 69  unt of memory (i
08f0: 6e 20 62 79 74 65 73 29 20 75 73 65 64 20 62 79  n bytes) used by
0900: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
0910: 20 6c 69 62 72 61 72 79 20 73 69 6e 63 65 20 74   library since t
0920: 68 65 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61  he high-water ma
0930: 72 6b 20 77 61 73 20 6c 61 73 74 20 72 65 73 65  rk was last rese
0940: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  t...    /// This
0950: 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c 79 20 61   is not really a
0960: 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20   per-connection 
0970: 76 61 6c 75 65 2c 20 69 74 20 69 73 20 67 6c 6f  value, it is glo
0980: 62 61 6c 20 74 6f 20 74 68 65 20 70 72 6f 63 65  bal to the proce
0990: 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ss...    /// </s
09a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
09b0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 6c  ernal abstract l
09c0: 6f 6e 67 20 4d 65 6d 6f 72 79 48 69 67 68 77 61  ong MemoryHighwa
09d0: 74 65 72 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20  ter { get; }..  
09e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
09f0: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
0a00: 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   non-zero if the
0a10: 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74 69   underlying nati
0a20: 76 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  ve connection ha
0a30: 6e 64 6c 65 20 69 73 20 6f 77 6e 65 64 20 62 79  ndle is owned by
0a40: 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d   this instance..
0a50: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0a60: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
0a70: 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  l abstract bool 
0a80: 4f 77 6e 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b  OwnHandle { get;
0a90: 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   }..    /// <sum
0aa0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
0ab0: 65 74 75 72 6e 73 20 74 68 65 20 6c 6f 67 69 63  eturns the logic
0ac0: 61 6c 20 6c 69 73 74 20 6f 66 20 66 75 6e 63 74  al list of funct
0ad0: 69 6f 6e 73 20 61 73 73 6f 63 69 61 74 65 64 20  ions associated 
0ae0: 77 69 74 68 20 74 68 69 73 20 63 6f 6e 6e 65 63  with this connec
0af0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
0b00: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69  /summary>..    i
0b10: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
0b20: 20 49 44 69 63 74 69 6f 6e 61 72 79 3c 53 51 4c   IDictionary<SQL
0b30: 69 74 65 46 75 6e 63 74 69 6f 6e 41 74 74 72 69  iteFunctionAttri
0b40: 62 75 74 65 2c 20 53 51 4c 69 74 65 46 75 6e 63  bute, SQLiteFunc
0b50: 74 69 6f 6e 3e 20 46 75 6e 63 74 69 6f 6e 73 20  tion> Functions 
0b60: 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f 2f  { get; }..    //
0b70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0b80: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 73 74   /// Sets the st
0b90: 61 74 75 73 20 6f 66 20 74 68 65 20 6d 65 6d 6f  atus of the memo
0ba0: 72 79 20 75 73 61 67 65 20 74 72 61 63 6b 69 6e  ry usage trackin
0bb0: 67 20 73 75 62 73 79 73 74 65 6d 20 69 6e 20 74  g subsystem in t
0bc0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
0bd0: 69 62 72 61 72 79 2e 20 20 42 79 20 64 65 66 61  ibrary.  By defa
0be0: 75 6c 74 2c 20 74 68 69 73 20 69 73 20 65 6e 61  ult, this is ena
0bf0: 62 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  bled...    /// I
0c00: 66 20 74 68 69 73 20 69 73 20 64 69 73 61 62 6c  f this is disabl
0c10: 65 64 2c 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  ed, memory usage
0c20: 20 74 72 61 63 6b 69 6e 67 20 77 69 6c 6c 20 6e   tracking will n
0c30: 6f 74 20 62 65 20 70 65 72 66 6f 72 6d 65 64 2e  ot be performed.
0c40: 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 72 65    This is not re
0c50: 61 6c 6c 79 20 61 20 70 65 72 2d 63 6f 6e 6e 65  ally a per-conne
0c60: 63 74 69 6f 6e 20 76 61 6c 75 65 2c 20 69 74 20  ction value, it 
0c70: 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 67 6c 6f 62  is..    /// glob
0c80: 61 6c 20 74 6f 20 74 68 65 20 70 72 6f 63 65 73  al to the proces
0c90: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
0ca0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0cb0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
0cc0: 75 65 22 3e 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  ue">Non-zero to 
0cd0: 65 6e 61 62 6c 65 20 6d 65 6d 6f 72 79 20 75 73  enable memory us
0ce0: 61 67 65 20 74 72 61 63 6b 69 6e 67 2c 20 7a 65  age tracking, ze
0cf0: 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 3c 2f 70  ro otherwise.</p
0d00: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
0d10: 72 65 74 75 72 6e 73 3e 41 20 73 74 61 6e 64 61  returns>A standa
0d20: 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
0d30: 20 63 6f 64 65 20 28 69 2e 65 2e 20 7a 65 72 6f   code (i.e. zero
0d40: 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64   for success and
0d50: 20 6e 6f 6e 2d 7a 65 72 6f 20 66 6f 72 20 66 61   non-zero for fa
0d60: 69 6c 75 72 65 29 2e 3c 2f 72 65 74 75 72 6e 73  ilure).</returns
0d70: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
0d80: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
0d90: 72 72 6f 72 43 6f 64 65 20 53 65 74 4d 65 6d 6f  rrorCode SetMemo
0da0: 72 79 53 74 61 74 75 73 28 62 6f 6f 6c 20 76 61  ryStatus(bool va
0db0: 6c 75 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  lue);..    /// <
0dc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0dd0: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 66 72  / Attempts to fr
0de0: 65 65 20 61 73 20 6d 75 63 68 20 68 65 61 70 20  ee as much heap 
0df0: 6d 65 6d 6f 72 79 20 61 73 20 70 6f 73 73 69 62  memory as possib
0e00: 6c 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  le for the datab
0e10: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  ase connection..
0e20: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0e30: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
0e40: 74 75 72 6e 73 3e 41 20 73 74 61 6e 64 61 72 64  turns>A standard
0e50: 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
0e60: 6f 64 65 20 28 69 2e 65 2e 20 7a 65 72 6f 20 66  ode (i.e. zero f
0e70: 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 6e  or success and n
0e80: 6f 6e 2d 7a 65 72 6f 20 66 6f 72 20 66 61 69 6c  on-zero for fail
0e90: 75 72 65 29 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  ure).</returns>.
0ea0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
0eb0: 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
0ec0: 6f 72 43 6f 64 65 20 52 65 6c 65 61 73 65 4d 65  orCode ReleaseMe
0ed0: 6d 6f 72 79 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f  mory();..    ///
0ee0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0ef0: 2f 2f 2f 20 53 68 75 74 64 6f 77 6e 20 74 68 65  /// Shutdown the
0f00: 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65 20 73   SQLite engine s
0f10: 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20 62 65  o that it can be
0f20: 20 72 65 73 74 61 72 74 65 64 20 77 69 74 68 20   restarted with 
0f30: 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 69 67  different config
0f40: 20 6f 70 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 2f   options...    /
0f50: 2f 2f 20 57 65 20 64 65 70 65 6e 64 20 6f 6e 20  // We depend on 
0f60: 61 75 74 6f 20 69 6e 69 74 69 61 6c 69 7a 61 74  auto initializat
0f70: 69 6f 6e 20 74 6f 20 72 65 63 6f 76 65 72 2e 0d  ion to recover..
0f80: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0f90: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
0fa0: 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74  l abstract SQLit
0fb0: 65 45 72 72 6f 72 43 6f 64 65 20 53 68 75 74 64  eErrorCode Shutd
0fc0: 6f 77 6e 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20  own();..    /// 
0fd0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0fe0: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
0ff0: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20   the associated 
1000: 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63 74 69 6f  native connectio
1010: 6e 20 68 61 6e 64 6c 65 20 69 73 20 6f 70 65 6e  n handle is open
1020: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1030: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
1040: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
1050: 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 61 20  / Non-zero if a 
1060: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1070: 69 6f 6e 20 69 73 20 6f 70 65 6e 2e 0d 0a 20 20  ion is open...  
1080: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1090: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
10a0: 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 4f  bstract bool IsO
10b0: 70 65 6e 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20  pen();..    /// 
10c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10d0: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 66  // Returns the f
10e0: 75 6c 6c 79 20 71 75 61 6c 69 66 69 65 64 20 70  ully qualified p
10f0: 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
1100: 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  e for the curren
1110: 74 6c 79 20 6f 70 65 6e 0d 0a 20 20 20 20 2f 2f  tly open..    //
1120: 2f 20 64 61 74 61 62 61 73 65 2c 20 69 66 20 61  / database, if a
1130: 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ny...    /// </s
1140: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1150: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62   <param name="db
1160: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  Name">..    /// 
1170: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
1180: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
1190: 65 20 74 6f 20 71 75 65 72 79 2e 0d 0a 20 20 20  e to query...   
11a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
11c0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 75  ..    /// The fu
11d0: 6c 6c 79 20 71 75 61 6c 69 66 69 65 64 20 70 61  lly qualified pa
11e0: 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65  th and file name
11f0: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
1200: 6c 79 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65  ly open database
1210: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 69 66 20 61 6e  ,..    /// if an
1220: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  y...    /// </re
1230: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1240: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1250: 72 69 6e 67 20 47 65 74 46 69 6c 65 4e 61 6d 65  ring GetFileName
1260: 28 73 74 72 69 6e 67 20 64 62 4e 61 6d 65 29 3b  (string dbName);
1270: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1280: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 70 65  ry>..    /// Ope
1290: 6e 73 20 61 20 64 61 74 61 62 61 73 65 2e 0d 0a  ns a database...
12a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
12c0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  arks>..    /// I
12d0: 6d 70 6c 65 6d 65 6e 74 65 72 73 20 73 68 6f 75  mplementers shou
12e0: 6c 64 20 63 61 6c 6c 20 53 51 4c 69 74 65 46 75  ld call SQLiteFu
12f0: 6e 63 74 69 6f 6e 2e 42 69 6e 64 46 75 6e 63 74  nction.BindFunct
1300: 69 6f 6e 73 28 29 20 61 6e 64 20 73 61 76 65 20  ions() and save 
1310: 74 68 65 20 61 72 72 61 79 20 61 66 74 65 72 20  the array after 
1320: 6f 70 65 6e 69 6e 67 20 61 20 63 6f 6e 6e 65 63  opening a connec
1330: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f  tion..    /// to
1340: 20 62 69 6e 64 20 61 6c 6c 20 61 74 74 72 69 62   bind all attrib
1350: 75 74 65 64 20 75 73 65 72 2d 64 65 66 69 6e 65  uted user-define
1360: 64 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 20  d functions and 
1370: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
1380: 63 65 73 20 74 6f 20 74 68 65 20 6e 65 77 20 63  ces to the new c
1390: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
13a0: 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
13b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
13c0: 61 6d 65 3d 22 73 74 72 46 69 6c 65 6e 61 6d 65  ame="strFilename
13d0: 22 3e 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 6f  ">The filename o
13e0: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  f the database t
13f0: 6f 20 6f 70 65 6e 2e 20 20 53 51 4c 69 74 65 20  o open.  SQLite 
1400: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 72  automatically cr
1410: 65 61 74 65 73 20 69 74 20 69 66 20 69 74 20 64  eates it if it d
1420: 6f 65 73 6e 27 74 20 65 78 69 73 74 2e 3c 2f 70  oesn't exist.</p
1430: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
1440: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 66 73 4e  param name="vfsN
1450: 61 6d 65 22 3e 54 68 65 20 6e 61 6d 65 20 6f 66  ame">The name of
1460: 20 74 68 65 20 56 46 53 20 74 6f 20 75 73 65 20   the VFS to use 
1470: 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 20 75 73 65  -OR- null to use
1480: 20 74 68 65 20 64 65 66 61 75 6c 74 20 56 46 53   the default VFS
1490: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
14a0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
14b0: 63 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 22  connectionFlags"
14c0: 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63  >The flags assoc
14d0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
14e0: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
14f0: 20 6f 62 6a 65 63 74 3c 2f 70 61 72 61 6d 3e 0d   object</param>.
1500: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
1510: 6e 61 6d 65 3d 22 6f 70 65 6e 46 6c 61 67 73 22  name="openFlags"
1520: 3e 54 68 65 20 6f 70 65 6e 20 66 6c 61 67 73 20  >The open flags 
1530: 74 6f 20 75 73 65 20 77 68 65 6e 20 63 72 65 61  to use when crea
1540: 74 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74  ting the connect
1550: 69 6f 6e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ion</param>..   
1560: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1570: 3d 22 6d 61 78 50 6f 6f 6c 53 69 7a 65 22 3e 54  ="maxPoolSize">T
1580: 68 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20  he maximum size 
1590: 6f 66 20 74 68 65 20 70 6f 6f 6c 20 66 6f 72 20  of the pool for 
15a0: 74 68 65 20 67 69 76 65 6e 20 66 69 6c 65 6e 61  the given filena
15b0: 6d 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  me</param>..    
15c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
15d0: 22 75 73 65 50 6f 6f 6c 22 3e 49 66 20 74 72 75  "usePool">If tru
15e0: 65 2c 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  e, the connectio
15f0: 6e 20 63 61 6e 20 62 65 20 70 75 6c 6c 65 64 20  n can be pulled 
1600: 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74  from the connect
1610: 69 6f 6e 20 70 6f 6f 6c 3c 2f 70 61 72 61 6d 3e  ion pool</param>
1620: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
1630: 62 73 74 72 61 63 74 20 76 6f 69 64 20 4f 70 65  bstract void Ope
1640: 6e 28 73 74 72 69 6e 67 20 73 74 72 46 69 6c 65  n(string strFile
1650: 6e 61 6d 65 2c 20 73 74 72 69 6e 67 20 76 66 73  name, string vfs
1660: 4e 61 6d 65 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  Name, SQLiteConn
1670: 65 63 74 69 6f 6e 46 6c 61 67 73 20 63 6f 6e 6e  ectionFlags conn
1680: 65 63 74 69 6f 6e 46 6c 61 67 73 2c 20 53 51 4c  ectionFlags, SQL
1690: 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
16a0: 20 6f 70 65 6e 46 6c 61 67 73 2c 20 69 6e 74 20   openFlags, int 
16b0: 6d 61 78 50 6f 6f 6c 53 69 7a 65 2c 20 62 6f 6f  maxPoolSize, boo
16c0: 6c 20 75 73 65 50 6f 6f 6c 29 3b 0d 0a 20 20 20  l usePool);..   
16d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16e0: 20 20 20 20 2f 2f 2f 20 43 6c 6f 73 65 73 20 74      /// Closes t
16f0: 68 65 20 63 75 72 72 65 6e 74 6c 79 2d 6f 70 65  he currently-ope
1700: 6e 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20  n database...   
1710: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1720: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b  .    /// <remark
1730: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 66 74 65  s>..    /// Afte
1740: 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 68  r the database h
1750: 61 73 20 62 65 65 6e 20 63 6c 6f 73 65 64 20 69  as been closed i
1760: 6d 70 6c 65 6d 65 74 65 72 73 20 73 68 6f 75 6c  mplemeters shoul
1770: 64 20 63 61 6c 6c 20 53 51 4c 69 74 65 46 75 6e  d call SQLiteFun
1780: 63 74 69 6f 6e 2e 55 6e 62 69 6e 64 46 75 6e 63  ction.UnbindFunc
1790: 74 69 6f 6e 73 28 29 20 74 6f 20 64 65 61 6c 6c  tions() to deall
17a0: 6f 63 61 74 65 20 61 6c 6c 20 69 6e 74 65 72 6f  ocate all intero
17b0: 70 20 61 6c 6c 6f 63 61 74 65 64 0d 0a 20 20 20  p allocated..   
17c0: 20 2f 2f 2f 20 6d 65 6d 6f 72 79 20 61 73 73 6f   /// memory asso
17d0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
17e0: 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e  user-defined fun
17f0: 63 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6c 6c 61  ctions and colla
1800: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20 74  ting sequences t
1810: 69 65 64 20 74 6f 20 74 68 65 20 63 6c 6f 73 65  ied to the close
1820: 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  d connection... 
1830: 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73     /// </remarks
1840: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1850: 6d 20 6e 61 6d 65 3d 22 63 61 6e 54 68 72 6f 77  m name="canThrow
1860: 22 3e 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  ">Non-zero if th
1870: 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61  e operation is a
1880: 6c 6c 6f 77 65 64 20 74 6f 20 74 68 72 6f 77 20  llowed to throw 
1890: 65 78 63 65 70 74 69 6f 6e 73 2c 20 7a 65 72 6f  exceptions, zero
18a0: 20 6f 74 68 65 72 77 69 73 65 2e 3c 2f 70 61 72   otherwise.</par
18b0: 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  am>..    interna
18c0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
18d0: 43 6c 6f 73 65 28 62 6f 6f 6c 20 63 61 6e 54 68  Close(bool canTh
18e0: 72 6f 77 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  row);..    /// <
18f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1900: 2f 20 53 65 74 73 20 74 68 65 20 62 75 73 79 20  / Sets the busy 
1910: 74 69 6d 65 6f 75 74 20 6f 6e 20 74 68 65 20 63  timeout on the c
1920: 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 53 51 4c 69  onnection.  SQLi
1930: 74 65 43 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 63  teCommand will c
1940: 61 6c 6c 20 74 68 69 73 20 62 65 66 6f 72 65 20  all this before 
1950: 65 78 65 63 75 74 69 6e 67 20 61 6e 79 20 63 6f  executing any co
1960: 6d 6d 61 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  mmand...    /// 
1970: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1980: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1990: 22 6e 54 69 6d 65 6f 75 74 4d 53 22 3e 54 68 65  "nTimeoutMS">The
19a0: 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69   number of milli
19b0: 73 65 63 6f 6e 64 73 20 74 6f 20 77 61 69 74 20  seconds to wait 
19c0: 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69 6e 67  before returning
19d0: 20 53 51 4c 49 54 45 5f 42 55 53 59 3c 2f 70 61   SQLITE_BUSY</pa
19e0: 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ram>..    intern
19f0: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
1a00: 20 53 65 74 54 69 6d 65 6f 75 74 28 69 6e 74 20   SetTimeout(int 
1a10: 6e 54 69 6d 65 6f 75 74 4d 53 29 3b 0d 0a 20 20  nTimeoutMS);..  
1a20: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1a30: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
1a40: 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 65   the text of the
1a50: 20 6c 61 73 74 20 65 72 72 6f 72 20 69 73 73 75   last error issu
1a60: 65 64 20 62 79 20 53 51 4c 69 74 65 0d 0a 20 20  ed by SQLite..  
1a70: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1a80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
1a90: 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ns></returns>.. 
1aa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
1ab0: 72 61 63 74 20 73 74 72 69 6e 67 20 47 65 74 4c  ract string GetL
1ac0: 61 73 74 45 72 72 6f 72 28 29 3b 0d 0a 0d 0a 20  astError();.... 
1ad0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ae0: 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
1af0: 73 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68  s the text of th
1b00: 65 20 6c 61 73 74 20 65 72 72 6f 72 20 69 73 73  e last error iss
1b10: 75 65 64 20 62 79 20 53 51 4c 69 74 65 20 2d 4f  ued by SQLite -O
1b20: 52 2d 20 74 68 65 20 73 70 65 63 69 66 69 65 64  R- the specified
1b30: 20 64 65 66 61 75 6c 74 20 65 72 72 6f 72 20 74   default error t
1b40: 65 78 74 20 69 66 0d 0a 20 20 20 20 2f 2f 2f 20  ext if..    /// 
1b50: 6e 6f 6e 65 20 69 73 20 61 76 61 69 6c 61 62 6c  none is availabl
1b60: 65 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69 74  e from the SQLit
1b70: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
1b80: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1b90: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
1ba0: 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 56 61 6c  ram name="defVal
1bb0: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
1bc0: 65 20 65 72 72 6f 72 20 74 65 78 74 20 74 6f 20  e error text to 
1bd0: 72 65 74 75 72 6e 20 69 6e 20 74 68 65 20 65 76  return in the ev
1be0: 65 6e 74 20 74 68 61 74 20 6f 6e 65 20 69 73 20  ent that one is 
1bf0: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 66 72  not available fr
1c00: 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  om the SQLite co
1c10: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
1c20: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1c30: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1c40: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72  ..    /// The er
1c50: 72 6f 72 20 74 65 78 74 2e 0d 0a 20 20 20 20 2f  ror text...    /
1c60: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1c70: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
1c80: 72 61 63 74 20 73 74 72 69 6e 67 20 47 65 74 4c  ract string GetL
1c90: 61 73 74 45 72 72 6f 72 28 73 74 72 69 6e 67 20  astError(string 
1ca0: 64 65 66 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  defValue);....  
1cb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1cc0: 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 70 6f  .    /// When po
1cd0: 6f 6c 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64  oling is enabled
1ce0: 2c 20 66 6f 72 63 65 20 74 68 69 73 20 63 6f 6e  , force this con
1cf0: 6e 65 63 74 69 6f 6e 20 74 6f 20 62 65 20 64 69  nection to be di
1d00: 73 70 6f 73 65 64 20 72 61 74 68 65 72 20 74 68  sposed rather th
1d10: 61 6e 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74  an returned to t
1d20: 68 65 20 70 6f 6f 6c 0d 0a 20 20 20 20 2f 2f 2f  he pool..    ///
1d30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1d40: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
1d50: 63 74 20 76 6f 69 64 20 43 6c 65 61 72 50 6f 6f  ct void ClearPoo
1d60: 6c 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  l();....    /// 
1d70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1d80: 2f 2f 20 57 68 65 6e 20 70 6f 6f 6c 69 6e 67 20  // When pooling 
1d90: 69 73 20 65 6e 61 62 6c 65 64 2c 20 72 65 74 75  is enabled, retu
1da0: 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  rns the number o
1db0: 66 20 70 6f 6f 6c 20 65 6e 74 72 69 65 73 20 6d  f pool entries m
1dc0: 61 74 63 68 69 6e 67 20 74 68 65 20 63 75 72 72  atching the curr
1dd0: 65 6e 74 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  ent file name...
1de0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1df0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  y>..    /// <ret
1e00: 75 72 6e 73 3e 54 68 65 20 6e 75 6d 62 65 72 20  urns>The number 
1e10: 6f 66 20 70 6f 6f 6c 20 65 6e 74 72 69 65 73 20  of pool entries 
1e20: 6d 61 74 63 68 69 6e 67 20 74 68 65 20 63 75 72  matching the cur
1e30: 72 65 6e 74 20 66 69 6c 65 20 6e 61 6d 65 2e 3c  rent file name.<
1e40: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
1e50: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
1e60: 20 69 6e 74 20 43 6f 75 6e 74 50 6f 6f 6c 28 29   int CountPool()
1e70: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
1e80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1e90: 50 72 65 70 61 72 65 73 20 61 20 53 51 4c 20 73  Prepares a SQL s
1ea0: 74 61 74 65 6d 65 6e 74 20 66 6f 72 20 65 78 65  tatement for exe
1eb0: 63 75 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  cution...    ///
1ec0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1ed0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ee0: 3d 22 63 6e 6e 22 3e 54 68 65 20 73 6f 75 72 63  ="cnn">The sourc
1ef0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 65  e connection pre
1f00: 70 61 72 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61  paring the comma
1f10: 6e 64 2e 20 20 43 61 6e 20 62 65 20 6e 75 6c 6c  nd.  Can be null
1f20: 20 66 6f 72 20 61 6e 79 20 63 61 6c 6c 65 72 20   for any caller 
1f30: 65 78 63 65 70 74 20 4c 49 4e 51 3c 2f 70 61 72  except LINQ</par
1f40: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
1f50: 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 53 71 6c  ram name="strSql
1f60: 22 3e 54 68 65 20 53 51 4c 20 63 6f 6d 6d 61 6e  ">The SQL comman
1f70: 64 20 74 65 78 74 20 74 6f 20 70 72 65 70 61 72  d text to prepar
1f80: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1f90: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1fa0: 70 72 65 76 69 6f 75 73 22 3e 54 68 65 20 70 72  previous">The pr
1fb0: 65 76 69 6f 75 73 20 73 74 61 74 65 6d 65 6e 74  evious statement
1fc0: 20 69 6e 20 61 20 6d 75 6c 74 69 2d 73 74 61 74   in a multi-stat
1fd0: 65 6d 65 6e 74 20 63 6f 6d 6d 61 6e 64 2c 20 6f  ement command, o
1fe0: 72 20 6e 75 6c 6c 20 69 66 20 6e 6f 20 70 72 65  r null if no pre
1ff0: 76 69 6f 75 73 20 73 74 61 74 65 6d 65 6e 74 20  vious statement 
2000: 65 78 69 73 74 73 3c 2f 70 61 72 61 6d 3e 0d 0a  exists</param>..
2010: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2020: 61 6d 65 3d 22 74 69 6d 65 6f 75 74 4d 53 22 3e  ame="timeoutMS">
2030: 54 68 65 20 74 69 6d 65 6f 75 74 20 74 6f 20 77  The timeout to w
2040: 61 69 74 20 62 65 66 6f 72 65 20 61 62 6f 72 74  ait before abort
2050: 69 6e 67 20 74 68 65 20 70 72 65 70 61 72 65 3c  ing the prepare<
2060: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
2070: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74   <param name="st
2080: 72 52 65 6d 61 69 6e 22 3e 54 68 65 20 72 65 6d  rRemain">The rem
2090: 61 69 6e 64 65 72 20 6f 66 20 74 68 65 20 73 74  ainder of the st
20a0: 61 74 65 6d 65 6e 74 20 74 68 61 74 20 77 61 73  atement that was
20b0: 20 6e 6f 74 20 70 72 6f 63 65 73 73 65 64 2e 20   not processed. 
20c0: 20 45 61 63 68 20 63 61 6c 6c 20 74 6f 20 70 72   Each call to pr
20d0: 65 70 61 72 65 20 70 61 72 73 65 73 20 74 68 65  epare parses the
20e0: 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 20 75 70  ..    /// SQL up
20f0: 20 74 6f 20 74 6f 20 65 69 74 68 65 72 20 74 68   to to either th
2100: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 74 65 78  e end of the tex
2110: 74 20 6f 72 20 74 6f 20 74 68 65 20 66 69 72 73  t or to the firs
2120: 74 20 73 65 6d 69 2d 63 6f 6c 6f 6e 20 64 65 6c  t semi-colon del
2130: 69 6d 69 74 65 72 2e 20 20 54 68 65 20 72 65 6d  imiter.  The rem
2140: 61 69 6e 69 6e 67 20 74 65 78 74 20 69 73 20 72  aining text is r
2150: 65 74 75 72 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f  eturned..    ///
2160: 20 68 65 72 65 20 66 6f 72 20 61 20 73 75 62 73   here for a subs
2170: 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20 50  equent call to P
2180: 72 65 70 61 72 65 28 29 20 75 6e 74 69 6c 20 61  repare() until a
2190: 6c 6c 20 74 68 65 20 74 65 78 74 20 68 61 73 20  ll the text has 
21a0: 62 65 65 6e 20 70 72 6f 63 65 73 73 65 64 2e 3c  been processed.<
21b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
21c0: 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e   <returns>Return
21d0: 73 20 61 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64  s an initialized
21e0: 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74   SQLiteStatement
21f0: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
2200: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2210: 63 74 20 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ct SQLiteStateme
2220: 6e 74 20 50 72 65 70 61 72 65 28 53 51 4c 69 74  nt Prepare(SQLit
2230: 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6e 6e 2c  eConnection cnn,
2240: 20 73 74 72 69 6e 67 20 73 74 72 53 71 6c 2c 20   string strSql, 
2250: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
2260: 70 72 65 76 69 6f 75 73 2c 20 75 69 6e 74 20 74  previous, uint t
2270: 69 6d 65 6f 75 74 4d 53 2c 20 72 65 66 20 73 74  imeoutMS, ref st
2280: 72 69 6e 67 20 73 74 72 52 65 6d 61 69 6e 29 3b  ring strRemain);
2290: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
22a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 74 65  ry>..    /// Ste
22b0: 70 73 20 74 68 72 6f 75 67 68 20 61 20 70 72 65  ps through a pre
22c0: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2e  pared statement.
22d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
22e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
22f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 6d 74 22  aram name="stmt"
2300: 3e 54 68 65 20 53 51 4c 69 74 65 53 74 61 74 65  >The SQLiteState
2310: 6d 65 6e 74 20 74 6f 20 73 74 65 70 20 74 68 72  ment to step thr
2320: 6f 75 67 68 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ough</param>..  
2330: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
2340: 72 75 65 20 69 66 20 61 20 72 6f 77 20 77 61 73  rue if a row was
2350: 20 72 65 74 75 72 6e 65 64 2c 20 46 61 6c 73 65   returned, False
2360: 20 69 66 20 6e 6f 74 2e 3c 2f 72 65 74 75 72 6e   if not.</return
2370: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
2380: 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 53   abstract bool S
2390: 74 65 70 28 53 51 4c 69 74 65 53 74 61 74 65 6d  tep(SQLiteStatem
23a0: 65 6e 74 20 73 74 6d 74 29 3b 0d 0a 20 20 20 20  ent stmt);..    
23b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23c0: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e     /// Returns n
23d0: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
23e0: 70 65 63 69 66 69 65 64 20 73 74 61 74 65 6d 65  pecified stateme
23f0: 6e 74 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79 20  nt is read-only 
2400: 69 6e 20 6e 61 74 75 72 65 2e 0d 0a 20 20 20 20  in nature...    
2410: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2420: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2430: 61 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 73  ame="stmt">The s
2440: 74 61 74 65 6d 65 6e 74 20 74 6f 20 63 68 65 63  tatement to chec
2450: 6b 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  k.</param>..    
2460: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 72 75  /// <returns>Tru
2470: 65 20 69 66 20 74 68 65 20 6f 75 74 65 72 20 71  e if the outer q
2480: 75 65 72 79 20 69 73 20 72 65 61 64 2d 6f 6e 6c  uery is read-onl
2490: 79 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  y.</returns>..  
24a0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
24b0: 61 63 74 20 62 6f 6f 6c 20 49 73 52 65 61 64 4f  act bool IsReadO
24c0: 6e 6c 79 28 53 51 4c 69 74 65 53 74 61 74 65 6d  nly(SQLiteStatem
24d0: 65 6e 74 20 73 74 6d 74 29 3b 0d 0a 20 20 20 20  ent stmt);..    
24e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
24f0: 20 20 20 2f 2f 2f 20 52 65 73 65 74 73 20 61 20     /// Resets a 
2500: 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2510: 6e 74 20 73 6f 20 69 74 20 63 61 6e 20 62 65 20  nt so it can be 
2520: 65 78 65 63 75 74 65 64 20 61 67 61 69 6e 2e 20  executed again. 
2530: 20 49 66 20 74 68 65 20 65 72 72 6f 72 20 72 65   If the error re
2540: 74 75 72 6e 65 64 20 69 73 20 53 51 4c 49 54 45  turned is SQLITE
2550: 5f 53 43 48 45 4d 41 2c 0d 0a 20 20 20 20 2f 2f  _SCHEMA,..    //
2560: 2f 20 74 72 61 6e 73 70 61 72 65 6e 74 6c 79 20  / transparently 
2570: 61 74 74 65 6d 70 74 20 74 6f 20 72 65 62 75 69  attempt to rebui
2580: 6c 64 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  ld the SQL state
2590: 6d 65 6e 74 20 61 6e 64 20 74 68 72 6f 77 20 61  ment and throw a
25a0: 6e 20 65 72 72 6f 72 20 69 66 20 74 68 61 74 20  n error if that 
25b0: 77 61 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65  was not possible
25c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
25d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
25e0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 6d 74  param name="stmt
25f0: 22 3e 54 68 65 20 73 74 61 74 65 6d 65 6e 74 20  ">The statement 
2600: 74 6f 20 72 65 73 65 74 3c 2f 70 61 72 61 6d 3e  to reset</param>
2610: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
2620: 6e 73 3e 52 65 74 75 72 6e 73 20 2d 31 20 69 66  ns>Returns -1 if
2630: 20 74 68 65 20 73 63 68 65 6d 61 20 63 68 61 6e   the schema chan
2640: 67 65 64 20 77 68 69 6c 65 20 72 65 73 65 74 74  ged while resett
2650: 69 6e 67 2c 20 30 20 69 66 20 74 68 65 20 72 65  ing, 0 if the re
2660: 73 65 74 20 77 61 73 20 73 75 63 65 73 73 66 75  set was sucessfu
2670: 6c 20 6f 72 20 36 20 28 53 51 4c 49 54 45 5f 4c  l or 6 (SQLITE_L
2680: 4f 43 4b 45 44 29 20 69 66 20 74 68 65 20 72 65  OCKED) if the re
2690: 73 65 74 20 66 61 69 6c 65 64 20 64 75 65 20 74  set failed due t
26a0: 6f 20 61 20 6c 6f 63 6b 3c 2f 72 65 74 75 72 6e  o a lock</return
26b0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
26c0: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
26d0: 45 72 72 6f 72 43 6f 64 65 20 52 65 73 65 74 28  ErrorCode Reset(
26e0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
26f0: 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  stmt);....    //
2700: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2710: 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
2720: 20 69 6e 74 65 72 72 75 70 74 20 74 68 65 20 71   interrupt the q
2730: 75 65 72 79 20 63 75 72 72 65 6e 74 6c 79 20 65  uery currently e
2740: 78 65 63 75 74 69 6e 67 20 6f 6e 20 74 68 65 20  xecuting on the 
2750: 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20  associated..    
2760: 2f 2f 2f 20 6e 61 74 69 76 65 20 64 61 74 61 62  /// native datab
2770: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  ase connection..
2780: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
2790: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
27a0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
27b0: 43 61 6e 63 65 6c 28 29 3b 0d 0a 0d 0a 20 20 20  Cancel();....   
27c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
27d0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66 75 6e      /// This fun
27e0: 63 74 69 6f 6e 20 62 69 6e 64 73 20 61 20 75 73  ction binds a us
27f0: 65 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74  er-defined funct
2800: 69 6f 6e 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65  ion to the conne
2810: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ction...    /// 
2820: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2830: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2840: 22 66 75 6e 63 74 69 6f 6e 41 74 74 72 69 62 75  "functionAttribu
2850: 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  te">..    /// Th
2860: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
2870: 69 74 65 46 75 6e 63 74 69 6f 6e 41 74 74 72 69  iteFunctionAttri
2880: 62 75 74 65 22 2f 3e 20 6f 62 6a 65 63 74 20 69  bute"/> object i
2890: 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69  nstance containi
28a0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20  ng..    /// the 
28b0: 6d 65 74 61 64 61 74 61 20 66 6f 72 20 74 68 65  metadata for the
28c0: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
28d0: 62 6f 75 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  bound...    /// 
28e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
28f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
2900: 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f  unction">..    /
2910: 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
2920: 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e  ="SQLiteFunction
2930: 22 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  "/> object insta
2940: 6e 63 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65  nce that impleme
2950: 6e 74 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  nts the..    ///
2960: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
2970: 62 6f 75 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  bound...    /// 
2980: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2990: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
29a0: 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  lags">..    /// 
29b0: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
29c0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
29d0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
29e0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
29f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69   </param>..    i
2a00: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
2a10: 20 76 6f 69 64 20 42 69 6e 64 46 75 6e 63 74 69   void BindFuncti
2a20: 6f 6e 28 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  on(SQLiteFunctio
2a30: 6e 41 74 74 72 69 62 75 74 65 20 66 75 6e 63 74  nAttribute funct
2a40: 69 6f 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51  ionAttribute, SQ
2a50: 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e  LiteFunction fun
2a60: 63 74 69 6f 6e 2c 20 53 51 4c 69 74 65 43 6f 6e  ction, SQLiteCon
2a70: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
2a80: 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  gs);....    /// 
2a90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2aa0: 2f 2f 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  // This function
2ab0: 20 75 6e 62 69 6e 64 73 20 61 20 75 73 65 72 2d   unbinds a user-
2ac0: 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
2ad0: 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63   from the connec
2ae0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
2af0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
2b00: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2b10: 66 75 6e 63 74 69 6f 6e 41 74 74 72 69 62 75 74  functionAttribut
2b20: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
2b30: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2b40: 74 65 46 75 6e 63 74 69 6f 6e 41 74 74 72 69 62  teFunctionAttrib
2b50: 75 74 65 22 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  ute"/> object in
2b60: 73 74 61 6e 63 65 20 63 6f 6e 74 61 69 6e 69 6e  stance containin
2b70: 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 6d  g..    /// the m
2b80: 65 74 61 64 61 74 61 20 66 6f 72 20 74 68 65 20  etadata for the 
2b90: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 75  function to be u
2ba0: 6e 62 6f 75 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f  nbound...    ///
2bb0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2bc0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2bd0: 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f  flags">..    ///
2be0: 20 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63   The flags assoc
2bf0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
2c00: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
2c10: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f   object...    //
2c20: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2c30: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 4e 6f 6e  /// <returns>Non
2c40: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 66 75 6e  -zero if the fun
2c50: 63 74 69 6f 6e 20 77 61 73 20 75 6e 62 6f 75 6e  ction was unboun
2c60: 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  d.</returns>..  
2c70: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
2c80: 61 63 74 20 62 6f 6f 6c 20 55 6e 62 69 6e 64 46  act bool UnbindF
2c90: 75 6e 63 74 69 6f 6e 28 53 51 4c 69 74 65 46 75  unction(SQLiteFu
2ca0: 6e 63 74 69 6f 6e 41 74 74 72 69 62 75 74 65 20  nctionAttribute 
2cb0: 66 75 6e 63 74 69 6f 6e 41 74 74 72 69 62 75 74  functionAttribut
2cc0: 65 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  e, SQLiteConnect
2cd0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29 3b  ionFlags flags);
2ce0: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
2cf0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42   abstract void B
2d00: 69 6e 64 5f 44 6f 75 62 6c 65 28 53 51 4c 69 74  ind_Double(SQLit
2d10: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c  eStatement stmt,
2d20: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2d30: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e  nFlags flags, in
2d40: 74 20 69 6e 64 65 78 2c 20 64 6f 75 62 6c 65 20  t index, double 
2d50: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
2d60: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
2d70: 6f 69 64 20 42 69 6e 64 5f 49 6e 74 33 32 28 53  oid Bind_Int32(S
2d80: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
2d90: 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  tmt, SQLiteConne
2da0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
2db0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 49 6e 74  , int index, Int
2dc0: 33 32 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  32 value);..    
2dd0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
2de0: 74 20 76 6f 69 64 20 42 69 6e 64 5f 55 49 6e 74  t void Bind_UInt
2df0: 33 32 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  32(SQLiteStateme
2e00: 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43  nt stmt, SQLiteC
2e10: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
2e20: 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c  lags, int index,
2e30: 20 55 49 6e 74 33 32 20 76 61 6c 75 65 29 3b 0d   UInt32 value);.
2e40: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
2e50: 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64  stract void Bind
2e60: 5f 49 6e 74 36 34 28 53 51 4c 69 74 65 53 74 61  _Int64(SQLiteSta
2e70: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c  tement stmt, SQL
2e80: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
2e90: 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e  gs flags, int in
2ea0: 64 65 78 2c 20 49 6e 74 36 34 20 76 61 6c 75 65  dex, Int64 value
2eb0: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
2ec0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42   abstract void B
2ed0: 69 6e 64 5f 55 49 6e 74 36 34 28 53 51 4c 69 74  ind_UInt64(SQLit
2ee0: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c  eStatement stmt,
2ef0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2f00: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e  nFlags flags, in
2f10: 74 20 69 6e 64 65 78 2c 20 55 49 6e 74 36 34 20  t index, UInt64 
2f20: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
2f30: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
2f40: 6f 69 64 20 42 69 6e 64 5f 42 6f 6f 6c 65 61 6e  oid Bind_Boolean
2f50: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
2f60: 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e   stmt, SQLiteCon
2f70: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
2f80: 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 62  gs, int index, b
2f90: 6f 6f 6c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ool value);..   
2fa0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2fb0: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 54 65 78  ct void Bind_Tex
2fc0: 74 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  t(SQLiteStatemen
2fd0: 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f  t stmt, SQLiteCo
2fe0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
2ff0: 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  ags, int index, 
3000: 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a  string value);..
3010: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3020: 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64 5f  tract void Bind_
3030: 42 6c 6f 62 28 53 51 4c 69 74 65 53 74 61 74 65  Blob(SQLiteState
3040: 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74  ment stmt, SQLit
3050: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
3060: 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65   flags, int inde
3070: 78 2c 20 62 79 74 65 5b 5d 20 62 6c 6f 62 44 61  x, byte[] blobDa
3080: 74 61 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ta);..    intern
3090: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
30a0: 20 42 69 6e 64 5f 44 61 74 65 54 69 6d 65 28 53   Bind_DateTime(S
30b0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
30c0: 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  tmt, SQLiteConne
30d0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
30e0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 44 61 74  , int index, Dat
30f0: 65 54 69 6d 65 20 64 74 29 3b 0d 0a 20 20 20 20  eTime dt);..    
3100: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3110: 74 20 76 6f 69 64 20 42 69 6e 64 5f 4e 75 6c 6c  t void Bind_Null
3120: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3130: 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e   stmt, SQLiteCon
3140: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
3150: 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  gs, int index);.
3160: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
3170: 61 62 73 74 72 61 63 74 20 69 6e 74 20 42 69 6e  abstract int Bin
3180: 64 5f 50 61 72 61 6d 43 6f 75 6e 74 28 53 51 4c  d_ParamCount(SQL
3190: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
31a0: 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  t, SQLiteConnect
31b0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29 3b  ionFlags flags);
31c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
31d0: 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20 42  bstract string B
31e0: 69 6e 64 5f 50 61 72 61 6d 4e 61 6d 65 28 53 51  ind_ParamName(SQ
31f0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3200: 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  mt, SQLiteConnec
3210: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c  tionFlags flags,
3220: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20   int index);..  
3230: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3240: 61 63 74 20 69 6e 74 20 42 69 6e 64 5f 50 61 72  act int Bind_Par
3250: 61 6d 49 6e 64 65 78 28 53 51 4c 69 74 65 53 74  amIndex(SQLiteSt
3260: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
3270: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3280: 61 67 73 20 66 6c 61 67 73 2c 20 73 74 72 69 6e  ags flags, strin
3290: 67 20 70 61 72 61 6d 4e 61 6d 65 29 3b 0d 0a 0d  g paramName);...
32a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
32b0: 73 74 72 61 63 74 20 69 6e 74 20 43 6f 6c 75 6d  stract int Colum
32c0: 6e 43 6f 75 6e 74 28 53 51 4c 69 74 65 53 74 61  nCount(SQLiteSta
32d0: 74 65 6d 65 6e 74 20 73 74 6d 74 29 3b 0d 0a 20  tement stmt);.. 
32e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
32f0: 72 61 63 74 20 73 74 72 69 6e 67 20 43 6f 6c 75  ract string Colu
3300: 6d 6e 4e 61 6d 65 28 53 51 4c 69 74 65 53 74 61  mnName(SQLiteSta
3310: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3320: 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e   index);..    in
3330: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3340: 54 79 70 65 41 66 66 69 6e 69 74 79 20 43 6f 6c  TypeAffinity Col
3350: 75 6d 6e 41 66 66 69 6e 69 74 79 28 53 51 4c 69  umnAffinity(SQLi
3360: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3370: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
3380: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3390: 72 61 63 74 20 73 74 72 69 6e 67 20 43 6f 6c 75  ract string Colu
33a0: 6d 6e 54 79 70 65 28 53 51 4c 69 74 65 53 74 61  mnType(SQLiteSta
33b0: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
33c0: 20 69 6e 64 65 78 2c 20 72 65 66 20 54 79 70 65   index, ref Type
33d0: 41 66 66 69 6e 69 74 79 20 6e 41 66 66 69 6e 69  Affinity nAffini
33e0: 74 79 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ty);..    intern
33f0: 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20  al abstract int 
3400: 43 6f 6c 75 6d 6e 49 6e 64 65 78 28 53 51 4c 69  ColumnIndex(SQLi
3410: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3420: 2c 20 73 74 72 69 6e 67 20 63 6f 6c 75 6d 6e 4e  , string columnN
3430: 61 6d 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  ame);..    inter
3440: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72  nal abstract str
3450: 69 6e 67 20 43 6f 6c 75 6d 6e 4f 72 69 67 69 6e  ing ColumnOrigin
3460: 61 6c 4e 61 6d 65 28 53 51 4c 69 74 65 53 74 61  alName(SQLiteSta
3470: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3480: 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e   index);..    in
3490: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
34a0: 73 74 72 69 6e 67 20 43 6f 6c 75 6d 6e 44 61 74  string ColumnDat
34b0: 61 62 61 73 65 4e 61 6d 65 28 53 51 4c 69 74 65  abaseName(SQLite
34c0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
34d0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
34e0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
34f0: 63 74 20 73 74 72 69 6e 67 20 43 6f 6c 75 6d 6e  ct string Column
3500: 54 61 62 6c 65 4e 61 6d 65 28 53 51 4c 69 74 65  TableName(SQLite
3510: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3520: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
3530: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3540: 63 74 20 76 6f 69 64 20 43 6f 6c 75 6d 6e 4d 65  ct void ColumnMe
3550: 74 61 44 61 74 61 28 73 74 72 69 6e 67 20 64 61  taData(string da
3560: 74 61 42 61 73 65 2c 20 73 74 72 69 6e 67 20 74  taBase, string t
3570: 61 62 6c 65 2c 20 73 74 72 69 6e 67 20 63 6f 6c  able, string col
3580: 75 6d 6e 2c 20 72 65 66 20 73 74 72 69 6e 67 20  umn, ref string 
3590: 64 61 74 61 54 79 70 65 2c 20 72 65 66 20 73 74  dataType, ref st
35a0: 72 69 6e 67 20 63 6f 6c 6c 61 74 65 53 65 71 75  ring collateSequ
35b0: 65 6e 63 65 2c 20 72 65 66 20 62 6f 6f 6c 20 6e  ence, ref bool n
35c0: 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 62 6f 6f 6c  otNull, ref bool
35d0: 20 70 72 69 6d 61 72 79 4b 65 79 2c 20 72 65 66   primaryKey, ref
35e0: 20 62 6f 6f 6c 20 61 75 74 6f 49 6e 63 72 65 6d   bool autoIncrem
35f0: 65 6e 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  ent);..    inter
3600: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
3610: 64 20 47 65 74 49 6e 64 65 78 43 6f 6c 75 6d 6e  d GetIndexColumn
3620: 45 78 74 65 6e 64 65 64 49 6e 66 6f 28 73 74 72  ExtendedInfo(str
3630: 69 6e 67 20 64 61 74 61 62 61 73 65 2c 20 73 74  ing database, st
3640: 72 69 6e 67 20 69 6e 64 65 78 2c 20 73 74 72 69  ring index, stri
3650: 6e 67 20 63 6f 6c 75 6d 6e 2c 20 72 65 66 20 69  ng column, ref i
3660: 6e 74 20 73 6f 72 74 4d 6f 64 65 2c 20 72 65 66  nt sortMode, ref
3670: 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c 20 72 65   int onError, re
3680: 66 20 73 74 72 69 6e 67 20 63 6f 6c 6c 61 74 69  f string collati
3690: 6f 6e 53 65 71 75 65 6e 63 65 29 3b 0d 0a 0d 0a  onSequence);....
36a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
36b0: 74 72 61 63 74 20 6f 62 6a 65 63 74 20 47 65 74  tract object Get
36c0: 4f 62 6a 65 63 74 28 53 51 4c 69 74 65 53 74 61  Object(SQLiteSta
36d0: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
36e0: 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e   index);..    in
36f0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3700: 64 6f 75 62 6c 65 20 47 65 74 44 6f 75 62 6c 65  double GetDouble
3710: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3720: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
3730: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3740: 20 61 62 73 74 72 61 63 74 20 42 6f 6f 6c 65 61   abstract Boolea
3750: 6e 20 47 65 74 42 6f 6f 6c 65 61 6e 28 53 51 4c  n GetBoolean(SQL
3760: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
3770: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
3780: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3790: 74 72 61 63 74 20 53 42 79 74 65 20 47 65 74 53  tract SByte GetS
37a0: 42 79 74 65 28 53 51 4c 69 74 65 53 74 61 74 65  Byte(SQLiteState
37b0: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
37c0: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
37d0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 42 79  rnal abstract By
37e0: 74 65 20 47 65 74 42 79 74 65 28 53 51 4c 69 74  te GetByte(SQLit
37f0: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c  eStatement stmt,
3800: 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20   int index);..  
3810: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3820: 61 63 74 20 49 6e 74 31 36 20 47 65 74 49 6e 74  act Int16 GetInt
3830: 31 36 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  16(SQLiteStateme
3840: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3850: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
3860: 61 6c 20 61 62 73 74 72 61 63 74 20 55 49 6e 74  al abstract UInt
3870: 31 36 20 47 65 74 55 49 6e 74 31 36 28 53 51 4c  16 GetUInt16(SQL
3880: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
3890: 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a  t, int index);..
38a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
38b0: 74 72 61 63 74 20 49 6e 74 33 32 20 47 65 74 49  tract Int32 GetI
38c0: 6e 74 33 32 28 53 51 4c 69 74 65 53 74 61 74 65  nt32(SQLiteState
38d0: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
38e0: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
38f0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 55 49  rnal abstract UI
3900: 6e 74 33 32 20 47 65 74 55 49 6e 74 33 32 28 53  nt32 GetUInt32(S
3910: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
3920: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b  tmt, int index);
3930: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
3940: 62 73 74 72 61 63 74 20 49 6e 74 36 34 20 47 65  bstract Int64 Ge
3950: 74 49 6e 74 36 34 28 53 51 4c 69 74 65 53 74 61  tInt64(SQLiteSta
3960: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3970: 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e   index);..    in
3980: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3990: 55 49 6e 74 36 34 20 47 65 74 55 49 6e 74 36 34  UInt64 GetUInt64
39a0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
39b0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
39c0: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
39d0: 20 61 62 73 74 72 61 63 74 20 73 74 72 69 6e 67   abstract string
39e0: 20 47 65 74 54 65 78 74 28 53 51 4c 69 74 65 53   GetText(SQLiteS
39f0: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69  tatement stmt, i
3a00: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20  nt index);..    
3a10: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3a20: 74 20 6c 6f 6e 67 20 47 65 74 42 79 74 65 73 28  t long GetBytes(
3a30: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3a40: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
3a50: 20 69 6e 74 20 6e 44 61 74 61 6f 66 66 73 65 74   int nDataoffset
3a60: 2c 20 62 79 74 65 5b 5d 20 62 44 65 73 74 2c 20  , byte[] bDest, 
3a70: 69 6e 74 20 6e 53 74 61 72 74 2c 20 69 6e 74 20  int nStart, int 
3a80: 6e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 69  nLength);..    i
3a90: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
3aa0: 20 6c 6f 6e 67 20 47 65 74 43 68 61 72 73 28 53   long GetChars(S
3ab0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
3ac0: 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  tmt, int index, 
3ad0: 69 6e 74 20 6e 44 61 74 61 6f 66 66 73 65 74 2c  int nDataoffset,
3ae0: 20 63 68 61 72 5b 5d 20 62 44 65 73 74 2c 20 69   char[] bDest, i
3af0: 6e 74 20 6e 53 74 61 72 74 2c 20 69 6e 74 20 6e  nt nStart, int n
3b00: 4c 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 69 6e  Length);..    in
3b10: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3b20: 44 61 74 65 54 69 6d 65 20 47 65 74 44 61 74 65  DateTime GetDate
3b30: 54 69 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65  Time(SQLiteState
3b40: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
3b50: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
3b60: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f  rnal abstract bo
3b70: 6f 6c 20 49 73 4e 75 6c 6c 28 53 51 4c 69 74 65  ol IsNull(SQLite
3b80: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3b90: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20  int index);.... 
3ba0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3bb0: 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
3bc0: 43 6f 64 65 20 43 72 65 61 74 65 43 6f 6c 6c 61  Code CreateColla
3bd0: 74 69 6f 6e 28 73 74 72 69 6e 67 20 73 74 72 43  tion(string strC
3be0: 6f 6c 6c 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65  ollation, SQLite
3bf0: 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 2c 20  Collation func, 
3c00: 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20  SQLiteCollation 
3c10: 66 75 6e 63 31 36 2c 20 62 6f 6f 6c 20 40 74 68  func16, bool @th
3c20: 72 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  row);..    inter
3c30: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c  nal abstract SQL
3c40: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65  iteErrorCode Cre
3c50: 61 74 65 46 75 6e 63 74 69 6f 6e 28 73 74 72 69  ateFunction(stri
3c60: 6e 67 20 73 74 72 46 75 6e 63 74 69 6f 6e 2c 20  ng strFunction, 
3c70: 69 6e 74 20 6e 41 72 67 73 2c 20 62 6f 6f 6c 20  int nArgs, bool 
3c80: 6e 65 65 64 43 6f 6c 6c 53 65 71 2c 20 53 51 4c  needCollSeq, SQL
3c90: 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  iteCallback func
3ca0: 2c 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b  , SQLiteCallback
3cb0: 20 66 75 6e 63 73 74 65 70 2c 20 53 51 4c 69 74   funcstep, SQLit
3cc0: 65 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66  eFinalCallback f
3cd0: 75 6e 63 66 69 6e 61 6c 2c 20 62 6f 6f 6c 20 40  uncfinal, bool @
3ce0: 74 68 72 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74  throw);..    int
3cf0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 43  ernal abstract C
3d00: 6f 6c 6c 61 74 69 6f 6e 53 65 71 75 65 6e 63 65  ollationSequence
3d10: 20 47 65 74 43 6f 6c 6c 61 74 69 6f 6e 53 65 71   GetCollationSeq
3d20: 75 65 6e 63 65 28 53 51 4c 69 74 65 46 75 6e 63  uence(SQLiteFunc
3d30: 74 69 6f 6e 20 66 75 6e 63 2c 20 49 6e 74 50 74  tion func, IntPt
3d40: 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20  r context);..   
3d50: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3d60: 63 74 20 69 6e 74 20 43 6f 6e 74 65 78 74 43 6f  ct int ContextCo
3d70: 6c 6c 61 74 65 43 6f 6d 70 61 72 65 28 43 6f 6c  llateCompare(Col
3d80: 6c 61 74 69 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e  lationEncodingEn
3d90: 75 6d 20 65 6e 63 2c 20 49 6e 74 50 74 72 20 63  um enc, IntPtr c
3da0: 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73  ontext, string s
3db0: 31 2c 20 73 74 72 69 6e 67 20 73 32 29 3b 0d 0a  1, string s2);..
3dc0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3dd0: 74 72 61 63 74 20 69 6e 74 20 43 6f 6e 74 65 78  tract int Contex
3de0: 74 43 6f 6c 6c 61 74 65 43 6f 6d 70 61 72 65 28  tCollateCompare(
3df0: 43 6f 6c 6c 61 74 69 6f 6e 45 6e 63 6f 64 69 6e  CollationEncodin
3e00: 67 45 6e 75 6d 20 65 6e 63 2c 20 49 6e 74 50 74  gEnum enc, IntPt
3e10: 72 20 63 6f 6e 74 65 78 74 2c 20 63 68 61 72 5b  r context, char[
3e20: 5d 20 63 31 2c 20 63 68 61 72 5b 5d 20 63 32 29  ] c1, char[] c2)
3e30: 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ;....    interna
3e40: 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 41  l abstract int A
3e50: 67 67 72 65 67 61 74 65 43 6f 75 6e 74 28 49 6e  ggregateCount(In
3e60: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
3e70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3e80: 74 72 61 63 74 20 49 6e 74 50 74 72 20 41 67 67  tract IntPtr Agg
3e90: 72 65 67 61 74 65 43 6f 6e 74 65 78 74 28 49 6e  regateContext(In
3ea0: 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a  tPtr context);..
3eb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
3ec0: 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65 74  bstract long Get
3ed0: 50 61 72 61 6d 56 61 6c 75 65 42 79 74 65 73 28  ParamValueBytes(
3ee0: 49 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20  IntPtr ptr, int 
3ef0: 6e 44 61 74 61 4f 66 66 73 65 74 2c 20 62 79 74  nDataOffset, byt
3f00: 65 5b 5d 20 62 44 65 73 74 2c 20 69 6e 74 20 6e  e[] bDest, int n
3f10: 53 74 61 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67  Start, int nLeng
3f20: 74 68 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  th);..    intern
3f30: 61 6c 20 61 62 73 74 72 61 63 74 20 64 6f 75 62  al abstract doub
3f40: 6c 65 20 47 65 74 50 61 72 61 6d 56 61 6c 75 65  le GetParamValue
3f50: 44 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 74  Double(IntPtr pt
3f60: 72 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  r);..    interna
3f70: 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 47  l abstract int G
3f80: 65 74 50 61 72 61 6d 56 61 6c 75 65 49 6e 74 33  etParamValueInt3
3f90: 32 28 49 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a  2(IntPtr ptr);..
3fa0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3fb0: 74 72 61 63 74 20 49 6e 74 36 34 20 47 65 74 50  tract Int64 GetP
3fc0: 61 72 61 6d 56 61 6c 75 65 49 6e 74 36 34 28 49  aramValueInt64(I
3fd0: 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 20 20 20  ntPtr ptr);..   
3fe0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3ff0: 63 74 20 73 74 72 69 6e 67 20 47 65 74 50 61 72  ct string GetPar
4000: 61 6d 56 61 6c 75 65 54 65 78 74 28 49 6e 74 50  amValueText(IntP
4010: 74 72 20 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e  tr ptr);..    in
4020: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
4030: 54 79 70 65 41 66 66 69 6e 69 74 79 20 47 65 74  TypeAffinity Get
4040: 50 61 72 61 6d 56 61 6c 75 65 54 79 70 65 28 49  ParamValueType(I
4050: 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 0d 0a 20  ntPtr ptr);.... 
4060: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
4070: 72 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e  ract void Return
4080: 42 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74  Blob(IntPtr cont
4090: 65 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75  ext, byte[] valu
40a0: 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  e);..    interna
40b0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
40c0: 52 65 74 75 72 6e 44 6f 75 62 6c 65 28 49 6e 74  ReturnDouble(Int
40d0: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75  Ptr context, dou
40e0: 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ble value);..   
40f0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
4100: 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 45 72  ct void ReturnEr
4110: 72 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  ror(IntPtr conte
4120: 78 74 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65  xt, string value
4130: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
4140: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52   abstract void R
4150: 65 74 75 72 6e 49 6e 74 33 32 28 49 6e 74 50 74  eturnInt32(IntPt
4160: 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 33 32  r context, Int32
4170: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e   value);..    in
4180: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
4190: 76 6f 69 64 20 52 65 74 75 72 6e 49 6e 74 36 34  void ReturnInt64
41a0: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
41b0: 20 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a   Int64 value);..
41c0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
41d0: 74 72 61 63 74 20 76 6f 69 64 20 52 65 74 75 72  tract void Retur
41e0: 6e 4e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e  nNull(IntPtr con
41f0: 74 65 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65  text);..    inte
4200: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
4210: 69 64 20 52 65 74 75 72 6e 54 65 78 74 28 49 6e  id ReturnText(In
4220: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74  tPtr context, st
4230: 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a  ring value);....
4240: 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54  #if INTEROP_VIRT
4250: 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 2f  UAL_TABLE..    /
4260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4270: 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20    /// Calls the 
4280: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f  native SQLite co
4290: 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72  re library in or
42a0: 64 65 72 20 74 6f 20 63 72 65 61 74 65 20 61 20  der to create a 
42b0: 64 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20  disposable..    
42c0: 2f 2f 2f 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61  /// module conta
42d0: 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d  ining the implem
42e0: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69  entation of a vi
42f0: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
4300: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4310: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4320: 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
4330: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64  .    /// The mod
4340: 75 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 62 65  ule object to be
4350: 20 75 73 65 64 20 77 68 65 6e 20 63 72 65 61 74   used when creat
4360: 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 64  ing the native d
4370: 69 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65  isposable module
4380: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4390: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
43a0: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
43b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  >..    /// The f
43c0: 6c 61 67 73 20 66 6f 72 20 74 68 65 20 61 73 73  lags for the ass
43d0: 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63 72 65  ociated <see cre
43e0: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
43f0: 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ion" /> object i
4400: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
4410: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4420: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
4430: 74 20 76 6f 69 64 20 43 72 65 61 74 65 4d 6f 64  t void CreateMod
4440: 75 6c 65 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ule(SQLiteModule
4450: 20 6d 6f 64 75 6c 65 2c 20 53 51 4c 69 74 65 43   module, SQLiteC
4460: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
4470: 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  lags);....    //
4480: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4490: 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e   /// Calls the n
44a0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72  ative SQLite cor
44b0: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64  e library in ord
44c0: 65 72 20 74 6f 20 63 6c 65 61 6e 75 70 20 74 68  er to cleanup th
44d0: 65 20 72 65 73 6f 75 72 63 65 73 0d 0a 20 20 20  e resources..   
44e0: 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20   /// associated 
44f0: 77 69 74 68 20 61 20 6d 6f 64 75 6c 65 20 63 6f  with a module co
4500: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 70  ntaining the imp
4510: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61  lementation of a
4520: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d   virtual table..
4530: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
4540: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
4550: 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
4560: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
4570: 6d 6f 64 75 6c 65 20 6f 62 6a 65 63 74 20 70 72  module object pr
4580: 65 76 69 6f 75 73 6c 79 20 70 61 73 73 65 64 20  eviously passed 
4590: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
45a0: 3d 22 43 72 65 61 74 65 4d 6f 64 75 6c 65 22 20  ="CreateModule" 
45b0: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68  />..    /// meth
45c0: 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  od...    /// </p
45d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
45e0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
45f0: 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  s">..    /// The
4600: 20 66 6c 61 67 73 20 66 6f 72 20 74 68 65 20 61   flags for the a
4610: 73 73 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63  ssociated <see c
4620: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
4630: 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74  ction" /> object
4640: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
4650: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4660: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
4670: 61 63 74 20 76 6f 69 64 20 44 69 73 70 6f 73 65  act void Dispose
4680: 4d 6f 64 75 6c 65 28 53 51 4c 69 74 65 4d 6f 64  Module(SQLiteMod
4690: 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 53 51 4c 69  ule module, SQLi
46a0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
46b0: 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20  s flags);....   
46c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
46d0: 20 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68      /// Calls th
46e0: 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
46f0: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20  core library in 
4700: 6f 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65  order to declare
4710: 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a virtual table
4720: 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 72 65 73  ..    /// in res
4730: 70 6f 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c 20  ponse to a call 
4740: 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72  into the <see cr
4750: 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
4760: 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22  eModule.xCreate"
4770: 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20   />..    /// or 
4780: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
4790: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
47a0: 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72 74  Connect" /> virt
47b0: 75 61 6c 20 74 61 62 6c 65 20 6d 65 74 68 6f 64  ual table method
47c0: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
47d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
47e0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64  <param name="mod
47f0: 75 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ule">..    /// T
4800: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
4810: 20 6d 6f 64 75 6c 65 20 74 68 61 74 20 69 73 20   module that is 
4820: 74 6f 20 62 65 20 72 65 73 70 6f 6e 73 69 62 6c  to be responsibl
4830: 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61  e for the virtua
4840: 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f  l table..    ///
4850: 20 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64 2e   being declared.
4860: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
4870: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
4880: 61 6d 20 6e 61 6d 65 3d 22 73 74 72 53 71 6c 22  am name="strSql"
4890: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  >..    /// The s
48a0: 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
48b0: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
48c0: 6e 74 20 64 65 73 63 72 69 62 69 6e 67 20 74 68  nt describing th
48d0: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
48e0: 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 20 64  to..    /// be d
48f0: 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f 2f  eclared...    //
4900: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4910: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4920: 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f  "error">..    //
4930: 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
4940: 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20  the contents of 
4950: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 61  this parameter a
4960: 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 55  re undefined.  U
4970: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 0d 0a 20 20  pon failure,..  
4980: 20 20 2f 2f 2f 20 69 74 20 73 68 6f 75 6c 64 20    /// it should 
4990: 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72 6f  contain an appro
49a0: 70 72 69 61 74 65 20 65 72 72 6f 72 20 6d 65 73  priate error mes
49b0: 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sage...    /// <
49c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
49d0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
49e0: 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
49f0: 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
4a00: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
4a10: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
4a20: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
4a30: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65  LiteErrorCode De
4a40: 63 6c 61 72 65 56 69 72 74 75 61 6c 54 61 62 6c  clareVirtualTabl
4a50: 65 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d  e(SQLiteModule m
4a60: 6f 64 75 6c 65 2c 20 73 74 72 69 6e 67 20 73 74  odule, string st
4a70: 72 53 71 6c 2c 20 72 65 66 20 73 74 72 69 6e 67  rSql, ref string
4a80: 20 65 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20   error);....    
4a90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4aa0: 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65     /// Calls the
4ab0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63   native SQLite c
4ac0: 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f  ore library in o
4ad0: 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20  rder to declare 
4ae0: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  a virtual table.
4af0: 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f  .    /// functio
4b00: 6e 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  n in response to
4b10: 20 61 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65   a call into the
4b20: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
4b30: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
4b40: 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20  xCreate" />..   
4b50: 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72 65   /// or <see cre
4b60: 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
4b70: 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22  Module.xConnect"
4b80: 20 2f 3e 20 76 69 72 74 75 61 6c 20 74 61 62 6c   /> virtual tabl
4b90: 65 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  e methods...    
4ba0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4bb0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4bc0: 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20  ame="module">.. 
4bd0: 20 20 20 2f 2f 2f 20 54 68 65 20 76 69 72 74 75     /// The virtu
4be0: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
4bf0: 74 68 61 74 20 69 73 20 74 6f 20 62 65 20 72 65  that is to be re
4c00: 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68  sponsible for th
4c10: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  e virtual table.
4c20: 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f  .    /// functio
4c30: 6e 20 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64  n being declared
4c40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4c50: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
4c60: 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65  ram name="argume
4c70: 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 2f  ntCount">..    /
4c80: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
4c90: 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
4ca0: 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
4cb0: 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
4cc0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4cd0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4ce0: 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f  e="name">..    /
4cf0: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
4d00: 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e  he function bein
4d10: 67 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20  g declared...   
4d20: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
4d30: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
4d40: 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20  me="error">..   
4d50: 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
4d60: 73 2c 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20  s, the contents 
4d70: 6f 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  of this paramete
4d80: 72 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e  r are undefined.
4d90: 20 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 0d    Upon failure,.
4da0: 0a 20 20 20 20 2f 2f 2f 20 69 74 20 73 68 6f 75  .    /// it shou
4db0: 6c 64 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70  ld contain an ap
4dc0: 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20  propriate error 
4dd0: 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f  message...    //
4de0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4df0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4e00: 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
4e10: 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
4e20: 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  code...    /// <
4e30: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
4e40: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
4e50: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
4e60: 20 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 46   DeclareVirtualF
4e70: 75 6e 63 74 69 6f 6e 28 53 51 4c 69 74 65 4d 6f  unction(SQLiteMo
4e80: 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 69 6e 74  dule module, int
4e90: 20 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20   argumentCount, 
4ea0: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 72 65 66  string name, ref
4eb0: 20 73 74 72 69 6e 67 20 65 72 72 6f 72 29 3b 0d   string error);.
4ec0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
4ed0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4ee0: 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 6f 72    /// Enables or
4ef0: 20 64 69 73 61 62 6c 65 64 20 65 78 74 65 6e 73   disabled extens
4f00: 69 6f 6e 20 6c 6f 61 64 69 6e 67 20 62 79 20 53  ion loading by S
4f10: 51 4c 69 74 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  QLite...    /// 
4f20: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4f30: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4f40: 22 62 4f 6e 4f 66 66 22 3e 0d 0a 20 20 20 20 2f  "bOnOff">..    /
4f50: 2f 2f 20 54 72 75 65 20 74 6f 20 65 6e 61 62 6c  // True to enabl
4f60: 65 20 6c 6f 61 64 69 6e 67 20 6f 66 20 65 78 74  e loading of ext
4f70: 65 6e 73 69 6f 6e 73 2c 20 66 61 6c 73 65 20 74  ensions, false t
4f80: 6f 20 64 69 73 61 62 6c 65 2e 0d 0a 20 20 20 20  o disable...    
4f90: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4fa0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
4fb0: 61 63 74 20 76 6f 69 64 20 53 65 74 4c 6f 61 64  act void SetLoad
4fc0: 45 78 74 65 6e 73 69 6f 6e 28 62 6f 6f 6c 20 62  Extension(bool b
4fd0: 4f 6e 4f 66 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f  OnOff);..    ///
4fe0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4ff0: 2f 2f 2f 20 4c 6f 61 64 73 20 61 20 53 51 4c 69  /// Loads a SQLi
5000: 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c 69 62  te extension lib
5010: 72 61 72 79 20 66 72 6f 6d 20 74 68 65 20 6e 61  rary from the na
5020: 6d 65 64 20 66 69 6c 65 2e 0d 0a 20 20 20 20 2f  med file...    /
5030: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5040: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5050: 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a  me="fileName">..
5060: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
5070: 20 6f 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20   of the dynamic 
5080: 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c  link library fil
5090: 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  e containing the
50a0: 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20   extension...   
50b0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
50c0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
50d0: 6d 65 3d 22 70 72 6f 63 4e 61 6d 65 22 3e 0d 0a  me="procName">..
50e0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65      /// The name
50f0: 20 6f 66 20 74 68 65 20 65 78 70 6f 72 74 65 64   of the exported
5100: 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 74   function used t
5110: 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  o initialize the
5120: 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20   extension...   
5130: 20 2f 2f 2f 20 49 66 20 6e 75 6c 6c 2c 20 74 68   /// If null, th
5140: 65 20 64 65 66 61 75 6c 74 20 22 73 71 6c 69 74  e default "sqlit
5150: 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69  e3_extension_ini
5160: 74 22 20 77 69 6c 6c 20 62 65 20 75 73 65 64 2e  t" will be used.
5170: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5180: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
5190: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 4c   abstract void L
51a0: 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28 73 74 72  oadExtension(str
51b0: 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c 20 73 74  ing fileName, st
51c0: 72 69 6e 67 20 70 72 6f 63 4e 61 6d 65 29 3b 0d  ring procName);.
51d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
51e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62  y>..    /// Enab
51f0: 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 64 20  les or disabled 
5200: 65 78 74 65 6e 65 64 20 72 65 73 75 6c 74 20 63  extened result c
5210: 6f 64 65 73 20 72 65 74 75 72 6e 65 64 20 62 79  odes returned by
5220: 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 2f   SQLite..    ///
5230: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5240: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5250: 3d 22 62 4f 6e 4f 66 66 22 3e 74 72 75 65 20 74  ="bOnOff">true t
5260: 6f 20 65 6e 61 62 6c 65 20 65 78 74 65 6e 64 65  o enable extende
5270: 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 2c 20  d result codes, 
5280: 66 61 6c 73 65 20 74 6f 20 64 69 73 61 62 6c 65  false to disable
5290: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
52a0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
52b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
52c0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
52d0: 69 64 20 53 65 74 45 78 74 65 6e 64 65 64 52 65  id SetExtendedRe
52e0: 73 75 6c 74 43 6f 64 65 73 28 62 6f 6f 6c 20 62  sultCodes(bool b
52f0: 4f 6e 4f 66 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f  OnOff);..    ///
5300: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5310: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
5320: 6e 75 6d 65 72 69 63 20 72 65 73 75 6c 74 20 63  numeric result c
5330: 6f 64 65 20 66 6f 72 20 74 68 65 20 6d 6f 73 74  ode for the most
5340: 20 72 65 63 65 6e 74 20 66 61 69 6c 65 64 20 53   recent failed S
5350: 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 0d 0a  QLite API call..
5360: 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
5370: 65 64 20 77 69 74 68 20 74 68 65 20 64 61 74 61  ed with the data
5380: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
5390: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
53a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
53b0: 65 74 75 72 6e 73 3e 52 65 73 75 6c 74 20 63 6f  eturns>Result co
53c0: 64 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  de</returns>..  
53d0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
53e0: 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43  act SQLiteErrorC
53f0: 6f 64 65 20 52 65 73 75 6c 74 43 6f 64 65 28 29  ode ResultCode()
5400: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;..    /// <summ
5410: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
5420: 74 75 72 6e 73 20 74 68 65 20 65 78 74 65 6e 64  turns the extend
5430: 65 64 20 6e 75 6d 65 72 69 63 20 72 65 73 75 6c  ed numeric resul
5440: 74 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 6d  t code for the m
5450: 6f 73 74 20 72 65 63 65 6e 74 20 66 61 69 6c 65  ost recent faile
5460: 64 20 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c  d SQLite API cal
5470: 6c 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63  l..    /// assoc
5480: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 64  iated with the d
5490: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
54a0: 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  on...    /// </s
54b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
54c0: 20 3c 72 65 74 75 72 6e 73 3e 45 78 74 65 6e 64   <returns>Extend
54d0: 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 3c 2f  ed result code</
54e0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
54f0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5500: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
5510: 45 78 74 65 6e 64 65 64 52 65 73 75 6c 74 43 6f  ExtendedResultCo
5520: 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  de();....    ///
5530: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5540: 2f 2f 2f 20 41 64 64 20 61 20 6c 6f 67 20 6d 65  /// Add a log me
5550: 73 73 61 67 65 20 76 69 61 20 74 68 65 20 53 51  ssage via the SQ
5560: 4c 69 74 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67  Lite sqlite3_log
5570: 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20   interface...   
5580: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5590: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
55a0: 6e 61 6d 65 3d 22 69 45 72 72 43 6f 64 65 22 3e  name="iErrCode">
55b0: 45 72 72 6f 72 20 63 6f 64 65 20 74 6f 20 62 65  Error code to be
55c0: 20 6c 6f 67 67 65 64 20 77 69 74 68 20 74 68 65   logged with the
55d0: 20 6d 65 73 73 61 67 65 2e 3c 2f 70 61 72 61 6d   message.</param
55e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
55f0: 6d 20 6e 61 6d 65 3d 22 7a 4d 65 73 73 61 67 65  m name="zMessage
5600: 22 3e 53 74 72 69 6e 67 20 74 6f 20 62 65 20 6c  ">String to be l
5610: 6f 67 67 65 64 2e 20 20 55 6e 6c 69 6b 65 20 74  ogged.  Unlike t
5620: 68 65 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65  he SQLite sqlite
5630: 33 5f 6c 6f 67 28 29 0d 0a 20 20 20 20 2f 2f 2f  3_log()..    ///
5640: 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68 69 73   interface, this
5650: 20 73 68 6f 75 6c 64 20 62 65 20 70 72 65 2d 66   should be pre-f
5660: 6f 72 6d 61 74 74 65 64 2e 20 20 43 6f 6e 73 69  ormatted.  Consi
5670: 64 65 72 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  der using the.. 
5680: 20 20 20 2f 2f 2f 20 53 74 72 69 6e 67 2e 46 6f     /// String.Fo
5690: 72 6d 61 74 28 29 20 66 75 6e 63 74 69 6f 6e 2e  rmat() function.
56a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
56b0: 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  / <returns></ret
56c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
56d0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
56e0: 64 20 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c  d LogMessage(SQL
56f0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72  iteErrorCode iEr
5700: 72 43 6f 64 65 2c 20 73 74 72 69 6e 67 20 7a 4d  rCode, string zM
5710: 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20  essage);....#if 
5720: 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c  INTEROP_CODEC ||
5730: 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
5740: 5f 53 45 45 0d 0a 20 20 20 20 69 6e 74 65 72 6e  _SEE..    intern
5750: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
5760: 20 53 65 74 50 61 73 73 77 6f 72 64 28 62 79 74   SetPassword(byt
5770: 65 5b 5d 20 70 61 73 73 77 6f 72 64 42 79 74 65  e[] passwordByte
5780: 73 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  s);..    interna
5790: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
57a0: 43 68 61 6e 67 65 50 61 73 73 77 6f 72 64 28 62  ChangePassword(b
57b0: 79 74 65 5b 5d 20 6e 65 77 50 61 73 73 77 6f 72  yte[] newPasswor
57c0: 64 42 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69 66  dBytes);..#endif
57d0: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
57e0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53   abstract void S
57f0: 65 74 50 72 6f 67 72 65 73 73 48 6f 6f 6b 28 69  etProgressHook(i
5800: 6e 74 20 6e 4f 70 73 2c 20 53 51 4c 69 74 65 50  nt nOps, SQLiteP
5810: 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20  rogressCallback 
5820: 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65  func);..    inte
5830: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
5840: 69 64 20 53 65 74 41 75 74 68 6f 72 69 7a 65 72  id SetAuthorizer
5850: 48 6f 6f 6b 28 53 51 4c 69 74 65 41 75 74 68 6f  Hook(SQLiteAutho
5860: 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75  rizerCallback fu
5870: 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nc);..    intern
5880: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
5890: 20 53 65 74 55 70 64 61 74 65 48 6f 6f 6b 28 53   SetUpdateHook(S
58a0: 51 4c 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62  QLiteUpdateCallb
58b0: 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20  ack func);..    
58c0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
58d0: 74 20 76 6f 69 64 20 53 65 74 43 6f 6d 6d 69 74  t void SetCommit
58e0: 48 6f 6f 6b 28 53 51 4c 69 74 65 43 6f 6d 6d 69  Hook(SQLiteCommi
58f0: 74 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b  tCallback func);
5900: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
5910: 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74  bstract void Set
5920: 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 51  TraceCallback(SQ
5930: 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63  LiteTraceCallbac
5940: 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e  k func);..    in
5950: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5960: 76 6f 69 64 20 53 65 74 52 6f 6c 6c 62 61 63 6b  void SetRollback
5970: 48 6f 6f 6b 28 53 51 4c 69 74 65 52 6f 6c 6c 62  Hook(SQLiteRollb
5980: 61 63 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ackCallback func
5990: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
59a0: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
59b0: 45 72 72 6f 72 43 6f 64 65 20 53 65 74 4c 6f 67  ErrorCode SetLog
59c0: 43 61 6c 6c 62 61 63 6b 28 53 51 4c 69 74 65 4c  Callback(SQLiteL
59d0: 6f 67 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29  ogCallback func)
59e0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
59f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5a00: 43 68 65 63 6b 73 20 69 66 20 74 68 65 20 53 51  Checks if the SQ
5a10: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
5a20: 79 20 68 61 73 20 62 65 65 6e 20 69 6e 69 74 69  y has been initi
5a30: 61 6c 69 7a 65 64 20 69 6e 20 74 68 65 20 63 75  alized in the cu
5a40: 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a  rrent process...
5a50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5a60: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  y>..    /// <ret
5a70: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
5a80: 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 53  on-zero if the S
5a90: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
5aa0: 72 79 20 68 61 73 20 62 65 65 6e 20 69 6e 69 74  ry has been init
5ab0: 69 61 6c 69 7a 65 64 20 69 6e 20 74 68 65 20 63  ialized in the c
5ac0: 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2c 0d  urrent process,.
5ad0: 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74  .    /// zero ot
5ae0: 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f  herwise...    //
5af0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
5b00: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
5b10: 61 63 74 20 62 6f 6f 6c 20 49 73 49 6e 69 74 69  act bool IsIniti
5b20: 61 6c 69 7a 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  alized();....   
5b30: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5b40: 63 74 20 69 6e 74 20 47 65 74 43 75 72 73 6f 72  ct int GetCursor
5b50: 46 6f 72 54 61 62 6c 65 28 53 51 4c 69 74 65 53  ForTable(SQLiteS
5b60: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69  tatement stmt, i
5b70: 6e 74 20 64 61 74 61 62 61 73 65 2c 20 69 6e 74  nt database, int
5b80: 20 72 6f 6f 74 50 61 67 65 29 3b 0d 0a 20 20 20   rootPage);..   
5b90: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5ba0: 63 74 20 6c 6f 6e 67 20 47 65 74 52 6f 77 49 64  ct long GetRowId
5bb0: 46 6f 72 43 75 72 73 6f 72 28 53 51 4c 69 74 65  ForCursor(SQLite
5bc0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
5bd0: 69 6e 74 20 63 75 72 73 6f 72 29 3b 0d 0a 0d 0a  int cursor);....
5be0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5bf0: 74 72 61 63 74 20 6f 62 6a 65 63 74 20 47 65 74  tract object Get
5c00: 56 61 6c 75 65 28 53 51 4c 69 74 65 53 74 61 74  Value(SQLiteStat
5c10: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69  ement stmt, SQLi
5c20: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
5c30: 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64  s flags, int ind
5c40: 65 78 2c 20 53 51 4c 69 74 65 54 79 70 65 20 74  ex, SQLiteType t
5c50: 79 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  yp);....    /// 
5c60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
5c70: 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  // Returns non-z
5c80: 65 72 6f 20 69 66 20 74 68 65 20 67 69 76 65 6e  ero if the given
5c90: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
5ca0: 74 69 6f 6e 20 69 73 20 69 6e 20 61 75 74 6f 63  tion is in autoc
5cb0: 6f 6d 6d 69 74 20 6d 6f 64 65 2e 0d 0a 20 20 20  ommit mode...   
5cc0: 20 2f 2f 2f 20 41 75 74 6f 63 6f 6d 6d 69 74 20   /// Autocommit 
5cd0: 6d 6f 64 65 20 69 73 20 6f 6e 20 62 79 20 64 65  mode is on by de
5ce0: 66 61 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6d 6d  fault.  Autocomm
5cf0: 69 74 20 6d 6f 64 65 20 69 73 20 64 69 73 61 62  it mode is disab
5d00: 6c 65 64 20 62 79 20 61 20 42 45 47 49 4e 0d 0a  led by a BEGIN..
5d10: 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e      /// statemen
5d20: 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d  t.  Autocommit m
5d30: 6f 64 65 20 69 73 20 72 65 2d 65 6e 61 62 6c 65  ode is re-enable
5d40: 64 20 62 79 20 61 20 43 4f 4d 4d 49 54 20 6f 72  d by a COMMIT or
5d50: 20 52 4f 4c 4c 42 41 43 4b 2e 0d 0a 20 20 20 20   ROLLBACK...    
5d60: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5d70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5d80: 74 72 61 63 74 20 62 6f 6f 6c 20 41 75 74 6f 43  tract bool AutoC
5d90: 6f 6d 6d 69 74 0d 0a 20 20 20 20 7b 0d 0a 20 20  ommit..    {..  
5da0: 20 20 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d      get;..    }.
5db0: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
5dc0: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
5dd0: 72 72 6f 72 43 6f 64 65 20 46 69 6c 65 43 6f 6e  rrorCode FileCon
5de0: 74 72 6f 6c 28 73 74 72 69 6e 67 20 7a 44 62 4e  trol(string zDbN
5df0: 61 6d 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74  ame, int op, Int
5e00: 50 74 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 20 20  Ptr pArg);....  
5e10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5e20: 0a 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73  .    /// Creates
5e30: 20 61 20 6e 65 77 20 53 51 4c 69 74 65 20 62 61   a new SQLite ba
5e40: 63 6b 75 70 20 6f 62 6a 65 63 74 20 62 61 73 65  ckup object base
5e50: 64 20 6f 6e 20 74 68 65 20 70 72 6f 76 69 64 65  d on the provide
5e60: 64 20 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a 20  d destination.. 
5e70: 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20     /// database 
5e80: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65  connection.  The
5e90: 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73 65   source database
5ea0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 74   connection is t
5eb0: 68 65 20 6f 6e 65 0d 0a 20 20 20 20 2f 2f 2f 20  he one..    /// 
5ec0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
5ed0: 74 68 69 73 20 6f 62 6a 65 63 74 2e 20 20 54 68  this object.  Th
5ee0: 65 20 73 6f 75 72 63 65 20 61 6e 64 20 64 65 73  e source and des
5ef0: 74 69 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73  tination databas
5f00: 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65  e..    /// conne
5f10: 63 74 69 6f 6e 73 20 63 61 6e 6e 6f 74 20 62 65  ctions cannot be
5f20: 20 74 68 65 20 73 61 6d 65 2e 0d 0a 20 20 20 20   the same...    
5f30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5f40: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5f50: 61 6d 65 3d 22 64 65 73 74 43 6e 6e 22 3e 54 68  ame="destCnn">Th
5f60: 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 61  e destination da
5f70: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
5f80: 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  n.</param>..    
5f90: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5fa0: 22 64 65 73 74 4e 61 6d 65 22 3e 54 68 65 20 64  "destName">The d
5fb0: 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74 61 62  estination datab
5fc0: 61 73 65 20 6e 61 6d 65 2e 3c 2f 70 61 72 61 6d  ase name.</param
5fd0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
5fe0: 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 4e 61  m name="sourceNa
5ff0: 6d 65 22 3e 54 68 65 20 73 6f 75 72 63 65 20 64  me">The source d
6000: 61 74 61 62 61 73 65 20 6e 61 6d 65 2e 3c 2f 70  atabase name.</p
6010: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
6020: 72 65 74 75 72 6e 73 3e 54 68 65 20 6e 65 77 6c  returns>The newl
6030: 79 20 63 72 65 61 74 65 64 20 62 61 63 6b 75 70  y created backup
6040: 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e   object.</return
6050: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
6060: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
6070: 42 61 63 6b 75 70 20 49 6e 69 74 69 61 6c 69 7a  Backup Initializ
6080: 65 42 61 63 6b 75 70 28 0d 0a 20 20 20 20 20 20  eBackup(..      
6090: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
60a0: 6f 6e 20 64 65 73 74 43 6e 6e 2c 20 73 74 72 69  on destCnn, stri
60b0: 6e 67 20 64 65 73 74 4e 61 6d 65 2c 0d 0a 20 20  ng destName,..  
60c0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 6f 75        string sou
60d0: 72 63 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  rceName);....   
60e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
60f0: 20 20 20 20 2f 2f 2f 20 43 6f 70 69 65 73 20 75      /// Copies u
6100: 70 20 74 6f 20 4e 20 70 61 67 65 73 20 66 72 6f  p to N pages fro
6110: 6d 20 74 68 65 20 73 6f 75 72 63 65 20 64 61 74  m the source dat
6120: 61 62 61 73 65 20 74 6f 20 74 68 65 20 64 65 73  abase to the des
6130: 74 69 6e 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  tination..    //
6140: 2f 20 64 61 74 61 62 61 73 65 20 61 73 73 6f 63  / database assoc
6150: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 73  iated with the s
6160: 70 65 63 69 66 69 65 64 20 62 61 63 6b 75 70 20  pecified backup 
6170: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
6180: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6190: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
61a0: 3d 22 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61  ="backup">The ba
61b0: 63 6b 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 75  ckup object to u
61c0: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
61d0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
61e0: 3d 22 6e 50 61 67 65 22 3e 0d 0a 20 20 20 20 2f  ="nPage">..    /
61f0: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
6200: 20 70 61 67 65 73 20 74 6f 20 63 6f 70 79 20 6f   pages to copy o
6210: 72 20 6e 65 67 61 74 69 76 65 20 74 6f 20 63 6f  r negative to co
6220: 70 79 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e 67  py all remaining
6230: 20 70 61 67 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f   pages...    ///
6240: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
6250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6260: 72 65 74 72 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f  retry">..    ///
6270: 20 53 65 74 20 74 6f 20 74 72 75 65 20 69 66 20   Set to true if 
6280: 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6e 65  the operation ne
6290: 65 64 73 20 74 6f 20 62 65 20 72 65 74 72 69 65  eds to be retrie
62a0: 64 20 64 75 65 20 74 6f 20 64 61 74 61 62 61 73  d due to databas
62b0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 6f 63 6b 69  e..    /// locki
62c0: 6e 67 20 69 73 73 75 65 73 2e 0d 0a 20 20 20 20  ng issues...    
62d0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
62e0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
62f0: 0a 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66  .    /// True if
6300: 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20   there are more 
6310: 70 61 67 65 73 20 74 6f 20 62 65 20 63 6f 70 69  pages to be copi
6320: 65 64 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77  ed, false otherw
6330: 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ise...    /// </
6340: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
6350: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
6360: 62 6f 6f 6c 20 53 74 65 70 42 61 63 6b 75 70 28  bool StepBackup(
6370: 53 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61 63  SQLiteBackup bac
6380: 6b 75 70 2c 20 69 6e 74 20 6e 50 61 67 65 2c 20  kup, int nPage, 
6390: 72 65 66 20 62 6f 6f 6c 20 72 65 74 72 79 29 3b  ref bool retry);
63a0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
63b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
63c0: 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
63d0: 72 20 6f 66 20 70 61 67 65 73 20 72 65 6d 61 69  r of pages remai
63e0: 6e 69 6e 67 20 74 6f 20 62 65 20 63 6f 70 69 65  ning to be copie
63f0: 64 20 66 72 6f 6d 20 74 68 65 20 73 6f 75 72 63  d from the sourc
6400: 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62  e..    /// datab
6410: 61 73 65 20 74 6f 20 74 68 65 20 64 65 73 74 69  ase to the desti
6420: 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73 65 20  nation database 
6430: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
6440: 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
6450: 20 20 20 2f 2f 2f 20 62 61 63 6b 75 70 20 6f 62     /// backup ob
6460: 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ject...    /// <
6470: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6480: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6490: 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61 63 6b  backup">The back
64a0: 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 63 68 65  up object to che
64b0: 63 6b 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ck.</param>..   
64c0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
64d0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65  e number of page
64e0: 73 20 72 65 6d 61 69 6e 69 6e 67 20 74 6f 20 62  s remaining to b
64f0: 65 20 63 6f 70 69 65 64 2e 3c 2f 72 65 74 75 72  e copied.</retur
6500: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
6510: 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 52  l abstract int R
6520: 65 6d 61 69 6e 69 6e 67 42 61 63 6b 75 70 28 53  emainingBackup(S
6530: 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61 63 6b  QLiteBackup back
6540: 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  up);....    /// 
6550: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6560: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74  // Returns the t
6570: 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70  otal number of p
6580: 61 67 65 73 20 69 6e 20 74 68 65 20 73 6f 75 72  ages in the sour
6590: 63 65 20 64 61 74 61 62 61 73 65 20 61 73 73 6f  ce database asso
65a0: 63 69 61 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20  ciated..    /// 
65b0: 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69  with the specifi
65c0: 65 64 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74  ed backup object
65d0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
65e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
65f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 63 6b  param name="back
6600: 75 70 22 3e 54 68 65 20 62 61 63 6b 75 70 20 6f  up">The backup o
6610: 62 6a 65 63 74 20 74 6f 20 63 68 65 63 6b 2e 3c  bject to check.<
6620: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6630: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 74 6f   <returns>The to
6640: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70 61  tal number of pa
6650: 67 65 73 20 69 6e 20 74 68 65 20 73 6f 75 72 63  ges in the sourc
6660: 65 20 64 61 74 61 62 61 73 65 2e 3c 2f 72 65 74  e database.</ret
6670: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
6680: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74  nal abstract int
6690: 20 50 61 67 65 43 6f 75 6e 74 42 61 63 6b 75 70   PageCountBackup
66a0: 28 53 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61  (SQLiteBackup ba
66b0: 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  ckup);....    //
66c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
66d0: 20 2f 2f 2f 20 44 65 73 74 72 6f 79 73 20 74 68   /// Destroys th
66e0: 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 2c  e backup object,
66f0: 20 72 6f 6c 6c 69 6e 67 20 62 61 63 6b 20 61 6e   rolling back an
6700: 79 20 62 61 63 6b 75 70 20 74 68 61 74 20 6d 61  y backup that ma
6710: 79 20 62 65 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f  y be in..    ///
6720: 20 70 72 6f 67 65 73 73 2e 0d 0a 20 20 20 20 2f   progess...    /
6730: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6740: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6750: 6d 65 3d 22 62 61 63 6b 75 70 22 3e 54 68 65 20  me="backup">The 
6760: 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 20 74 6f  backup object to
6770: 20 64 65 73 74 72 6f 79 2e 3c 2f 70 61 72 61 6d   destroy.</param
6780: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6790: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 46 69  abstract void Fi
67a0: 6e 69 73 68 42 61 63 6b 75 70 28 53 51 4c 69 74  nishBackup(SQLit
67b0: 65 42 61 63 6b 75 70 20 62 61 63 6b 75 70 29 3b  eBackup backup);
67c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
67d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6820: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
6830: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
6840: 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
6850: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
6860: 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ose()..    {..  
6870: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
6880: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 47 43  ue);..        GC
6890: 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
68a0: 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d  e(this);..    }.
68b0: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
68c0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
68d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
6930: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
6940: 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62  e "Pattern" Memb
6950: 65 72 73 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ers..    private
6960: 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d   bool disposed;.
6970: 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69  .    private voi
6980: 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  d CheckDisposed(
6990: 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
69a0: 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f     {..#if THROW_
69b0: 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20  ON_DISPOSED..   
69c0: 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 65       if (dispose
69d0: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
69e0: 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74  throw new Object
69f0: 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
6a00: 6e 28 74 79 70 65 6f 66 28 53 51 4c 69 74 65 42  n(typeof(SQLiteB
6a10: 61 73 65 29 2e 4e 61 6d 65 29 3b 0d 0a 23 65 6e  ase).Name);..#en
6a20: 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  dif..    }....  
6a30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  /....    protect
6aa0: 65 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20  ed virtual void 
6ab0: 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
6ac0: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a  posing)..    {..
6ad0: 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73          if (!dis
6ae0: 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
6af0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
6b00: 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
6b10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b  .            //{
6b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
6b30: 20 20 20 20 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 0d 0a 20 20 20 20 20 20  ////////..      
6b60: 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64        //    // d
6b70: 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72  ispose managed r
6b80: 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
6b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
6ba0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bc0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6bd0: 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20        //}....   
6be0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
6bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
6c20: 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
6c30: 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
6c40: 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
6c50: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c70: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6c80: 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
6c90: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
6ca0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23   }..    }..    #
6cb0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6cc0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d20: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
6d30: 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
6d40: 7e 53 51 4c 69 74 65 42 61 73 65 28 29 0d 0a 20  ~SQLiteBase().. 
6d50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 69     {..        Di
6d60: 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
6d70: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
6d80: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6df0: 20 20 20 2f 2f 20 54 68 65 73 65 20 73 74 61 74     // These stat
6e00: 69 63 73 20 61 72 65 20 68 65 72 65 20 66 6f 72  ics are here for
6e10: 20 6c 61 63 6b 20 6f 66 20 61 20 62 65 74 74 65   lack of a bette
6e20: 72 20 70 6c 61 63 65 20 74 6f 20 70 75 74 20 74  r place to put t
6e30: 68 65 6d 2e 0d 0a 20 20 20 20 2f 2f 20 54 68 65  hem...    // The
6e40: 79 20 65 78 69 73 74 20 68 65 72 65 20 62 65 63  y exist here bec
6e50: 61 75 73 65 20 74 68 65 79 20 61 72 65 20 63 61  ause they are ca
6e60: 6c 6c 65 64 20 64 75 72 69 6e 67 20 74 68 65 20  lled during the 
6e70: 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 0d  finalization of.
6e80: 0a 20 20 20 20 2f 2f 20 61 20 53 51 4c 69 74 65  .    // a SQLite
6e90: 53 74 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 2c  StatementHandle,
6ea0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
6eb0: 6e 48 61 6e 64 6c 65 2c 20 61 6e 64 20 53 51 4c  nHandle, and SQL
6ec0: 69 74 65 46 75 6e 63 74 69 6f 6e 43 6f 6f 6b 69  iteFunctionCooki
6ed0: 65 48 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 2f 2f  eHandle...    //
6ee0: 20 54 68 65 72 65 66 6f 72 65 20 74 68 65 73 65   Therefore these
6ef0: 20 66 75 6e 63 74 69 6f 6e 73 20 68 61 76 65 20   functions have 
6f00: 74 6f 20 62 65 20 73 74 61 74 69 63 2c 20 61 6e  to be static, an
6f10: 64 20 68 61 76 65 20 74 6f 20 62 65 20 6c 6f 77  d have to be low
6f20: 2d 6c 65 76 65 6c 2e 0d 0a 0d 0a 20 20 20 20 2f  -level.....    /
6f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6f90: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
6fa0: 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 5f 65  atic string[] _e
6fb0: 72 72 6f 72 4d 65 73 73 61 67 65 73 20 3d 20 7b  rrorMessages = {
6fc0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
6fd0: 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20 20 20  ITE_OK          
6fe0: 2a 2f 20 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72  */ "not an error
6ff0: 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53  ",..        /* S
7000: 51 4c 49 54 45 5f 45 52 52 4f 52 20 20 20 20 20  QLITE_ERROR     
7010: 20 20 2a 2f 20 22 53 51 4c 20 6c 6f 67 69 63 20    */ "SQL logic 
7020: 65 72 72 6f 72 20 6f 72 20 6d 69 73 73 69 6e 67  error or missing
7030: 20 64 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20   database",..   
7040: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49       /* SQLITE_I
7050: 4e 54 45 52 4e 41 4c 20 20 20 20 2a 2f 20 22 69  NTERNAL    */ "i
7060: 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20 65 72  nternal logic er
7070: 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  ror",..        /
7080: 2a 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20  * SQLITE_PERM   
7090: 20 20 20 20 20 2a 2f 20 22 61 63 63 65 73 73 20       */ "access 
70a0: 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65  permission denie
70b0: 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  d",..        /* 
70c0: 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20  SQLITE_ABORT    
70d0: 20 20 20 2a 2f 20 22 63 61 6c 6c 62 61 63 6b 20     */ "callback 
70e0: 72 65 71 75 65 73 74 65 64 20 71 75 65 72 79 20  requested query 
70f0: 61 62 6f 72 74 22 2c 0d 0a 20 20 20 20 20 20 20  abort",..       
7100: 20 2f 2a 20 53 51 4c 49 54 45 5f 42 55 53 59 20   /* SQLITE_BUSY 
7110: 20 20 20 20 20 20 20 2a 2f 20 22 64 61 74 61 62         */ "datab
7120: 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c 0d  ase is locked",.
7130: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7140: 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20 2a  TE_LOCKED      *
7150: 2f 20 22 64 61 74 61 62 61 73 65 20 74 61 62 6c  / "database tabl
7160: 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a 20  e is locked",.. 
7170: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7180: 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 2a 2f 20  _NOMEM       */ 
7190: 22 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22 2c  "out of memory",
71a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
71b0: 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20  ITE_READONLY    
71c0: 2a 2f 20 22 61 74 74 65 6d 70 74 20 74 6f 20 77  */ "attempt to w
71d0: 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20  rite a readonly 
71e0: 64 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20 20  database",..    
71f0: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49 4e      /* SQLITE_IN
7200: 54 45 52 52 55 50 54 20 20 20 2a 2f 20 22 69 6e  TERRUPT   */ "in
7210: 74 65 72 72 75 70 74 65 64 22 2c 0d 0a 20 20 20  terrupted",..   
7220: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49       /* SQLITE_I
7230: 4f 45 52 52 20 20 20 20 20 20 20 2a 2f 20 22 64  OERR       */ "d
7240: 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 22 2c 0d  isk I/O error",.
7250: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7260: 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20 2a  TE_CORRUPT     *
7270: 2f 20 22 64 61 74 61 62 61 73 65 20 64 69 73 6b  / "database disk
7280: 20 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f 72   image is malfor
7290: 6d 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  med",..        /
72a0: 2a 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  * SQLITE_NOTFOUN
72b0: 44 20 20 20 20 2a 2f 20 22 75 6e 6b 6e 6f 77 6e  D    */ "unknown
72c0: 20 6f 70 65 72 61 74 69 6f 6e 22 2c 0d 0a 20 20   operation",..  
72d0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
72e0: 46 55 4c 4c 20 20 20 20 20 20 20 20 2a 2f 20 22  FULL        */ "
72f0: 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73 6b  database or disk
7300: 20 69 73 20 66 75 6c 6c 22 2c 0d 0a 20 20 20 20   is full",..    
7310: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43 41      /* SQLITE_CA
7320: 4e 54 4f 50 45 4e 20 20 20 20 2a 2f 20 22 75 6e  NTOPEN    */ "un
7330: 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74  able to open dat
7340: 61 62 61 73 65 20 66 69 6c 65 22 2c 0d 0a 20 20  abase file",..  
7350: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
7360: 50 52 4f 54 4f 43 4f 4c 20 20 20 20 2a 2f 20 22  PROTOCOL    */ "
7370: 6c 6f 63 6b 69 6e 67 20 70 72 6f 74 6f 63 6f 6c  locking protocol
7380: 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53  ",..        /* S
7390: 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20  QLITE_EMPTY     
73a0: 20 20 2a 2f 20 22 74 61 62 6c 65 20 63 6f 6e 74    */ "table cont
73b0: 61 69 6e 73 20 6e 6f 20 64 61 74 61 22 2c 0d 0a  ains no data",..
73c0: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
73d0: 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 2a 2f  E_SCHEMA      */
73e0: 20 22 64 61 74 61 62 61 73 65 20 73 63 68 65 6d   "database schem
73f0: 61 20 68 61 73 20 63 68 61 6e 67 65 64 22 2c 0d  a has changed",.
7400: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7410: 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20 20 2a  TE_TOOBIG      *
7420: 2f 20 22 73 74 72 69 6e 67 20 6f 72 20 62 6c 6f  / "string or blo
7430: 62 20 74 6f 6f 20 62 69 67 22 2c 0d 0a 20 20 20  b too big",..   
7440: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43       /* SQLITE_C
7450: 4f 4e 53 54 52 41 49 4e 54 20 20 2a 2f 20 22 63  ONSTRAINT  */ "c
7460: 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65 64  onstraint failed
7470: 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53  ",..        /* S
7480: 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20  QLITE_MISMATCH  
7490: 20 20 2a 2f 20 22 64 61 74 61 74 79 70 65 20 6d    */ "datatype m
74a0: 69 73 6d 61 74 63 68 22 2c 0d 0a 20 20 20 20 20  ismatch",..     
74b0: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4d 49 53     /* SQLITE_MIS
74c0: 55 53 45 20 20 20 20 20 20 2a 2f 20 22 6c 69 62  USE      */ "lib
74d0: 72 61 72 79 20 72 6f 75 74 69 6e 65 20 63 61 6c  rary routine cal
74e0: 6c 65 64 20 6f 75 74 20 6f 66 20 73 65 71 75 65  led out of seque
74f0: 6e 63 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  nce",..        /
7500: 2a 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 20  * SQLITE_NOLFS  
7510: 20 20 20 20 20 2a 2f 20 22 6c 61 72 67 65 20 66       */ "large f
7520: 69 6c 65 20 73 75 70 70 6f 72 74 20 69 73 20 64  ile support is d
7530: 69 73 61 62 6c 65 64 22 2c 0d 0a 20 20 20 20 20  isabled",..     
7540: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 41 55 54     /* SQLITE_AUT
7550: 48 20 20 20 20 20 20 20 20 2a 2f 20 22 61 75 74  H        */ "aut
7560: 68 6f 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69 65  horization denie
7570: 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  d",..        /* 
7580: 53 51 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20 20  SQLITE_FORMAT   
7590: 20 20 20 2a 2f 20 22 61 75 78 69 6c 69 61 72 79     */ "auxiliary
75a0: 20 64 61 74 61 62 61 73 65 20 66 6f 72 6d 61 74   database format
75b0: 20 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20   error",..      
75c0: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 52 41 4e 47    /* SQLITE_RANG
75d0: 45 20 20 20 20 20 20 20 2a 2f 20 22 62 69 6e 64  E       */ "bind
75e0: 20 6f 72 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78   or column index
75f0: 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 22 2c 0d   out of range",.
7600: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7610: 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20 20 2a  TE_NOTADB      *
7620: 2f 20 22 66 69 6c 65 20 69 73 20 65 6e 63 72 79  / "file is encry
7630: 70 74 65 64 20 6f 72 20 69 73 20 6e 6f 74 20 61  pted or is not a
7640: 20 64 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20   database",..   
7650: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4e       /* SQLITE_N
7660: 4f 54 49 43 45 20 20 20 20 20 20 2a 2f 20 22 6e  OTICE      */ "n
7670: 6f 74 69 66 69 63 61 74 69 6f 6e 20 6d 65 73 73  otification mess
7680: 61 67 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  age",..        /
7690: 2a 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47  * SQLITE_WARNING
76a0: 20 20 20 20 20 2a 2f 20 22 77 61 72 6e 69 6e 67       */ "warning
76b0: 20 6d 65 73 73 61 67 65 22 0d 0a 20 20 20 20 7d   message"..    }
76c0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
76d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7720: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
7730: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7740: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74     /// Returns t
7750: 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
7760: 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
7770: 65 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  ed SQLite return
7780: 20 63 6f 64 65 20 75 73 69 6e 67 0d 0a 20 20 20   code using..   
7790: 20 2f 2f 2f 20 74 68 65 20 69 6e 74 65 72 6e 61   /// the interna
77a0: 6c 20 73 74 61 74 69 63 20 6c 6f 6f 6b 75 70 20  l static lookup 
77b0: 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  table...    /// 
77c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
77d0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
77e0: 22 72 63 22 3e 54 68 65 20 53 51 4c 69 74 65 20  "rc">The SQLite 
77f0: 72 65 74 75 72 6e 20 63 6f 64 65 2e 3c 2f 70 61  return code.</pa
7800: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
7810: 65 74 75 72 6e 73 3e 54 68 65 20 65 72 72 6f 72  eturns>The error
7820: 20 6d 65 73 73 61 67 65 20 6f 72 20 6e 75 6c 6c   message or null
7830: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
7840: 20 66 6f 75 6e 64 2e 3c 2f 72 65 74 75 72 6e 73   found.</returns
7850: 3e 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  >..    protected
7860: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 46   static string F
7870: 61 6c 6c 62 61 63 6b 47 65 74 45 72 72 6f 72 53  allbackGetErrorS
7880: 74 72 69 6e 67 28 53 51 4c 69 74 65 45 72 72 6f  tring(SQLiteErro
7890: 72 43 6f 64 65 20 72 63 29 0d 0a 20 20 20 20 7b  rCode rc)..    {
78a0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 65  ..        if (_e
78b0: 72 72 6f 72 4d 65 73 73 61 67 65 73 20 3d 3d 20  rrorMessages == 
78c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
78d0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
78e0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ...        int i
78f0: 6e 64 65 78 20 3d 20 28 69 6e 74 29 72 63 3b 0d  ndex = (int)rc;.
7900: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
7910: 69 6e 64 65 78 20 3c 20 30 29 20 7c 7c 20 28 69  index < 0) || (i
7920: 6e 64 65 78 20 3e 3d 20 5f 65 72 72 6f 72 4d 65  ndex >= _errorMe
7930: 73 73 61 67 65 73 2e 4c 65 6e 67 74 68 29 29 0d  ssages.Length)).
7940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64  .            ind
7950: 65 78 20 3d 20 28 69 6e 74 29 53 51 4c 69 74 65  ex = (int)SQLite
7960: 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
7970: 20 2f 2a 20 4d 61 6b 65 20 69 6e 74 6f 20 67 65   /* Make into ge
7980: 6e 65 72 69 63 20 65 72 72 6f 72 2e 20 2a 2f 0d  neric error. */.
7990: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
79a0: 6e 20 5f 65 72 72 6f 72 4d 65 73 73 61 67 65 73  n _errorMessages
79b0: 5b 69 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 7d 0d  [index];..    }.
79c0: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
79d0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
79e0: 74 4c 61 73 74 45 72 72 6f 72 28 53 51 4c 69 74  tLastError(SQLit
79f0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
7a00: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
7a10: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
7a20: 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75    if ((hdl == nu
7a30: 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e  ll) || (db == In
7a40: 74 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20  tPtr.Zero))..   
7a50: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7a60: 22 6e 75 6c 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e  "null connection
7a70: 20 6f 72 20 64 61 74 61 62 61 73 65 20 68 61 6e   or database han
7a80: 64 6c 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dle";....       
7a90: 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d   string result =
7aa0: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
7ab0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
7ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7ad0: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
7ae0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
7af0: 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45   finally /* NOTE
7b00: 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28 29  : Thread.Abort()
7b10: 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d   protection. */.
7b20: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
7b30: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
7b40: 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
7b50: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c         lock (hdl
7b60: 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73  .syncRoot)..#els
7b70: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  e..            l
7b80: 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69  ock (hdl)..#endi
7b90: 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
7ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7bb0: 20 20 69 66 20 28 21 68 64 6c 2e 49 73 49 6e 76    if (!hdl.IsInv
7bc0: 61 6c 69 64 20 26 26 20 21 68 64 6c 2e 49 73 43  alid && !hdl.IsC
7bd0: 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  losed)..        
7be0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
7bf0: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
7c00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7c10: 20 20 20 20 20 69 6e 74 20 6c 65 6e 20 3d 20 30       int len = 0
7c20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
7c30: 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
7c40: 55 54 46 38 54 6f 53 74 72 69 6e 67 28 55 6e 73  UTF8ToString(Uns
7c50: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
7c60: 2e 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f  .sqlite3_errmsg_
7c70: 69 6e 74 65 72 6f 70 28 64 62 2c 20 72 65 66 20  interop(db, ref 
7c80: 6c 65 6e 29 2c 20 6c 65 6e 29 3b 0d 0a 23 65 6c  len), len);..#el
7c90: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
7ca0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
7cb0: 20 55 54 46 38 54 6f 53 74 72 69 6e 67 28 55 6e   UTF8ToString(Un
7cc0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
7cd0: 73 2e 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  s.sqlite3_errmsg
7ce0: 28 64 62 29 2c 20 2d 31 29 3b 0d 0a 23 65 6e 64  (db), -1);..#end
7cf0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
7d00: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7d10: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
7d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d40: 20 20 20 20 72 65 73 75 6c 74 20 3d 20 22 63 6c      result = "cl
7d50: 6f 73 65 64 20 6f 72 20 69 6e 76 61 6c 69 64 20  osed or invalid 
7d60: 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c  connection handl
7d70: 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
7d80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7d90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
7da0: 0d 0a 20 20 20 20 20 20 20 20 47 43 2e 4b 65 65  ..        GC.Kee
7db0: 70 41 6c 69 76 65 28 68 64 6c 29 3b 0d 0a 20 20  pAlive(hdl);..  
7dc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
7dd0: 75 6c 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ult;..    }.... 
7de0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7df0: 69 63 20 76 6f 69 64 20 46 69 6e 69 73 68 42 61  ic void FinishBa
7e00: 63 6b 75 70 28 53 51 4c 69 74 65 43 6f 6e 6e 65  ckup(SQLiteConne
7e10: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
7e20: 20 49 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d   IntPtr backup).
7e30: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
7e40: 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c  if ((hdl == null
7e50: 29 20 7c 7c 20 28 62 61 63 6b 75 70 20 3d 3d 20  ) || (backup == 
7e60: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65  IntPtr.Zero)) re
7e70: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
7e80: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d   try..        {.
7e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
7ea0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
7eb0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7ec0: 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a  finally /* NOTE:
7ed0: 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28 29 20   Thread.Abort() 
7ee0: 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a  protection. */..
7ef0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
7f00: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
7f10: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
7f20: 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e        lock (hdl.
7f30: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65  syncRoot)..#else
7f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
7f50: 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66  ck (hdl)..#endif
7f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
7f70: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
7f80: 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
7f90: 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
7fa0: 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66  orCode n = Unsaf
7fb0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
7fc0: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69  qlite3_backup_fi
7fd0: 6e 69 73 68 5f 69 6e 74 65 72 6f 70 28 62 61 63  nish_interop(bac
7fe0: 6b 75 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  kup);..#else..  
7ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
8000: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20  LiteErrorCode n 
8010: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
8020: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 62 61  thods.sqlite3_ba
8030: 63 6b 75 70 5f 66 69 6e 69 73 68 28 62 61 63 6b  ckup_finish(back
8040: 75 70 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  up);..#endif..  
8050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8060: 20 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72   (n != SQLiteErr
8070: 6f 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77  orCode.Ok) throw
8080: 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
8090: 74 69 6f 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a  tion(n, null);..
80a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
80b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
80c0: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
80d0: 73 74 61 74 69 63 20 76 6f 69 64 20 46 69 6e 61  static void Fina
80e0: 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 53 51  lizeStatement(SQ
80f0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
8100: 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72  ndle hdl, IntPtr
8110: 20 73 74 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20   stmt)..    {.. 
8120: 20 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20         if ((hdl 
8130: 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 73 74 6d  == null) || (stm
8140: 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  t == IntPtr.Zero
8150: 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20  )) return;....  
8160: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8170: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8180: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
8190: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
81a0: 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20       finally /* 
81b0: 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f  NOTE: Thread.Abo
81c0: 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e  rt() protection.
81d0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
81e0: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
81f0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8200: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
8210: 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a  (hdl.syncRoot)..
8220: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
8230: 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23     lock (hdl)..#
8240: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
8250: 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54     {..#if !SQLIT
8260: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
8270: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
8280: 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20  teErrorCode n = 
8290: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
82a0: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61  ods.sqlite3_fina
82b0: 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 73 74 6d  lize_interop(stm
82c0: 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  t);..#else..    
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
82e0: 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20  teErrorCode n = 
82f0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
8300: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61  ods.sqlite3_fina
8310: 6c 69 7a 65 28 73 74 6d 74 29 3b 0d 0a 23 65 6e  lize(stmt);..#en
8320: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
8330: 20 20 20 20 20 69 66 20 28 6e 20 21 3d 20 53 51       if (n != SQ
8340: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
8350: 29 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69  ) throw new SQLi
8360: 74 65 45 78 63 65 70 74 69 6f 6e 28 6e 2c 20 6e  teException(n, n
8370: 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull);..         
8380: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
8390: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e  .    }....    in
83a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f  ternal static vo
83b0: 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
83c0: 6f 6e 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  on(SQLiteConnect
83d0: 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
83e0: 6e 74 50 74 72 20 64 62 29 0d 0a 20 20 20 20 7b  ntPtr db)..    {
83f0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68  ..        if ((h
8400: 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  dl == null) || (
8410: 64 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  db == IntPtr.Zer
8420: 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20  o)) return;.... 
8430: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
8440: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8450: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
8460: 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ...        }..  
8470: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a        finally /*
8480: 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62   NOTE: Thread.Ab
8490: 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e  ort() protection
84a0: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  . */..        {.
84b0: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
84c0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
84e0: 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d   (hdl.syncRoot).
84f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
8500: 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a      lock (hdl)..
8510: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
8520: 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49      {..#if !SQLI
8530: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
8540: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
8550: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d  iteErrorCode n =
8560: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
8570: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f  hods.sqlite3_clo
8580: 73 65 5f 69 6e 74 65 72 6f 70 28 64 62 29 3b 0d  se_interop(db);.
8590: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
85a0: 20 20 20 20 20 20 20 20 52 65 73 65 74 43 6f 6e          ResetCon
85b0: 6e 65 63 74 69 6f 6e 28 68 64 6c 2c 20 64 62 2c  nection(hdl, db,
85c0: 20 66 61 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20   false);....    
85d0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
85e0: 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20  teErrorCode n = 
85f0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
8600: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ods.sqlite3_clos
8610: 65 28 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  e(db);..#endif..
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8630: 69 66 20 28 6e 20 21 3d 20 53 51 4c 69 74 65 45  if (n != SQLiteE
8640: 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72  rrorCode.Ok) thr
8650: 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63  ow new SQLiteExc
8660: 65 70 74 69 6f 6e 28 6e 2c 20 47 65 74 4c 61 73  eption(n, GetLas
8670: 74 45 72 72 6f 72 28 68 64 6c 2c 20 64 62 29 29  tError(hdl, db))
8680: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
8690: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
86a0: 20 7d 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52   }....#if !INTER
86b0: 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d  OP_LEGACY_CLOSE.
86c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
86d0: 61 74 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 43  atic void CloseC
86e0: 6f 6e 6e 65 63 74 69 6f 6e 56 32 28 53 51 4c 69  onnectionV2(SQLi
86f0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64  teConnectionHand
8700: 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64  le hdl, IntPtr d
8710: 62 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  b)..    {..     
8720: 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e     if ((hdl == n
8730: 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49  ull) || (db == I
8740: 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65 74  ntPtr.Zero)) ret
8750: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
8760: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
8770: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
8780: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
8790: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66      }..        f
87a0: 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20  inally /* NOTE: 
87b0: 54 68 72 65 61 64 2e 41 62 6f 72 74 28 29 20 70  Thread.Abort() p
87c0: 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20  rotection. */.. 
87d0: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
87e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
87f0: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
8800: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73       lock (hdl.s
8810: 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d  yncRoot)..#else.
8820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
8830: 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d  k (hdl)..#endif.
8840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
8850: 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e  #if !SQLITE_STAN
8860: 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20  DARD..          
8870: 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
8880: 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65  rCode n = Unsafe
8890: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
88a0: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65  lite3_close_inte
88b0: 72 6f 70 28 64 62 29 3b 0d 0a 23 65 6c 73 65 0d  rop(db);..#else.
88c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
88d0: 20 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e   ResetConnection
88e0: 28 68 64 6c 2c 20 64 62 2c 20 66 61 6c 73 65 29  (hdl, db, false)
88f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8900: 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
8910: 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e  Code n = UnsafeN
8920: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
8930: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 64 62  ite3_close_v2(db
8940: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
8950: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8960: 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  n != SQLiteError
8970: 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e  Code.Ok) throw n
8980: 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
8990: 6f 6e 28 6e 2c 20 47 65 74 4c 61 73 74 45 72 72  on(n, GetLastErr
89a0: 6f 72 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20  or(hdl, db));.. 
89b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
89c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
89d0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e  #endif....    in
89e0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
89f0: 6f 6c 20 52 65 73 65 74 43 6f 6e 6e 65 63 74 69  ol ResetConnecti
8a00: 6f 6e 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  on(SQLiteConnect
8a10: 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
8a20: 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 63  ntPtr db, bool c
8a30: 61 6e 54 68 72 6f 77 29 0d 0a 20 20 20 20 7b 0d  anThrow)..    {.
8a40: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64  .        if ((hd
8a50: 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64  l == null) || (d
8a60: 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b == IntPtr.Zero
8a70: 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b  )) return false;
8a80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  ....        bool
8a90: 20 72 65 73 75 6c 74 20 3d 20 66 61 6c 73 65 3b   result = false;
8aa0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
8ab0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8ac0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
8ad0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
8ae0: 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c  }..        final
8af0: 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65  ly /* NOTE: Thre
8b00: 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65  ad.Abort() prote
8b10: 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20  ction. */..     
8b20: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
8b30: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8b40: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
8b50: 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52   lock (hdl.syncR
8b60: 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  oot)..#else..   
8b70: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8b80: 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dl)..#endif..   
8b90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8ba0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8bb0: 63 61 6e 54 68 72 6f 77 20 26 26 20 68 64 6c 2e  canThrow && hdl.
8bc0: 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20  IsInvalid)..    
8bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8be0: 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
8bf0: 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
8c00: 69 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63 74  ion("The connect
8c10: 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 69 6e  ion handle is in
8c20: 76 61 6c 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20  valid.");....   
8c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8c40: 28 63 61 6e 54 68 72 6f 77 20 26 26 20 68 64 6c  (canThrow && hdl
8c50: 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20  .IsClosed)..    
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c70: 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
8c80: 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
8c90: 69 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63 74  ion("The connect
8ca0: 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 63 6c  ion handle is cl
8cb0: 6f 73 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20  osed.");....    
8cc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8cd0: 21 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26  !hdl.IsInvalid &
8ce0: 26 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29  & !hdl.IsClosed)
8cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8d10: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
8d20: 73 74 6d 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65  stmt = IntPtr.Ze
8d30: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
8d40: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
8d50: 72 72 6f 72 43 6f 64 65 20 6e 3b 0d 0a 0d 0a 20  rrorCode n;.... 
8d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d70: 20 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20     do..         
8d80: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8da0: 20 20 20 20 20 20 73 74 6d 74 20 3d 20 55 6e 73        stmt = Uns
8db0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8dc0: 2e 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74  .sqlite3_next_st
8dd0: 6d 74 28 64 62 2c 20 73 74 6d 74 29 3b 0d 0a 20  mt(db, stmt);.. 
8de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8df0: 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20         if (stmt 
8e00: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
8e10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8e20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
8e30: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
8e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 20                n 
8e60: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
8e70: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65  thods.sqlite3_re
8e80: 73 65 74 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74  set_interop(stmt
8e90: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
8ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8eb0: 20 20 20 20 20 20 20 6e 20 3d 20 55 6e 73 61 66         n = Unsaf
8ec0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
8ed0: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 73 74 6d  qlite3_reset(stm
8ee0: 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  t);..#endif..   
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 77 68              } wh
8f20: 69 6c 65 20 28 73 74 6d 74 20 21 3d 20 49 6e 74  ile (stmt != Int
8f30: 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20  Ptr.Zero);....  
8f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f50: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8f60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
8f70: 45 3a 20 49 73 20 61 20 74 72 61 6e 73 61 63 74  E: Is a transact
8f80: 69 6f 6e 20 4e 4f 54 20 70 65 6e 64 69 6e 67 20  ion NOT pending 
8f90: 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  on the connectio
8fa0: 6e 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n?..            
8fb0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
8fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fd0: 69 66 20 28 49 73 41 75 74 6f 63 6f 6d 6d 69 74  if (IsAutocommit
8fe0: 28 68 64 6c 2c 20 64 62 29 29 0d 0a 20 20 20 20  (hdl, db))..    
8ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9000: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9010: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
9020: 74 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  t = true;..     
9030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9040: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9050: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
9060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9070: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9080: 20 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 55             n = U
9090: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
90a0: 64 73 2e 73 71 6c 69 74 65 33 5f 65 78 65 63 28  ds.sqlite3_exec(
90b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
90c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 62                db
90d0: 2c 20 54 6f 55 54 46 38 28 22 52 4f 4c 4c 42 41  , ToUTF8("ROLLBA
90e0: 43 4b 22 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72  CK"), IntPtr.Zer
90f0: 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  o, IntPtr.Zero,.
9100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9110: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
9120: 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 20   stmt);....     
9130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9140: 20 20 20 69 66 20 28 6e 20 3d 3d 20 53 51 4c 69     if (n == SQLi
9150: 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d  teErrorCode.Ok).
9160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9170: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
91a0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
91d0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
91e0: 69 66 20 28 63 61 6e 54 68 72 6f 77 29 0d 0a 20  if (canThrow).. 
91f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9220: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
9230: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
9240: 6e 2c 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28  n, GetLastError(
9250: 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20  hdl, db));..    
9260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9270: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
9280: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
92a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
92b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
92c0: 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65 28     GC.KeepAlive(
92d0: 68 64 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 72  hdl);..        r
92e0: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
92f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65     }....    inte
9300: 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
9310: 20 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28 53 51   IsAutocommit(SQ
9320: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61  LiteConnectionHa
9330: 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72  ndle hdl, IntPtr
9340: 20 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20   db)..    {..   
9350: 20 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d       if ((hdl ==
9360: 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d   null) || (db ==
9370: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20 72   IntPtr.Zero)) r
9380: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
9390: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 73          bool res
93a0: 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a  ult = false;....
93b0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
93c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
93d0: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
93e0: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
93f0: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f         finally /
9400: 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41  * NOTE: Thread.A
9410: 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f  bort() protectio
9420: 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  n. */..        {
9430: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
9440: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
9450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
9460: 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29  k (hdl.syncRoot)
9470: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
9480: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d       lock (hdl).
9490: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
94a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
94b0: 20 20 20 20 20 20 20 20 69 66 20 28 21 68 64 6c          if (!hdl
94c0: 2e 49 73 49 6e 76 61 6c 69 64 20 26 26 20 21 68  .IsInvalid && !h
94d0: 64 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20  dl.IsClosed)..  
94e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94f0: 20 20 72 65 73 75 6c 74 20 3d 20 28 55 6e 73 61    result = (Unsa
9500: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
9510: 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f  sqlite3_get_auto
9520: 63 6f 6d 6d 69 74 28 64 62 29 20 3d 3d 20 31 29  commit(db) == 1)
9530: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
9540: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
9550: 20 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76       GC.KeepAliv
9560: 65 28 68 64 6c 29 3b 20 2f 2a 20 4e 4f 54 45 3a  e(hdl); /* NOTE:
9570: 20 55 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64   Unreachable cod
9580: 65 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72  e. */..        r
9590: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
95a0: 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f     }..  }....  /
95b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
95c0: 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ///..  /// </sum
95d0: 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
95e0: 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74  interface ISQLit
95f0: 65 53 63 68 65 6d 61 45 78 74 65 6e 73 69 6f 6e  eSchemaExtension
9600: 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  s..  {..      //
9610: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9620: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 74     /// Creates t
9630: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 20  emporary tables 
9640: 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  on the connectio
9650: 6e 20 73 6f 20 73 63 68 65 6d 61 20 69 6e 66 6f  n so schema info
9660: 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 71  rmation can be q
9670: 75 65 72 69 65 64 2e 0d 0a 20 20 20 20 20 20 2f  ueried...      /
9680: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9690: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
96a0: 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
96b0: 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  ">..      /// Th
96c0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 70 6f  e connection upo
96d0: 6e 20 77 68 69 63 68 20 74 6f 20 62 75 69 6c 64  n which to build
96e0: 20 74 68 65 20 73 63 68 65 6d 61 20 74 61 62 6c   the schema tabl
96f0: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
9700: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 76  /param>..      v
9710: 6f 69 64 20 42 75 69 6c 64 54 65 6d 70 53 63 68  oid BuildTempSch
9720: 65 6d 61 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ema(SQLiteConnec
9730: 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29  tion connection)
9740: 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 5b 46 6c 61  ;..  }....  [Fla
9750: 67 73 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  gs]..  internal 
9760: 65 6e 75 6d 20 53 51 4c 69 74 65 4f 70 65 6e 46  enum SQLiteOpenF
9770: 6c 61 67 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20  lagsEnum..  {.. 
9780: 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 20 20     None = 0,..  
9790: 20 20 52 65 61 64 4f 6e 6c 79 20 3d 20 30 78 30    ReadOnly = 0x0
97a0: 31 2c 0d 0a 20 20 20 20 52 65 61 64 57 72 69 74  1,..    ReadWrit
97b0: 65 20 3d 20 30 78 30 32 2c 0d 0a 20 20 20 20 43  e = 0x02,..    C
97c0: 72 65 61 74 65 20 3d 20 30 78 30 34 2c 0d 0a 20  reate = 0x04,.. 
97d0: 20 20 20 55 72 69 20 3d 20 30 78 34 30 2c 0d 0a     Uri = 0x40,..
97e0: 20 20 20 20 53 68 61 72 65 64 43 61 63 68 65 20      SharedCache 
97f0: 3d 20 30 78 30 31 30 30 30 30 30 30 2c 0d 0a 20  = 0x01000000,.. 
9800: 20 20 20 44 65 66 61 75 6c 74 20 3d 20 30 78 30     Default = 0x0
9810: 36 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  6,..  }....  ///
9820: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
9830: 2f 20 54 68 65 20 65 78 74 72 61 20 62 65 68 61  / The extra beha
9840: 76 69 6f 72 61 6c 20 66 6c 61 67 73 20 74 68 61  vioral flags tha
9850: 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64  t can be applied
9860: 20 74 6f 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e   to a connection
9870: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
9880: 72 79 3e 0d 0a 20 20 5b 46 6c 61 67 73 28 29 5d  ry>..  [Flags()]
9890: 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
98a0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
98b0: 46 6c 61 67 73 20 3a 20 6c 6f 6e 67 0d 0a 20 20  Flags : long..  
98c0: 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
98d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
98e0: 2f 20 4e 6f 20 65 78 74 72 61 20 66 6c 61 67 73  / No extra flags
98f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9900: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
9910: 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20  one = 0x0,....  
9920: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
9930: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
9940: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61  ble logging of a
9950: 6c 6c 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ll SQL statement
9960: 73 20 74 6f 20 62 65 20 70 72 65 70 61 72 65 64  s to be prepared
9970: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
9980: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
9990: 6f 67 50 72 65 70 61 72 65 20 3d 20 30 78 31 2c  ogPrepare = 0x1,
99a0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
99b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
99c0: 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e  // Enable loggin
99d0: 67 20 6f 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70  g of all bound p
99e0: 61 72 61 6d 65 74 65 72 20 74 79 70 65 73 20 61  arameter types a
99f0: 6e 64 20 72 61 77 20 76 61 6c 75 65 73 2e 0d 0a  nd raw values...
9a00: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9a10: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50  ary>..      LogP
9a20: 72 65 42 69 6e 64 20 3d 20 30 78 32 2c 0d 0a 0d  reBind = 0x2,...
9a30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9a40: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9a50: 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f  Enable logging o
9a60: 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61  f all bound para
9a70: 6d 65 74 65 72 20 73 74 72 6f 6e 67 6c 79 20 74  meter strongly t
9a80: 79 70 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  yped values...  
9a90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9aa0: 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 42 69 6e  y>..      LogBin
9ab0: 64 20 3d 20 30 78 34 2c 0d 0a 0d 0a 20 20 20 20  d = 0x4,....    
9ac0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9ad0: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  .      /// Enabl
9ae0: 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c  e logging of all
9af0: 20 65 78 63 65 70 74 69 6f 6e 73 20 63 61 75 67   exceptions caug
9b00: 68 74 20 66 72 6f 6d 20 75 73 65 72 2d 70 72 6f  ht from user-pro
9b10: 76 69 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  vided..      ///
9b20: 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 20 63 61   managed code ca
9b30: 6c 6c 65 64 20 66 72 6f 6d 20 6e 61 74 69 76 65  lled from native
9b40: 20 63 6f 64 65 20 76 69 61 20 64 65 6c 65 67 61   code via delega
9b50: 74 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tes...      /// 
9b60: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9b70: 20 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63    LogCallbackExc
9b80: 65 70 74 69 6f 6e 20 3d 20 30 78 38 2c 0d 0a 0d  eption = 0x8,...
9b90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
9ba0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
9bb0: 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f  Enable logging o
9bc0: 66 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72  f backup API err
9bd0: 6f 72 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ors...      /// 
9be0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
9bf0: 20 20 4c 6f 67 42 61 63 6b 75 70 20 3d 20 30 78    LogBackup = 0x
9c00: 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  10,....      ///
9c10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9c20: 20 20 2f 2f 2f 20 53 6b 69 70 20 61 64 64 69 6e    /// Skip addin
9c30: 67 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20  g the extension 
9c40: 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69 64  functions provid
9c50: 65 64 20 62 79 20 74 68 65 20 6e 61 74 69 76 65  ed by the native
9c60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65  ..      /// inte
9c70: 72 6f 70 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20  rop assembly... 
9c80: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9c90: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 45 78 74  ry>..      NoExt
9ca0: 65 6e 73 69 6f 6e 46 75 6e 63 74 69 6f 6e 73 20  ensionFunctions 
9cb0: 3d 20 30 78 32 30 2c 0d 0a 0d 0a 20 20 20 20 20  = 0x20,....     
9cc0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9cd0: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62        /// When b
9ce0: 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72  inding parameter
9cf0: 20 76 61 6c 75 65 73 20 77 69 74 68 20 74 68 65   values with the
9d00: 20 3c 73 65 65 20 63 72 65 66 3d 22 55 49 6e 74   <see cref="UInt
9d10: 33 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  32" />..      //
9d20: 2f 20 74 79 70 65 2c 20 75 73 65 20 74 68 65 20  / type, use the 
9d30: 69 6e 74 65 72 6f 70 20 6d 65 74 68 6f 64 20 74  interop method t
9d40: 68 61 74 20 61 63 63 65 70 74 73 20 61 6e 20 3c  hat accepts an <
9d50: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
9d60: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76   />..      /// v
9d70: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
9d80: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9d90: 20 20 20 42 69 6e 64 55 49 6e 74 33 32 41 73 49     BindUInt32AsI
9da0: 6e 74 36 34 20 3d 20 30 78 34 30 2c 0d 0a 0d 0a  nt64 = 0x40,....
9db0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
9dc0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
9dd0: 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61  hen binding para
9de0: 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c  meter values, al
9df0: 77 61 79 73 20 62 69 6e 64 20 74 68 65 6d 20 61  ways bind them a
9e00: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
9e10: 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c  re..      /// pl
9e20: 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e  ain text (i.e. n
9e30: 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61 74 65 2f  o numeric, date/
9e40: 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63  time, or other c
9e50: 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c  onversions shoul
9e60: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  d..      /// be 
9e70: 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20  attempted)...   
9e80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9e90: 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64 41 6c 6c  >..      BindAll
9ea0: 41 73 54 65 78 74 20 3d 20 30 78 38 30 2c 0d 0a  AsText = 0x80,..
9eb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
9ec0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
9ed0: 20 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67 20   When returning 
9ee0: 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61  column values, a
9ef0: 6c 77 61 79 73 20 72 65 74 75 72 6e 20 74 68 65  lways return the
9f00: 6d 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79  m as though they
9f10: 20 77 65 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f   were..      ///
9f20: 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65   plain text (i.e
9f30: 2e 20 6e 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61  . no numeric, da
9f40: 74 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65  te/time, or othe
9f50: 72 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68  r conversions sh
9f60: 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ould..      /// 
9f70: 62 65 20 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a  be attempted)...
9f80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9f90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 47 65 74 41  ary>..      GetA
9fa0: 6c 6c 41 73 54 65 78 74 20 3d 20 30 78 31 30 30  llAsText = 0x100
9fb0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
9fc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9fd0: 2f 2f 2f 20 50 72 65 76 65 6e 74 20 74 68 69 73  /// Prevent this
9fe0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
9ff0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e  teConnection" />
a000: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
a010: 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f   from..      ///
a020: 20 6c 6f 61 64 69 6e 67 20 65 78 74 65 6e 73 69   loading extensi
a030: 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ons...      /// 
a040: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a050: 20 20 4e 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f    NoLoadExtensio
a060: 6e 20 3d 20 30 78 32 30 30 2c 0d 0a 0d 0a 23 69  n = 0x200,....#i
a070: 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41  f INTEROP_VIRTUA
a080: 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f  L_TABLE..      /
a090: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a0a0: 20 20 20 20 2f 2f 2f 20 50 72 65 76 65 6e 74 20      /// Prevent 
a0b0: 74 68 69 73 20 3c 73 65 65 20 63 72 65 66 3d 22  this <see cref="
a0c0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
a0d0: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
a0e0: 61 6e 63 65 20 66 72 6f 6d 0d 0a 20 20 20 20 20  ance from..     
a0f0: 20 2f 2f 2f 20 63 72 65 61 74 69 6e 67 20 76 69   /// creating vi
a100: 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
a110: 6c 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  les...      /// 
a120: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a130: 20 20 4e 6f 43 72 65 61 74 65 4d 6f 64 75 6c 65    NoCreateModule
a140: 20 3d 20 30 78 34 30 30 2c 0d 0a 23 65 6e 64 69   = 0x400,..#endi
a150: 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  f....      /// <
a160: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a170: 2f 2f 2f 20 53 6b 69 70 20 62 69 6e 64 69 6e 67  /// Skip binding
a180: 20 61 6e 79 20 66 75 6e 63 74 69 6f 6e 73 20 70   any functions p
a190: 72 6f 76 69 64 65 64 20 62 79 20 6f 74 68 65 72  rovided by other
a1a0: 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c   managed assembl
a1b0: 69 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20  ies when..      
a1c0: 2f 2f 2f 20 6f 70 65 6e 69 6e 67 20 74 68 65 20  /// opening the 
a1d0: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
a1e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a1f0: 3e 0d 0a 20 20 20 20 20 20 4e 6f 42 69 6e 64 46  >..      NoBindF
a200: 75 6e 63 74 69 6f 6e 73 20 3d 20 30 78 38 30 30  unctions = 0x800
a210: 2c 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ,....#if INTEROP
a220: 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a  _VIRTUAL_TABLE..
a230: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a240: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53  ry>..      /// S
a250: 6b 69 70 20 73 65 74 74 69 6e 67 20 74 68 65 20  kip setting the 
a260: 6c 6f 67 67 69 6e 67 20 72 65 6c 61 74 65 64 20  logging related 
a270: 70 72 6f 70 65 72 74 69 65 73 20 6f 66 20 74 68  properties of th
a280: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
a290: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
a2a0: 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  dule" /> object 
a2b0: 69 6e 73 74 61 6e 63 65 20 74 68 61 74 20 77 61  instance that wa
a2c0: 73 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20  s passed to..   
a2d0: 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20     /// the <see 
a2e0: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
a2f0: 65 63 74 69 6f 6e 2e 43 72 65 61 74 65 4d 6f 64  ection.CreateMod
a300: 75 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ule" /> method..
a310: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a320: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 4c  mary>..      NoL
a330: 6f 67 4d 6f 64 75 6c 65 20 3d 20 30 78 31 30 30  ogModule = 0x100
a340: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
a350: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a360: 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67   /// Enable logg
a370: 69 6e 67 20 6f 66 20 61 6c 6c 20 76 69 72 74 75  ing of all virtu
a380: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20  al table module 
a390: 65 72 72 6f 72 73 20 73 65 65 6e 20 62 79 20 74  errors seen by t
a3a0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
a3b0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
a3c0: 6f 64 75 6c 65 2e 53 65 74 54 61 62 6c 65 45 72  odule.SetTableEr
a3d0: 72 6f 72 28 49 6e 74 50 74 72 2c 53 74 72 69 6e  ror(IntPtr,Strin
a3e0: 67 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  g)" /> method...
a3f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a400: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d  ary>..      LogM
a410: 6f 64 75 6c 65 45 72 72 6f 72 20 3d 20 30 78 32  oduleError = 0x2
a420: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
a430: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a440: 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f     /// Enable lo
a450: 67 67 69 6e 67 20 6f 66 20 63 65 72 74 61 69 6e  gging of certain
a460: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
a470: 6f 64 75 6c 65 20 65 78 63 65 70 74 69 6f 6e 73  odule exceptions
a480: 20 74 68 61 74 20 63 61 6e 6e 6f 74 0d 0a 20 20   that cannot..  
a490: 20 20 20 20 2f 2f 2f 20 62 65 20 65 61 73 69 6c      /// be easil
a4a0: 79 20 64 69 73 63 6f 76 65 72 65 64 20 76 69 61  y discovered via
a4b0: 20 6f 74 68 65 72 20 6d 65 61 6e 73 2e 0d 0a 20   other means... 
a4c0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a4d0: 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f  ry>..      LogMo
a4e0: 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 20 3d 20  duleException = 
a4f0: 30 78 34 30 30 30 2c 0d 0a 23 65 6e 64 69 66 0d  0x4000,..#endif.
a500: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
a510: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a520: 2f 20 45 6e 61 62 6c 65 20 74 72 61 63 69 6e 67  / Enable tracing
a530: 20 6f 66 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20   of potentially 
a540: 69 6d 70 6f 72 74 61 6e 74 20 5b 6e 6f 6e 2d 66  important [non-f
a550: 61 74 61 6c 5d 20 65 72 72 6f 72 20 63 6f 6e 64  atal] error cond
a560: 69 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20 2f 2f  itions..      //
a570: 2f 20 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65  / that cannot be
a580: 20 65 61 73 69 6c 79 20 72 65 70 6f 72 74 65 64   easily reported
a590: 20 74 68 72 6f 75 67 68 20 6f 74 68 65 72 20 6d   through other m
a5a0: 65 61 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  eans...      ///
a5b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a5c0: 20 20 20 54 72 61 63 65 57 61 72 6e 69 6e 67 20     TraceWarning 
a5d0: 3d 20 30 78 38 30 30 30 2c 0d 0a 0d 0a 20 20 20  = 0x8000,....   
a5e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a5f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
a600: 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74   binding paramet
a610: 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  er values, alway
a620: 73 20 75 73 65 20 74 68 65 20 69 6e 76 61 72 69  s use the invari
a630: 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e  ant culture when
a640: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76  ..      /// conv
a650: 65 72 74 69 6e 67 20 74 68 65 69 72 20 76 61 6c  erting their val
a660: 75 65 73 20 66 72 6f 6d 20 73 74 72 69 6e 67 73  ues from strings
a670: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a680: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
a690: 6f 6e 76 65 72 74 49 6e 76 61 72 69 61 6e 74 54  onvertInvariantT
a6a0: 65 78 74 20 3d 20 30 78 31 30 30 30 30 2c 0d 0a  ext = 0x10000,..
a6b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a6c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a6d0: 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61   When binding pa
a6e0: 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20  rameter values, 
a6f0: 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 69  always use the i
a700: 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65  nvariant culture
a710: 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f   when..      ///
a720: 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69   converting thei
a730: 72 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69  r values to stri
a740: 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ngs...      /// 
a750: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a760: 20 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54    BindInvariantT
a770: 65 78 74 20 3d 20 30 78 32 30 30 30 30 2c 0d 0a  ext = 0x20000,..
a780: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a790: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a7a0: 20 44 69 73 61 62 6c 65 20 75 73 69 6e 67 20 74   Disable using t
a7b0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f  he connection po
a7c0: 6f 6c 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20  ol by default.  
a7d0: 49 66 20 74 68 65 20 22 50 6f 6f 6c 69 6e 67 22  If the "Pooling"
a7e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e  ..      /// conn
a7f0: 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72  ection string pr
a800: 6f 70 65 72 74 79 20 69 73 20 73 70 65 63 69 66  operty is specif
a810: 69 65 64 2c 20 69 74 73 20 76 61 6c 75 65 20 77  ied, its value w
a820: 69 6c 6c 20 6f 76 65 72 72 69 64 65 0d 0a 20 20  ill override..  
a830: 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 66 6c 61      /// this fla
a840: 67 2e 20 20 54 68 65 20 70 72 65 63 69 73 65 20  g.  The precise 
a850: 6f 75 74 63 6f 6d 65 20 6f 66 20 63 6f 6d 62 69  outcome of combi
a860: 6e 69 6e 67 20 74 68 69 73 20 66 6c 61 67 20 77  ning this flag w
a870: 69 74 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  ith the..      /
a880: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 73  // <see cref="Us
a890: 65 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 22  eConnectionPool"
a8a0: 20 2f 3e 20 66 6c 61 67 20 69 73 20 75 6e 73 70   /> flag is unsp
a8b0: 65 63 69 66 69 65 64 3b 20 68 6f 77 65 76 65 72  ecified; however
a8c0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 65  ,..      /// one
a8d0: 20 6f 66 20 74 68 65 20 66 6c 61 67 73 20 77 69   of the flags wi
a8e0: 6c 6c 20 62 65 20 69 6e 20 65 66 66 65 63 74 2e  ll be in effect.
a8f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a900: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
a910: 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20 3d  ConnectionPool =
a920: 20 30 78 34 30 30 30 30 2c 0d 0a 0d 0a 20 20 20   0x40000,....   
a930: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a940: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62  ..      /// Enab
a950: 6c 65 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e  le using the con
a960: 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 20 62 79 20  nection pool by 
a970: 64 65 66 61 75 6c 74 2e 20 20 49 66 20 74 68 65  default.  If the
a980: 20 22 50 6f 6f 6c 69 6e 67 22 0d 0a 20 20 20 20   "Pooling"..    
a990: 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e    /// connection
a9a0: 20 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79   string property
a9b0: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 69   is specified, i
a9c0: 74 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 6f 76  ts value will ov
a9d0: 65 72 72 69 64 65 0d 0a 20 20 20 20 20 20 2f 2f  erride..      //
a9e0: 2f 20 74 68 69 73 20 66 6c 61 67 2e 20 20 54 68  / this flag.  Th
a9f0: 65 20 70 72 65 63 69 73 65 20 6f 75 74 63 6f 6d  e precise outcom
aa00: 65 20 6f 66 20 63 6f 6d 62 69 6e 69 6e 67 20 74  e of combining t
aa10: 68 69 73 20 66 6c 61 67 20 77 69 74 68 20 74 68  his flag with th
aa20: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
aa30: 65 20 63 72 65 66 3d 22 4e 6f 43 6f 6e 6e 65 63  e cref="NoConnec
aa40: 74 69 6f 6e 50 6f 6f 6c 22 20 2f 3e 20 66 6c 61  tionPool" /> fla
aa50: 67 20 69 73 20 75 6e 73 70 65 63 69 66 69 65 64  g is unspecified
aa60: 3b 20 68 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20  ; however,..    
aa70: 20 20 2f 2f 2f 20 6f 6e 65 20 6f 66 20 74 68 65    /// one of the
aa80: 20 66 6c 61 67 73 20 77 69 6c 6c 20 62 65 20 69   flags will be i
aa90: 6e 20 65 66 66 65 63 74 2e 0d 0a 20 20 20 20 20  n effect...     
aaa0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
aab0: 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63  .      UseConnec
aac0: 74 69 6f 6e 50 6f 6f 6c 20 3d 20 30 78 38 30 30  tionPool = 0x800
aad0: 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00,....      ///
aae0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
aaf0: 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 75 73 69    /// Enable usi
ab00: 6e 67 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  ng per-connectio
ab10: 6e 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65  n mappings betwe
ab20: 65 6e 20 74 79 70 65 20 6e 61 6d 65 73 20 61 6e  en type names an
ab30: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  d..      /// <se
ab40: 65 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20  e cref="DbType" 
ab50: 2f 3e 20 76 61 6c 75 65 73 2e 20 20 41 6c 73 6f  /> values.  Also
ab60: 20 73 65 65 20 74 68 65 0d 0a 20 20 20 20 20 20   see the..      
ab70: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
ab80: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e  QLiteConnection.
ab90: 43 6c 65 61 72 54 79 70 65 4d 61 70 70 69 6e 67  ClearTypeMapping
aba0: 73 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f  s" />,..      //
abb0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
abc0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 47 65  iteConnection.Ge
abd0: 74 54 79 70 65 4d 61 70 70 69 6e 67 73 22 20 2f  tTypeMappings" /
abe0: 3e 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f  >, and..      //
abf0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
ac00: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 64  iteConnection.Ad
ac10: 64 54 79 70 65 4d 61 70 70 69 6e 67 22 20 2f 3e  dTypeMapping" />
ac20: 20 6d 65 74 68 6f 64 73 2e 20 20 54 68 65 73 65   methods.  These
ac30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 2d  ..      /// per-
ac40: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69  connection mappi
ac50: 6e 67 73 2c 20 77 68 65 6e 20 70 72 65 73 65 6e  ngs, when presen
ac60: 74 2c 20 6f 76 65 72 72 69 64 65 20 74 68 65 20  t, override the 
ac70: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0d 0a 20  corresponding.. 
ac80: 20 20 20 20 20 2f 2f 2f 20 67 6c 6f 62 61 6c 20       /// global 
ac90: 6d 61 70 70 69 6e 67 73 2e 0d 0a 20 20 20 20 20  mappings...     
aca0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
acb0: 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63  .      UseConnec
acc0: 74 69 6f 6e 54 79 70 65 73 20 3d 20 30 78 31 30  tionTypes = 0x10
acd0: 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  0000,....      /
ace0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
acf0: 20 20 20 20 2f 2f 2f 20 44 69 73 61 62 6c 65 20      /// Disable 
ad00: 75 73 69 6e 67 20 67 6c 6f 62 61 6c 20 6d 61 70  using global map
ad10: 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 74 79  pings between ty
ad20: 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20  pe names and..  
ad30: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
ad40: 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
ad50: 6c 75 65 73 2e 20 20 54 68 69 73 20 6d 61 79 20  lues.  This may 
ad60: 62 65 20 75 73 65 66 75 6c 20 69 6e 20 73 6f 6d  be useful in som
ad70: 65 20 76 65 72 79 20 6e 61 72 72 6f 77 0d 0a 20  e very narrow.. 
ad80: 20 20 20 20 20 2f 2f 2f 20 63 61 73 65 73 3b 20       /// cases; 
ad90: 68 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 72  however, if ther
ada0: 65 20 61 72 65 20 6e 6f 20 70 65 72 2d 63 6f 6e  e are no per-con
adb0: 6e 65 63 74 69 6f 6e 20 74 79 70 65 20 6d 61 70  nection type map
adc0: 70 69 6e 67 73 2c 20 74 68 65 0d 0a 20 20 20 20  pings, the..    
add0: 20 20 2f 2f 2f 20 66 61 6c 6c 62 61 63 6b 20 64    /// fallback d
ade0: 65 66 61 75 6c 74 73 20 77 69 6c 6c 20 62 65 20  efaults will be 
adf0: 75 73 65 64 20 66 6f 72 20 62 6f 74 68 20 74 79  used for both ty
ae00: 70 65 20 6e 61 6d 65 73 20 61 6e 64 20 74 68 65  pe names and the
ae10: 69 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73  ir..      /// as
ae20: 73 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63 72  sociated <see cr
ae30: 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76  ef="DbType" /> v
ae40: 61 6c 75 65 73 2e 20 20 54 68 65 72 65 66 6f 72  alues.  Therefor
ae50: 65 2c 20 75 73 65 20 6f 66 20 74 68 69 73 20 66  e, use of this f
ae60: 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  lag..      /// i
ae70: 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65  s not recommende
ae80: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
ae90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
aea0: 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 20 3d 20  NoGlobalTypes = 
aeb0: 30 78 32 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  0x200000,....   
aec0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
aed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
aee0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
aef0: 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72  SQLiteDataReader
af00: 2e 48 61 73 52 6f 77 73 22 20 2f 3e 20 70 72 6f  .HasRows" /> pro
af10: 70 65 72 74 79 20 69 73 20 75 73 65 64 2c 20 69  perty is used, i
af20: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f  t..      /// sho
af30: 75 6c 64 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a  uld return non-z
af40: 65 72 6f 20 69 66 20 74 68 65 72 65 20 77 65 72  ero if there wer
af50: 65 20 65 76 65 72 20 61 6e 79 20 72 6f 77 73 20  e ever any rows 
af60: 69 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  in the associate
af70: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 73  d..      /// res
af80: 75 6c 74 20 73 65 74 73 2e 0d 0a 20 20 20 20 20  ult sets...     
af90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
afa0: 0a 20 20 20 20 20 20 53 74 69 63 6b 79 48 61 73  .      StickyHas
afb0: 52 6f 77 73 20 3d 20 30 78 34 30 30 30 30 30 2c  Rows = 0x400000,
afc0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
afd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
afe0: 2f 2f 20 45 6e 61 62 6c 65 20 22 73 74 72 69 63  // Enable "stric
aff0: 74 22 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 65  t" transaction e
b000: 6e 6c 69 73 74 6d 65 6e 74 20 73 65 6d 61 6e 74  nlistment semant
b010: 69 63 73 2e 20 20 53 65 74 74 69 6e 67 20 74 68  ics.  Setting th
b020: 69 73 20 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f  is flag..      /
b030: 2f 2f 20 77 69 6c 6c 20 63 61 75 73 65 20 61 6e  // will cause an
b040: 20 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 62 65   exception to be
b050: 20 74 68 72 6f 77 6e 20 69 66 20 61 6e 20 61 74   thrown if an at
b060: 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74 6f  tempt is made to
b070: 20 65 6e 6c 69 73 74 0d 0a 20 20 20 20 20 20 2f   enlist..      /
b080: 2f 2f 20 69 6e 20 61 20 74 72 61 6e 73 61 63 74  // in a transact
b090: 69 6f 6e 20 77 69 74 68 20 61 6e 20 75 6e 61 76  ion with an unav
b0a0: 61 69 6c 61 62 6c 65 20 6f 72 20 75 6e 73 75 70  ailable or unsup
b0b0: 70 6f 72 74 65 64 20 69 73 6f 6c 61 74 69 6f 6e  ported isolation
b0c0: 20 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 20 20 2f   level...      /
b0d0: 2f 2f 20 49 6e 20 74 68 65 20 66 75 74 75 72 65  // In the future
b0e0: 2c 20 6d 6f 72 65 20 65 78 74 65 6e 73 69 76 65  , more extensive
b0f0: 20 63 68 65 63 6b 73 20 6d 61 79 20 62 65 20 65   checks may be e
b100: 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20 66  nabled by this f
b110: 6c 61 67 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f  lag as..      //
b120: 2f 20 77 65 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  / well...      /
b130: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b140: 20 20 20 20 20 53 74 72 69 63 74 45 6e 6c 69 73       StrictEnlis
b150: 74 6d 65 6e 74 20 3d 20 30 78 38 30 30 30 30 30  tment = 0x800000
b160: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
b170: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b180: 2f 2f 2f 20 45 6e 61 62 6c 65 20 6d 61 70 70 69  /// Enable mappi
b190: 6e 67 20 6f 66 20 75 6e 73 75 70 70 6f 72 74 65  ng of unsupporte
b1a0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73  d transaction is
b1b0: 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73 20 74  olation levels t
b1c0: 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  o the..      ///
b1d0: 20 63 6c 6f 73 65 73 74 20 73 75 70 70 6f 72 74   closest support
b1e0: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  ed transaction i
b1f0: 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 2e 0d  solation level..
b200: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b210: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4d 61 70  mary>..      Map
b220: 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 73 20  IsolationLevels 
b230: 3d 20 30 78 31 30 30 30 30 30 30 2c 0d 0a 0d 0a  = 0x1000000,....
b240: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b250: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
b260: 68 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f  hen returning co
b270: 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 74 74  lumn values, att
b280: 65 6d 70 74 20 74 6f 20 64 65 74 65 63 74 20 74  empt to detect t
b290: 68 65 20 61 66 66 69 6e 69 74 79 20 6f 66 0d 0a  he affinity of..
b2a0: 20 20 20 20 20 20 2f 2f 2f 20 74 65 78 74 75 61        /// textua
b2b0: 6c 20 76 61 6c 75 65 73 20 62 79 20 63 68 65 63  l values by chec
b2c0: 6b 69 6e 67 20 69 66 20 74 68 65 79 20 66 75 6c  king if they ful
b2d0: 6c 79 20 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68  ly conform to th
b2e0: 6f 73 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ose of the..    
b2f0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
b300: 22 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75  "TypeAffinity.Nu
b310: 6c 6c 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f  ll" />,..      /
b320: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79  // <see cref="Ty
b330: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
b340: 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  " />,..      ///
b350: 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65   <see cref="Type
b360: 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 22  Affinity.Double"
b370: 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   />,..      /// 
b380: 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79  or <see cref="Ty
b390: 70 65 41 66 66 69 6e 69 74 79 2e 44 61 74 65 54  peAffinity.DateT
b3a0: 69 6d 65 22 20 2f 3e 20 74 79 70 65 73 2e 0d 0a  ime" /> types...
b3b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
b3c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 65  ary>..      Dete
b3d0: 63 74 54 65 78 74 41 66 66 69 6e 69 74 79 20 3d  ctTextAffinity =
b3e0: 20 30 78 32 30 30 30 30 30 30 2c 0d 0a 0d 0a 20   0x2000000,.... 
b3f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b400: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
b410: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  en returning col
b420: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 74 74 65  umn values, atte
b430: 6d 70 74 20 74 6f 20 64 65 74 65 63 74 20 74 68  mpt to detect th
b440: 65 20 74 79 70 65 20 6f 66 0d 0a 20 20 20 20 20  e type of..     
b450: 20 2f 2f 2f 20 73 74 72 69 6e 67 20 76 61 6c 75   /// string valu
b460: 65 73 20 62 79 20 63 68 65 63 6b 69 6e 67 20 69  es by checking i
b470: 66 20 74 68 65 79 20 66 75 6c 6c 79 20 63 6f 6e  f they fully con
b480: 66 6f 72 6d 20 74 6f 20 74 68 6f 73 65 20 6f 66  form to those of
b490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
b4a0: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
b4b0: 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 22 20 2f 3e  ffinity.Null" />
b4c0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  ,..      /// <se
b4d0: 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69  e cref="TypeAffi
b4e0: 6e 69 74 79 2e 49 6e 74 36 34 22 20 2f 3e 2c 0d  nity.Int64" />,.
b4f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
b500: 63 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69  cref="TypeAffini
b510: 74 79 2e 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a  ty.Double" />,..
b520: 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65        /// or <se
b530: 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69  e cref="TypeAffi
b540: 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 22 20 2f  nity.DateTime" /
b550: 3e 20 74 79 70 65 73 2e 0d 0a 20 20 20 20 20 20  > types...      
b560: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b570: 20 20 20 20 20 20 44 65 74 65 63 74 53 74 72 69        DetectStri
b580: 6e 67 54 79 70 65 20 3d 20 30 78 34 30 30 30 30  ngType = 0x40000
b590: 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00,....      ///
b5a0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
b5b0: 20 20 2f 2f 2f 20 53 6b 69 70 20 71 75 65 72 79    /// Skip query
b5c0: 69 6e 67 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66  ing runtime conf
b5d0: 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e  iguration settin
b5e0: 67 73 20 66 6f 72 20 75 73 65 20 62 79 20 74 68  gs for use by th
b5f0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
b600: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
b610: 6e 76 65 72 74 22 20 2f 3e 20 63 6c 61 73 73 2c  nvert" /> class,
b620: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 64   including the d
b630: 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 2f 2f  efault..      //
b640: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54  / <see cref="DbT
b650: 79 70 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 6e  ype" /> value an
b660: 64 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  d default databa
b670: 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20  se type name... 
b680: 20 20 20 20 20 2f 2f 2f 20 3c 62 3e 4e 4f 54 45       /// <b>NOTE
b690: 3a 20 49 66 20 74 68 65 20 3c 73 65 65 20 63 72  : If the <see cr
b6a0: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
b6b0: 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54 79  tion.DefaultDbTy
b6c0: 70 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  pe" />..      //
b6d0: 2f 20 61 6e 64 2f 6f 72 20 3c 73 65 65 20 63 72  / and/or <see cr
b6e0: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
b6f0: 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70 65  tion.DefaultType
b700: 4e 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  Name" />..      
b710: 2f 2f 2f 20 70 72 6f 70 65 72 74 69 65 73 20 61  /// properties a
b720: 72 65 20 6e 6f 74 20 73 65 74 20 65 78 70 6c 69  re not set expli
b730: 63 69 74 6c 79 20 6e 6f 72 20 73 65 74 20 76 69  citly nor set vi
b740: 61 20 74 68 65 69 72 20 63 6f 6e 6e 65 63 74 69  a their connecti
b750: 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74  on..      /// st
b760: 72 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73 20  ring properties 
b770: 61 6e 64 20 72 65 70 65 61 74 65 64 20 63 61 6c  and repeated cal
b780: 6c 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ls to determine 
b790: 74 68 65 73 65 20 72 75 6e 74 69 6d 65 0d 0a 20  these runtime.. 
b7a0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75       /// configu
b7b0: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20  ration settings 
b7c0: 61 72 65 20 73 65 65 6e 20 74 6f 20 62 65 20 61  are seen to be a
b7d0: 20 70 72 6f 62 6c 65 6d 2c 20 74 68 69 73 20 66   problem, this f
b7e0: 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  lag..      /// s
b7f0: 68 6f 75 6c 64 20 62 65 20 73 65 74 2e 3c 2f 62  hould be set.</b
b800: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  >..      /// </s
b810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
b820: 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73  oConvertSettings
b830: 20 3d 20 30 78 38 30 30 30 30 30 30 2c 0d 0a 0d   = 0x8000000,...
b840: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
b850: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
b860: 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72  When binding par
b870: 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20 77 69  ameter values wi
b880: 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  th the <see cref
b890: 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 0d 0a  ="DateTime" />..
b8a0: 20 20 20 20 20 20 2f 2f 2f 20 74 79 70 65 2c 20        /// type, 
b8b0: 74 61 6b 65 20 74 68 65 69 72 20 3c 73 65 65 20  take their <see 
b8c0: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 4b 69  cref="DateTimeKi
b8d0: 6e 64 22 20 2f 3e 20 69 6e 74 6f 20 61 63 63 6f  nd" /> into acco
b8e0: 75 6e 74 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f  unt as..      //
b8f0: 2f 20 77 65 6c 6c 20 61 73 20 74 68 61 74 20 6f  / well as that o
b900: 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  f the associated
b910: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b920: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e  teConnection" />
b930: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b940: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 42  ummary>..      B
b950: 69 6e 64 44 61 74 65 54 69 6d 65 57 69 74 68 4b  indDateTimeWithK
b960: 69 6e 64 20 3d 20 30 78 31 30 30 30 30 30 30 30  ind = 0x10000000
b970: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
b980: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b990: 2f 2f 2f 20 49 66 20 61 6e 20 65 78 63 65 70 74  /// If an except
b9a0: 69 6f 6e 20 69 73 20 63 61 75 67 68 74 20 77 68  ion is caught wh
b9b0: 65 6e 20 72 61 69 73 69 6e 67 20 74 68 65 0d 0a  en raising the..
b9c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b9d0: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
b9e0: 63 74 69 6f 6e 2e 43 6f 6d 6d 69 74 22 20 2f 3e  ction.Commit" />
b9f0: 20 65 76 65 6e 74 2c 20 74 68 65 20 74 72 61 6e   event, the tran
ba00: 73 61 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  saction..      /
ba10: 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 6c  // should be rol
ba20: 6c 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68  led back.  If th
ba30: 69 73 20 69 73 20 6e 6f 74 20 73 70 65 63 69 66  is is not specif
ba40: 69 65 64 2c 20 74 68 65 20 74 72 61 6e 73 61 63  ied, the transac
ba50: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
ba60: 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 74 68  will continue th
ba70: 65 20 63 6f 6d 6d 69 74 20 70 72 6f 63 65 73 73  e commit process
ba80: 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
ba90: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
baa0: 0a 20 20 20 20 20 20 52 6f 6c 6c 62 61 63 6b 4f  .      RollbackO
bab0: 6e 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 32  nException = 0x2
bac0: 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0000000,....    
bad0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
bae0: 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e  .      /// If an
baf0: 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20 63 61   exception is ca
bb00: 75 67 68 74 20 77 68 65 6e 20 72 61 69 73 69 6e  ught when raisin
bb10: 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  g the..      ///
bb20: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
bb30: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 75 74  teConnection.Aut
bb40: 68 6f 72 69 7a 65 22 20 2f 3e 20 65 76 65 6e 74  horize" /> event
bb50: 2c 20 74 68 65 20 61 63 74 69 6f 6e 20 73 68 6f  , the action sho
bb60: 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  uld..      /// s
bb70: 68 6f 75 6c 64 20 62 65 20 64 65 6e 69 65 64 2e  hould be denied.
bb80: 20 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74    If this is not
bb90: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 20   specified, the 
bba0: 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a  action will be..
bbb0: 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 77 65        /// allowe
bbc0: 64 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20  d instead...    
bbd0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
bbe0: 0d 0a 20 20 20 20 20 20 44 65 6e 79 4f 6e 45 78  ..      DenyOnEx
bbf0: 63 65 70 74 69 6f 6e 20 3d 20 30 78 34 30 30 30  ception = 0x4000
bc00: 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  0000,....      /
bc10: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
bc20: 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78      /// If an ex
bc30: 63 65 70 74 69 6f 6e 20 69 73 20 63 61 75 67 68  ception is caugh
bc40: 74 20 77 68 65 6e 20 72 61 69 73 69 6e 67 20 74  t when raising t
bc50: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
bc60: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
bc70: 6f 6e 6e 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65  onnection.Progre
bc80: 73 73 22 20 2f 3e 20 65 76 65 6e 74 2c 20 74 68  ss" /> event, th
bc90: 65 20 6f 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20  e operation..   
bca0: 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65     /// should be
bcb0: 20 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20 49   interrupted.  I
bcc0: 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73 70  f this is not sp
bcd0: 65 63 69 66 69 65 64 2c 20 74 68 65 20 6f 70 65  ecified, the ope
bce0: 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  ration..      //
bcf0: 2f 20 77 69 6c 6c 20 73 69 6d 70 6c 79 20 63 6f  / will simply co
bd00: 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f  ntinue...      /
bd10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
bd20: 20 20 20 20 20 49 6e 74 65 72 72 75 70 74 4f 6e       InterruptOn
bd30: 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 38 30  Exception = 0x80
bd40: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
bd50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bd60: 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70        /// Attemp
bd70: 74 20 74 6f 20 75 6e 62 69 6e 64 20 61 6c 6c 20  t to unbind all 
bd80: 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69 64  functions provid
bd90: 65 64 20 62 79 20 6f 74 68 65 72 20 6d 61 6e 61  ed by other mana
bda0: 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73 0d 0a  ged assemblies..
bdb0: 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63        /// when c
bdc0: 6c 6f 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65  losing the conne
bdd0: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
bde0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
bdf0: 20 20 20 20 55 6e 62 69 6e 64 46 75 6e 63 74 69      UnbindFuncti
be00: 6f 6e 73 4f 6e 43 6c 6f 73 65 20 3d 20 30 78 31  onsOnClose = 0x1
be10: 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  00000000,....   
be20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
be30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
be40: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d   returning colum
be50: 6e 20 76 61 6c 75 65 73 20 61 73 20 61 20 3c 73  n values as a <s
be60: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
be70: 20 2f 3e 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20   />, skip..     
be80: 20 2f 2f 2f 20 76 65 72 69 66 79 69 6e 67 20 74   /// verifying t
be90: 68 65 69 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a  heir affinity...
bea0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
beb0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65  ary>..      NoVe
bec0: 72 69 66 79 54 65 78 74 41 66 66 69 6e 69 74 79  rifyTextAffinity
bed0: 20 3d 20 30 78 32 30 30 30 30 30 30 30 30 2c 0d   = 0x200000000,.
bee0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
bef0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
bf00: 2f 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70  / When binding p
bf10: 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20  arameter values 
bf20: 6f 72 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  or returning col
bf30: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
bf40: 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72  ys..      /// tr
bf50: 65 61 74 20 74 68 65 6d 20 61 73 20 74 68 6f 75  eat them as thou
bf60: 67 68 20 74 68 65 79 20 77 65 72 65 20 70 6c 61  gh they were pla
bf70: 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f  in text (i.e. no
bf80: 20 6e 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20   numeric,..     
bf90: 20 2f 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20   /// date/time, 
bfa0: 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76 65 72 73  or other convers
bfb0: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 61  ions should be a
bfc0: 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20  ttempted)...    
bfd0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
bfe0: 0d 0a 20 20 20 20 20 20 42 69 6e 64 41 6e 64 47  ..      BindAndG
bff0: 65 74 41 6c 6c 41 73 54 65 78 74 20 3d 20 42 69  etAllAsText = Bi
c000: 6e 64 41 6c 6c 41 73 54 65 78 74 20 7c 20 47 65  ndAllAsText | Ge
c010: 74 41 6c 6c 41 73 54 65 78 74 2c 0d 0a 0d 0a 20  tAllAsText,.... 
c020: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c030: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
c040: 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d  en binding param
c050: 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77  eter values, alw
c060: 61 79 73 20 75 73 65 20 74 68 65 20 69 6e 76 61  ays use the inva
c070: 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68  riant culture wh
c080: 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  en..      /// co
c090: 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20 76  nverting their v
c0a0: 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73  alues to strings
c0b0: 20 6f 72 20 66 72 6f 6d 20 73 74 72 69 6e 67 73   or from strings
c0c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c0d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
c0e0: 6f 6e 76 65 72 74 41 6e 64 42 69 6e 64 49 6e 76  onvertAndBindInv
c0f0: 61 72 69 61 6e 74 54 65 78 74 20 3d 20 43 6f 6e  ariantText = Con
c100: 76 65 72 74 49 6e 76 61 72 69 61 6e 74 54 65 78  vertInvariantTex
c110: 74 20 7c 20 42 69 6e 64 49 6e 76 61 72 69 61 6e  t | BindInvarian
c120: 74 54 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20  tText,....      
c130: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c140: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
c150: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
c160: 76 61 6c 75 65 73 20 6f 72 20 72 65 74 75 72 6e  values or return
c170: 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ing column value
c180: 73 2c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20 20  s, always..     
c190: 20 2f 2f 2f 20 74 72 65 61 74 20 74 68 65 6d 20   /// treat them 
c1a0: 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77  as though they w
c1b0: 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20 28  ere plain text (
c1c0: 69 2e 65 2e 20 6e 6f 20 6e 75 6d 65 72 69 63 2c  i.e. no numeric,
c1d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 65  ..      /// date
c1e0: 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20  /time, or other 
c1f0: 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75  conversions shou
c200: 6c 64 20 62 65 20 61 74 74 65 6d 70 74 65 64 29  ld be attempted)
c210: 20 61 6e 64 20 61 6c 77 61 79 73 0d 0a 20 20 20   and always..   
c220: 20 20 20 2f 2f 2f 20 75 73 65 20 74 68 65 20 69     /// use the i
c230: 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65  nvariant culture
c240: 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67   when converting
c250: 20 74 68 65 69 72 20 76 61 6c 75 65 73 20 74 6f   their values to
c260: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20   strings...     
c270: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c280: 0a 20 20 20 20 20 20 42 69 6e 64 41 6e 64 47 65  .      BindAndGe
c290: 74 41 6c 6c 41 73 49 6e 76 61 72 69 61 6e 74 54  tAllAsInvariantT
c2a0: 65 78 74 20 3d 20 42 69 6e 64 41 6e 64 47 65 74  ext = BindAndGet
c2b0: 41 6c 6c 41 73 54 65 78 74 20 7c 20 42 69 6e 64  AllAsText | Bind
c2c0: 49 6e 76 61 72 69 61 6e 74 54 65 78 74 2c 0d 0a  InvariantText,..
c2d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
c2e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c2f0: 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61   When binding pa
c300: 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20 6f  rameter values o
c310: 72 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75  r returning colu
c320: 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  mn values, alway
c330: 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 65  s..      /// tre
c340: 61 74 20 74 68 65 6d 20 61 73 20 74 68 6f 75 67  at them as thoug
c350: 68 20 74 68 65 79 20 77 65 72 65 20 70 6c 61 69  h they were plai
c360: 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20  n text (i.e. no 
c370: 6e 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20 20  numeric,..      
c380: 2f 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20 6f  /// date/time, o
c390: 72 20 6f 74 68 65 72 20 63 6f 6e 76 65 72 73 69  r other conversi
c3a0: 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 61 74  ons should be at
c3b0: 74 65 6d 70 74 65 64 29 20 61 6e 64 20 61 6c 77  tempted) and alw
c3c0: 61 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 75  ays..      /// u
c3d0: 73 65 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74  se the invariant
c3e0: 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20 63 6f   culture when co
c3f0: 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20 76  nverting their v
c400: 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73  alues to strings
c410: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 66  ..      /// or f
c420: 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20  rom strings...  
c430: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c440: 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 76 65 72  y>..      Conver
c450: 74 41 6e 64 42 69 6e 64 41 6e 64 47 65 74 41 6c  tAndBindAndGetAl
c460: 6c 41 73 49 6e 76 61 72 69 61 6e 74 54 65 78 74  lAsInvariantText
c470: 20 3d 20 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c   = BindAndGetAll
c480: 41 73 54 65 78 74 20 7c 0d 0a 20 20 20 20 20 20  AsText |..      
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4b0: 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74           Convert
c4c0: 41 6e 64 42 69 6e 64 49 6e 76 61 72 69 61 6e 74  AndBindInvariant
c4d0: 54 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  Text,....      /
c4e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c4f0: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 61      /// Enable a
c500: 6c 6c 20 6c 6f 67 67 69 6e 67 2e 0d 0a 20 20 20  ll logging...   
c510: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c520: 3e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56  >..#if INTEROP_V
c530: 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20  IRTUAL_TABLE..  
c540: 20 20 20 20 4c 6f 67 41 6c 6c 20 3d 20 4c 6f 67      LogAll = Log
c550: 50 72 65 70 61 72 65 20 7c 20 4c 6f 67 50 72 65  Prepare | LogPre
c560: 42 69 6e 64 20 7c 20 4c 6f 67 42 69 6e 64 20 7c  Bind | LogBind |
c570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c580: 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65   LogCallbackExce
c590: 70 74 69 6f 6e 20 7c 20 4c 6f 67 42 61 63 6b 75  ption | LogBacku
c5a0: 70 20 7c 20 4c 6f 67 4d 6f 64 75 6c 65 45 72 72  p | LogModuleErr
c5b0: 6f 72 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  or |..          
c5c0: 20 20 20 20 20 4c 6f 67 4d 6f 64 75 6c 65 45 78       LogModuleEx
c5d0: 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6c 73 65 0d  ception,..#else.
c5e0: 0a 20 20 20 20 20 20 4c 6f 67 41 6c 6c 20 3d 20  .      LogAll = 
c5f0: 4c 6f 67 50 72 65 70 61 72 65 20 7c 20 4c 6f 67  LogPrepare | Log
c600: 50 72 65 42 69 6e 64 20 7c 20 4c 6f 67 42 69 6e  PreBind | LogBin
c610: 64 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d |..           
c620: 20 20 20 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45      LogCallbackE
c630: 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f 67 42 61  xception | LogBa
c640: 63 6b 75 70 2c 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ckup,..#endif...
c650: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
c660: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
c670: 54 68 65 20 64 65 66 61 75 6c 74 20 65 78 74 72  The default extr
c680: 61 20 66 6c 61 67 73 20 66 6f 72 20 6e 65 77 20  a flags for new 
c690: 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0d 0a 20 20  connections...  
c6a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c6b0: 79 3e 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  y>..#if INTEROP_
c6c0: 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20  VIRTUAL_TABLE.. 
c6d0: 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 4c       Default = L
c6e0: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
c6f0: 69 6f 6e 20 7c 20 4c 6f 67 4d 6f 64 75 6c 65 45  ion | LogModuleE
c700: 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6c 73 65  xception,..#else
c710: 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20  ..      Default 
c720: 3d 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63  = LogCallbackExc
c730: 65 70 74 69 6f 6e 2c 0d 0a 23 65 6e 64 69 66 0d  eption,..#endif.
c740: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
c750: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
c760: 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 65 78  / The default ex
c770: 74 72 61 20 66 6c 61 67 73 20 66 6f 72 20 6e 65  tra flags for ne
c780: 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 77 69  w connections wi
c790: 74 68 20 61 6c 6c 20 6c 6f 67 67 69 6e 67 20 65  th all logging e
c7a0: 6e 61 62 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f  nabled...      /
c7b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c7c0: 20 20 20 20 20 44 65 66 61 75 6c 74 41 6e 64 4c       DefaultAndL
c7d0: 6f 67 41 6c 6c 20 3d 20 44 65 66 61 75 6c 74 20  ogAll = Default 
c7e0: 7c 20 4c 6f 67 41 6c 6c 0d 0a 20 20 7d 0d 0a 0d  | LogAll..  }...
c7f0: 0a 20 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20  .  // These are 
c800: 74 68 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 74  the options to t
c810: 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 71 6c 69  he internal sqli
c820: 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 20 63 61  te3_db_config ca
c830: 6c 6c 2e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ll...  internal 
c840: 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f 6e 66 69  enum SQLiteConfi
c850: 67 44 62 4f 70 73 45 6e 75 6d 0d 0a 20 20 7b 0d  gDbOpsEnum..  {.
c860: 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f  .    SQLITE_DBCO
c870: 4e 46 49 47 5f 4e 4f 4e 45 20 3d 20 30 2c 20 2f  NFIG_NONE = 0, /
c880: 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54  / nil..    SQLIT
c890: 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41  E_DBCONFIG_LOOKA
c8a0: 53 49 44 45 20 3d 20 31 30 30 31 2c 20 2f 2f 20  SIDE = 1001, // 
c8b0: 76 6f 69 64 2a 20 69 6e 74 20 69 6e 74 0d 0a 20  void* int int.. 
c8c0: 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46     SQLITE_DBCONF
c8d0: 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 20 3d  IG_ENABLE_FKEY =
c8e0: 20 31 30 30 32 2c 20 2f 2f 20 69 6e 74 20 69 6e   1002, // int in
c8f0: 74 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44  t*..    SQLITE_D
c900: 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54  BCONFIG_ENABLE_T
c910: 52 49 47 47 45 52 20 3d 20 31 30 30 33 2c 20 2f  RIGGER = 1003, /
c920: 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 20 20 20 20  / int int*..    
c930: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
c940: 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45  ENABLE_FTS3_TOKE
c950: 4e 49 5a 45 52 20 3d 20 31 30 30 34 2c 20 2f 2f  NIZER = 1004, //
c960: 20 69 6e 74 20 69 6e 74 2a 0d 0a 20 20 20 20 53   int int*..    S
c970: 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
c980: 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
c990: 53 49 4f 4e 20 3d 20 31 30 30 35 20 2f 2f 20 69  SION = 1005 // i
c9a0: 6e 74 20 69 6e 74 2a 0d 0a 20 20 7d 0d 0a 0d 0a  nt int*..  }....
c9b0: 20 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74    // These are t
c9c0: 68 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 74 68  he options to th
c9d0: 65 20 69 6e 74 65 72 6e 61 6c 20 73 71 6c 69 74  e internal sqlit
c9e0: 65 33 5f 63 6f 6e 66 69 67 20 63 61 6c 6c 2e 0d  e3_config call..
c9f0: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d  .  internal enum
ca00: 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70 73   SQLiteConfigOps
ca10: 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 53  Enum..  {..    S
ca20: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4e 4f 4e  QLITE_CONFIG_NON
ca30: 45 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a 20  E = 0, // nil.. 
ca40: 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
ca50: 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 3d 20  _SINGLETHREAD = 
ca60: 31 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20 53  1, // nil..    S
ca70: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
ca80: 54 49 54 48 52 45 41 44 20 3d 20 32 2c 20 2f 2f  TITHREAD = 2, //
ca90: 20 6e 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54 45   nil..    SQLITE
caa0: 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a  _CONFIG_SERIALIZ
cab0: 45 44 20 3d 20 33 2c 20 2f 2f 20 6e 69 6c 0d 0a  ED = 3, // nil..
cac0: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
cad0: 47 5f 4d 41 4c 4c 4f 43 20 3d 20 34 2c 20 2f 2f  G_MALLOC = 4, //
cae0: 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74   sqlite3_mem_met
caf0: 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54  hods*..    SQLIT
cb00: 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c  E_CONFIG_GETMALL
cb10: 4f 43 20 3d 20 35 2c 20 2f 2f 20 73 71 6c 69 74  OC = 5, // sqlit
cb20: 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 0d  e3_mem_methods*.
cb30: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
cb40: 49 47 5f 53 43 52 41 54 43 48 20 3d 20 36 2c 20  IG_SCRATCH = 6, 
cb50: 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a  // void*, int sz
cb60: 2c 20 69 6e 74 20 4e 0d 0a 20 20 20 20 53 51 4c  , int N..    SQL
cb70: 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43  ITE_CONFIG_PAGEC
cb80: 41 43 48 45 20 3d 20 37 2c 20 2f 2f 20 76 6f 69  ACHE = 7, // voi
cb90: 64 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74 20  d*, int sz, int 
cba0: 4e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  N..    SQLITE_CO
cbb0: 4e 46 49 47 5f 48 45 41 50 20 3d 20 38 2c 20 2f  NFIG_HEAP = 8, /
cbc0: 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42 79  / void*, int nBy
cbd0: 74 65 2c 20 69 6e 74 20 6d 69 6e 0d 0a 20 20 20  te, int min..   
cbe0: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
cbf0: 45 4d 53 54 41 54 55 53 20 3d 20 39 2c 20 2f 2f  EMSTATUS = 9, //
cc00: 20 62 6f 6f 6c 65 61 6e 0d 0a 20 20 20 20 53 51   boolean..    SQ
cc10: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45  LITE_CONFIG_MUTE
cc20: 58 20 3d 20 31 30 2c 20 2f 2f 20 73 71 6c 69 74  X = 10, // sqlit
cc30: 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73  e3_mutex_methods
cc40: 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  *..    SQLITE_CO
cc50: 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 3d 20  NFIG_GETMUTEX = 
cc60: 31 31 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 6d  11, // sqlite3_m
cc70: 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20  utex_methods*.. 
cc80: 20 20 20 2f 2f 20 70 72 65 76 69 6f 75 73 6c 79     // previously
cc90: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43   SQLITE_CONFIG_C
cca0: 48 55 4e 4b 41 4c 4c 4f 43 20 31 32 20 77 68 69  HUNKALLOC 12 whi
ccb0: 63 68 20 69 73 20 6e 6f 77 20 75 6e 75 73 65 64  ch is now unused
ccc0: 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
ccd0: 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 3d 20  FIG_LOOKASIDE = 
cce0: 31 33 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 0d 0a  13, // int int..
ccf0: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
cd00: 47 5f 50 43 41 43 48 45 20 3d 20 31 34 2c 20 2f  G_PCACHE = 14, /
cd10: 2f 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65  / sqlite3_pcache
cd20: 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53  _methods*..    S
cd30: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
cd40: 50 43 41 43 48 45 20 3d 20 31 35 2c 20 2f 2f 20  PCACHE = 15, // 
cd50: 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d  sqlite3_pcache_m
cd60: 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c  ethods*..    SQL
cd70: 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 3d  ITE_CONFIG_LOG =
cd80: 20 31 36 2c 20 2f 2f 20 78 46 75 6e 63 2c 20 76   16, // xFunc, v
cd90: 6f 69 64 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45  oid*..    SQLITE
cda0: 5f 43 4f 4e 46 49 47 5f 55 52 49 20 3d 20 31 37  _CONFIG_URI = 17
cdb0: 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20 53 51  , // int..    SQ
cdc0: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
cdd0: 48 45 32 20 3d 20 31 38 2c 20 2f 2f 20 73 71 6c  HE2 = 18, // sql
cde0: 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68  ite3_pcache_meth
cdf0: 6f 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49 54  ods2*..    SQLIT
ce00: 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
ce10: 48 45 32 20 3d 20 31 39 2c 20 2f 2f 20 73 71 6c  HE2 = 19, // sql
ce20: 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68  ite3_pcache_meth
ce30: 6f 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49 54  ods2*..    SQLIT
ce40: 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e  E_CONFIG_COVERIN
ce50: 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 3d 20 32  G_INDEX_SCAN = 2
ce60: 30 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20 53  0, // int..    S
ce70: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c  QLITE_CONFIG_SQL
ce80: 4c 4f 47 20 3d 20 32 31 2c 20 2f 2f 20 78 53 71  LOG = 21, // xSq
ce90: 6c 6c 6f 67 2c 20 76 6f 69 64 2a 0d 0a 20 20 20  llog, void*..   
cea0: 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
ceb0: 4d 41 50 5f 53 49 5a 45 20 3d 20 32 32 2c 20 2f  MAP_SIZE = 22, /
cec0: 2f 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2c  / sqlite3_int64,
ced0: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 0d 0a   sqlite3_int64..
cee0: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
cef0: 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45  G_WIN32_HEAPSIZE
cf00: 20 3d 20 32 33 2c 20 2f 2f 20 69 6e 74 20 6e 42   = 23, // int nB
cf10: 79 74 65 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f  yte..    SQLITE_
cf20: 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44  CONFIG_PCACHE_HD
cf30: 52 53 5a 20 3d 20 32 34 2c 20 2f 2f 20 69 6e 74  RSZ = 24, // int
cf40: 20 2a 70 73 7a 0d 0a 20 20 20 20 53 51 4c 49 54   *psz..    SQLIT
cf50: 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20 3d  E_CONFIG_PMASZ =
cf60: 20 32 35 20 2f 2f 20 75 6e 73 69 67 6e 65 64 20   25 // unsigned 
cf70: 69 6e 74 20 73 7a 50 6d 61 0d 0a 20 20 7d 0d 0a  int szPma..  }..
cf80: 7d 0d 0a                                         }..