System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 9f68c1f986ab8f4fdc5a73dd4a3cf9ad355d0460:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
0170: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 0d 0a 23  ns.Generic;....#
0180: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0190: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
01a0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75   using System.Ru
01b0: 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72  ntime.InteropSer
01c0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01d0: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
01e0: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e  >..  /// This in
01f0: 74 65 72 6e 61 6c 20 63 6c 61 73 73 20 70 72 6f  ternal class pro
0200: 76 69 64 65 73 20 74 68 65 20 66 6f 75 6e 64 61  vides the founda
0210: 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 73  tion of SQLite s
0220: 75 70 70 6f 72 74 2e 20 20 49 74 20 64 65 66 69  upport.  It defi
0230: 6e 65 73 20 61 6c 6c 20 74 68 65 20 61 62 73 74  nes all the abst
0240: 72 61 63 74 20 6d 65 6d 62 65 72 73 20 6e 65 65  ract members nee
0250: 64 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  ded to implement
0260: 0d 0a 20 20 2f 2f 2f 20 61 20 53 51 4c 69 74 65  ..  /// a SQLite
0270: 20 64 61 74 61 20 70 72 6f 76 69 64 65 72 2c 20   data provider, 
0280: 61 6e 64 20 69 6e 68 65 72 69 74 73 20 66 72 6f  and inherits fro
0290: 6d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 20  m SQLiteConvert 
02a0: 77 68 69 63 68 20 61 6c 6c 6f 77 73 20 66 6f 72  which allows for
02b0: 20 73 69 6d 70 6c 65 20 74 72 61 6e 73 6c 61 74   simple translat
02c0: 69 6f 6e 73 20 6f 66 20 73 74 72 69 6e 67 20 74  ions of string t
02d0: 6f 20 61 6e 64 20 66 72 6f 6d 20 53 51 4c 69 74  o and from SQLit
02e0: 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  e...  /// </summ
02f0: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
0300: 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
0310: 53 51 4c 69 74 65 42 61 73 65 20 3a 20 53 51 4c  SQLiteBase : SQL
0320: 69 74 65 43 6f 6e 76 65 72 74 2c 20 49 44 69 73  iteConvert, IDis
0330: 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20  posable..  {..  
0340: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
0350: 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
0360: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0370: 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
0380: 72 20 63 6f 64 65 20 75 73 65 64 20 66 6f 72 20  r code used for 
0390: 6c 6f 67 67 69 6e 67 20 65 78 63 65 70 74 69 6f  logging exceptio
03a0: 6e 73 20 63 61 75 67 68 74 20 69 6e 20 75 73 65  ns caught in use
03b0: 72 2d 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  r-provided..    
03c0: 2f 2f 2f 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  /// code...    /
03d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
03e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
03f0: 74 20 69 6e 74 20 43 4f 52 5f 45 5f 45 58 43 45  t int COR_E_EXCE
0400: 50 54 49 4f 4e 20 3d 20 75 6e 63 68 65 63 6b 65  PTION = unchecke
0410: 64 28 28 69 6e 74 29 30 78 38 30 31 33 31 35 30  d((int)0x8013150
0420: 30 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  0);..    #endreg
0430: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
0440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0480: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  ////....    inte
0490: 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 73 65 28  rnal SQLiteBase(
04a0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
04b0: 73 20 66 6d 74 2c 20 44 61 74 65 54 69 6d 65 4b  s fmt, DateTimeK
04c0: 69 6e 64 20 6b 69 6e 64 2c 20 73 74 72 69 6e 67  ind kind, string
04d0: 20 66 6d 74 53 74 72 69 6e 67 29 0d 0a 20 20 20   fmtString)..   
04e0: 20 20 20 3a 20 62 61 73 65 28 66 6d 74 2c 20 6b     : base(fmt, k
04f0: 69 6e 64 2c 20 66 6d 74 53 74 72 69 6e 67 29 20  ind, fmtString) 
0500: 7b 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  { }....    /// <
0510: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0520: 2f 20 52 65 74 75 72 6e 73 20 61 20 73 74 72 69  / Returns a stri
0530: 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ng representing 
0540: 74 68 65 20 61 63 74 69 76 65 20 76 65 72 73 69  the active versi
0550: 6f 6e 20 6f 66 20 53 51 4c 69 74 65 0d 0a 20 20  on of SQLite..  
0560: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0570: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0580: 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20 56  bstract string V
0590: 65 72 73 69 6f 6e 20 7b 20 67 65 74 3b 20 7d 0d  ersion { get; }.
05a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
05c0: 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20 72  rns an integer r
05d0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
05e0: 61 63 74 69 76 65 20 76 65 72 73 69 6f 6e 20 6f  active version o
05f0: 66 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  f SQLite..    //
0600: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0610: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
0620: 61 63 74 20 69 6e 74 20 56 65 72 73 69 6f 6e 4e  act int VersionN
0630: 75 6d 62 65 72 20 7b 20 67 65 74 3b 20 7d 0d 0a  umber { get; }..
0640: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0650: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
0660: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  ns non-zero if t
0670: 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  his connection t
0680: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  o the database i
0690: 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20  s read-only...  
06a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
06b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
06c0: 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 52  bstract bool IsR
06d0: 65 61 64 4f 6e 6c 79 28 73 74 72 69 6e 67 20 6e  eadOnly(string n
06e0: 61 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ame);..    /// <
06f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0700: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 72 6f  / Returns the ro
0710: 77 69 64 20 6f 66 20 74 68 65 20 6d 6f 73 74 20  wid of the most 
0720: 72 65 63 65 6e 74 20 73 75 63 63 65 73 73 66 75  recent successfu
0730: 6c 20 49 4e 53 45 52 54 20 69 6e 74 6f 20 74 68  l INSERT into th
0740: 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20  e database from 
0750: 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  this connection.
0760: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0770: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
0780: 61 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67  al abstract long
0790: 20 4c 61 73 74 49 6e 73 65 72 74 52 6f 77 49 64   LastInsertRowId
07a0: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f   { get; }..    /
07b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
07c0: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
07d0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e  e number of chan
07e0: 67 65 73 20 74 68 65 20 6c 61 73 74 20 65 78 65  ges the last exe
07f0: 63 75 74 69 6e 67 20 69 6e 73 65 72 74 2f 75 70  cuting insert/up
0800: 64 61 74 65 20 63 61 75 73 65 64 2e 0d 0a 20 20  date caused...  
0810: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0820: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0830: 62 73 74 72 61 63 74 20 69 6e 74 20 43 68 61 6e  bstract int Chan
0840: 67 65 73 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20  ges { get; }..  
0850: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0860: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
0870: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 6d   the amount of m
0880: 65 6d 6f 72 79 20 28 69 6e 20 62 79 74 65 73 29  emory (in bytes)
0890: 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
08a0: 65 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  e by the SQLite 
08b0: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20 54  core library.  T
08c0: 68 69 73 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c  his is not reall
08d0: 79 20 61 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  y a per-connecti
08e0: 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75  on..    /// valu
08f0: 65 2c 20 69 74 20 69 73 20 67 6c 6f 62 61 6c 20  e, it is global 
0900: 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 2e 0d  to the process..
0910: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0920: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
0930: 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20  l abstract long 
0940: 4d 65 6d 6f 72 79 55 73 65 64 20 7b 20 67 65 74  MemoryUsed { get
0950: 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ; }..    /// <su
0960: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0970: 52 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69  Returns the maxi
0980: 6d 75 6d 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65  mum amount of me
0990: 6d 6f 72 79 20 28 69 6e 20 62 79 74 65 73 29 20  mory (in bytes) 
09a0: 75 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  used by the SQLi
09b0: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
09c0: 73 69 6e 63 65 20 74 68 65 20 68 69 67 68 2d 77  since the high-w
09d0: 61 74 65 72 20 6d 61 72 6b 20 77 61 73 20 6c 61  ater mark was la
09e0: 73 74 20 72 65 73 65 74 2e 0d 0a 20 20 20 20 2f  st reset...    /
09f0: 2f 2f 20 54 68 69 73 20 69 73 20 6e 6f 74 20 72  // This is not r
0a00: 65 61 6c 6c 79 20 61 20 70 65 72 2d 63 6f 6e 6e  eally a per-conn
0a10: 65 63 74 69 6f 6e 20 76 61 6c 75 65 2c 20 69 74  ection value, it
0a20: 20 69 73 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68   is global to th
0a30: 65 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  e process...    
0a40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0a50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
0a60: 74 72 61 63 74 20 6c 6f 6e 67 20 4d 65 6d 6f 72  tract long Memor
0a70: 79 48 69 67 68 77 61 74 65 72 20 7b 20 67 65 74  yHighwater { get
0a80: 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ; }..    /// <su
0a90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0aa0: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
0ab0: 20 69 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69   if the underlyi
0ac0: 6e 67 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63  ng native connec
0ad0: 74 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 6f  tion handle is o
0ae0: 77 6e 65 64 20 62 79 20 74 68 69 73 20 69 6e 73  wned by this ins
0af0: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tance...    /// 
0b00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0b10: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
0b20: 74 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  t bool OwnHandle
0b30: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f   { get; }..    /
0b40: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0b50: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
0b60: 65 20 6c 6f 67 69 63 61 6c 20 6c 69 73 74 20 6f  e logical list o
0b70: 66 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 73 6f  f functions asso
0b80: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
0b90: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
0ba0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0bb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0bc0: 62 73 74 72 61 63 74 20 49 44 69 63 74 69 6f 6e  bstract IDiction
0bd0: 61 72 79 3c 53 51 4c 69 74 65 46 75 6e 63 74 69  ary<SQLiteFuncti
0be0: 6f 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51 4c  onAttribute, SQL
0bf0: 69 74 65 46 75 6e 63 74 69 6f 6e 3e 20 46 75 6e  iteFunction> Fun
0c00: 63 74 69 6f 6e 73 20 7b 20 67 65 74 3b 20 7d 0d  ctions { get; }.
0c10: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0c20: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73  y>..    /// Sets
0c30: 20 74 68 65 20 73 74 61 74 75 73 20 6f 66 20 74   the status of t
0c40: 68 65 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20  he memory usage 
0c50: 74 72 61 63 6b 69 6e 67 20 73 75 62 73 79 73 74  tracking subsyst
0c60: 65 6d 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65  em in the SQLite
0c70: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20   core library.  
0c80: 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 69 73  By default, this
0c90: 20 69 73 20 65 6e 61 62 6c 65 64 2e 0d 0a 20 20   is enabled...  
0ca0: 20 20 2f 2f 2f 20 49 66 20 74 68 69 73 20 69 73    /// If this is
0cb0: 20 64 69 73 61 62 6c 65 64 2c 20 6d 65 6d 6f 72   disabled, memor
0cc0: 79 20 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67  y usage tracking
0cd0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 65 72   will not be per
0ce0: 66 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 69 73  formed.  This is
0cf0: 20 6e 6f 74 20 72 65 61 6c 6c 79 20 61 20 70 65   not really a pe
0d00: 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c  r-connection val
0d10: 75 65 2c 20 69 74 20 69 73 0d 0a 20 20 20 20 2f  ue, it is..    /
0d20: 2f 2f 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68 65  // global to the
0d30: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 2f   process...    /
0d40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0d50: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
0d60: 6d 65 3d 22 76 61 6c 75 65 22 3e 4e 6f 6e 2d 7a  me="value">Non-z
0d70: 65 72 6f 20 74 6f 20 65 6e 61 62 6c 65 20 6d 65  ero to enable me
0d80: 6d 6f 72 79 20 75 73 61 67 65 20 74 72 61 63 6b  mory usage track
0d90: 69 6e 67 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77  ing, zero otherw
0da0: 69 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ise.</param>..  
0db0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
0dc0: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
0dd0: 20 72 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e   return code (i.
0de0: 65 2e 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63  e. zero for succ
0df0: 65 73 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f  ess and non-zero
0e00: 20 66 6f 72 20 66 61 69 6c 75 72 65 29 2e 3c 2f   for failure).</
0e10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
0e20: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
0e30: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
0e40: 53 65 74 4d 65 6d 6f 72 79 53 74 61 74 75 73 28  SetMemoryStatus(
0e50: 62 6f 6f 6c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  bool value);..  
0e60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0e70: 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74  .    /// Attempt
0e80: 73 20 74 6f 20 66 72 65 65 20 61 73 20 6d 75 63  s to free as muc
0e90: 68 20 68 65 61 70 20 6d 65 6d 6f 72 79 20 61 73  h heap memory as
0ea0: 20 70 6f 73 73 69 62 6c 65 20 66 6f 72 20 74 68   possible for th
0eb0: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
0ec0: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ction...    /// 
0ed0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0ee0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73  /// <returns>A s
0ef0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
0f00: 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e 65 2e  eturn code (i.e.
0f10: 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63 65 73   zero for succes
0f20: 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f 20 66  s and non-zero f
0f30: 6f 72 20 66 61 69 6c 75 72 65 29 2e 3c 2f 72 65  or failure).</re
0f40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
0f50: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
0f60: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65  LiteErrorCode Re
0f70: 6c 65 61 73 65 4d 65 6d 6f 72 79 28 29 3b 0d 0a  leaseMemory();..
0f80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0f90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 68 75 74 64  >..    /// Shutd
0fa0: 6f 77 6e 20 74 68 65 20 53 51 4c 69 74 65 20 65  own the SQLite e
0fb0: 6e 67 69 6e 65 20 73 6f 20 74 68 61 74 20 69 74  ngine so that it
0fc0: 20 63 61 6e 20 62 65 20 72 65 73 74 61 72 74 65   can be restarte
0fd0: 64 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74  d with different
0fe0: 20 63 6f 6e 66 69 67 20 6f 70 74 69 6f 6e 73 2e   config options.
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 57 65 20 64 65 70  ..    /// We dep
1000: 65 6e 64 20 6f 6e 20 61 75 74 6f 20 69 6e 69 74  end on auto init
1010: 69 61 6c 69 7a 61 74 69 6f 6e 20 74 6f 20 72 65  ialization to re
1020: 63 6f 76 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20  cover...    /// 
1030: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1040: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
1050: 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
1060: 65 20 53 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 20  e Shutdown();.. 
1070: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
1090: 69 6e 65 73 20 69 66 20 74 68 65 20 61 73 73 6f  ines if the asso
10a0: 63 69 61 74 65 64 20 6e 61 74 69 76 65 20 63 6f  ciated native co
10b0: 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20  nnection handle 
10c0: 69 73 20 6f 70 65 6e 2e 0d 0a 20 20 20 20 2f 2f  is open...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
10f0: 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
1100: 6f 20 69 66 20 61 20 64 61 74 61 62 61 73 65 20  o if a database 
1110: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70  connection is op
1120: 65 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  en...    /// </r
1130: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
1140: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62  ernal abstract b
1150: 6f 6f 6c 20 49 73 4f 70 65 6e 28 29 3b 0d 0a 20  ool IsOpen();.. 
1160: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1170: 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
1180: 73 20 74 68 65 20 66 75 6c 6c 79 20 71 75 61 6c  s the fully qual
1190: 69 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66  ified path and f
11a0: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
11b0: 20 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 0d   currently open.
11c0: 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
11d0: 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  e, if any...    
11e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1200: 61 6d 65 3d 22 64 62 4e 61 6d 65 22 3e 0d 0a 20  ame="dbName">.. 
1210: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
1220: 6f 66 20 74 68 65 20 61 74 74 61 63 68 65 64 20  of the attached 
1230: 64 61 74 61 62 61 73 65 20 74 6f 20 71 75 65 72  database to quer
1240: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  y...    /// </pa
1250: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1260: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
1270: 20 54 68 65 20 66 75 6c 6c 79 20 71 75 61 6c 69   The fully quali
1280: 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66 69  fied path and fi
1290: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
12a0: 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 20 64  currently open d
12b0: 61 74 61 62 61 73 65 2c 0d 0a 20 20 20 20 2f 2f  atabase,..    //
12c0: 2f 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f  / if any...    /
12d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
12e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
12f0: 72 61 63 74 20 73 74 72 69 6e 67 20 47 65 74 46  ract string GetF
1300: 69 6c 65 4e 61 6d 65 28 73 74 72 69 6e 67 20 64  ileName(string d
1310: 62 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f  bName);..    ///
1320: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1330: 2f 2f 2f 20 4f 70 65 6e 73 20 61 20 64 61 74 61  /// Opens a data
1340: 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  base...    /// <
1350: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1360: 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  // <remarks>..  
1370: 20 20 2f 2f 2f 20 49 6d 70 6c 65 6d 65 6e 74 65    /// Implemente
1380: 72 73 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 53  rs should call S
1390: 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 42 69  QLiteFunction.Bi
13a0: 6e 64 46 75 6e 63 74 69 6f 6e 73 28 29 20 61 6e  ndFunctions() an
13b0: 64 20 73 61 76 65 20 74 68 65 20 61 72 72 61 79  d save the array
13c0: 20 61 66 74 65 72 20 6f 70 65 6e 69 6e 67 20 61   after opening a
13d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
13e0: 20 2f 2f 2f 20 74 6f 20 62 69 6e 64 20 61 6c 6c   /// to bind all
13f0: 20 61 74 74 72 69 62 75 74 65 64 20 75 73 65 72   attributed user
1400: 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f  -defined functio
1410: 6e 73 20 61 6e 64 20 63 6f 6c 6c 61 74 69 6e 67  ns and collating
1420: 20 73 65 71 75 65 6e 63 65 73 20 74 6f 20 74 68   sequences to th
1430: 65 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e  e new connection
1440: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
1450: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  arks>..    /// <
1460: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 46  param name="strF
1470: 69 6c 65 6e 61 6d 65 22 3e 54 68 65 20 66 69 6c  ilename">The fil
1480: 65 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74  ename of the dat
1490: 61 62 61 73 65 20 74 6f 20 6f 70 65 6e 2e 20 20  abase to open.  
14a0: 53 51 4c 69 74 65 20 61 75 74 6f 6d 61 74 69 63  SQLite automatic
14b0: 61 6c 6c 79 20 63 72 65 61 74 65 73 20 69 74 20  ally creates it 
14c0: 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 65 78  if it doesn't ex
14d0: 69 73 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ist.</param>..  
14e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
14f0: 65 3d 22 76 66 73 4e 61 6d 65 22 3e 54 68 65 20  e="vfsName">The 
1500: 6e 61 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20  name of the VFS 
1510: 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c 6c  to use -OR- null
1520: 20 74 6f 20 75 73 65 20 74 68 65 20 64 65 66 61   to use the defa
1530: 75 6c 74 20 56 46 53 2e 3c 2f 70 61 72 61 6d 3e  ult VFS.</param>
1540: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1550: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
1560: 6e 46 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67  nFlags">The flag
1570: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
1580: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
1590: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 3c 2f  nection object</
15a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
15b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 65  <param name="ope
15c0: 6e 46 6c 61 67 73 22 3e 54 68 65 20 6f 70 65 6e  nFlags">The open
15d0: 20 66 6c 61 67 73 20 74 6f 20 75 73 65 20 77 68   flags to use wh
15e0: 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20  en creating the 
15f0: 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 70 61 72 61  connection</para
1600: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
1610: 61 6d 20 6e 61 6d 65 3d 22 6d 61 78 50 6f 6f 6c  am name="maxPool
1620: 53 69 7a 65 22 3e 54 68 65 20 6d 61 78 69 6d 75  Size">The maximu
1630: 6d 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 6f  m size of the po
1640: 6f 6c 20 66 6f 72 20 74 68 65 20 67 69 76 65 6e  ol for the given
1650: 20 66 69 6c 65 6e 61 6d 65 3c 2f 70 61 72 61 6d   filename</param
1660: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1670: 6d 20 6e 61 6d 65 3d 22 75 73 65 50 6f 6f 6c 22  m name="usePool"
1680: 3e 49 66 20 74 72 75 65 2c 20 74 68 65 20 63 6f  >If true, the co
1690: 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  nnection can be 
16a0: 70 75 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20  pulled from the 
16b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 3c  connection pool<
16c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
16d0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
16e0: 6f 69 64 20 4f 70 65 6e 28 73 74 72 69 6e 67 20  oid Open(string 
16f0: 73 74 72 46 69 6c 65 6e 61 6d 65 2c 20 73 74 72  strFilename, str
1700: 69 6e 67 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c  ing vfsName, SQL
1710: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
1720: 67 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  gs connectionFla
1730: 67 73 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  gs, SQLiteOpenFl
1740: 61 67 73 45 6e 75 6d 20 6f 70 65 6e 46 6c 61 67  agsEnum openFlag
1750: 73 2c 20 69 6e 74 20 6d 61 78 50 6f 6f 6c 53 69  s, int maxPoolSi
1760: 7a 65 2c 20 62 6f 6f 6c 20 75 73 65 50 6f 6f 6c  ze, bool usePool
1770: 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  );..    /// <sum
1780: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1790: 6c 6f 73 65 73 20 74 68 65 20 63 75 72 72 65 6e  loses the curren
17a0: 74 6c 79 2d 6f 70 65 6e 20 64 61 74 61 62 61 73  tly-open databas
17b0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
17c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
17d0: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
17e0: 2f 2f 20 41 66 74 65 72 20 74 68 65 20 64 61 74  // After the dat
17f0: 61 62 61 73 65 20 68 61 73 20 62 65 65 6e 20 63  abase has been c
1800: 6c 6f 73 65 64 20 69 6d 70 6c 65 6d 65 74 65 72  losed implemeter
1810: 73 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 53 51  s should call SQ
1820: 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 55 6e 62  LiteFunction.Unb
1830: 69 6e 64 46 75 6e 63 74 69 6f 6e 73 28 29 20 74  indFunctions() t
1840: 6f 20 64 65 61 6c 6c 6f 63 61 74 65 20 61 6c 6c  o deallocate all
1850: 20 69 6e 74 65 72 6f 70 20 61 6c 6c 6f 63 61 74   interop allocat
1860: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f  ed..    /// memo
1870: 72 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ry associated wi
1880: 74 68 20 74 68 65 20 75 73 65 72 2d 64 65 66 69  th the user-defi
1890: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e  ned functions an
18a0: 64 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  d collating sequ
18b0: 65 6e 63 65 73 20 74 69 65 64 20 74 6f 20 74 68  ences tied to th
18c0: 65 20 63 6c 6f 73 65 64 20 63 6f 6e 6e 65 63 74  e closed connect
18d0: 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
18e0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f  remarks>..    //
18f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
1900: 69 73 70 6f 73 69 6e 67 22 3e 4e 6f 6e 2d 7a 65  isposing">Non-ze
1910: 72 6f 20 69 66 20 63 6f 6e 6e 65 63 74 69 6f 6e  ro if connection
1920: 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
1930: 65 64 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  ed, zero otherwi
1940: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
1950: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
1960: 63 74 20 76 6f 69 64 20 43 6c 6f 73 65 28 62 6f  ct void Close(bo
1970: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a  ol disposing);..
1980: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1990: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20  >..    /// Sets 
19a0: 74 68 65 20 62 75 73 79 20 74 69 6d 65 6f 75 74  the busy timeout
19b0: 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
19c0: 6f 6e 2e 20 20 53 51 4c 69 74 65 43 6f 6d 6d 61  on.  SQLiteComma
19d0: 6e 64 20 77 69 6c 6c 20 63 61 6c 6c 20 74 68 69  nd will call thi
19e0: 73 20 62 65 66 6f 72 65 20 65 78 65 63 75 74 69  s before executi
19f0: 6e 67 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 2e 0d  ng any command..
1a00: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1a10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
1a20: 72 61 6d 20 6e 61 6d 65 3d 22 6e 54 69 6d 65 6f  ram name="nTimeo
1a30: 75 74 4d 53 22 3e 54 68 65 20 6e 75 6d 62 65 72  utMS">The number
1a40: 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   of milliseconds
1a50: 20 74 6f 20 77 61 69 74 20 62 65 66 6f 72 65 20   to wait before 
1a60: 72 65 74 75 72 6e 69 6e 67 20 53 51 4c 49 54 45  returning SQLITE
1a70: 5f 42 55 53 59 3c 2f 70 61 72 61 6d 3e 0d 0a 20  _BUSY</param>.. 
1a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
1a90: 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 69 6d  ract void SetTim
1aa0: 65 6f 75 74 28 69 6e 74 20 6e 54 69 6d 65 6f 75  eout(int nTimeou
1ab0: 74 4d 53 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tMS);..    /// <
1ac0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1ad0: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74 65  / Returns the te
1ae0: 78 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65  xt of the last e
1af0: 72 72 6f 72 20 69 73 73 75 65 64 20 62 79 20 53  rror issued by S
1b00: 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  QLite..    /// <
1b10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1b20: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
1b30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1b40: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1b50: 72 69 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f  ring GetLastErro
1b60: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  r();....    /// 
1b70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1b80: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74  // Returns the t
1b90: 65 78 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20  ext of the last 
1ba0: 65 72 72 6f 72 20 69 73 73 75 65 64 20 62 79 20  error issued by 
1bb0: 53 51 4c 69 74 65 20 2d 4f 52 2d 20 74 68 65 20  SQLite -OR- the 
1bc0: 73 70 65 63 69 66 69 65 64 20 64 65 66 61 75 6c  specified defaul
1bd0: 74 20 65 72 72 6f 72 20 74 65 78 74 20 69 66 0d  t error text if.
1be0: 0a 20 20 20 20 2f 2f 2f 20 6e 6f 6e 65 20 69 73  .    /// none is
1bf0: 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20   available from 
1c00: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
1c10: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
1c20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1c30: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c40: 65 3d 22 64 65 66 56 61 6c 75 65 22 3e 0d 0a 20  e="defValue">.. 
1c50: 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72     /// The error
1c60: 20 74 65 78 74 20 74 6f 20 72 65 74 75 72 6e 20   text to return 
1c70: 69 6e 20 74 68 65 20 65 76 65 6e 74 20 74 68 61  in the event tha
1c80: 74 20 6f 6e 65 20 69 73 20 6e 6f 74 20 61 76 61  t one is not ava
1c90: 69 6c 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20  ilable from the 
1ca0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1cb0: 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1cc0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1cd0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
1ce0: 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 74 65 78  // The error tex
1cf0: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
1d00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1d10: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1d20: 72 69 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f  ring GetLastErro
1d30: 72 28 73 74 72 69 6e 67 20 64 65 66 56 61 6c 75  r(string defValu
1d40: 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  e);....    /// <
1d50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1d60: 2f 20 57 68 65 6e 20 70 6f 6f 6c 69 6e 67 20 69  / When pooling i
1d70: 73 20 65 6e 61 62 6c 65 64 2c 20 66 6f 72 63 65  s enabled, force
1d80: 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1d90: 20 74 6f 20 62 65 20 64 69 73 70 6f 73 65 64 20   to be disposed 
1da0: 72 61 74 68 65 72 20 74 68 61 6e 20 72 65 74 75  rather than retu
1db0: 72 6e 65 64 20 74 6f 20 74 68 65 20 70 6f 6f 6c  rned to the pool
1dc0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1dd0: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
1de0: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
1df0: 20 43 6c 65 61 72 50 6f 6f 6c 28 29 3b 0d 0a 0d   ClearPool();...
1e00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1e10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e  y>..    /// When
1e20: 20 70 6f 6f 6c 69 6e 67 20 69 73 20 65 6e 61 62   pooling is enab
1e30: 6c 65 64 2c 20 72 65 74 75 72 6e 73 20 74 68 65  led, returns the
1e40: 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c 20   number of pool 
1e50: 65 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e 67  entries matching
1e60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69 6c   the current fil
1e70: 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e name...    ///
1e80: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1e90: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
1ea0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c  e number of pool
1eb0: 20 65 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e   entries matchin
1ec0: 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69  g the current fi
1ed0: 6c 65 20 6e 61 6d 65 2e 3c 2f 72 65 74 75 72 6e  le name.</return
1ee0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
1ef0: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 43 6f   abstract int Co
1f00: 75 6e 74 50 6f 6f 6c 28 29 3b 0d 0a 0d 0a 20 20  untPool();....  
1f10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1f20: 0a 20 20 20 20 2f 2f 2f 20 50 72 65 70 61 72 65  .    /// Prepare
1f30: 73 20 61 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  s a SQL statemen
1f40: 74 20 66 6f 72 20 65 78 65 63 75 74 69 6f 6e 2e  t for execution.
1f50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1f60: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1f70: 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6e 6e 22 3e  aram name="cnn">
1f80: 54 68 65 20 73 6f 75 72 63 65 20 63 6f 6e 6e 65  The source conne
1f90: 63 74 69 6f 6e 20 70 72 65 70 61 72 69 6e 67 20  ction preparing 
1fa0: 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 43 61  the command.  Ca
1fb0: 6e 20 62 65 20 6e 75 6c 6c 20 66 6f 72 20 61 6e  n be null for an
1fc0: 79 20 63 61 6c 6c 65 72 20 65 78 63 65 70 74 20  y caller except 
1fd0: 4c 49 4e 51 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  LINQ</param>..  
1fe0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ff0: 65 3d 22 73 74 72 53 71 6c 22 3e 54 68 65 20 53  e="strSql">The S
2000: 51 4c 20 63 6f 6d 6d 61 6e 64 20 74 65 78 74 20  QL command text 
2010: 74 6f 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61  to prepare</para
2020: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2030: 61 6d 20 6e 61 6d 65 3d 22 70 72 65 76 69 6f 75  am name="previou
2040: 73 22 3e 54 68 65 20 70 72 65 76 69 6f 75 73 20  s">The previous 
2050: 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 61 20 6d  statement in a m
2060: 75 6c 74 69 2d 73 74 61 74 65 6d 65 6e 74 20 63  ulti-statement c
2070: 6f 6d 6d 61 6e 64 2c 20 6f 72 20 6e 75 6c 6c 20  ommand, or null 
2080: 69 66 20 6e 6f 20 70 72 65 76 69 6f 75 73 20 73  if no previous s
2090: 74 61 74 65 6d 65 6e 74 20 65 78 69 73 74 73 3c  tatement exists<
20a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
20b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69   <param name="ti
20c0: 6d 65 6f 75 74 4d 53 22 3e 54 68 65 20 74 69 6d  meoutMS">The tim
20d0: 65 6f 75 74 20 74 6f 20 77 61 69 74 20 62 65 66  eout to wait bef
20e0: 6f 72 65 20 61 62 6f 72 74 69 6e 67 20 74 68 65  ore aborting the
20f0: 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61 6d 3e   prepare</param>
2100: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2110: 20 6e 61 6d 65 3d 22 73 74 72 52 65 6d 61 69 6e   name="strRemain
2120: 22 3e 54 68 65 20 72 65 6d 61 69 6e 64 65 72 20  ">The remainder 
2130: 6f 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  of the statement
2140: 20 74 68 61 74 20 77 61 73 20 6e 6f 74 20 70 72   that was not pr
2150: 6f 63 65 73 73 65 64 2e 20 20 45 61 63 68 20 63  ocessed.  Each c
2160: 61 6c 6c 20 74 6f 20 70 72 65 70 61 72 65 20 70  all to prepare p
2170: 61 72 73 65 73 20 74 68 65 0d 0a 20 20 20 20 2f  arses the..    /
2180: 2f 2f 20 53 51 4c 20 75 70 20 74 6f 20 74 6f 20  // SQL up to to 
2190: 65 69 74 68 65 72 20 74 68 65 20 65 6e 64 20 6f  either the end o
21a0: 66 20 74 68 65 20 74 65 78 74 20 6f 72 20 74 6f  f the text or to
21b0: 20 74 68 65 20 66 69 72 73 74 20 73 65 6d 69 2d   the first semi-
21c0: 63 6f 6c 6f 6e 20 64 65 6c 69 6d 69 74 65 72 2e  colon delimiter.
21d0: 20 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20    The remaining 
21e0: 74 65 78 74 20 69 73 20 72 65 74 75 72 6e 65 64  text is returned
21f0: 0d 0a 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 66  ..    /// here f
2200: 6f 72 20 61 20 73 75 62 73 65 71 75 65 6e 74 20  or a subsequent 
2210: 63 61 6c 6c 20 74 6f 20 50 72 65 70 61 72 65 28  call to Prepare(
2220: 29 20 75 6e 74 69 6c 20 61 6c 6c 20 74 68 65 20  ) until all the 
2230: 74 65 78 74 20 68 61 73 20 62 65 65 6e 20 70 72  text has been pr
2240: 6f 63 65 73 73 65 64 2e 3c 2f 70 61 72 61 6d 3e  ocessed.</param>
2250: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
2260: 6e 73 3e 52 65 74 75 72 6e 73 20 61 6e 20 69 6e  ns>Returns an in
2270: 69 74 69 61 6c 69 7a 65 64 20 53 51 4c 69 74 65  itialized SQLite
2280: 53 74 61 74 65 6d 65 6e 74 2e 3c 2f 72 65 74 75  Statement.</retu
2290: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
22a0: 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  al abstract SQLi
22b0: 74 65 53 74 61 74 65 6d 65 6e 74 20 50 72 65 70  teStatement Prep
22c0: 61 72 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  are(SQLiteConnec
22d0: 74 69 6f 6e 20 63 6e 6e 2c 20 73 74 72 69 6e 67  tion cnn, string
22e0: 20 73 74 72 53 71 6c 2c 20 53 51 4c 69 74 65 53   strSql, SQLiteS
22f0: 74 61 74 65 6d 65 6e 74 20 70 72 65 76 69 6f 75  tatement previou
2300: 73 2c 20 75 69 6e 74 20 74 69 6d 65 6f 75 74 4d  s, uint timeoutM
2310: 53 2c 20 72 65 66 20 73 74 72 69 6e 67 20 73 74  S, ref string st
2320: 72 52 65 6d 61 69 6e 29 3b 0d 0a 20 20 20 20 2f  rRemain);..    /
2330: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2340: 20 20 2f 2f 2f 20 53 74 65 70 73 20 74 68 72 6f    /// Steps thro
2350: 75 67 68 20 61 20 70 72 65 70 61 72 65 64 20 73  ugh a prepared s
2360: 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 2f  tatement...    /
2370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2380: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2390: 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 53 51  me="stmt">The SQ
23a0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 74 6f  LiteStatement to
23b0: 20 73 74 65 70 20 74 68 72 6f 75 67 68 3c 2f 70   step through</p
23c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
23d0: 72 65 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20  returns>True if 
23e0: 61 20 72 6f 77 20 77 61 73 20 72 65 74 75 72 6e  a row was return
23f0: 65 64 2c 20 46 61 6c 73 65 20 69 66 20 6e 6f 74  ed, False if not
2400: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
2410: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2420: 63 74 20 62 6f 6f 6c 20 53 74 65 70 28 53 51 4c  ct bool Step(SQL
2430: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
2440: 74 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  t);..    /// <su
2450: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2460: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
2470: 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
2480: 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 72  d statement is r
2490: 65 61 64 2d 6f 6e 6c 79 20 69 6e 20 6e 61 74 75  ead-only in natu
24a0: 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  re...    /// </s
24b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
24c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74   <param name="st
24d0: 6d 74 22 3e 54 68 65 20 73 74 61 74 65 6d 65 6e  mt">The statemen
24e0: 74 20 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72  t to check.</par
24f0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
2500: 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68  turns>True if th
2510: 65 20 6f 75 74 65 72 20 71 75 65 72 79 20 69 73  e outer query is
2520: 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 72 65 74   read-only.</ret
2530: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
2540: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
2550: 6c 20 49 73 52 65 61 64 4f 6e 6c 79 28 53 51 4c  l IsReadOnly(SQL
2560: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
2570: 74 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  t);..    /// <su
2580: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2590: 52 65 73 65 74 73 20 61 20 70 72 65 70 61 72 65  Resets a prepare
25a0: 64 20 73 74 61 74 65 6d 65 6e 74 20 73 6f 20 69  d statement so i
25b0: 74 20 63 61 6e 20 62 65 20 65 78 65 63 75 74 65  t can be execute
25c0: 64 20 61 67 61 69 6e 2e 20 20 49 66 20 74 68 65  d again.  If the
25d0: 20 65 72 72 6f 72 20 72 65 74 75 72 6e 65 64 20   error returned 
25e0: 69 73 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  is SQLITE_SCHEMA
25f0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 72 61 6e 73  ,..    /// trans
2600: 70 61 72 65 6e 74 6c 79 20 61 74 74 65 6d 70 74  parently attempt
2610: 20 74 6f 20 72 65 62 75 69 6c 64 20 74 68 65 20   to rebuild the 
2620: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  SQL statement an
2630: 64 20 74 68 72 6f 77 20 61 6e 20 65 72 72 6f 72  d throw an error
2640: 20 69 66 20 74 68 61 74 20 77 61 73 20 6e 6f 74   if that was not
2650: 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20   possible...    
2660: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2670: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2680: 61 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 73  ame="stmt">The s
2690: 74 61 74 65 6d 65 6e 74 20 74 6f 20 72 65 73 65  tatement to rese
26a0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
26b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75  // <returns>Retu
26c0: 72 6e 73 20 2d 31 20 69 66 20 74 68 65 20 73 63  rns -1 if the sc
26d0: 68 65 6d 61 20 63 68 61 6e 67 65 64 20 77 68 69  hema changed whi
26e0: 6c 65 20 72 65 73 65 74 74 69 6e 67 2c 20 30 20  le resetting, 0 
26f0: 69 66 20 74 68 65 20 72 65 73 65 74 20 77 61 73  if the reset was
2700: 20 73 75 63 65 73 73 66 75 6c 20 6f 72 20 36 20   sucessful or 6 
2710: 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 29 20  (SQLITE_LOCKED) 
2720: 69 66 20 74 68 65 20 72 65 73 65 74 20 66 61 69  if the reset fai
2730: 6c 65 64 20 64 75 65 20 74 6f 20 61 20 6c 6f 63  led due to a loc
2740: 6b 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  k</returns>..   
2750: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2760: 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ct SQLiteErrorCo
2770: 64 65 20 52 65 73 65 74 28 53 51 4c 69 74 65 53  de Reset(SQLiteS
2780: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 29 3b 0d  tatement stmt);.
2790: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
27a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74  ary>..    /// At
27b0: 74 65 6d 70 74 73 20 74 6f 20 69 6e 74 65 72 72  tempts to interr
27c0: 75 70 74 20 74 68 65 20 71 75 65 72 79 20 63 75  upt the query cu
27d0: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
27e0: 67 20 6f 6e 20 74 68 65 20 61 73 73 6f 63 69 61  g on the associa
27f0: 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61 74  ted..    /// nat
2800: 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ive database con
2810: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
2820: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2830: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
2840: 61 63 74 20 76 6f 69 64 20 43 61 6e 63 65 6c 28  act void Cancel(
2850: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
2860: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2870: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 62   This function b
2880: 69 6e 64 73 20 61 20 75 73 65 72 2d 64 65 66 69  inds a user-defi
2890: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  ned function to 
28a0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
28b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
28c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
28d0: 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69  ram name="functi
28e0: 6f 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20  onAttribute">.. 
28f0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2900: 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63  cref="SQLiteFunc
2910: 74 69 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e  tionAttribute"/>
2920: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2930: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
2940: 20 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74   /// the metadat
2950: 61 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69  a for the functi
2960: 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
2970: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2980: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2990: 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  m name="function
29a0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
29b0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
29c0: 65 46 75 6e 63 74 69 6f 6e 22 2f 3e 20 6f 62 6a  eFunction"/> obj
29d0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 68 61  ect instance tha
29e0: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  t implements the
29f0: 0d 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69  ..    /// functi
2a00: 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
2a10: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2a20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2a30: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
2a40: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
2a50: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
2a60: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
2a70: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
2a80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2a90: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
2aa0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42   abstract void B
2ab0: 69 6e 64 46 75 6e 63 74 69 6f 6e 28 53 51 4c 69  indFunction(SQLi
2ac0: 74 65 46 75 6e 63 74 69 6f 6e 41 74 74 72 69 62  teFunctionAttrib
2ad0: 75 74 65 20 66 75 6e 63 74 69 6f 6e 41 74 74 72  ute functionAttr
2ae0: 69 62 75 74 65 2c 20 53 51 4c 69 74 65 46 75 6e  ibute, SQLiteFun
2af0: 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20  ction function, 
2b00: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2b10: 46 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d  Flags flags);...
2b20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2b30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
2b40: 20 66 75 6e 63 74 69 6f 6e 20 75 6e 62 69 6e 64   function unbind
2b50: 73 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64  s a user-defined
2b60: 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d 20 74   function from t
2b70: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
2b80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b90: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2ba0: 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  am name="functio
2bb0: 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20  nAttribute">..  
2bc0: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
2bd0: 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
2be0: 69 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e 20  ionAttribute"/> 
2bf0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2c00: 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
2c10: 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74 61  /// the metadata
2c20: 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f   for the functio
2c30: 6e 20 74 6f 20 62 65 20 75 6e 62 6f 75 6e 64 2e  n to be unbound.
2c40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2c50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2c60: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
2c70: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
2c80: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
2c90: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
2ca0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
2cb0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2cc0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
2cd0: 74 75 72 6e 73 3e 4e 6f 6e 2d 7a 65 72 6f 20 69  turns>Non-zero i
2ce0: 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 77  f the function w
2cf0: 61 73 20 75 6e 62 6f 75 6e 64 2e 3c 2f 72 65 74  as unbound.</ret
2d00: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
2d10: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
2d20: 6c 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e  l UnbindFunction
2d30: 28 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41  (SQLiteFunctionA
2d40: 74 74 72 69 62 75 74 65 20 66 75 6e 63 74 69 6f  ttribute functio
2d50: 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51 4c 69  nAttribute, SQLi
2d60: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
2d70: 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20  s flags);....   
2d80: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2d90: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44 6f 75  ct void Bind_Dou
2da0: 62 6c 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ble(SQLiteStatem
2db0: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
2dc0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2dd0: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
2de0: 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
2df0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2e00: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2e10: 64 5f 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  d_Int32(SQLiteSt
2e20: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
2e30: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2e40: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
2e50: 6e 64 65 78 2c 20 49 6e 74 33 32 20 76 61 6c 75  ndex, Int32 valu
2e60: 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  e);..    interna
2e70: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
2e80: 42 69 6e 64 5f 55 49 6e 74 33 32 28 53 51 4c 69  Bind_UInt32(SQLi
2e90: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
2ea0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
2eb0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
2ec0: 6e 74 20 69 6e 64 65 78 2c 20 55 49 6e 74 33 32  nt index, UInt32
2ed0: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e   value);..    in
2ee0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
2ef0: 76 6f 69 64 20 42 69 6e 64 5f 49 6e 74 36 34 28  void Bind_Int64(
2f00: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
2f10: 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  stmt, SQLiteConn
2f20: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
2f30: 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 49 6e  s, int index, In
2f40: 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  t64 value);..   
2f50: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2f60: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 55 49 6e  ct void Bind_UIn
2f70: 74 36 34 28 53 51 4c 69 74 65 53 74 61 74 65 6d  t64(SQLiteStatem
2f80: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
2f90: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2fa0: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
2fb0: 2c 20 55 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  , UInt64 value);
2fc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2fd0: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2fe0: 64 5f 42 6f 6f 6c 65 61 6e 28 53 51 4c 69 74 65  d_Boolean(SQLite
2ff0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3000: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
3010: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
3020: 20 69 6e 64 65 78 2c 20 62 6f 6f 6c 20 76 61 6c   index, bool val
3030: 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ue);..    intern
3040: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
3050: 20 42 69 6e 64 5f 54 65 78 74 28 53 51 4c 69 74   Bind_Text(SQLit
3060: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c  eStatement stmt,
3070: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3080: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e  nFlags flags, in
3090: 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20  t index, string 
30a0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
30b0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
30c0: 6f 69 64 20 42 69 6e 64 5f 42 6c 6f 62 28 53 51  oid Bind_Blob(SQ
30d0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
30e0: 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  mt, SQLiteConnec
30f0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c  tionFlags flags,
3100: 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65   int index, byte
3110: 5b 5d 20 62 6c 6f 62 44 61 74 61 29 3b 0d 0a 20  [] blobData);.. 
3120: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3130: 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44  ract void Bind_D
3140: 61 74 65 54 69 6d 65 28 53 51 4c 69 74 65 53 74  ateTime(SQLiteSt
3150: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
3160: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3170: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
3180: 6e 64 65 78 2c 20 44 61 74 65 54 69 6d 65 20 64  ndex, DateTime d
3190: 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  t);..    interna
31a0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
31b0: 42 69 6e 64 5f 4e 75 6c 6c 28 53 51 4c 69 74 65  Bind_Null(SQLite
31c0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
31d0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
31e0: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
31f0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20   index);....    
3200: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3210: 74 20 69 6e 74 20 42 69 6e 64 5f 50 61 72 61 6d  t int Bind_Param
3220: 43 6f 75 6e 74 28 53 51 4c 69 74 65 53 74 61 74  Count(SQLiteStat
3230: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69  ement stmt, SQLi
3240: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
3250: 73 20 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20 69  s flags);..    i
3260: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
3270: 20 73 74 72 69 6e 67 20 42 69 6e 64 5f 50 61 72   string Bind_Par
3280: 61 6d 4e 61 6d 65 28 53 51 4c 69 74 65 53 74 61  amName(SQLiteSta
3290: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c  tement stmt, SQL
32a0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
32b0: 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e  gs flags, int in
32c0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
32d0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74  nal abstract int
32e0: 20 42 69 6e 64 5f 50 61 72 61 6d 49 6e 64 65 78   Bind_ParamIndex
32f0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3300: 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e   stmt, SQLiteCon
3310: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
3320: 67 73 2c 20 73 74 72 69 6e 67 20 70 61 72 61 6d  gs, string param
3330: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e  Name);....    in
3340: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3350: 69 6e 74 20 43 6f 6c 75 6d 6e 43 6f 75 6e 74 28  int ColumnCount(
3360: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3370: 73 74 6d 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65  stmt);..    inte
3380: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
3390: 72 69 6e 67 20 43 6f 6c 75 6d 6e 4e 61 6d 65 28  ring ColumnName(
33a0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
33b0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
33c0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
33d0: 61 62 73 74 72 61 63 74 20 54 79 70 65 41 66 66  abstract TypeAff
33e0: 69 6e 69 74 79 20 43 6f 6c 75 6d 6e 41 66 66 69  inity ColumnAffi
33f0: 6e 69 74 79 28 53 51 4c 69 74 65 53 74 61 74 65  nity(SQLiteState
3400: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
3410: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
3420: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
3430: 72 69 6e 67 20 43 6f 6c 75 6d 6e 54 79 70 65 28  ring ColumnType(
3440: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3450: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
3460: 20 72 65 66 20 54 79 70 65 41 66 66 69 6e 69 74   ref TypeAffinit
3470: 79 20 6e 41 66 66 69 6e 69 74 79 29 3b 0d 0a 20  y nAffinity);.. 
3480: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3490: 72 61 63 74 20 69 6e 74 20 43 6f 6c 75 6d 6e 49  ract int ColumnI
34a0: 6e 64 65 78 28 53 51 4c 69 74 65 53 74 61 74 65  ndex(SQLiteState
34b0: 6d 65 6e 74 20 73 74 6d 74 2c 20 73 74 72 69 6e  ment stmt, strin
34c0: 67 20 63 6f 6c 75 6d 6e 4e 61 6d 65 29 3b 0d 0a  g columnName);..
34d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
34e0: 74 72 61 63 74 20 73 74 72 69 6e 67 20 43 6f 6c  tract string Col
34f0: 75 6d 6e 4f 72 69 67 69 6e 61 6c 4e 61 6d 65 28  umnOriginalName(
3500: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3510: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3520: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3530: 61 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20  abstract string 
3540: 43 6f 6c 75 6d 6e 44 61 74 61 62 61 73 65 4e 61  ColumnDatabaseNa
3550: 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  me(SQLiteStateme
3560: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3570: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
3580: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
3590: 6e 67 20 43 6f 6c 75 6d 6e 54 61 62 6c 65 4e 61  ng ColumnTableNa
35a0: 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  me(SQLiteStateme
35b0: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
35c0: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
35d0: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
35e0: 20 43 6f 6c 75 6d 6e 4d 65 74 61 44 61 74 61 28   ColumnMetaData(
35f0: 73 74 72 69 6e 67 20 64 61 74 61 42 61 73 65 2c  string dataBase,
3600: 20 73 74 72 69 6e 67 20 74 61 62 6c 65 2c 20 73   string table, s
3610: 74 72 69 6e 67 20 63 6f 6c 75 6d 6e 2c 20 72 65  tring column, re
3620: 66 20 73 74 72 69 6e 67 20 64 61 74 61 54 79 70  f string dataTyp
3630: 65 2c 20 72 65 66 20 73 74 72 69 6e 67 20 63 6f  e, ref string co
3640: 6c 6c 61 74 65 53 65 71 75 65 6e 63 65 2c 20 72  llateSequence, r
3650: 65 66 20 62 6f 6f 6c 20 6e 6f 74 4e 75 6c 6c 2c  ef bool notNull,
3660: 20 72 65 66 20 62 6f 6f 6c 20 70 72 69 6d 61 72   ref bool primar
3670: 79 4b 65 79 2c 20 72 65 66 20 62 6f 6f 6c 20 61  yKey, ref bool a
3680: 75 74 6f 49 6e 63 72 65 6d 65 6e 74 29 3b 0d 0a  utoIncrement);..
3690: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
36a0: 74 72 61 63 74 20 76 6f 69 64 20 47 65 74 49 6e  tract void GetIn
36b0: 64 65 78 43 6f 6c 75 6d 6e 45 78 74 65 6e 64 65  dexColumnExtende
36c0: 64 49 6e 66 6f 28 73 74 72 69 6e 67 20 64 61 74  dInfo(string dat
36d0: 61 62 61 73 65 2c 20 73 74 72 69 6e 67 20 69 6e  abase, string in
36e0: 64 65 78 2c 20 73 74 72 69 6e 67 20 63 6f 6c 75  dex, string colu
36f0: 6d 6e 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74  mn, ref int sort
3700: 4d 6f 64 65 2c 20 72 65 66 20 69 6e 74 20 6f 6e  Mode, ref int on
3710: 45 72 72 6f 72 2c 20 72 65 66 20 73 74 72 69 6e  Error, ref strin
3720: 67 20 63 6f 6c 6c 61 74 69 6f 6e 53 65 71 75 65  g collationSeque
3730: 6e 63 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74  nce);....    int
3740: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 6f  ernal abstract o
3750: 62 6a 65 63 74 20 47 65 74 4f 62 6a 65 63 74 28  bject GetObject(
3760: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3770: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3780: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3790: 61 62 73 74 72 61 63 74 20 64 6f 75 62 6c 65 20  abstract double 
37a0: 47 65 74 44 6f 75 62 6c 65 28 53 51 4c 69 74 65  GetDouble(SQLite
37b0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
37c0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
37d0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
37e0: 63 74 20 42 6f 6f 6c 65 61 6e 20 47 65 74 42 6f  ct Boolean GetBo
37f0: 6f 6c 65 61 6e 28 53 51 4c 69 74 65 53 74 61 74  olean(SQLiteStat
3800: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
3810: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
3820: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53  ernal abstract S
3830: 42 79 74 65 20 47 65 74 53 42 79 74 65 28 53 51  Byte GetSByte(SQ
3840: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3850: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3860: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3870: 73 74 72 61 63 74 20 42 79 74 65 20 47 65 74 42  stract Byte GetB
3880: 79 74 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  yte(SQLiteStatem
3890: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
38a0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
38b0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49 6e 74  nal abstract Int
38c0: 31 36 20 47 65 74 49 6e 74 31 36 28 53 51 4c 69  16 GetInt16(SQLi
38d0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
38e0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
38f0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3900: 72 61 63 74 20 55 49 6e 74 31 36 20 47 65 74 55  ract UInt16 GetU
3910: 49 6e 74 31 36 28 53 51 4c 69 74 65 53 74 61 74  Int16(SQLiteStat
3920: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
3930: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
3940: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
3950: 6e 74 33 32 20 47 65 74 49 6e 74 33 32 28 53 51  nt32 GetInt32(SQ
3960: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3970: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3980: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3990: 73 74 72 61 63 74 20 55 49 6e 74 33 32 20 47 65  stract UInt32 Ge
39a0: 74 55 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  tUInt32(SQLiteSt
39b0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
39c0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
39d0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
39e0: 20 49 6e 74 36 34 20 47 65 74 49 6e 74 36 34 28   Int64 GetInt64(
39f0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3a00: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3a10: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3a20: 61 62 73 74 72 61 63 74 20 55 49 6e 74 36 34 20  abstract UInt64 
3a30: 47 65 74 55 49 6e 74 36 34 28 53 51 4c 69 74 65  GetUInt64(SQLite
3a40: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3a50: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
3a60: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3a70: 63 74 20 73 74 72 69 6e 67 20 47 65 74 54 65 78  ct string GetTex
3a80: 74 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  t(SQLiteStatemen
3a90: 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  t stmt, int inde
3aa0: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
3ab0: 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20  l abstract long 
3ac0: 47 65 74 42 79 74 65 73 28 53 51 4c 69 74 65 53  GetBytes(SQLiteS
3ad0: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69  tatement stmt, i
3ae0: 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 6e 44  nt index, int nD
3af0: 61 74 61 6f 66 66 73 65 74 2c 20 62 79 74 65 5b  ataoffset, byte[
3b00: 5d 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53 74  ] bDest, int nSt
3b10: 61 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74 68  art, int nLength
3b20: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3b30: 20 61 62 73 74 72 61 63 74 20 63 68 61 72 20 47   abstract char G
3b40: 65 74 43 68 61 72 28 53 51 4c 69 74 65 53 74 61  etChar(SQLiteSta
3b50: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3b60: 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e   index);..    in
3b70: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3b80: 6c 6f 6e 67 20 47 65 74 43 68 61 72 73 28 53 51  long GetChars(SQ
3b90: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3ba0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69  mt, int index, i
3bb0: 6e 74 20 6e 44 61 74 61 6f 66 66 73 65 74 2c 20  nt nDataoffset, 
3bc0: 63 68 61 72 5b 5d 20 62 44 65 73 74 2c 20 69 6e  char[] bDest, in
3bd0: 74 20 6e 53 74 61 72 74 2c 20 69 6e 74 20 6e 4c  t nStart, int nL
3be0: 65 6e 67 74 68 29 3b 0d 0a 20 20 20 20 69 6e 74  ength);..    int
3bf0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 44  ernal abstract D
3c00: 61 74 65 54 69 6d 65 20 47 65 74 44 61 74 65 54  ateTime GetDateT
3c10: 69 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ime(SQLiteStatem
3c20: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3c30: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3c40: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
3c50: 6c 20 49 73 4e 75 6c 6c 28 53 51 4c 69 74 65 53  l IsNull(SQLiteS
3c60: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69  tatement stmt, i
3c70: 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20  nt index);....  
3c80: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3c90: 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43  act SQLiteErrorC
3ca0: 6f 64 65 20 43 72 65 61 74 65 43 6f 6c 6c 61 74  ode CreateCollat
3cb0: 69 6f 6e 28 73 74 72 69 6e 67 20 73 74 72 43 6f  ion(string strCo
3cc0: 6c 6c 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65 43  llation, SQLiteC
3cd0: 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 2c 20 53  ollation func, S
3ce0: 51 4c 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66  QLiteCollation f
3cf0: 75 6e 63 31 36 2c 20 62 6f 6f 6c 20 40 74 68 72  unc16, bool @thr
3d00: 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ow);..    intern
3d10: 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  al abstract SQLi
3d20: 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61  teErrorCode Crea
3d30: 74 65 46 75 6e 63 74 69 6f 6e 28 73 74 72 69 6e  teFunction(strin
3d40: 67 20 73 74 72 46 75 6e 63 74 69 6f 6e 2c 20 69  g strFunction, i
3d50: 6e 74 20 6e 41 72 67 73 2c 20 62 6f 6f 6c 20 6e  nt nArgs, bool n
3d60: 65 65 64 43 6f 6c 6c 53 65 71 2c 20 53 51 4c 69  eedCollSeq, SQLi
3d70: 74 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c  teCallback func,
3d80: 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20   SQLiteCallback 
3d90: 66 75 6e 63 73 74 65 70 2c 20 53 51 4c 69 74 65  funcstep, SQLite
3da0: 46 69 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 75  FinalCallback fu
3db0: 6e 63 66 69 6e 61 6c 2c 20 62 6f 6f 6c 20 40 74  ncfinal, bool @t
3dc0: 68 72 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74 65  hrow);..    inte
3dd0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 43 6f  rnal abstract Co
3de0: 6c 6c 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 20  llationSequence 
3df0: 47 65 74 43 6f 6c 6c 61 74 69 6f 6e 53 65 71 75  GetCollationSequ
3e00: 65 6e 63 65 28 53 51 4c 69 74 65 46 75 6e 63 74  ence(SQLiteFunct
3e10: 69 6f 6e 20 66 75 6e 63 2c 20 49 6e 74 50 74 72  ion func, IntPtr
3e20: 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20   context);..    
3e30: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3e40: 74 20 69 6e 74 20 43 6f 6e 74 65 78 74 43 6f 6c  t int ContextCol
3e50: 6c 61 74 65 43 6f 6d 70 61 72 65 28 43 6f 6c 6c  lateCompare(Coll
3e60: 61 74 69 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e 75  ationEncodingEnu
3e70: 6d 20 65 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f  m enc, IntPtr co
3e80: 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 73 31  ntext, string s1
3e90: 2c 20 73 74 72 69 6e 67 20 73 32 29 3b 0d 0a 20  , string s2);.. 
3ea0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3eb0: 72 61 63 74 20 69 6e 74 20 43 6f 6e 74 65 78 74  ract int Context
3ec0: 43 6f 6c 6c 61 74 65 43 6f 6d 70 61 72 65 28 43  CollateCompare(C
3ed0: 6f 6c 6c 61 74 69 6f 6e 45 6e 63 6f 64 69 6e 67  ollationEncoding
3ee0: 45 6e 75 6d 20 65 6e 63 2c 20 49 6e 74 50 74 72  Enum enc, IntPtr
3ef0: 20 63 6f 6e 74 65 78 74 2c 20 63 68 61 72 5b 5d   context, char[]
3f00: 20 63 31 2c 20 63 68 61 72 5b 5d 20 63 32 29 3b   c1, char[] c2);
3f10: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
3f20: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 41 67   abstract int Ag
3f30: 67 72 65 67 61 74 65 43 6f 75 6e 74 28 49 6e 74  gregateCount(Int
3f40: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 20  Ptr context);.. 
3f50: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3f60: 72 61 63 74 20 49 6e 74 50 74 72 20 41 67 67 72  ract IntPtr Aggr
3f70: 65 67 61 74 65 43 6f 6e 74 65 78 74 28 49 6e 74  egateContext(Int
3f80: 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d  Ptr context);...
3f90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3fa0: 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65 74 50  stract long GetP
3fb0: 61 72 61 6d 56 61 6c 75 65 42 79 74 65 73 28 49  aramValueBytes(I
3fc0: 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20 6e  ntPtr ptr, int n
3fd0: 44 61 74 61 4f 66 66 73 65 74 2c 20 62 79 74 65  DataOffset, byte
3fe0: 5b 5d 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53  [] bDest, int nS
3ff0: 74 61 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74  tart, int nLengt
4000: 68 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  h);..    interna
4010: 6c 20 61 62 73 74 72 61 63 74 20 64 6f 75 62 6c  l abstract doubl
4020: 65 20 47 65 74 50 61 72 61 6d 56 61 6c 75 65 44  e GetParamValueD
4030: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 70 74 72  ouble(IntPtr ptr
4040: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
4050: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 47 65   abstract int Ge
4060: 74 50 61 72 61 6d 56 61 6c 75 65 49 6e 74 33 32  tParamValueInt32
4070: 28 49 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 20  (IntPtr ptr);.. 
4080: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
4090: 72 61 63 74 20 49 6e 74 36 34 20 47 65 74 50 61  ract Int64 GetPa
40a0: 72 61 6d 56 61 6c 75 65 49 6e 74 36 34 28 49 6e  ramValueInt64(In
40b0: 74 50 74 72 20 70 74 72 29 3b 0d 0a 20 20 20 20  tPtr ptr);..    
40c0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
40d0: 74 20 73 74 72 69 6e 67 20 47 65 74 50 61 72 61  t string GetPara
40e0: 6d 56 61 6c 75 65 54 65 78 74 28 49 6e 74 50 74  mValueText(IntPt
40f0: 72 20 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74  r ptr);..    int
4100: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 54  ernal abstract T
4110: 79 70 65 41 66 66 69 6e 69 74 79 20 47 65 74 50  ypeAffinity GetP
4120: 61 72 61 6d 56 61 6c 75 65 54 79 70 65 28 49 6e  aramValueType(In
4130: 74 50 74 72 20 70 74 72 29 3b 0d 0a 0d 0a 20 20  tPtr ptr);....  
4140: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
4150: 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 42  act void ReturnB
4160: 6c 6f 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  lob(IntPtr conte
4170: 78 74 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65  xt, byte[] value
4180: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
4190: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52   abstract void R
41a0: 65 74 75 72 6e 44 6f 75 62 6c 65 28 49 6e 74 50  eturnDouble(IntP
41b0: 74 72 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62  tr context, doub
41c0: 6c 65 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  le value);..    
41d0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
41e0: 74 20 76 6f 69 64 20 52 65 74 75 72 6e 45 72 72  t void ReturnErr
41f0: 6f 72 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  or(IntPtr contex
4200: 74 2c 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29  t, string value)
4210: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
4220: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52 65  abstract void Re
4230: 74 75 72 6e 49 6e 74 33 32 28 49 6e 74 50 74 72  turnInt32(IntPtr
4240: 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 33 32 20   context, Int32 
4250: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
4260: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
4270: 6f 69 64 20 52 65 74 75 72 6e 49 6e 74 36 34 28  oid ReturnInt64(
4280: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20  IntPtr context, 
4290: 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 20  Int64 value);.. 
42a0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
42b0: 72 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e  ract void Return
42c0: 4e 75 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74  Null(IntPtr cont
42d0: 65 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  ext);..    inter
42e0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
42f0: 64 20 52 65 74 75 72 6e 54 65 78 74 28 49 6e 74  d ReturnText(Int
4300: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
4310: 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23  ing value);....#
4320: 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
4330: 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 2f 2f  AL_TABLE..    //
4340: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4350: 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e   /// Calls the n
4360: 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72  ative SQLite cor
4370: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64  e library in ord
4380: 65 72 20 74 6f 20 63 72 65 61 74 65 20 61 20 64  er to create a d
4390: 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 2f  isposable..    /
43a0: 2f 2f 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69  // module contai
43b0: 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65  ning the impleme
43c0: 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72  ntation of a vir
43d0: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
43e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
43f0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4400: 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
4410: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75      /// The modu
4420: 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20  le object to be 
4430: 75 73 65 64 20 77 68 65 6e 20 63 72 65 61 74 69  used when creati
4440: 6e 67 20 74 68 65 20 6e 61 74 69 76 65 20 64 69  ng the native di
4450: 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 2e  sposable module.
4460: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
4470: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
4480: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
4490: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
44a0: 61 67 73 20 66 6f 72 20 74 68 65 20 61 73 73 6f  ags for the asso
44b0: 63 69 61 74 65 64 20 3c 73 65 65 20 63 72 65 66  ciated <see cref
44c0: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
44d0: 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
44e0: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
44f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69   </param>..    i
4500: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
4510: 20 76 6f 69 64 20 43 72 65 61 74 65 4d 6f 64 75   void CreateModu
4520: 6c 65 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20  le(SQLiteModule 
4530: 6d 6f 64 75 6c 65 2c 20 53 51 4c 69 74 65 43 6f  module, SQLiteCo
4540: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
4550: 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ags);....    ///
4560: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4570: 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61  /// Calls the na
4580: 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65  tive SQLite core
4590: 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65   library in orde
45a0: 72 20 74 6f 20 63 6c 65 61 6e 75 70 20 74 68 65  r to cleanup the
45b0: 20 72 65 73 6f 75 72 63 65 73 0d 0a 20 20 20 20   resources..    
45c0: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
45d0: 69 74 68 20 61 20 6d 6f 64 75 6c 65 20 63 6f 6e  ith a module con
45e0: 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c  taining the impl
45f0: 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20  ementation of a 
4600: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
4610: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4620: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
4630: 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22  am name="module"
4640: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d  >..    /// The m
4650: 6f 64 75 6c 65 20 6f 62 6a 65 63 74 20 70 72 65  odule object pre
4660: 76 69 6f 75 73 6c 79 20 70 61 73 73 65 64 20 74  viously passed t
4670: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
4680: 22 43 72 65 61 74 65 4d 6f 64 75 6c 65 22 20 2f  "CreateModule" /
4690: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f  >..    /// metho
46a0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
46b0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
46c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
46d0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
46e0: 66 6c 61 67 73 20 66 6f 72 20 74 68 65 20 61 73  flags for the as
46f0: 73 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63 72  sociated <see cr
4700: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
4710: 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20  tion" /> object 
4720: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
4730: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4740: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
4750: 63 74 20 76 6f 69 64 20 44 69 73 70 6f 73 65 4d  ct void DisposeM
4760: 6f 64 75 6c 65 28 53 51 4c 69 74 65 4d 6f 64 75  odule(SQLiteModu
4770: 6c 65 20 6d 6f 64 75 6c 65 2c 20 53 51 4c 69 74  le module, SQLit
4780: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
4790: 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20   flags);....    
47a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
47b0: 20 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65     /// Calls the
47c0: 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63   native SQLite c
47d0: 6f 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f  ore library in o
47e0: 72 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20  rder to declare 
47f0: 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  a virtual table.
4800: 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 72 65 73 70  .    /// in resp
4810: 6f 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c 20 69  onse to a call i
4820: 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65  nto the <see cre
4830: 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
4840: 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20  Module.xCreate" 
4850: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20 3c  />..    /// or <
4860: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
4870: 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
4880: 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72 74 75  onnect" /> virtu
4890: 61 6c 20 74 61 62 6c 65 20 6d 65 74 68 6f 64 73  al table methods
48a0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
48b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
48c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75  param name="modu
48d0: 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  le">..    /// Th
48e0: 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
48f0: 6d 6f 64 75 6c 65 20 74 68 61 74 20 69 73 20 74  module that is t
4900: 6f 20 62 65 20 72 65 73 70 6f 6e 73 69 62 6c 65  o be responsible
4910: 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
4920: 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20   table..    /// 
4930: 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64 2e 0d  being declared..
4940: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
4950: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
4960: 6d 20 6e 61 6d 65 3d 22 73 74 72 53 71 6c 22 3e  m name="strSql">
4970: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74  ..    /// The st
4980: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
4990: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
49a0: 74 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65  t describing the
49b0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74   virtual table t
49c0: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 20 64 65  o..    /// be de
49d0: 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  clared...    ///
49e0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
49f0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4a00: 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f  error">..    ///
4a10: 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74   Upon success, t
4a20: 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74  he contents of t
4a30: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 61 72  his parameter ar
4a40: 65 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 55 70  e undefined.  Up
4a50: 6f 6e 20 66 61 69 6c 75 72 65 2c 0d 0a 20 20 20  on failure,..   
4a60: 20 2f 2f 2f 20 69 74 20 73 68 6f 75 6c 64 20 63   /// it should c
4a70: 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70  ontain an approp
4a80: 72 69 61 74 65 20 65 72 72 6f 72 20 6d 65 73 73  riate error mess
4a90: 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  age...    /// </
4aa0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
4ab0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
4ac0: 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
4ad0: 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
4ae0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
4af0: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
4b00: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c  nal abstract SQL
4b10: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65 63  iteErrorCode Dec
4b20: 6c 61 72 65 56 69 72 74 75 61 6c 54 61 62 6c 65  lareVirtualTable
4b30: 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f  (SQLiteModule mo
4b40: 64 75 6c 65 2c 20 73 74 72 69 6e 67 20 73 74 72  dule, string str
4b50: 53 71 6c 2c 20 72 65 66 20 73 74 72 69 6e 67 20  Sql, ref string 
4b60: 65 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f  error);....    /
4b70: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4b80: 20 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20    /// Calls the 
4b90: 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f  native SQLite co
4ba0: 72 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72  re library in or
4bb0: 64 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20 61  der to declare a
4bc0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
4bd0: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
4be0: 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
4bf0: 61 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20  a call into the 
4c00: 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
4c10: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
4c20: 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20  Create" />..    
4c30: 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66  /// or <see cref
4c40: 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
4c50: 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20  odule.xConnect" 
4c60: 2f 3e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  /> virtual table
4c70: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 2f   methods...    /
4c80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4c90: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
4ca0: 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
4cb0: 20 20 2f 2f 2f 20 54 68 65 20 76 69 72 74 75 61    /// The virtua
4cc0: 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 74  l table module t
4cd0: 68 61 74 20 69 73 20 74 6f 20 62 65 20 72 65 73  hat is to be res
4ce0: 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65  ponsible for the
4cf0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a   virtual table..
4d00: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
4d10: 20 62 65 69 6e 67 20 64 65 63 6c 61 72 65 64 2e   being declared.
4d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
4d30: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
4d40: 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e  am name="argumen
4d50: 74 43 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 2f 2f  tCount">..    //
4d60: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
4d70: 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65  arguments to the
4d80: 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20   function being 
4d90: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f  declared...    /
4da0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4db0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4dc0: 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="name">..    //
4dd0: 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  / The name of th
4de0: 65 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  e function being
4df0: 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
4e00: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4e10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4e20: 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20  e="error">..    
4e30: 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
4e40: 2c 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f  , the contents o
4e50: 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  f this parameter
4e60: 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 20   are undefined. 
4e70: 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 0d 0a   Upon failure,..
4e80: 20 20 20 20 2f 2f 2f 20 69 74 20 73 68 6f 75 6c      /// it shoul
4e90: 64 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70  d contain an app
4ea0: 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20 6d  ropriate error m
4eb0: 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f  essage...    ///
4ec0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
4ed0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4ee0: 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
4ef0: 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
4f00: 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
4f10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
4f20: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
4f30: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
4f40: 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c 46 75  DeclareVirtualFu
4f50: 6e 63 74 69 6f 6e 28 53 51 4c 69 74 65 4d 6f 64  nction(SQLiteMod
4f60: 75 6c 65 20 6d 6f 64 75 6c 65 2c 20 69 6e 74 20  ule module, int 
4f70: 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 73  argumentCount, s
4f80: 74 72 69 6e 67 20 6e 61 6d 65 2c 20 72 65 66 20  tring name, ref 
4f90: 73 74 72 69 6e 67 20 65 72 72 6f 72 29 3b 0d 0a  string error);..
4fa0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
4fb0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4fc0: 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20   /// Enables or 
4fd0: 64 69 73 61 62 6c 65 73 20 61 20 63 6f 6e 66 69  disables a confi
4fe0: 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20  guration option 
4ff0: 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73 65  for the database
5000: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65  ...    /// conne
5010: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ction...    /// 
5020: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5030: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
5040: 22 6f 70 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f  "option">..    /
5050: 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
5060: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
5070: 74 69 6f 6e 20 74 6f 20 65 6e 61 62 6c 65 20 6f  tion to enable o
5080: 72 20 64 69 73 61 62 6c 65 2e 0d 0a 20 20 20 20  r disable...    
5090: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
50a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
50b0: 65 3d 22 62 4f 6e 4f 66 66 22 3e 0d 0a 20 20 20  e="bOnOff">..   
50c0: 20 2f 2f 2f 20 54 72 75 65 20 74 6f 20 65 6e 61   /// True to ena
50d0: 62 6c 65 20 6c 6f 61 64 69 6e 67 20 6f 66 20 65  ble loading of e
50e0: 78 74 65 6e 73 69 6f 6e 73 2c 20 66 61 6c 73 65  xtensions, false
50f0: 20 74 6f 20 64 69 73 61 62 6c 65 2e 0d 0a 20 20   to disable...  
5100: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5110: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
5120: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 73 74 61  >..    /// A sta
5130: 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
5140: 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  urn code...    /
5150: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
5160: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
5170: 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
5180: 43 6f 64 65 20 53 65 74 43 6f 6e 66 69 67 75 72  Code SetConfigur
5190: 61 74 69 6f 6e 4f 70 74 69 6f 6e 28 53 51 4c 69  ationOption(SQLi
51a0: 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
51b0: 6d 20 6f 70 74 69 6f 6e 2c 20 62 6f 6f 6c 20 62  m option, bool b
51c0: 4f 6e 4f 66 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f  OnOff);..    ///
51d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
51e0: 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20 64  /// Enables or d
51f0: 69 73 61 62 6c 65 73 20 65 78 74 65 6e 73 69 6f  isables extensio
5200: 6e 20 6c 6f 61 64 69 6e 67 20 62 79 20 53 51 4c  n loading by SQL
5210: 69 74 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ite...    /// </
5220: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5230: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62  / <param name="b
5240: 4f 6e 4f 66 66 22 3e 0d 0a 20 20 20 20 2f 2f 2f  OnOff">..    ///
5250: 20 54 72 75 65 20 74 6f 20 65 6e 61 62 6c 65 20   True to enable 
5260: 6c 6f 61 64 69 6e 67 20 6f 66 20 65 78 74 65 6e  loading of exten
5270: 73 69 6f 6e 73 2c 20 66 61 6c 73 65 20 74 6f 20  sions, false to 
5280: 64 69 73 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  disable...    //
5290: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
52a0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
52b0: 74 20 76 6f 69 64 20 53 65 74 4c 6f 61 64 45 78  t void SetLoadEx
52c0: 74 65 6e 73 69 6f 6e 28 62 6f 6f 6c 20 62 4f 6e  tension(bool bOn
52d0: 4f 66 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Off);..    /// <
52e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
52f0: 2f 20 4c 6f 61 64 73 20 61 20 53 51 4c 69 74 65  / Loads a SQLite
5300: 20 65 78 74 65 6e 73 69 6f 6e 20 6c 69 62 72 61   extension libra
5310: 72 79 20 66 72 6f 6d 20 74 68 65 20 6e 61 6d 65  ry from the name
5320: 64 20 66 69 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d file...    ///
5330: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5340: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5350: 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
5360: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
5370: 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  f the dynamic li
5380: 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
5390: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 65  containing the e
53a0: 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  xtension...    /
53b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
53c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
53d0: 3d 22 70 72 6f 63 4e 61 6d 65 22 3e 0d 0a 20 20  ="procName">..  
53e0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
53f0: 66 20 74 68 65 20 65 78 70 6f 72 74 65 64 20 66  f the exported f
5400: 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 74 6f 20  unction used to 
5410: 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 65  initialize the e
5420: 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  xtension...    /
5430: 2f 2f 20 49 66 20 6e 75 6c 6c 2c 20 74 68 65 20  // If null, the 
5440: 64 65 66 61 75 6c 74 20 22 73 71 6c 69 74 65 33  default "sqlite3
5450: 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 22  _extension_init"
5460: 20 77 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a   will be used...
5470: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5480: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
5490: 62 73 74 72 61 63 74 20 76 6f 69 64 20 4c 6f 61  bstract void Loa
54a0: 64 45 78 74 65 6e 73 69 6f 6e 28 73 74 72 69 6e  dExtension(strin
54b0: 67 20 66 69 6c 65 4e 61 6d 65 2c 20 73 74 72 69  g fileName, stri
54c0: 6e 67 20 70 72 6f 63 4e 61 6d 65 29 3b 0d 0a 20  ng procName);.. 
54d0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
54e0: 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65  ..    /// Enable
54f0: 73 20 6f 72 20 64 69 73 61 62 6c 65 64 20 65 78  s or disabled ex
5500: 74 65 6e 65 64 20 72 65 73 75 6c 74 20 63 6f 64  tened result cod
5510: 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 53  es returned by S
5520: 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  QLite..    /// <
5530: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
5540: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5550: 62 4f 6e 4f 66 66 22 3e 74 72 75 65 20 74 6f 20  bOnOff">true to 
5560: 65 6e 61 62 6c 65 20 65 78 74 65 6e 64 65 64 20  enable extended 
5570: 72 65 73 75 6c 74 20 63 6f 64 65 73 2c 20 66 61  result codes, fa
5580: 6c 73 65 20 74 6f 20 64 69 73 61 62 6c 65 2e 3c  lse to disable.<
5590: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
55a0: 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75   <returns></retu
55b0: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
55c0: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
55d0: 20 53 65 74 45 78 74 65 6e 64 65 64 52 65 73 75   SetExtendedResu
55e0: 6c 74 43 6f 64 65 73 28 62 6f 6f 6c 20 62 4f 6e  ltCodes(bool bOn
55f0: 4f 66 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Off);..    /// <
5600: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5610: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 75  / Returns the nu
5620: 6d 65 72 69 63 20 72 65 73 75 6c 74 20 63 6f 64  meric result cod
5630: 65 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20 72  e for the most r
5640: 65 63 65 6e 74 20 66 61 69 6c 65 64 20 53 51 4c  ecent failed SQL
5650: 69 74 65 20 41 50 49 20 63 61 6c 6c 0d 0a 20 20  ite API call..  
5660: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
5670: 20 77 69 74 68 20 74 68 65 20 64 61 74 61 62 61   with the databa
5680: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  se connection...
5690: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
56a0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  y>..    /// <ret
56b0: 75 72 6e 73 3e 52 65 73 75 6c 74 20 63 6f 64 65  urns>Result code
56c0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
56d0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
56e0: 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
56f0: 65 20 52 65 73 75 6c 74 43 6f 64 65 28 29 3b 0d  e ResultCode();.
5700: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
5710: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
5720: 72 6e 73 20 74 68 65 20 65 78 74 65 6e 64 65 64  rns the extended
5730: 20 6e 75 6d 65 72 69 63 20 72 65 73 75 6c 74 20   numeric result 
5740: 63 6f 64 65 20 66 6f 72 20 74 68 65 20 6d 6f 73  code for the mos
5750: 74 20 72 65 63 65 6e 74 20 66 61 69 6c 65 64 20  t recent failed 
5760: 53 51 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 0d  SQLite API call.
5770: 0a 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61  .    /// associa
5780: 74 65 64 20 77 69 74 68 20 74 68 65 20 64 61 74  ted with the dat
5790: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
57a0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
57b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
57c0: 72 65 74 75 72 6e 73 3e 45 78 74 65 6e 64 65 64  returns>Extended
57d0: 20 72 65 73 75 6c 74 20 63 6f 64 65 3c 2f 72 65   result code</re
57e0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
57f0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
5800: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 45 78  LiteErrorCode Ex
5810: 74 65 6e 64 65 64 52 65 73 75 6c 74 43 6f 64 65  tendedResultCode
5820: 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ();....    /// <
5830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5840: 2f 20 41 64 64 20 61 20 6c 6f 67 20 6d 65 73 73  / Add a log mess
5850: 61 67 65 20 76 69 61 20 74 68 65 20 53 51 4c 69  age via the SQLi
5860: 74 65 20 73 71 6c 69 74 65 33 5f 6c 6f 67 20 69  te sqlite3_log i
5870: 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 2f  nterface...    /
5880: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5890: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
58a0: 6d 65 3d 22 69 45 72 72 43 6f 64 65 22 3e 45 72  me="iErrCode">Er
58b0: 72 6f 72 20 63 6f 64 65 20 74 6f 20 62 65 20 6c  ror code to be l
58c0: 6f 67 67 65 64 20 77 69 74 68 20 74 68 65 20 6d  ogged with the m
58d0: 65 73 73 61 67 65 2e 3c 2f 70 61 72 61 6d 3e 0d  essage.</param>.
58e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
58f0: 6e 61 6d 65 3d 22 7a 4d 65 73 73 61 67 65 22 3e  name="zMessage">
5900: 53 74 72 69 6e 67 20 74 6f 20 62 65 20 6c 6f 67  String to be log
5910: 67 65 64 2e 20 20 55 6e 6c 69 6b 65 20 74 68 65  ged.  Unlike the
5920: 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65 33 5f   SQLite sqlite3_
5930: 6c 6f 67 28 29 0d 0a 20 20 20 20 2f 2f 2f 20 69  log()..    /// i
5940: 6e 74 65 72 66 61 63 65 2c 20 74 68 69 73 20 73  nterface, this s
5950: 68 6f 75 6c 64 20 62 65 20 70 72 65 2d 66 6f 72  hould be pre-for
5960: 6d 61 74 74 65 64 2e 20 20 43 6f 6e 73 69 64 65  matted.  Conside
5970: 72 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  r using the..   
5980: 20 2f 2f 2f 20 53 74 72 69 6e 67 2e 46 6f 72 6d   /// String.Form
5990: 61 74 28 29 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f  at() function.</
59a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
59b0: 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72  <returns></retur
59c0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
59d0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
59e0: 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74  LogMessage(SQLit
59f0: 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43  eErrorCode iErrC
5a00: 6f 64 65 2c 20 73 74 72 69 6e 67 20 7a 4d 65 73  ode, string zMes
5a10: 73 61 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e  sage);....#if IN
5a20: 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49  TEROP_CODEC || I
5a30: 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53  NTEROP_INCLUDE_S
5a40: 45 45 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  EE..    internal
5a50: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53   abstract void S
5a60: 65 74 50 61 73 73 77 6f 72 64 28 62 79 74 65 5b  etPassword(byte[
5a70: 5d 20 70 61 73 73 77 6f 72 64 42 79 74 65 73 29  ] passwordBytes)
5a80: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
5a90: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 43 68  abstract void Ch
5aa0: 61 6e 67 65 50 61 73 73 77 6f 72 64 28 62 79 74  angePassword(byt
5ab0: 65 5b 5d 20 6e 65 77 50 61 73 73 77 6f 72 64 42  e[] newPasswordB
5ac0: 79 74 65 73 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ytes);..#endif..
5ad0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
5ae0: 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74  bstract void Set
5af0: 50 72 6f 67 72 65 73 73 48 6f 6f 6b 28 69 6e 74  ProgressHook(int
5b00: 20 6e 4f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f   nOps, SQLitePro
5b10: 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75  gressCallback fu
5b20: 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nc);..    intern
5b30: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
5b40: 20 53 65 74 41 75 74 68 6f 72 69 7a 65 72 48 6f   SetAuthorizerHo
5b50: 6f 6b 28 53 51 4c 69 74 65 41 75 74 68 6f 72 69  ok(SQLiteAuthori
5b60: 7a 65 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  zerCallback func
5b70: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
5b80: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53   abstract void S
5b90: 65 74 55 70 64 61 74 65 48 6f 6f 6b 28 53 51 4c  etUpdateHook(SQL
5ba0: 69 74 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63  iteUpdateCallbac
5bb0: 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e  k func);..    in
5bc0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5bd0: 76 6f 69 64 20 53 65 74 43 6f 6d 6d 69 74 48 6f  void SetCommitHo
5be0: 6f 6b 28 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43  ok(SQLiteCommitC
5bf0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a  allback func);..
5c00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5c10: 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 72  tract void SetTr
5c20: 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 51 4c 69  aceCallback(SQLi
5c30: 74 65 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  teTraceCallback 
5c40: 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65  func);..    inte
5c50: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
5c60: 69 64 20 53 65 74 52 6f 6c 6c 62 61 63 6b 48 6f  id SetRollbackHo
5c70: 6f 6b 28 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63  ok(SQLiteRollbac
5c80: 6b 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b  kCallback func);
5c90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
5ca0: 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72  bstract SQLiteEr
5cb0: 72 6f 72 43 6f 64 65 20 53 65 74 4c 6f 67 43 61  rorCode SetLogCa
5cc0: 6c 6c 62 61 63 6b 28 53 51 4c 69 74 65 4c 6f 67  llback(SQLiteLog
5cd0: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d  Callback func);.
5ce0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
5cf0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 68  ary>..    /// Ch
5d00: 65 63 6b 73 20 69 66 20 74 68 65 20 53 51 4c 69  ecks if the SQLi
5d10: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
5d20: 68 61 73 20 62 65 65 6e 20 69 6e 69 74 69 61 6c  has been initial
5d30: 69 7a 65 64 20 69 6e 20 74 68 65 20 63 75 72 72  ized in the curr
5d40: 65 6e 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20  ent process...  
5d50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5d60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
5d70: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e  ns>..    /// Non
5d80: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 53 51 4c  -zero if the SQL
5d90: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
5da0: 20 68 61 73 20 62 65 65 6e 20 69 6e 69 74 69 61   has been initia
5db0: 6c 69 7a 65 64 20 69 6e 20 74 68 65 20 63 75 72  lized in the cur
5dc0: 72 65 6e 74 20 70 72 6f 63 65 73 73 2c 0d 0a 20  rent process,.. 
5dd0: 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65     /// zero othe
5de0: 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
5df0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
5e00: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
5e10: 74 20 62 6f 6f 6c 20 49 73 49 6e 69 74 69 61 6c  t bool IsInitial
5e20: 69 7a 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 69  ized();....    i
5e30: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5e40: 20 69 6e 74 20 47 65 74 43 75 72 73 6f 72 46 6f   int GetCursorFo
5e50: 72 54 61 62 6c 65 28 53 51 4c 69 74 65 53 74 61  rTable(SQLiteSta
5e60: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
5e70: 20 64 61 74 61 62 61 73 65 2c 20 69 6e 74 20 72   database, int r
5e80: 6f 6f 74 50 61 67 65 29 3b 0d 0a 20 20 20 20 69  ootPage);..    i
5e90: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5ea0: 20 6c 6f 6e 67 20 47 65 74 52 6f 77 49 64 46 6f   long GetRowIdFo
5eb0: 72 43 75 72 73 6f 72 28 53 51 4c 69 74 65 53 74  rCursor(SQLiteSt
5ec0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
5ed0: 74 20 63 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20  t cursor);....  
5ee0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
5ef0: 61 63 74 20 6f 62 6a 65 63 74 20 47 65 74 56 61  act object GetVa
5f00: 6c 75 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  lue(SQLiteStatem
5f10: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
5f20: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
5f30: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
5f40: 2c 20 53 51 4c 69 74 65 54 79 70 65 20 74 79 70  , SQLiteType typ
5f50: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
5f60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5f70: 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   Returns non-zer
5f80: 6f 20 69 66 20 74 68 65 20 67 69 76 65 6e 20 64  o if the given d
5f90: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
5fa0: 6f 6e 20 69 73 20 69 6e 20 61 75 74 6f 63 6f 6d  on is in autocom
5fb0: 6d 69 74 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 2f  mit mode...    /
5fc0: 2f 2f 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f  // Autocommit mo
5fd0: 64 65 20 69 73 20 6f 6e 20 62 79 20 64 65 66 61  de is on by defa
5fe0: 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74  ult.  Autocommit
5ff0: 20 6d 6f 64 65 20 69 73 20 64 69 73 61 62 6c 65   mode is disable
6000: 64 20 62 79 20 61 20 42 45 47 49 4e 0d 0a 20 20  d by a BEGIN..  
6010: 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e    /// statement.
6020: 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64    Autocommit mod
6030: 65 20 69 73 20 72 65 2d 65 6e 61 62 6c 65 64 20  e is re-enabled 
6040: 62 79 20 61 20 43 4f 4d 4d 49 54 20 6f 72 20 52  by a COMMIT or R
6050: 4f 4c 4c 42 41 43 4b 2e 0d 0a 20 20 20 20 2f 2f  OLLBACK...    //
6060: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6070: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
6080: 61 63 74 20 62 6f 6f 6c 20 41 75 74 6f 43 6f 6d  act bool AutoCom
6090: 6d 69 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  mit..    {..    
60a0: 20 20 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d    get;..    }...
60b0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
60c0: 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
60d0: 6f 72 43 6f 64 65 20 46 69 6c 65 43 6f 6e 74 72  orCode FileContr
60e0: 6f 6c 28 73 74 72 69 6e 67 20 7a 44 62 4e 61 6d  ol(string zDbNam
60f0: 65 2c 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74  e, int op, IntPt
6100: 72 20 70 41 72 67 29 3b 0d 0a 0d 0a 20 20 20 20  r pArg);....    
6110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6120: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
6130: 20 6e 65 77 20 53 51 4c 69 74 65 20 62 61 63 6b   new SQLite back
6140: 75 70 20 6f 62 6a 65 63 74 20 62 61 73 65 64 20  up object based 
6150: 6f 6e 20 74 68 65 20 70 72 6f 76 69 64 65 64 20  on the provided 
6160: 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a 20 20 20  destination..   
6170: 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 63 6f   /// database co
6180: 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 73  nnection.  The s
6190: 6f 75 72 63 65 20 64 61 74 61 62 61 73 65 20 63  ource database c
61a0: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 74 68 65  onnection is the
61b0: 20 6f 6e 65 0d 0a 20 20 20 20 2f 2f 2f 20 61 73   one..    /// as
61c0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
61d0: 69 73 20 6f 62 6a 65 63 74 2e 20 20 54 68 65 20  is object.  The 
61e0: 73 6f 75 72 63 65 20 61 6e 64 20 64 65 73 74 69  source and desti
61f0: 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73 65 0d  nation database.
6200: 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74  .    /// connect
6210: 69 6f 6e 73 20 63 61 6e 6e 6f 74 20 62 65 20 74  ions cannot be t
6220: 68 65 20 73 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f  he same...    //
6230: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6240: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6250: 65 3d 22 64 65 73 74 43 6e 6e 22 3e 54 68 65 20  e="destCnn">The 
6260: 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74 61  destination data
6270: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
6280: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6290: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
62a0: 65 73 74 4e 61 6d 65 22 3e 54 68 65 20 64 65 73  estName">The des
62b0: 74 69 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73  tination databas
62c0: 65 20 6e 61 6d 65 2e 3c 2f 70 61 72 61 6d 3e 0d  e name.</param>.
62d0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
62e0: 6e 61 6d 65 3d 22 73 6f 75 72 63 65 4e 61 6d 65  name="sourceName
62f0: 22 3e 54 68 65 20 73 6f 75 72 63 65 20 64 61 74  ">The source dat
6300: 61 62 61 73 65 20 6e 61 6d 65 2e 3c 2f 70 61 72  abase name.</par
6310: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
6320: 74 75 72 6e 73 3e 54 68 65 20 6e 65 77 6c 79 20  turns>The newly 
6330: 63 72 65 61 74 65 64 20 62 61 63 6b 75 70 20 6f  created backup o
6340: 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e 73 3e  bject.</returns>
6350: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
6360: 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 42 61  bstract SQLiteBa
6370: 63 6b 75 70 20 49 6e 69 74 69 61 6c 69 7a 65 42  ckup InitializeB
6380: 61 63 6b 75 70 28 0d 0a 20 20 20 20 20 20 20 20  ackup(..        
6390: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
63a0: 20 64 65 73 74 43 6e 6e 2c 20 73 74 72 69 6e 67   destCnn, string
63b0: 20 64 65 73 74 4e 61 6d 65 2c 0d 0a 20 20 20 20   destName,..    
63c0: 20 20 20 20 73 74 72 69 6e 67 20 73 6f 75 72 63      string sourc
63d0: 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  eName);....    /
63e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
63f0: 20 20 2f 2f 2f 20 43 6f 70 69 65 73 20 75 70 20    /// Copies up 
6400: 74 6f 20 4e 20 70 61 67 65 73 20 66 72 6f 6d 20  to N pages from 
6410: 74 68 65 20 73 6f 75 72 63 65 20 64 61 74 61 62  the source datab
6420: 61 73 65 20 74 6f 20 74 68 65 20 64 65 73 74 69  ase to the desti
6430: 6e 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20  nation..    /// 
6440: 64 61 74 61 62 61 73 65 20 61 73 73 6f 63 69 61  database associa
6450: 74 65 64 20 77 69 74 68 20 74 68 65 20 73 70 65  ted with the spe
6460: 63 69 66 69 65 64 20 62 61 63 6b 75 70 20 6f 62  cified backup ob
6470: 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ject...    /// <
6480: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6490: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
64a0: 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61 63 6b  backup">The back
64b0: 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 75 73 65  up object to use
64c0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
64d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
64e0: 6e 50 61 67 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  nPage">..    ///
64f0: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70   The number of p
6500: 61 67 65 73 20 74 6f 20 63 6f 70 79 20 6f 72 20  ages to copy or 
6510: 6e 65 67 61 74 69 76 65 20 74 6f 20 63 6f 70 79  negative to copy
6520: 20 61 6c 6c 20 72 65 6d 61 69 6e 69 6e 67 20 70   all remaining p
6530: 61 67 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ages...    /// <
6540: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6550: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 65   <param name="re
6560: 74 72 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  try">..    /// S
6570: 65 74 20 74 6f 20 74 72 75 65 20 69 66 20 74 68  et to true if th
6580: 65 20 6f 70 65 72 61 74 69 6f 6e 20 6e 65 65 64  e operation need
6590: 73 20 74 6f 20 62 65 20 72 65 74 72 69 65 64 20  s to be retried 
65a0: 64 75 65 20 74 6f 20 64 61 74 61 62 61 73 65 0d  due to database.
65b0: 0a 20 20 20 20 2f 2f 2f 20 6c 6f 63 6b 69 6e 67  .    /// locking
65c0: 20 69 73 73 75 65 73 2e 0d 0a 20 20 20 20 2f 2f   issues...    //
65d0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
65e0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
65f0: 20 20 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74     /// True if t
6600: 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20 70 61  here are more pa
6610: 67 65 73 20 74 6f 20 62 65 20 63 6f 70 69 65 64  ges to be copied
6620: 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73  , false otherwis
6630: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
6640: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
6650: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f  rnal abstract bo
6660: 6f 6c 20 53 74 65 70 42 61 63 6b 75 70 28 53 51  ol StepBackup(SQ
6670: 4c 69 74 65 42 61 63 6b 75 70 20 62 61 63 6b 75  LiteBackup backu
6680: 70 2c 20 69 6e 74 20 6e 50 61 67 65 2c 20 72 65  p, int nPage, re
6690: 66 20 62 6f 6f 6c 20 72 65 74 72 79 29 3b 0d 0a  f bool retry);..
66a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
66b0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
66c0: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
66d0: 6f 66 20 70 61 67 65 73 20 72 65 6d 61 69 6e 69  of pages remaini
66e0: 6e 67 20 74 6f 20 62 65 20 63 6f 70 69 65 64 20  ng to be copied 
66f0: 66 72 6f 6d 20 74 68 65 20 73 6f 75 72 63 65 0d  from the source.
6700: 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
6710: 65 20 74 6f 20 74 68 65 20 64 65 73 74 69 6e 61  e to the destina
6720: 74 69 6f 6e 20 64 61 74 61 62 61 73 65 20 61 73  tion database as
6730: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
6740: 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  e specified..   
6750: 20 2f 2f 2f 20 62 61 63 6b 75 70 20 6f 62 6a 65   /// backup obje
6760: 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ct...    /// </s
6770: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6780: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
6790: 63 6b 75 70 22 3e 54 68 65 20 62 61 63 6b 75 70  ckup">The backup
67a0: 20 6f 62 6a 65 63 74 20 74 6f 20 63 68 65 63 6b   object to check
67b0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
67c0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
67d0: 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20  number of pages 
67e0: 72 65 6d 61 69 6e 69 6e 67 20 74 6f 20 62 65 20  remaining to be 
67f0: 63 6f 70 69 65 64 2e 3c 2f 72 65 74 75 72 6e 73  copied.</returns
6800: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6810: 61 62 73 74 72 61 63 74 20 69 6e 74 20 52 65 6d  abstract int Rem
6820: 61 69 6e 69 6e 67 42 61 63 6b 75 70 28 53 51 4c  ainingBackup(SQL
6830: 69 74 65 42 61 63 6b 75 70 20 62 61 63 6b 75 70  iteBackup backup
6840: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
6850: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6860: 20 52 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74   Returns the tot
6870: 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67  al number of pag
6880: 65 73 20 69 6e 20 74 68 65 20 73 6f 75 72 63 65  es in the source
6890: 20 64 61 74 61 62 61 73 65 20 61 73 73 6f 63 69   database associ
68a0: 61 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 77 69  ated..    /// wi
68b0: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
68c0: 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 0d   backup object..
68d0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
68e0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
68f0: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70  ram name="backup
6900: 22 3e 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a  ">The backup obj
6910: 65 63 74 20 74 6f 20 63 68 65 63 6b 2e 3c 2f 70  ect to check.</p
6920: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
6930: 72 65 74 75 72 6e 73 3e 54 68 65 20 74 6f 74 61  returns>The tota
6940: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65  l number of page
6950: 73 20 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20  s in the source 
6960: 64 61 74 61 62 61 73 65 2e 3c 2f 72 65 74 75 72  database.</retur
6970: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
6980: 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 50  l abstract int P
6990: 61 67 65 43 6f 75 6e 74 42 61 63 6b 75 70 28 53  ageCountBackup(S
69a0: 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61 63 6b  QLiteBackup back
69b0: 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  up);....    /// 
69c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
69d0: 2f 2f 20 44 65 73 74 72 6f 79 73 20 74 68 65 20  // Destroys the 
69e0: 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 2c 20 72  backup object, r
69f0: 6f 6c 6c 69 6e 67 20 62 61 63 6b 20 61 6e 79 20  olling back any 
6a00: 62 61 63 6b 75 70 20 74 68 61 74 20 6d 61 79 20  backup that may 
6a10: 62 65 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 70  be in..    /// p
6a20: 72 6f 67 65 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f  rogess...    ///
6a30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6a40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6a50: 3d 22 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61  ="backup">The ba
6a60: 63 6b 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 64  ckup object to d
6a70: 65 73 74 72 6f 79 2e 3c 2f 70 61 72 61 6d 3e 0d  estroy.</param>.
6a80: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
6a90: 73 74 72 61 63 74 20 76 6f 69 64 20 46 69 6e 69  stract void Fini
6aa0: 73 68 42 61 63 6b 75 70 28 53 51 4c 69 74 65 42  shBackup(SQLiteB
6ab0: 61 63 6b 75 70 20 62 61 63 6b 75 70 29 3b 0d 0a  ackup backup);..
6ac0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
6ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b20: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
6b30: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
6b40: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70 75   Members..    pu
6b50: 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73  blic void Dispos
6b60: 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
6b70: 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65      Dispose(true
6b80: 29 3b 0d 0a 20 20 20 20 20 20 20 20 47 43 2e 53  );..        GC.S
6b90: 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28  uppressFinalize(
6ba0: 74 68 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20  this);..    }.. 
6bb0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
6bc0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
6bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 2f  ////////////////
6c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c20: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
6c30: 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
6c40: 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
6c50: 73 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62  s..    private b
6c60: 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20  ool disposed;.. 
6c70: 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
6c80: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20  CheckDisposed() 
6c90: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
6ca0: 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e   {..#if THROW_ON
6cb0: 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20  _DISPOSED..     
6cc0: 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
6cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
6ce0: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
6cf0: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
6d00: 74 79 70 65 6f 66 28 53 51 4c 69 74 65 42 61 73  typeof(SQLiteBas
6d10: 65 29 2e 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69  e).Name);..#endi
6d20: 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  f..    }....    
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6d90: 0a 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  ...    protected
6da0: 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69   virtual void Di
6db0: 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
6dc0: 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  sing)..    {..  
6dd0: 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
6de0: 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  sed)..        {.
6df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69  .            //i
6e00: 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  f (disposing).. 
6e10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a             //{..
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6e30: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
6e60: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73      //    // dis
6e70: 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
6e80: 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
6e90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6ea0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
6ed0: 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20      //}....     
6ee0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
6ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
6f10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
6f20: 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
6f30: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
6f40: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6f80: 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
6f90: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  true;..        }
6fa0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
6fb0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
6fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7020: 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65  ..    #region De
7030: 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 7e 53  structor..    ~S
7040: 51 4c 69 74 65 42 61 73 65 28 29 0d 0a 20 20 20  QLiteBase()..   
7050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 69 73 70   {..        Disp
7060: 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
7070: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
7080: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
7090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
70f0: 20 2f 2f 20 54 68 65 73 65 20 73 74 61 74 69 63   // These static
7100: 73 20 61 72 65 20 68 65 72 65 20 66 6f 72 20 6c  s are here for l
7110: 61 63 6b 20 6f 66 20 61 20 62 65 74 74 65 72 20  ack of a better 
7120: 70 6c 61 63 65 20 74 6f 20 70 75 74 20 74 68 65  place to put the
7130: 6d 2e 0d 0a 20 20 20 20 2f 2f 20 54 68 65 79 20  m...    // They 
7140: 65 78 69 73 74 20 68 65 72 65 20 62 65 63 61 75  exist here becau
7150: 73 65 20 74 68 65 79 20 61 72 65 20 63 61 6c 6c  se they are call
7160: 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 66 69  ed during the fi
7170: 6e 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 0d 0a 20  nalization of.. 
7180: 20 20 20 2f 2f 20 61 20 53 51 4c 69 74 65 53 74     // a SQLiteSt
7190: 61 74 65 6d 65 6e 74 48 61 6e 64 6c 65 2c 20 53  atementHandle, S
71a0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
71b0: 61 6e 64 6c 65 2c 20 61 6e 64 20 53 51 4c 69 74  andle, and SQLit
71c0: 65 46 75 6e 63 74 69 6f 6e 43 6f 6f 6b 69 65 48  eFunctionCookieH
71d0: 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 2f 2f 20 54  andle...    // T
71e0: 68 65 72 65 66 6f 72 65 20 74 68 65 73 65 20 66  herefore these f
71f0: 75 6e 63 74 69 6f 6e 73 20 68 61 76 65 20 74 6f  unctions have to
7200: 20 62 65 20 73 74 61 74 69 63 2c 20 61 6e 64 20   be static, and 
7210: 68 61 76 65 20 74 6f 20 62 65 20 6c 6f 77 2d 6c  have to be low-l
7220: 65 76 65 6c 2e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  evel.....    ///
7230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7290: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
72a0: 69 63 20 73 74 72 69 6e 67 5b 5d 20 5f 65 72 72  ic string[] _err
72b0: 6f 72 4d 65 73 73 61 67 65 73 20 3d 20 7b 0d 0a  orMessages = {..
72c0: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
72d0: 45 5f 4f 4b 20 20 20 20 20 20 20 20 20 20 2a 2f  E_OK          */
72e0: 20 22 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 2c   "not an error",
72f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7300: 49 54 45 5f 45 52 52 4f 52 20 20 20 20 20 20 20  ITE_ERROR       
7310: 2a 2f 20 22 53 51 4c 20 6c 6f 67 69 63 20 65 72  */ "SQL logic er
7320: 72 6f 72 20 6f 72 20 6d 69 73 73 69 6e 67 20 64  ror or missing d
7330: 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20 20 20  atabase",..     
7340: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49 4e 54     /* SQLITE_INT
7350: 45 52 4e 41 4c 20 20 20 20 2a 2f 20 22 69 6e 74  ERNAL    */ "int
7360: 65 72 6e 61 6c 20 6c 6f 67 69 63 20 65 72 72 6f  ernal logic erro
7370: 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  r",..        /* 
7380: 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20  SQLITE_PERM     
7390: 20 20 20 2a 2f 20 22 61 63 63 65 73 73 20 70 65     */ "access pe
73a0: 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 22  rmission denied"
73b0: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
73c0: 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20  LITE_ABORT      
73d0: 20 2a 2f 20 22 63 61 6c 6c 62 61 63 6b 20 72 65   */ "callback re
73e0: 71 75 65 73 74 65 64 20 71 75 65 72 79 20 61 62  quested query ab
73f0: 6f 72 74 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  ort",..        /
7400: 2a 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20  * SQLITE_BUSY   
7410: 20 20 20 20 20 2a 2f 20 22 64 61 74 61 62 61 73       */ "databas
7420: 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a 20  e is locked",.. 
7430: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7440: 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20 2a 2f 20  _LOCKED      */ 
7450: 22 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20  "database table 
7460: 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a 20 20 20  is locked",..   
7470: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4e       /* SQLITE_N
7480: 4f 4d 45 4d 20 20 20 20 20 20 20 2a 2f 20 22 6f  OMEM       */ "o
7490: 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22 2c 0d 0a  ut of memory",..
74a0: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
74b0: 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 2a 2f  E_READONLY    */
74c0: 20 22 61 74 74 65 6d 70 74 20 74 6f 20 77 72 69   "attempt to wri
74d0: 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 64 61  te a readonly da
74e0: 74 61 62 61 73 65 22 2c 0d 0a 20 20 20 20 20 20  tabase",..      
74f0: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49 4e 54 45    /* SQLITE_INTE
7500: 52 52 55 50 54 20 20 20 2a 2f 20 22 69 6e 74 65  RRUPT   */ "inte
7510: 72 72 75 70 74 65 64 22 2c 0d 0a 20 20 20 20 20  rrupted",..     
7520: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49 4f 45     /* SQLITE_IOE
7530: 52 52 20 20 20 20 20 20 20 2a 2f 20 22 64 69 73  RR       */ "dis
7540: 6b 20 49 2f 4f 20 65 72 72 6f 72 22 2c 0d 0a 20  k I/O error",.. 
7550: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7560: 5f 43 4f 52 52 55 50 54 20 20 20 20 20 2a 2f 20  _CORRUPT     */ 
7570: 22 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 69  "database disk i
7580: 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65  mage is malforme
7590: 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  d",..        /* 
75a0: 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20  SQLITE_NOTFOUND 
75b0: 20 20 20 2a 2f 20 22 75 6e 6b 6e 6f 77 6e 20 6f     */ "unknown o
75c0: 70 65 72 61 74 69 6f 6e 22 2c 0d 0a 20 20 20 20  peration",..    
75d0: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 46 55      /* SQLITE_FU
75e0: 4c 4c 20 20 20 20 20 20 20 20 2a 2f 20 22 64 61  LL        */ "da
75f0: 74 61 62 61 73 65 20 6f 72 20 64 69 73 6b 20 69  tabase or disk i
7600: 73 20 66 75 6c 6c 22 2c 0d 0a 20 20 20 20 20 20  s full",..      
7610: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43 41 4e 54    /* SQLITE_CANT
7620: 4f 50 45 4e 20 20 20 20 2a 2f 20 22 75 6e 61 62  OPEN    */ "unab
7630: 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62  le to open datab
7640: 61 73 65 20 66 69 6c 65 22 2c 0d 0a 20 20 20 20  ase file",..    
7650: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 50 52      /* SQLITE_PR
7660: 4f 54 4f 43 4f 4c 20 20 20 20 2a 2f 20 22 6c 6f  OTOCOL    */ "lo
7670: 63 6b 69 6e 67 20 70 72 6f 74 6f 63 6f 6c 22 2c  cking protocol",
7680: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7690: 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20 20 20  ITE_EMPTY       
76a0: 2a 2f 20 22 74 61 62 6c 65 20 63 6f 6e 74 61 69  */ "table contai
76b0: 6e 73 20 6e 6f 20 64 61 74 61 22 2c 0d 0a 20 20  ns no data",..  
76c0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
76d0: 53 43 48 45 4d 41 20 20 20 20 20 20 2a 2f 20 22  SCHEMA      */ "
76e0: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
76f0: 68 61 73 20 63 68 61 6e 67 65 64 22 2c 0d 0a 20  has changed",.. 
7700: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7710: 5f 54 4f 4f 42 49 47 20 20 20 20 20 20 2a 2f 20  _TOOBIG      */ 
7720: 22 73 74 72 69 6e 67 20 6f 72 20 62 6c 6f 62 20  "string or blob 
7730: 74 6f 6f 20 62 69 67 22 2c 0d 0a 20 20 20 20 20  too big",..     
7740: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43 4f 4e     /* SQLITE_CON
7750: 53 54 52 41 49 4e 54 20 20 2a 2f 20 22 63 6f 6e  STRAINT  */ "con
7760: 73 74 72 61 69 6e 74 20 66 61 69 6c 65 64 22 2c  straint failed",
7770: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7780: 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20 20 20  ITE_MISMATCH    
7790: 2a 2f 20 22 64 61 74 61 74 79 70 65 20 6d 69 73  */ "datatype mis
77a0: 6d 61 74 63 68 22 2c 0d 0a 20 20 20 20 20 20 20  match",..       
77b0: 20 2f 2a 20 53 51 4c 49 54 45 5f 4d 49 53 55 53   /* SQLITE_MISUS
77c0: 45 20 20 20 20 20 20 2a 2f 20 22 6c 69 62 72 61  E      */ "libra
77d0: 72 79 20 72 6f 75 74 69 6e 65 20 63 61 6c 6c 65  ry routine calle
77e0: 64 20 6f 75 74 20 6f 66 20 73 65 71 75 65 6e 63  d out of sequenc
77f0: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  e",..        /* 
7800: 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20  SQLITE_NOLFS    
7810: 20 20 20 2a 2f 20 22 6c 61 72 67 65 20 66 69 6c     */ "large fil
7820: 65 20 73 75 70 70 6f 72 74 20 69 73 20 64 69 73  e support is dis
7830: 61 62 6c 65 64 22 2c 0d 0a 20 20 20 20 20 20 20  abled",..       
7840: 20 2f 2a 20 53 51 4c 49 54 45 5f 41 55 54 48 20   /* SQLITE_AUTH 
7850: 20 20 20 20 20 20 20 2a 2f 20 22 61 75 74 68 6f         */ "autho
7860: 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 22  rization denied"
7870: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7880: 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20  LITE_FORMAT     
7890: 20 2a 2f 20 22 61 75 78 69 6c 69 61 72 79 20 64   */ "auxiliary d
78a0: 61 74 61 62 61 73 65 20 66 6f 72 6d 61 74 20 65  atabase format e
78b0: 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20  rror",..        
78c0: 2f 2a 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20  /* SQLITE_RANGE 
78d0: 20 20 20 20 20 20 2a 2f 20 22 62 69 6e 64 20 6f        */ "bind o
78e0: 72 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20 6f  r column index o
78f0: 75 74 20 6f 66 20 72 61 6e 67 65 22 2c 0d 0a 20  ut of range",.. 
7900: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7910: 5f 4e 4f 54 41 44 42 20 20 20 20 20 20 2a 2f 20  _NOTADB      */ 
7920: 22 66 69 6c 65 20 69 73 20 65 6e 63 72 79 70 74  "file is encrypt
7930: 65 64 20 6f 72 20 69 73 20 6e 6f 74 20 61 20 64  ed or is not a d
7940: 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20 20 20  atabase",..     
7950: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4e 4f 54     /* SQLITE_NOT
7960: 49 43 45 20 20 20 20 20 20 2a 2f 20 22 6e 6f 74  ICE      */ "not
7970: 69 66 69 63 61 74 69 6f 6e 20 6d 65 73 73 61 67  ification messag
7980: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  e",..        /* 
7990: 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 20  SQLITE_WARNING  
79a0: 20 20 20 2a 2f 20 22 77 61 72 6e 69 6e 67 20 6d     */ "warning m
79b0: 65 73 73 61 67 65 22 0d 0a 20 20 20 20 7d 3b 0d  essage"..    };.
79c0: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
7a30: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7a40: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
7a50: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 66   error message f
7a60: 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
7a70: 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
7a80: 6f 64 65 20 75 73 69 6e 67 0d 0a 20 20 20 20 2f  ode using..    /
7a90: 2f 2f 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  // the internal 
7aa0: 73 74 61 74 69 63 20 6c 6f 6f 6b 75 70 20 74 61  static lookup ta
7ab0: 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ble...    /// </
7ac0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
7ad0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
7ae0: 63 22 3e 54 68 65 20 53 51 4c 69 74 65 20 72 65  c">The SQLite re
7af0: 74 75 72 6e 20 63 6f 64 65 2e 3c 2f 70 61 72 61  turn code.</para
7b00: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
7b10: 75 72 6e 73 3e 54 68 65 20 65 72 72 6f 72 20 6d  urns>The error m
7b20: 65 73 73 61 67 65 20 6f 72 20 6e 75 6c 6c 20 69  essage or null i
7b30: 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 66  f it cannot be f
7b40: 6f 75 6e 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  ound.</returns>.
7b50: 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 73  .    protected s
7b60: 74 61 74 69 63 20 73 74 72 69 6e 67 20 46 61 6c  tatic string Fal
7b70: 6c 62 61 63 6b 47 65 74 45 72 72 6f 72 53 74 72  lbackGetErrorStr
7b80: 69 6e 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43  ing(SQLiteErrorC
7b90: 6f 64 65 20 72 63 29 0d 0a 20 20 20 20 7b 0d 0a  ode rc)..    {..
7ba0: 20 20 20 20 20 20 20 20 69 66 20 28 5f 65 72 72          if (_err
7bb0: 6f 72 4d 65 73 73 61 67 65 73 20 3d 3d 20 6e 75  orMessages == nu
7bc0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
7bd0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
7be0: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64  .        int ind
7bf0: 65 78 20 3d 20 28 69 6e 74 29 72 63 3b 0d 0a 0d  ex = (int)rc;...
7c00: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 69 6e  .        if ((in
7c10: 64 65 78 20 3c 20 30 29 20 7c 7c 20 28 69 6e 64  dex < 0) || (ind
7c20: 65 78 20 3e 3d 20 5f 65 72 72 6f 72 4d 65 73 73  ex >= _errorMess
7c30: 61 67 65 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20  ages.Length)).. 
7c40: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
7c50: 20 3d 20 28 69 6e 74 29 53 51 4c 69 74 65 45 72   = (int)SQLiteEr
7c60: 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 20 2f  rorCode.Error; /
7c70: 2a 20 4d 61 6b 65 20 69 6e 74 6f 20 67 65 6e 65  * Make into gene
7c80: 72 69 63 20 65 72 72 6f 72 2e 20 2a 2f 0d 0a 0d  ric error. */...
7c90: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
7ca0: 5f 65 72 72 6f 72 4d 65 73 73 61 67 65 73 5b 69  _errorMessages[i
7cb0: 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ndex];..    }...
7cc0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
7cd0: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 4c  atic string GetL
7ce0: 61 73 74 45 72 72 6f 72 28 53 51 4c 69 74 65 43  astError(SQLiteC
7cf0: 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
7d00: 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 0d  hdl, IntPtr db).
7d10: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
7d20: 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c  if ((hdl == null
7d30: 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e 74 50  ) || (db == IntP
7d40: 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20  tr.Zero))..     
7d50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6e         return "n
7d60: 75 6c 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  ull connection o
7d70: 72 20 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c  r database handl
7d80: 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73  e";....        s
7d90: 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d 20 6e  tring result = n
7da0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
7db0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
7dd0: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
7de0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66      }..        f
7df0: 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20  inally /* NOTE: 
7e00: 54 68 72 65 61 64 2e 41 62 6f 72 74 28 29 20 70  Thread.Abort() p
7e10: 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20  rotection. */.. 
7e20: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c         {..#if PL
7e30: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
7e40: 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  AMEWORK..       
7e50: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73       lock (hdl.s
7e60: 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d  yncRoot)..#else.
7e70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
7e80: 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d  k (hdl)..#endif.
7e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
7ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7eb0: 69 66 20 28 21 68 64 6c 2e 49 73 49 6e 76 61 6c  if (!hdl.IsInval
7ec0: 69 64 20 26 26 20 21 68 64 6c 2e 49 73 43 6c 6f  id && !hdl.IsClo
7ed0: 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
7ee0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51        {..#if !SQ
7ef0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
7f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f10: 20 20 20 69 6e 74 20 6c 65 6e 20 3d 20 30 3b 0d     int len = 0;.
7f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7f30: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 55 54       result = UT
7f40: 46 38 54 6f 53 74 72 69 6e 67 28 55 6e 73 61 66  F8ToString(Unsaf
7f50: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
7f60: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e  qlite3_errmsg_in
7f70: 74 65 72 6f 70 28 64 62 2c 20 72 65 66 20 6c 65  terop(db, ref le
7f80: 6e 29 2c 20 6c 65 6e 29 3b 0d 0a 23 65 6c 73 65  n), len);..#else
7f90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7fa0: 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 55        result = U
7fb0: 54 46 38 54 6f 53 74 72 69 6e 67 28 55 6e 73 61  TF8ToString(Unsa
7fc0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
7fd0: 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 64  sqlite3_errmsg(d
7fe0: 62 29 2c 20 2d 31 29 3b 0d 0a 23 65 6e 64 69 66  b), -1);..#endif
7ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8000: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
8010: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
8020: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
8030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8040: 20 20 72 65 73 75 6c 74 20 3d 20 22 63 6c 6f 73    result = "clos
8050: 65 64 20 6f 72 20 69 6e 76 61 6c 69 64 20 63 6f  ed or invalid co
8060: 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 22  nnection handle"
8070: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8080: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
8090: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
80a0: 20 20 20 20 20 20 20 20 47 43 2e 4b 65 65 70 41          GC.KeepA
80b0: 6c 69 76 65 28 68 64 6c 29 3b 0d 0a 20 20 20 20  live(hdl);..    
80c0: 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
80d0: 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t;..    }....   
80e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
80f0: 20 76 6f 69 64 20 46 69 6e 69 73 68 42 61 63 6b   void FinishBack
8100: 75 70 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  up(SQLiteConnect
8110: 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49  ionHandle hdl, I
8120: 6e 74 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20  ntPtr backup).. 
8130: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
8140: 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20   ((hdl == null) 
8150: 7c 7c 20 28 62 61 63 6b 75 70 20 3d 3d 20 49 6e  || (backup == In
8160: 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75  tPtr.Zero)) retu
8170: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  rn;....        t
8180: 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
8190: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
81a0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
81b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69     }..        fi
81c0: 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54  nally /* NOTE: T
81d0: 68 72 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72  hread.Abort() pr
81e0: 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20  otection. */..  
81f0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
8200: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8210: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
8220: 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79      lock (hdl.sy
8230: 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a  ncRoot)..#else..
8240: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
8250: 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a   (hdl)..#endif..
8260: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
8270: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
8280: 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
8290: 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
82a0: 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e  Code n = UnsafeN
82b0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
82c0: 69 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69  ite3_backup_fini
82d0: 73 68 5f 69 6e 74 65 72 6f 70 28 62 61 63 6b 75  sh_interop(backu
82e0: 70 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  p);..#else..    
82f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
8300: 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20  teErrorCode n = 
8310: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
8320: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 62 61 63 6b  ods.sqlite3_back
8330: 75 70 5f 66 69 6e 69 73 68 28 62 61 63 6b 75 70  up_finish(backup
8340: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
8350: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8360: 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  n != SQLiteError
8370: 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e  Code.Ok) throw n
8380: 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
8390: 6f 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20  on(n, null);..  
83a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
83b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
83c0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
83d0: 61 74 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 42  atic void CloseB
83e0: 6c 6f 62 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  lob(SQLiteConnec
83f0: 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20  tionHandle hdl, 
8400: 49 6e 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20  IntPtr blob)..  
8410: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
8420: 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c  ((hdl == null) |
8430: 7c 20 28 62 6c 6f 62 20 3d 3d 20 49 6e 74 50 74  | (blob == IntPt
8440: 72 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e 3b  r.Zero)) return;
8450: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
8460: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8470: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
8480: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
8490: 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c  }..        final
84a0: 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65  ly /* NOTE: Thre
84b0: 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65  ad.Abort() prote
84c0: 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20  ction. */..     
84d0: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
84e0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
84f0: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
8500: 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52   lock (hdl.syncR
8510: 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  oot)..#else..   
8520: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8530: 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dl)..#endif..   
8540: 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20           {..#if 
8550: 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44  !SQLITE_STANDARD
8560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8570: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
8580: 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  e n = UnsafeNati
8590: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
85a0: 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74  3_blob_close_int
85b0: 65 72 6f 70 28 62 6c 6f 62 29 3b 0d 0a 23 65 6c  erop(blob);..#el
85c0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
85d0: 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
85e0: 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61  ode n = UnsafeNa
85f0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
8600: 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 62  te3_blob_close(b
8610: 6c 6f 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  lob);..#endif.. 
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8630: 66 20 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72  f (n != SQLiteEr
8640: 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f  rorCode.Ok) thro
8650: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
8660: 70 74 69 6f 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d  ption(n, null);.
8670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
8680: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
8690: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
86a0: 20 73 74 61 74 69 63 20 76 6f 69 64 20 46 69 6e   static void Fin
86b0: 61 6c 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 53  alizeStatement(S
86c0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
86d0: 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
86e0: 72 20 73 74 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a  r stmt)..    {..
86f0: 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64 6c          if ((hdl
8700: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 73 74   == null) || (st
8710: 6d 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  mt == IntPtr.Zer
8720: 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20  o)) return;.... 
8730: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
8740: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8750: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
8760: 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ...        }..  
8770: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a        finally /*
8780: 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62   NOTE: Thread.Ab
8790: 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e  ort() protection
87a0: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  . */..        {.
87b0: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
87c0: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
87e0: 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d   (hdl.syncRoot).
87f0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
8800: 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a      lock (hdl)..
8810: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
8820: 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49      {..#if !SQLI
8830: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
8840: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
8850: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d  iteErrorCode n =
8860: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
8870: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 69 6e  hods.sqlite3_fin
8880: 61 6c 69 7a 65 5f 69 6e 74 65 72 6f 70 28 73 74  alize_interop(st
8890: 6d 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  mt);..#else..   
88a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
88b0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d  iteErrorCode n =
88c0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
88d0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 66 69 6e  hods.sqlite3_fin
88e0: 61 6c 69 7a 65 28 73 74 6d 74 29 3b 0d 0a 23 65  alize(stmt);..#e
88f0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8900: 20 20 20 20 20 20 69 66 20 28 6e 20 21 3d 20 53        if (n != S
8910: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f  QLiteErrorCode.O
8920: 6b 29 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c  k) throw new SQL
8930: 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e 2c 20  iteException(n, 
8940: 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
8950: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
8960: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
8970: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
8980: 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74  oid CloseConnect
8990: 69 6f 6e 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ion(SQLiteConnec
89a0: 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20  tionHandle hdl, 
89b0: 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20 20 20  IntPtr db)..    
89c0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  {..        if ((
89d0: 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  hdl == null) || 
89e0: 28 64 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  (db == IntPtr.Ze
89f0: 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a  ro)) return;....
8a00: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8a10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8a20: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
8a30: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
8a40: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f         finally /
8a50: 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41  * NOTE: Thread.A
8a60: 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f  bort() protectio
8a70: 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  n. */..        {
8a80: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
8a90: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
8aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
8ab0: 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29  k (hdl.syncRoot)
8ac0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8ad0: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d       lock (hdl).
8ae0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8af0: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c       {..#if !SQL
8b00: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
8b20: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20  LiteErrorCode n 
8b30: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
8b40: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 6c  thods.sqlite3_cl
8b50: 6f 73 65 5f 69 6e 74 65 72 6f 70 28 64 62 29 3b  ose_interop(db);
8b60: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8b70: 20 20 20 20 20 20 20 20 20 52 65 73 65 74 43 6f           ResetCo
8b80: 6e 6e 65 63 74 69 6f 6e 28 68 64 6c 2c 20 64 62  nnection(hdl, db
8b90: 2c 20 66 61 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20  , false);....   
8ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
8bb0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d  iteErrorCode n =
8bc0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
8bd0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f  hods.sqlite3_clo
8be0: 73 65 28 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d  se(db);..#endif.
8bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8c00: 20 69 66 20 28 6e 20 21 3d 20 53 51 4c 69 74 65   if (n != SQLite
8c10: 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74 68  ErrorCode.Ok) th
8c20: 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78  row new SQLiteEx
8c30: 63 65 70 74 69 6f 6e 28 6e 2c 20 47 65 74 4c 61  ception(n, GetLa
8c40: 73 74 45 72 72 6f 72 28 68 64 6c 2c 20 64 62 29  stError(hdl, db)
8c50: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
8c60: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
8c70: 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45    }....#if !INTE
8c80: 52 4f 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45  ROP_LEGACY_CLOSE
8c90: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
8ca0: 74 61 74 69 63 20 76 6f 69 64 20 43 6c 6f 73 65  tatic void Close
8cb0: 43 6f 6e 6e 65 63 74 69 6f 6e 56 32 28 53 51 4c  ConnectionV2(SQL
8cc0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
8cd0: 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20  dle hdl, IntPtr 
8ce0: 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  db)..    {..    
8cf0: 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20      if ((hdl == 
8d00: 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20  null) || (db == 
8d10: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65  IntPtr.Zero)) re
8d20: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
8d30: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d   try..        {.
8d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
8d50: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
8d60: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
8d70: 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a  finally /* NOTE:
8d80: 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28 29 20   Thread.Abort() 
8d90: 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a  protection. */..
8da0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50          {..#if P
8db0: 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
8dc0: 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
8dd0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e        lock (hdl.
8de0: 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65  syncRoot)..#else
8df0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
8e00: 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66  ck (hdl)..#endif
8e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
8e20: 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41  .#if !SQLITE_STA
8e30: 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20  NDARD..         
8e40: 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
8e50: 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66  orCode n = Unsaf
8e60: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
8e70: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74  qlite3_close_int
8e80: 65 72 6f 70 28 64 62 29 3b 0d 0a 23 65 6c 73 65  erop(db);..#else
8e90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8ea0: 20 20 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f    ResetConnectio
8eb0: 6e 28 68 64 6c 2c 20 64 62 2c 20 66 61 6c 73 65  n(hdl, db, false
8ec0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
8ed0: 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
8ee0: 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65  rCode n = Unsafe
8ef0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
8f00: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 64  lite3_close_v2(d
8f10: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  b);..#endif..   
8f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8f30: 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  (n != SQLiteErro
8f40: 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20  rCode.Ok) throw 
8f50: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
8f60: 69 6f 6e 28 6e 2c 20 47 65 74 4c 61 73 74 45 72  ion(n, GetLastEr
8f70: 72 6f 72 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a  ror(hdl, db));..
8f80: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8f90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
8fa0: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 69  .#endif....    i
8fb0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62  nternal static b
8fc0: 6f 6f 6c 20 52 65 73 65 74 43 6f 6e 6e 65 63 74  ool ResetConnect
8fd0: 69 6f 6e 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ion(SQLiteConnec
8fe0: 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20  tionHandle hdl, 
8ff0: 49 6e 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20  IntPtr db, bool 
9000: 63 61 6e 54 68 72 6f 77 29 0d 0a 20 20 20 20 7b  canThrow)..    {
9010: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68  ..        if ((h
9020: 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  dl == null) || (
9030: 64 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  db == IntPtr.Zer
9040: 6f 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65  o)) return false
9050: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f  ;....        boo
9060: 6c 20 72 65 73 75 6c 74 20 3d 20 66 61 6c 73 65  l result = false
9070: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
9080: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9090: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
90a0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
90b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61   }..        fina
90c0: 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72  lly /* NOTE: Thr
90d0: 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74  ead.Abort() prot
90e0: 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20  ection. */..    
90f0: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
9100: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9110: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
9120: 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63    lock (hdl.sync
9130: 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  Root)..#else..  
9140: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
9150: 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  hdl)..#endif..  
9160: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9180: 28 63 61 6e 54 68 72 6f 77 20 26 26 20 68 64 6c  (canThrow && hdl
9190: 2e 49 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20  .IsInvalid)..   
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91b0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
91c0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
91d0: 74 69 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63  tion("The connec
91e0: 74 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 69  tion handle is i
91f0: 6e 76 61 6c 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20  nvalid.");....  
9200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
9210: 20 28 63 61 6e 54 68 72 6f 77 20 26 26 20 68 64   (canThrow && hd
9220: 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  l.IsClosed)..   
9230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9240: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
9250: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
9260: 74 69 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63  tion("The connec
9270: 74 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 63  tion handle is c
9280: 6c 6f 73 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20  losed.");....   
9290: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
92a0: 28 21 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64 20  (!hdl.IsInvalid 
92b0: 26 26 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65 64  && !hdl.IsClosed
92c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
92d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
92e0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
92f0: 20 73 74 6d 74 20 3d 20 49 6e 74 50 74 72 2e 5a   stmt = IntPtr.Z
9300: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
9310: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
9320: 45 72 72 6f 72 43 6f 64 65 20 6e 3b 0d 0a 0d 0a  ErrorCode n;....
9330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9340: 20 20 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20      do..        
9350: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 20 20 20 20 20 20 20 73 74 6d 74 20 3d 20 55 6e         stmt = Un
9380: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
9390: 73 2e 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73  s.sqlite3_next_s
93a0: 74 6d 74 28 64 62 2c 20 73 74 6d 74 29 3b 0d 0a  tmt(db, stmt);..
93b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93c0: 20 20 20 20 20 20 20 20 69 66 20 28 73 74 6d 74          if (stmt
93d0: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
93e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
93f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
9400: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
9410: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
9420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
9430: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
9440: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
9450: 65 73 65 74 5f 69 6e 74 65 72 6f 70 28 73 74 6d  eset_interop(stm
9460: 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  t);..#else..    
9470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9480: 20 20 20 20 20 20 20 20 6e 20 3d 20 55 6e 73 61          n = Unsa
9490: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
94a0: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 73 74  sqlite3_reset(st
94b0: 6d 74 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  mt);..#endif..  
94c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
94e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 77               } w
94f0: 68 69 6c 65 20 28 73 74 6d 74 20 21 3d 20 49 6e  hile (stmt != In
9500: 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20  tPtr.Zero);.... 
9510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9520: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
9530: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
9540: 54 45 3a 20 49 73 20 61 20 74 72 61 6e 73 61 63  TE: Is a transac
9550: 74 69 6f 6e 20 4e 4f 54 20 70 65 6e 64 69 6e 67  tion NOT pending
9560: 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
9570: 6f 6e 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on?..           
9580: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95a0: 20 69 66 20 28 49 73 41 75 74 6f 63 6f 6d 6d 69   if (IsAutocommi
95b0: 74 28 68 64 6c 2c 20 64 62 29 29 0d 0a 20 20 20  t(hdl, db))..   
95c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
95e0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
95f0: 6c 74 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  lt = true;..    
9600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9610: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
9620: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
9630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9640: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9650: 20 20 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20              n = 
9660: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
9670: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 65 78 65 63  ods.sqlite3_exec
9680: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
96a0: 62 2c 20 54 6f 55 54 46 38 28 22 52 4f 4c 4c 42  b, ToUTF8("ROLLB
96b0: 41 43 4b 22 29 2c 20 49 6e 74 50 74 72 2e 5a 65  ACK"), IntPtr.Ze
96c0: 72 6f 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  ro, IntPtr.Zero,
96d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
96f0: 66 20 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20  f stmt);....    
9700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9710: 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 53 51 4c      if (n == SQL
9720: 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
9730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9740: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9760: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
9770: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9790: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
97b0: 20 69 66 20 28 63 61 6e 54 68 72 6f 77 29 0d 0a   if (canThrow)..
97c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97f0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
9800: 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
9810: 28 6e 2c 20 47 65 74 4c 61 73 74 45 72 72 6f 72  (n, GetLastError
9820: 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20 20  (hdl, db));..   
9830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9840: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9850: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9880: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9890: 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65      GC.KeepAlive
98a0: 28 68 64 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  (hdl);..        
98b0: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
98c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
98d0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
98e0: 6c 20 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28 53  l IsAutocommit(S
98f0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
9900: 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
9910: 72 20 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  r db)..    {..  
9920: 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d        if ((hdl =
9930: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d  = null) || (db =
9940: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
9950: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
9960: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65  .        bool re
9970: 73 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  sult = false;...
9980: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
9990: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
99a0: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
99b0: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
99c0: 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20          finally 
99d0: 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e  /* NOTE: Thread.
99e0: 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69  Abort() protecti
99f0: 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  on. */..        
9a00: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
9a10: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
9a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
9a30: 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74  ck (hdl.syncRoot
9a40: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
9a50: 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29        lock (hdl)
9a60: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
9a70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9a80: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 68 64           if (!hd
9a90: 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26 26 20 21  l.IsInvalid && !
9aa0: 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20  hdl.IsClosed).. 
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ac0: 20 20 20 72 65 73 75 6c 74 20 3d 20 28 55 6e 73     result = (Uns
9ad0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9ae0: 2e 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74  .sqlite3_get_aut
9af0: 6f 63 6f 6d 6d 69 74 28 64 62 29 20 3d 3d 20 31  ocommit(db) == 1
9b00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9b10: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
9b20: 20 20 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69        GC.KeepAli
9b30: 76 65 28 68 64 6c 29 3b 20 2f 2a 20 4e 4f 54 45  ve(hdl); /* NOTE
9b40: 3a 20 55 6e 72 65 61 63 68 61 62 6c 65 20 63 6f  : Unreachable co
9b50: 64 65 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  de. */..        
9b60: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
9b70: 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20      }..  }....  
9b80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
9b90: 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75   ///..  /// </su
9ba0: 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63  mmary>..  public
9bb0: 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69   interface ISQLi
9bc0: 74 65 53 63 68 65 6d 61 45 78 74 65 6e 73 69 6f  teSchemaExtensio
9bd0: 6e 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ns..  {..      /
9be0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9bf0: 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
9c00: 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73  temporary tables
9c10: 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
9c20: 6f 6e 20 73 6f 20 73 63 68 65 6d 61 20 69 6e 66  on so schema inf
9c30: 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20  ormation can be 
9c40: 71 75 65 72 69 65 64 2e 0d 0a 20 20 20 20 20 20  queried...      
9c50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9c60: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
9c70: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
9c80: 6e 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  n">..      /// T
9c90: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 70  he connection up
9ca0: 6f 6e 20 77 68 69 63 68 20 74 6f 20 62 75 69 6c  on which to buil
9cb0: 64 20 74 68 65 20 73 63 68 65 6d 61 20 74 61 62  d the schema tab
9cc0: 6c 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  les...      /// 
9cd0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
9ce0: 76 6f 69 64 20 42 75 69 6c 64 54 65 6d 70 53 63  void BuildTempSc
9cf0: 68 65 6d 61 28 53 51 4c 69 74 65 43 6f 6e 6e 65  hema(SQLiteConne
9d00: 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  ction connection
9d10: 29 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 5b 46 6c  );..  }....  [Fl
9d20: 61 67 73 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ags]..  internal
9d30: 20 65 6e 75 6d 20 53 51 4c 69 74 65 4f 70 65 6e   enum SQLiteOpen
9d40: 46 6c 61 67 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a  FlagsEnum..  {..
9d50: 20 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 20      None = 0,.. 
9d60: 20 20 20 52 65 61 64 4f 6e 6c 79 20 3d 20 30 78     ReadOnly = 0x
9d70: 31 2c 0d 0a 20 20 20 20 52 65 61 64 57 72 69 74  1,..    ReadWrit
9d80: 65 20 3d 20 30 78 32 2c 0d 0a 20 20 20 20 43 72  e = 0x2,..    Cr
9d90: 65 61 74 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20  eate = 0x4,..   
9da0: 20 55 72 69 20 3d 20 30 78 34 30 2c 0d 0a 20 20   Uri = 0x40,..  
9db0: 20 20 4d 65 6d 6f 72 79 20 3d 20 30 78 38 30 2c    Memory = 0x80,
9dc0: 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20  ..    Default = 
9dd0: 52 65 61 64 57 72 69 74 65 20 7c 20 43 72 65 61  ReadWrite | Crea
9de0: 74 65 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  te,..  }....  //
9df0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
9e00: 2f 2f 20 54 68 65 20 65 78 74 72 61 20 62 65 68  // The extra beh
9e10: 61 76 69 6f 72 61 6c 20 66 6c 61 67 73 20 74 68  avioral flags th
9e20: 61 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65  at can be applie
9e30: 64 20 74 6f 20 61 20 63 6f 6e 6e 65 63 74 69 6f  d to a connectio
9e40: 6e 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  n...  /// </summ
9e50: 61 72 79 3e 0d 0a 20 20 5b 46 6c 61 67 73 28 29  ary>..  [Flags()
9e60: 5d 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  ]..  public enum
9e70: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
9e80: 6e 46 6c 61 67 73 20 3a 20 6c 6f 6e 67 0d 0a 20  nFlags : long.. 
9e90: 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
9ea0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
9eb0: 2f 2f 20 4e 6f 20 65 78 74 72 61 20 66 6c 61 67  // No extra flag
9ec0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9ed0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9ee0: 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20  None = 0x0,.... 
9ef0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9f00: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e  y>..      /// En
9f10: 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20  able logging of 
9f20: 61 6c 6c 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  all SQL statemen
9f30: 74 73 20 74 6f 20 62 65 20 70 72 65 70 61 72 65  ts to be prepare
9f40: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
9f50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9f60: 4c 6f 67 50 72 65 70 61 72 65 20 3d 20 30 78 31  LogPrepare = 0x1
9f70: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
9f80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
9f90: 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69  /// Enable loggi
9fa0: 6e 67 20 6f 66 20 61 6c 6c 20 62 6f 75 6e 64 20  ng of all bound 
9fb0: 70 61 72 61 6d 65 74 65 72 20 74 79 70 65 73 20  parameter types 
9fc0: 61 6e 64 20 72 61 77 20 76 61 6c 75 65 73 2e 0d  and raw values..
9fd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
9fe0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67  mary>..      Log
9ff0: 50 72 65 42 69 6e 64 20 3d 20 30 78 32 2c 0d 0a  PreBind = 0x2,..
a000: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a010: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a020: 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20   Enable logging 
a030: 6f 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61 72  of all bound par
a040: 61 6d 65 74 65 72 20 73 74 72 6f 6e 67 6c 79 20  ameter strongly 
a050: 74 79 70 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20  typed values... 
a060: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a070: 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 42 69  ry>..      LogBi
a080: 6e 64 20 3d 20 30 78 34 2c 0d 0a 0d 0a 20 20 20  nd = 0x4,....   
a090: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a0a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62  ..      /// Enab
a0b0: 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c  le logging of al
a0c0: 6c 20 65 78 63 65 70 74 69 6f 6e 73 20 63 61 75  l exceptions cau
a0d0: 67 68 74 20 66 72 6f 6d 20 75 73 65 72 2d 70 72  ght from user-pr
a0e0: 6f 76 69 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f  ovided..      //
a0f0: 2f 20 6d 61 6e 61 67 65 64 20 63 6f 64 65 20 63  / managed code c
a100: 61 6c 6c 65 64 20 66 72 6f 6d 20 6e 61 74 69 76  alled from nativ
a110: 65 20 63 6f 64 65 20 76 69 61 20 64 65 6c 65 67  e code via deleg
a120: 61 74 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ates...      ///
a130: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a140: 20 20 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78     LogCallbackEx
a150: 63 65 70 74 69 6f 6e 20 3d 20 30 78 38 2c 0d 0a  ception = 0x8,..
a160: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
a170: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
a180: 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20   Enable logging 
a190: 6f 66 20 62 61 63 6b 75 70 20 41 50 49 20 65 72  of backup API er
a1a0: 72 6f 72 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rors...      ///
a1b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a1c0: 20 20 20 4c 6f 67 42 61 63 6b 75 70 20 3d 20 30     LogBackup = 0
a1d0: 78 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  x10,....      //
a1e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a1f0: 20 20 20 2f 2f 2f 20 53 6b 69 70 20 61 64 64 69     /// Skip addi
a200: 6e 67 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e  ng the extension
a210: 20 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69   functions provi
a220: 64 65 64 20 62 79 20 74 68 65 20 6e 61 74 69 76  ded by the nativ
a230: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74  e..      /// int
a240: 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 2e 0d 0a  erop assembly...
a250: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a260: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 45 78  ary>..      NoEx
a270: 74 65 6e 73 69 6f 6e 46 75 6e 63 74 69 6f 6e 73  tensionFunctions
a280: 20 3d 20 30 78 32 30 2c 0d 0a 0d 0a 20 20 20 20   = 0x20,....    
a290: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a2a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
a2b0: 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65  binding paramete
a2c0: 72 20 76 61 6c 75 65 73 20 77 69 74 68 20 74 68  r values with th
a2d0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 55 49 6e  e <see cref="UIn
a2e0: 74 33 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f  t32" />..      /
a2f0: 2f 2f 20 74 79 70 65 2c 20 75 73 65 20 74 68 65  // type, use the
a300: 20 69 6e 74 65 72 6f 70 20 6d 65 74 68 6f 64 20   interop method 
a310: 74 68 61 74 20 61 63 63 65 70 74 73 20 61 6e 20  that accepts an 
a320: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34  <see cref="Int64
a330: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  " />..      /// 
a340: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
a350: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a360: 20 20 20 20 42 69 6e 64 55 49 6e 74 33 32 41 73      BindUInt32As
a370: 49 6e 74 36 34 20 3d 20 30 78 34 30 2c 0d 0a 0d  Int64 = 0x40,...
a380: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a390: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a3a0: 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72  When binding par
a3b0: 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61  ameter values, a
a3c0: 6c 77 61 79 73 20 62 69 6e 64 20 74 68 65 6d 20  lways bind them 
a3d0: 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77  as though they w
a3e0: 65 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  ere..      /// p
a3f0: 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20  lain text (i.e. 
a400: 6e 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61 74 65  no numeric, date
a410: 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20  /time, or other 
a420: 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75  conversions shou
a430: 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ld..      /// be
a440: 20 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20   attempted)...  
a450: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a460: 79 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64 41 6c  y>..      BindAl
a470: 6c 41 73 54 65 78 74 20 3d 20 30 78 38 30 2c 0d  lAsText = 0x80,.
a480: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
a490: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
a4a0: 2f 20 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67  / When returning
a4b0: 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20   column values, 
a4c0: 61 6c 77 61 79 73 20 72 65 74 75 72 6e 20 74 68  always return th
a4d0: 65 6d 20 61 73 20 74 68 6f 75 67 68 20 74 68 65  em as though the
a4e0: 79 20 77 65 72 65 0d 0a 20 20 20 20 20 20 2f 2f  y were..      //
a4f0: 2f 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e  / plain text (i.
a500: 65 2e 20 6e 6f 20 6e 75 6d 65 72 69 63 2c 20 64  e. no numeric, d
a510: 61 74 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68  ate/time, or oth
a520: 65 72 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73  er conversions s
a530: 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
a540: 20 62 65 20 61 74 74 65 6d 70 74 65 64 29 2e 0d   be attempted)..
a550: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a560: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 47 65 74  mary>..      Get
a570: 41 6c 6c 41 73 54 65 78 74 20 3d 20 30 78 31 30  AllAsText = 0x10
a580: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
a590: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a5a0: 20 2f 2f 2f 20 50 72 65 76 65 6e 74 20 74 68 69   /// Prevent thi
a5b0: 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  s <see cref="SQL
a5c0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
a5d0: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
a5e0: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f  e from..      //
a5f0: 2f 20 6c 6f 61 64 69 6e 67 20 65 78 74 65 6e 73  / loading extens
a600: 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ions...      ///
a610: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a620: 20 20 20 4e 6f 4c 6f 61 64 45 78 74 65 6e 73 69     NoLoadExtensi
a630: 6f 6e 20 3d 20 30 78 32 30 30 2c 0d 0a 0d 0a 23  on = 0x200,....#
a640: 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
a650: 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20 20  AL_TABLE..      
a660: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a670: 20 20 20 20 20 2f 2f 2f 20 50 72 65 76 65 6e 74       /// Prevent
a680: 20 74 68 69 73 20 3c 73 65 65 20 63 72 65 66 3d   this <see cref=
a690: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
a6a0: 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  n" /> object ins
a6b0: 74 61 6e 63 65 20 66 72 6f 6d 0d 0a 20 20 20 20  tance from..    
a6c0: 20 20 2f 2f 2f 20 63 72 65 61 74 69 6e 67 20 76    /// creating v
a6d0: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
a6e0: 75 6c 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ules...      ///
a6f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a700: 20 20 20 4e 6f 43 72 65 61 74 65 4d 6f 64 75 6c     NoCreateModul
a710: 65 20 3d 20 30 78 34 30 30 2c 0d 0a 23 65 6e 64  e = 0x400,..#end
a720: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  if....      /// 
a730: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a740: 20 2f 2f 2f 20 53 6b 69 70 20 62 69 6e 64 69 6e   /// Skip bindin
a750: 67 20 61 6e 79 20 66 75 6e 63 74 69 6f 6e 73 20  g any functions 
a760: 70 72 6f 76 69 64 65 64 20 62 79 20 6f 74 68 65  provided by othe
a770: 72 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62  r managed assemb
a780: 6c 69 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20  lies when..     
a790: 20 2f 2f 2f 20 6f 70 65 6e 69 6e 67 20 74 68 65   /// opening the
a7a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
a7b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a7c0: 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 42 69 6e 64  y>..      NoBind
a7d0: 46 75 6e 63 74 69 6f 6e 73 20 3d 20 30 78 38 30  Functions = 0x80
a7e0: 30 2c 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f  0,....#if INTERO
a7f0: 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
a800: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a810: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a820: 53 6b 69 70 20 73 65 74 74 69 6e 67 20 74 68 65  Skip setting the
a830: 20 6c 6f 67 67 69 6e 67 20 72 65 6c 61 74 65 64   logging related
a840: 20 70 72 6f 70 65 72 74 69 65 73 20 6f 66 20 74   properties of t
a850: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
a860: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d  ee cref="SQLiteM
a870: 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74  odule" /> object
a880: 20 69 6e 73 74 61 6e 63 65 20 74 68 61 74 20 77   instance that w
a890: 61 73 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20  as passed to..  
a8a0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65      /// the <see
a8b0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
a8c0: 6e 65 63 74 69 6f 6e 2e 43 72 65 61 74 65 4d 6f  nection.CreateMo
a8d0: 64 75 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  dule" /> method.
a8e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
a8f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
a900: 4c 6f 67 4d 6f 64 75 6c 65 20 3d 20 30 78 31 30  LogModule = 0x10
a910: 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00,....      ///
a920: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a930: 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67    /// Enable log
a940: 67 69 6e 67 20 6f 66 20 61 6c 6c 20 76 69 72 74  ging of all virt
a950: 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65  ual table module
a960: 20 65 72 72 6f 72 73 20 73 65 65 6e 20 62 79 20   errors seen by 
a970: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
a980: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
a990: 4d 6f 64 75 6c 65 2e 53 65 74 54 61 62 6c 65 45  Module.SetTableE
a9a0: 72 72 6f 72 28 49 6e 74 50 74 72 2c 53 74 72 69  rror(IntPtr,Stri
a9b0: 6e 67 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ng)" /> method..
a9c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
a9d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67  mary>..      Log
a9e0: 4d 6f 64 75 6c 65 45 72 72 6f 72 20 3d 20 30 78  ModuleError = 0x
a9f0: 32 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  2000,....      /
aa00: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
aa10: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c      /// Enable l
aa20: 6f 67 67 69 6e 67 20 6f 66 20 63 65 72 74 61 69  ogging of certai
aa30: 6e 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  n virtual table 
aa40: 6d 6f 64 75 6c 65 20 65 78 63 65 70 74 69 6f 6e  module exception
aa50: 73 20 74 68 61 74 20 63 61 6e 6e 6f 74 0d 0a 20  s that cannot.. 
aa60: 20 20 20 20 20 2f 2f 2f 20 62 65 20 65 61 73 69       /// be easi
aa70: 6c 79 20 64 69 73 63 6f 76 65 72 65 64 20 76 69  ly discovered vi
aa80: 61 20 6f 74 68 65 72 20 6d 65 61 6e 73 2e 0d 0a  a other means...
aa90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
aaa0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d  ary>..      LogM
aab0: 6f 64 75 6c 65 45 78 63 65 70 74 69 6f 6e 20 3d  oduleException =
aac0: 20 30 78 34 30 30 30 2c 0d 0a 23 65 6e 64 69 66   0x4000,..#endif
aad0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
aae0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
aaf0: 2f 2f 20 45 6e 61 62 6c 65 20 74 72 61 63 69 6e  // Enable tracin
ab00: 67 20 6f 66 20 70 6f 74 65 6e 74 69 61 6c 6c 79  g of potentially
ab10: 20 69 6d 70 6f 72 74 61 6e 74 20 5b 6e 6f 6e 2d   important [non-
ab20: 66 61 74 61 6c 5d 20 65 72 72 6f 72 20 63 6f 6e  fatal] error con
ab30: 64 69 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20 2f  ditions..      /
ab40: 2f 2f 20 74 68 61 74 20 63 61 6e 6e 6f 74 20 62  // that cannot b
ab50: 65 20 65 61 73 69 6c 79 20 72 65 70 6f 72 74 65  e easily reporte
ab60: 64 20 74 68 72 6f 75 67 68 20 6f 74 68 65 72 20  d through other 
ab70: 6d 65 61 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  means...      //
ab80: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ab90: 20 20 20 20 54 72 61 63 65 57 61 72 6e 69 6e 67      TraceWarning
aba0: 20 3d 20 30 78 38 30 30 30 2c 0d 0a 0d 0a 20 20   = 0x8000,....  
abb0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
abc0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
abd0: 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65  n binding parame
abe0: 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  ter values, alwa
abf0: 79 73 20 75 73 65 20 74 68 65 20 69 6e 76 61 72  ys use the invar
ac00: 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65  iant culture whe
ac10: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  n..      /// con
ac20: 76 65 72 74 69 6e 67 20 74 68 65 69 72 20 76 61  verting their va
ac30: 6c 75 65 73 20 66 72 6f 6d 20 73 74 72 69 6e 67  lues from string
ac40: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
ac50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ac60: 43 6f 6e 76 65 72 74 49 6e 76 61 72 69 61 6e 74  ConvertInvariant
ac70: 54 65 78 74 20 3d 20 30 78 31 30 30 30 30 2c 0d  Text = 0x10000,.
ac80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ac90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
aca0: 2f 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70  / When binding p
acb0: 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c  arameter values,
acc0: 20 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 20   always use the 
acd0: 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72  invariant cultur
ace0: 65 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f  e when..      //
acf0: 2f 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65  / converting the
ad00: 69 72 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72  ir values to str
ad10: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
ad20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ad30: 20 20 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74     BindInvariant
ad40: 54 65 78 74 20 3d 20 30 78 32 30 30 30 30 2c 0d  Text = 0x20000,.
ad50: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ad60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ad70: 2f 20 44 69 73 61 62 6c 65 20 75 73 69 6e 67 20  / Disable using 
ad80: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  the connection p
ad90: 6f 6f 6c 20 62 79 20 64 65 66 61 75 6c 74 2e 20  ool by default. 
ada0: 20 49 66 20 74 68 65 20 22 50 6f 6f 6c 69 6e 67   If the "Pooling
adb0: 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  "..      /// con
adc0: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70  nection string p
add0: 72 6f 70 65 72 74 79 20 69 73 20 73 70 65 63 69  roperty is speci
ade0: 66 69 65 64 2c 20 69 74 73 20 76 61 6c 75 65 20  fied, its value 
adf0: 77 69 6c 6c 20 6f 76 65 72 72 69 64 65 0d 0a 20  will override.. 
ae00: 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 66 6c       /// this fl
ae10: 61 67 2e 20 20 54 68 65 20 70 72 65 63 69 73 65  ag.  The precise
ae20: 20 6f 75 74 63 6f 6d 65 20 6f 66 20 63 6f 6d 62   outcome of comb
ae30: 69 6e 69 6e 67 20 74 68 69 73 20 66 6c 61 67 20  ining this flag 
ae40: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 20 20  with the..      
ae50: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55  /// <see cref="U
ae60: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c  seConnectionPool
ae70: 22 20 2f 3e 20 66 6c 61 67 20 69 73 20 75 6e 73  " /> flag is uns
ae80: 70 65 63 69 66 69 65 64 3b 20 68 6f 77 65 76 65  pecified; howeve
ae90: 72 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e  r,..      /// on
aea0: 65 20 6f 66 20 74 68 65 20 66 6c 61 67 73 20 77  e of the flags w
aeb0: 69 6c 6c 20 62 65 20 69 6e 20 65 66 66 65 63 74  ill be in effect
aec0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
aed0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
aee0: 6f 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20  oConnectionPool 
aef0: 3d 20 30 78 34 30 30 30 30 2c 0d 0a 0d 0a 20 20  = 0x40000,....  
af00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
af10: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
af20: 62 6c 65 20 75 73 69 6e 67 20 74 68 65 20 63 6f  ble using the co
af30: 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 20 62 79  nnection pool by
af40: 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20 74 68   default.  If th
af50: 65 20 22 50 6f 6f 6c 69 6e 67 22 0d 0a 20 20 20  e "Pooling"..   
af60: 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f     /// connectio
af70: 6e 20 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74  n string propert
af80: 79 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  y is specified, 
af90: 69 74 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 6f  its value will o
afa0: 76 65 72 72 69 64 65 0d 0a 20 20 20 20 20 20 2f  verride..      /
afb0: 2f 2f 20 74 68 69 73 20 66 6c 61 67 2e 20 20 54  // this flag.  T
afc0: 68 65 20 70 72 65 63 69 73 65 20 6f 75 74 63 6f  he precise outco
afd0: 6d 65 20 6f 66 20 63 6f 6d 62 69 6e 69 6e 67 20  me of combining 
afe0: 74 68 69 73 20 66 6c 61 67 20 77 69 74 68 20 74  this flag with t
aff0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
b000: 65 65 20 63 72 65 66 3d 22 4e 6f 43 6f 6e 6e 65  ee cref="NoConne
b010: 63 74 69 6f 6e 50 6f 6f 6c 22 20 2f 3e 20 66 6c  ctionPool" /> fl
b020: 61 67 20 69 73 20 75 6e 73 70 65 63 69 66 69 65  ag is unspecifie
b030: 64 3b 20 68 6f 77 65 76 65 72 2c 0d 0a 20 20 20  d; however,..   
b040: 20 20 20 2f 2f 2f 20 6f 6e 65 20 6f 66 20 74 68     /// one of th
b050: 65 20 66 6c 61 67 73 20 77 69 6c 6c 20 62 65 20  e flags will be 
b060: 69 6e 20 65 66 66 65 63 74 2e 0d 0a 20 20 20 20  in effect...    
b070: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b080: 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65  ..      UseConne
b090: 63 74 69 6f 6e 50 6f 6f 6c 20 3d 20 30 78 38 30  ctionPool = 0x80
b0a0: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
b0b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b0c0: 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 75 73     /// Enable us
b0d0: 69 6e 67 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  ing per-connecti
b0e0: 6f 6e 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77  on mappings betw
b0f0: 65 65 6e 20 74 79 70 65 20 6e 61 6d 65 73 20 61  een type names a
b100: 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  nd..      /// <s
b110: 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65 22  ee cref="DbType"
b120: 20 2f 3e 20 76 61 6c 75 65 73 2e 20 20 41 6c 73   /> values.  Als
b130: 6f 20 73 65 65 20 74 68 65 0d 0a 20 20 20 20 20  o see the..     
b140: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b150: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
b160: 2e 43 6c 65 61 72 54 79 70 65 4d 61 70 70 69 6e  .ClearTypeMappin
b170: 67 73 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f  gs" />,..      /
b180: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
b190: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 47  LiteConnection.G
b1a0: 65 74 54 79 70 65 4d 61 70 70 69 6e 67 73 22 20  etTypeMappings" 
b1b0: 2f 3e 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f  />, and..      /
b1c0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
b1d0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41  LiteConnection.A
b1e0: 64 64 54 79 70 65 4d 61 70 70 69 6e 67 22 20 2f  ddTypeMapping" /
b1f0: 3e 20 6d 65 74 68 6f 64 73 2e 20 20 54 68 65 73  > methods.  Thes
b200: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 65 72  e..      /// per
b210: 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70  -connection mapp
b220: 69 6e 67 73 2c 20 77 68 65 6e 20 70 72 65 73 65  ings, when prese
b230: 6e 74 2c 20 6f 76 65 72 72 69 64 65 20 74 68 65  nt, override the
b240: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0d 0a   corresponding..
b250: 20 20 20 20 20 20 2f 2f 2f 20 67 6c 6f 62 61 6c        /// global
b260: 20 6d 61 70 70 69 6e 67 73 2e 0d 0a 20 20 20 20   mappings...    
b270: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b280: 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65  ..      UseConne
b290: 63 74 69 6f 6e 54 79 70 65 73 20 3d 20 30 78 31  ctionTypes = 0x1
b2a0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
b2b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b2c0: 20 20 20 20 20 2f 2f 2f 20 44 69 73 61 62 6c 65       /// Disable
b2d0: 20 75 73 69 6e 67 20 67 6c 6f 62 61 6c 20 6d 61   using global ma
b2e0: 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 74  ppings between t
b2f0: 79 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20  ype names and.. 
b300: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
b310: 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76  ef="DbType" /> v
b320: 61 6c 75 65 73 2e 20 20 54 68 69 73 20 6d 61 79  alues.  This may
b330: 20 62 65 20 75 73 65 66 75 6c 20 69 6e 20 73 6f   be useful in so
b340: 6d 65 20 76 65 72 79 20 6e 61 72 72 6f 77 0d 0a  me very narrow..
b350: 20 20 20 20 20 20 2f 2f 2f 20 63 61 73 65 73 3b        /// cases;
b360: 20 68 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65   however, if the
b370: 72 65 20 61 72 65 20 6e 6f 20 70 65 72 2d 63 6f  re are no per-co
b380: 6e 6e 65 63 74 69 6f 6e 20 74 79 70 65 20 6d 61  nnection type ma
b390: 70 70 69 6e 67 73 2c 20 74 68 65 0d 0a 20 20 20  ppings, the..   
b3a0: 20 20 20 2f 2f 2f 20 66 61 6c 6c 62 61 63 6b 20     /// fallback 
b3b0: 64 65 66 61 75 6c 74 73 20 77 69 6c 6c 20 62 65  defaults will be
b3c0: 20 75 73 65 64 20 66 6f 72 20 62 6f 74 68 20 74   used for both t
b3d0: 79 70 65 20 6e 61 6d 65 73 20 61 6e 64 20 74 68  ype names and th
b3e0: 65 69 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  eir..      /// a
b3f0: 73 73 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63  ssociated <see c
b400: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
b410: 76 61 6c 75 65 73 2e 20 20 54 68 65 72 65 66 6f  values.  Therefo
b420: 72 65 2c 20 75 73 65 20 6f 66 20 74 68 69 73 20  re, use of this 
b430: 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  flag..      /// 
b440: 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64  is not recommend
b450: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
b460: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
b470: 20 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 20 3d   NoGlobalTypes =
b480: 20 30 78 32 30 30 30 30 30 2c 0d 0a 0d 0a 20 20   0x200000,....  
b490: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
b4a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
b4b0: 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  n the <see cref=
b4c0: 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
b4d0: 72 2e 48 61 73 52 6f 77 73 22 20 2f 3e 20 70 72  r.HasRows" /> pr
b4e0: 6f 70 65 72 74 79 20 69 73 20 75 73 65 64 2c 20  operty is used, 
b4f0: 69 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68  it..      /// sh
b500: 6f 75 6c 64 20 72 65 74 75 72 6e 20 6e 6f 6e 2d  ould return non-
b510: 7a 65 72 6f 20 69 66 20 74 68 65 72 65 20 77 65  zero if there we
b520: 72 65 20 65 76 65 72 20 61 6e 79 20 72 6f 77 73  re ever any rows
b530: 20 69 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74   in the associat
b540: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65  ed..      /// re
b550: 73 75 6c 74 20 73 65 74 73 2e 0d 0a 20 20 20 20  sult sets...    
b560: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b570: 0d 0a 20 20 20 20 20 20 53 74 69 63 6b 79 48 61  ..      StickyHa
b580: 73 52 6f 77 73 20 3d 20 30 78 34 30 30 30 30 30  sRows = 0x400000
b590: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
b5a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b5b0: 2f 2f 2f 20 45 6e 61 62 6c 65 20 22 73 74 72 69  /// Enable "stri
b5c0: 63 74 22 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ct" transaction 
b5d0: 65 6e 6c 69 73 74 6d 65 6e 74 20 73 65 6d 61 6e  enlistment seman
b5e0: 74 69 63 73 2e 20 20 53 65 74 74 69 6e 67 20 74  tics.  Setting t
b5f0: 68 69 73 20 66 6c 61 67 0d 0a 20 20 20 20 20 20  his flag..      
b600: 2f 2f 2f 20 77 69 6c 6c 20 63 61 75 73 65 20 61  /// will cause a
b610: 6e 20 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 62  n exception to b
b620: 65 20 74 68 72 6f 77 6e 20 69 66 20 61 6e 20 61  e thrown if an a
b630: 74 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74  ttempt is made t
b640: 6f 20 65 6e 6c 69 73 74 0d 0a 20 20 20 20 20 20  o enlist..      
b650: 2f 2f 2f 20 69 6e 20 61 20 74 72 61 6e 73 61 63  /// in a transac
b660: 74 69 6f 6e 20 77 69 74 68 20 61 6e 20 75 6e 61  tion with an una
b670: 76 61 69 6c 61 62 6c 65 20 6f 72 20 75 6e 73 75  vailable or unsu
b680: 70 70 6f 72 74 65 64 20 69 73 6f 6c 61 74 69 6f  pported isolatio
b690: 6e 20 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 20 20  n level...      
b6a0: 2f 2f 2f 20 49 6e 20 74 68 65 20 66 75 74 75 72  /// In the futur
b6b0: 65 2c 20 6d 6f 72 65 20 65 78 74 65 6e 73 69 76  e, more extensiv
b6c0: 65 20 63 68 65 63 6b 73 20 6d 61 79 20 62 65 20  e checks may be 
b6d0: 65 6e 61 62 6c 65 64 20 62 79 20 74 68 69 73 20  enabled by this 
b6e0: 66 6c 61 67 20 61 73 0d 0a 20 20 20 20 20 20 2f  flag as..      /
b6f0: 2f 2f 20 77 65 6c 6c 2e 0d 0a 20 20 20 20 20 20  // well...      
b700: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b710: 20 20 20 20 20 20 53 74 72 69 63 74 45 6e 6c 69        StrictEnli
b720: 73 74 6d 65 6e 74 20 3d 20 30 78 38 30 30 30 30  stment = 0x80000
b730: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
b740: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b750: 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6d 61 70 70   /// Enable mapp
b760: 69 6e 67 20 6f 66 20 75 6e 73 75 70 70 6f 72 74  ing of unsupport
b770: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  ed transaction i
b780: 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73 20  solation levels 
b790: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
b7a0: 2f 20 63 6c 6f 73 65 73 74 20 73 75 70 70 6f 72  / closest suppor
b7b0: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ted transaction 
b7c0: 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 2e  isolation level.
b7d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
b7e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4d 61  mmary>..      Ma
b7f0: 70 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 73  pIsolationLevels
b800: 20 3d 20 30 78 31 30 30 30 30 30 30 2c 0d 0a 0d   = 0x1000000,...
b810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
b820: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
b830: 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63  When returning c
b840: 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 74  olumn values, at
b850: 74 65 6d 70 74 20 74 6f 20 64 65 74 65 63 74 20  tempt to detect 
b860: 74 68 65 20 61 66 66 69 6e 69 74 79 20 6f 66 0d  the affinity of.
b870: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 65 78 74 75  .      /// textu
b880: 61 6c 20 76 61 6c 75 65 73 20 62 79 20 63 68 65  al values by che
b890: 63 6b 69 6e 67 20 69 66 20 74 68 65 79 20 66 75  cking if they fu
b8a0: 6c 6c 79 20 63 6f 6e 66 6f 72 6d 20 74 6f 20 74  lly conform to t
b8b0: 68 6f 73 65 20 6f 66 20 74 68 65 0d 0a 20 20 20  hose of the..   
b8c0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
b8d0: 3d 22 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e  ="TypeAffinity.N
b8e0: 75 6c 6c 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20  ull" />,..      
b8f0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54  /// <see cref="T
b900: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
b910: 34 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f  4" />,..      //
b920: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70  / <see cref="Typ
b930: 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65  eAffinity.Double
b940: 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  " />,..      ///
b950: 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22 54   or <see cref="T
b960: 79 70 65 41 66 66 69 6e 69 74 79 2e 44 61 74 65  ypeAffinity.Date
b970: 54 69 6d 65 22 20 2f 3e 20 74 79 70 65 73 2e 0d  Time" /> types..
b980: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b990: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 74  mary>..      Det
b9a0: 65 63 74 54 65 78 74 41 66 66 69 6e 69 74 79 20  ectTextAffinity 
b9b0: 3d 20 30 78 32 30 30 30 30 30 30 2c 0d 0a 0d 0a  = 0x2000000,....
b9c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
b9d0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
b9e0: 68 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f  hen returning co
b9f0: 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 74 74  lumn values, att
ba00: 65 6d 70 74 20 74 6f 20 64 65 74 65 63 74 20 74  empt to detect t
ba10: 68 65 20 74 79 70 65 20 6f 66 0d 0a 20 20 20 20  he type of..    
ba20: 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 76 61 6c    /// string val
ba30: 75 65 73 20 62 79 20 63 68 65 63 6b 69 6e 67 20  ues by checking 
ba40: 69 66 20 74 68 65 79 20 66 75 6c 6c 79 20 63 6f  if they fully co
ba50: 6e 66 6f 72 6d 20 74 6f 20 74 68 6f 73 65 20 6f  nform to those o
ba60: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  f..      /// the
ba70: 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65   <see cref="Type
ba80: 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 22 20 2f  Affinity.Null" /
ba90: 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  >,..      /// <s
baa0: 65 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66  ee cref="TypeAff
bab0: 69 6e 69 74 79 2e 49 6e 74 36 34 22 20 2f 3e 2c  inity.Int64" />,
bac0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
bad0: 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e   cref="TypeAffin
bae0: 69 74 79 2e 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d  ity.Double" />,.
baf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73  .      /// or <s
bb00: 65 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66  ee cref="TypeAff
bb10: 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 22 20  inity.DateTime" 
bb20: 2f 3e 20 74 79 70 65 73 2e 0d 0a 20 20 20 20 20  /> types...     
bb30: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
bb40: 0a 20 20 20 20 20 20 44 65 74 65 63 74 53 74 72  .      DetectStr
bb50: 69 6e 67 54 79 70 65 20 3d 20 30 78 34 30 30 30  ingType = 0x4000
bb60: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
bb70: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
bb80: 20 20 20 2f 2f 2f 20 53 6b 69 70 20 71 75 65 72     /// Skip quer
bb90: 79 69 6e 67 20 72 75 6e 74 69 6d 65 20 63 6f 6e  ying runtime con
bba0: 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
bbb0: 6e 67 73 20 66 6f 72 20 75 73 65 20 62 79 20 74  ngs for use by t
bbc0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
bbd0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
bbe0: 6f 6e 76 65 72 74 22 20 2f 3e 20 63 6c 61 73 73  onvert" /> class
bbf0: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20  , including the 
bc00: 64 65 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 2f  default..      /
bc10: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 62  // <see cref="Db
bc20: 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65 20 61  Type" /> value a
bc30: 6e 64 20 64 65 66 61 75 6c 74 20 64 61 74 61 62  nd default datab
bc40: 61 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a  ase type name...
bc50: 20 20 20 20 20 20 2f 2f 2f 20 3c 62 3e 4e 4f 54        /// <b>NOT
bc60: 45 3a 20 49 66 20 74 68 65 20 3c 73 65 65 20 63  E: If the <see c
bc70: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
bc80: 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54  ction.DefaultDbT
bc90: 79 70 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f  ype" />..      /
bca0: 2f 2f 20 61 6e 64 2f 6f 72 20 3c 73 65 65 20 63  // and/or <see c
bcb0: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
bcc0: 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70  ction.DefaultTyp
bcd0: 65 4e 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20  eName" />..     
bce0: 20 2f 2f 2f 20 70 72 6f 70 65 72 74 69 65 73 20   /// properties 
bcf0: 61 72 65 20 6e 6f 74 20 73 65 74 20 65 78 70 6c  are not set expl
bd00: 69 63 69 74 6c 79 20 6e 6f 72 20 73 65 74 20 76  icitly nor set v
bd10: 69 61 20 74 68 65 69 72 20 63 6f 6e 6e 65 63 74  ia their connect
bd20: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  ion..      /// s
bd30: 74 72 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73  tring properties
bd40: 20 61 6e 64 20 72 65 70 65 61 74 65 64 20 63 61   and repeated ca
bd50: 6c 6c 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  lls to determine
bd60: 20 74 68 65 73 65 20 72 75 6e 74 69 6d 65 0d 0a   these runtime..
bd70: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67        /// config
bd80: 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73  uration settings
bd90: 20 61 72 65 20 73 65 65 6e 20 74 6f 20 62 65 20   are seen to be 
bda0: 61 20 70 72 6f 62 6c 65 6d 2c 20 74 68 69 73 20  a problem, this 
bdb0: 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  flag..      /// 
bdc0: 73 68 6f 75 6c 64 20 62 65 20 73 65 74 2e 3c 2f  should be set.</
bdd0: 62 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  b>..      /// </
bde0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bdf0: 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
be00: 73 20 3d 20 30 78 38 30 30 30 30 30 30 2c 0d 0a  s = 0x8000000,..
be10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
be20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
be30: 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61   When binding pa
be40: 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20 77  rameter values w
be50: 69 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65  ith the <see cre
be60: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 0d  f="DateTime" />.
be70: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 79 70 65 2c  .      /// type,
be80: 20 74 61 6b 65 20 74 68 65 69 72 20 3c 73 65 65   take their <see
be90: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 4b   cref="DateTimeK
bea0: 69 6e 64 22 20 2f 3e 20 69 6e 74 6f 20 61 63 63  ind" /> into acc
beb0: 6f 75 6e 74 20 61 73 0d 0a 20 20 20 20 20 20 2f  ount as..      /
bec0: 2f 2f 20 77 65 6c 6c 20 61 73 20 74 68 61 74 20  // well as that 
bed0: 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  of the associate
bee0: 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  d <see cref="SQL
bef0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
bf00: 3e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  >...      /// </
bf10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bf20: 42 69 6e 64 44 61 74 65 54 69 6d 65 57 69 74 68  BindDateTimeWith
bf30: 4b 69 6e 64 20 3d 20 30 78 31 30 30 30 30 30 30  Kind = 0x1000000
bf40: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
bf50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
bf60: 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78 63 65 70   /// If an excep
bf70: 74 69 6f 6e 20 69 73 20 63 61 75 67 68 74 20 77  tion is caught w
bf80: 68 65 6e 20 72 61 69 73 69 6e 67 20 74 68 65 0d  hen raising the.
bf90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
bfa0: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
bfb0: 65 63 74 69 6f 6e 2e 43 6f 6d 6d 69 74 22 20 2f  ection.Commit" /
bfc0: 3e 20 65 76 65 6e 74 2c 20 74 68 65 20 74 72 61  > event, the tra
bfd0: 6e 73 61 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  nsaction..      
bfe0: 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 72 6f  /// should be ro
bff0: 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74  lled back.  If t
c000: 68 69 73 20 69 73 20 6e 6f 74 20 73 70 65 63 69  his is not speci
c010: 66 69 65 64 2c 20 74 68 65 20 74 72 61 6e 73 61  fied, the transa
c020: 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ction..      ///
c030: 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 74   will continue t
c040: 68 65 20 63 6f 6d 6d 69 74 20 70 72 6f 63 65 73  he commit proces
c050: 73 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20  s instead...    
c060: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c070: 0d 0a 20 20 20 20 20 20 52 6f 6c 6c 62 61 63 6b  ..      Rollback
c080: 4f 6e 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78  OnException = 0x
c090: 32 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  20000000,....   
c0a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
c0b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 61  ..      /// If a
c0c0: 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20 63  n exception is c
c0d0: 61 75 67 68 74 20 77 68 65 6e 20 72 61 69 73 69  aught when raisi
c0e0: 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ng the..      //
c0f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
c100: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 75  iteConnection.Au
c110: 74 68 6f 72 69 7a 65 22 20 2f 3e 20 65 76 65 6e  thorize" /> even
c120: 74 2c 20 74 68 65 20 61 63 74 69 6f 6e 20 73 68  t, the action sh
c130: 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ould..      /// 
c140: 73 68 6f 75 6c 64 20 62 65 20 64 65 6e 69 65 64  should be denied
c150: 2e 20 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f  .  If this is no
c160: 74 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  t specified, the
c170: 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d   action will be.
c180: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 77  .      /// allow
c190: 65 64 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20  ed instead...   
c1a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c1b0: 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 4f 6e 45  >..      DenyOnE
c1c0: 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 34 30 30  xception = 0x400
c1d0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
c1e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c1f0: 20 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20 65       /// If an e
c200: 78 63 65 70 74 69 6f 6e 20 69 73 20 63 61 75 67  xception is caug
c210: 68 74 20 77 68 65 6e 20 72 61 69 73 69 6e 67 20  ht when raising 
c220: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
c230: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
c240: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 50 72 6f 67 72  Connection.Progr
c250: 65 73 73 22 20 2f 3e 20 65 76 65 6e 74 2c 20 74  ess" /> event, t
c260: 68 65 20 6f 70 65 72 61 74 69 6f 6e 0d 0a 20 20  he operation..  
c270: 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62      /// should b
c280: 65 20 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20  e interrupted.  
c290: 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73  If this is not s
c2a0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 6f 70  pecified, the op
c2b0: 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  eration..      /
c2c0: 2f 2f 20 77 69 6c 6c 20 73 69 6d 70 6c 79 20 63  // will simply c
c2d0: 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
c2e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c2f0: 20 20 20 20 20 20 49 6e 74 65 72 72 75 70 74 4f        InterruptO
c300: 6e 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 38  nException = 0x8
c310: 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0000000,....    
c320: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c330: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d  .      /// Attem
c340: 70 74 20 74 6f 20 75 6e 62 69 6e 64 20 61 6c 6c  pt to unbind all
c350: 20 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69   functions provi
c360: 64 65 64 20 62 79 20 6f 74 68 65 72 20 6d 61 6e  ded by other man
c370: 61 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73 0d  aged assemblies.
c380: 0a 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20  .      /// when 
c390: 63 6c 6f 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e  closing the conn
c3a0: 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  ection...      /
c3b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c3c0: 20 20 20 20 20 55 6e 62 69 6e 64 46 75 6e 63 74       UnbindFunct
c3d0: 69 6f 6e 73 4f 6e 43 6c 6f 73 65 20 3d 20 30 78  ionsOnClose = 0x
c3e0: 31 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  100000000,....  
c3f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c400: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
c410: 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75  n returning colu
c420: 6d 6e 20 76 61 6c 75 65 73 20 61 73 20 61 20 3c  mn values as a <
c430: 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67  see cref="String
c440: 22 20 2f 3e 2c 20 73 6b 69 70 0d 0a 20 20 20 20  " />, skip..    
c450: 20 20 2f 2f 2f 20 76 65 72 69 66 79 69 6e 67 20    /// verifying 
c460: 74 68 65 69 72 20 61 66 66 69 6e 69 74 79 2e 0d  their affinity..
c470: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
c480: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 56  mary>..      NoV
c490: 65 72 69 66 79 54 65 78 74 41 66 66 69 6e 69 74  erifyTextAffinit
c4a0: 79 20 3d 20 30 78 32 30 30 30 30 30 30 30 30 2c  y = 0x200000000,
c4b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
c4c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c4d0: 2f 2f 20 45 6e 61 62 6c 65 20 75 73 69 6e 67 20  // Enable using 
c4e0: 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d  per-connection m
c4f0: 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20  appings between 
c500: 74 79 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a  type names and..
c510: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
c520: 72 65 66 3d 22 53 51 4c 69 74 65 42 69 6e 64 56  ref="SQLiteBindV
c530: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 22 20 2f 3e  alueCallback" />
c540: 20 76 61 6c 75 65 73 2e 20 20 41 6c 73 6f 20 73   values.  Also s
c550: 65 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  ee the..      //
c560: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
c570: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c  iteConnection.Cl
c580: 65 61 72 54 79 70 65 43 61 6c 6c 62 61 63 6b 73  earTypeCallbacks
c590: 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  " />,..      ///
c5a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
c5b0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79  teConnection.Try
c5c0: 47 65 74 54 79 70 65 43 61 6c 6c 62 61 63 6b 73  GetTypeCallbacks
c5d0: 22 20 2f 3e 2c 20 61 6e 64 0d 0a 20 20 20 20 20  " />, and..     
c5e0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
c5f0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
c600: 2e 53 65 74 54 79 70 65 43 61 6c 6c 62 61 63 6b  .SetTypeCallback
c610: 73 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a  s" /> methods...
c620: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c630: 61 72 79 3e 0d 0a 20 20 20 20 20 20 55 73 65 43  ary>..      UseC
c640: 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e 64 56 61 6c  onnectionBindVal
c650: 75 65 43 61 6c 6c 62 61 63 6b 73 20 3d 20 30 78  ueCallbacks = 0x
c660: 34 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  400000000,....  
c670: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c680: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
c690: 62 6c 65 20 75 73 69 6e 67 20 70 65 72 2d 63 6f  ble using per-co
c6a0: 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67  nnection mapping
c6b0: 73 20 62 65 74 77 65 65 6e 20 74 79 70 65 20 6e  s between type n
c6c0: 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20 20 20  ames and..      
c6d0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
c6e0: 51 4c 69 74 65 52 65 61 64 56 61 6c 75 65 43 61  QLiteReadValueCa
c6f0: 6c 6c 62 61 63 6b 22 20 2f 3e 20 76 61 6c 75 65  llback" /> value
c700: 73 2e 20 20 41 6c 73 6f 20 73 65 65 20 74 68 65  s.  Also see the
c710: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
c720: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
c730: 6e 65 63 74 69 6f 6e 2e 43 6c 65 61 72 54 79 70  nection.ClearTyp
c740: 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e 2c 0d  eCallbacks" />,.
c750: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
c760: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
c770: 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 54 79 70  ection.TryGetTyp
c780: 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e 2c 20  eCallbacks" />, 
c790: 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  and..      /// <
c7a0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
c7b0: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 54 79  Connection.SetTy
c7c0: 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e 20  peCallbacks" /> 
c7d0: 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
c7e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c7f0: 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74        UseConnect
c800: 69 6f 6e 52 65 61 64 56 61 6c 75 65 43 61 6c 6c  ionReadValueCall
c810: 62 61 63 6b 73 20 3d 20 30 78 38 30 30 30 30 30  backs = 0x800000
c820: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
c830: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c840: 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 64 61     /// If the da
c850: 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65  tabase type name
c860: 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 65 78   has not been ex
c870: 70 6c 69 63 69 74 6c 79 20 73 65 74 20 66 6f 72  plicitly set for
c880: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
c890: 70 61 72 61 6d 65 74 65 72 20 73 70 65 63 69 66  parameter specif
c8a0: 69 65 64 2c 20 66 61 6c 6c 62 61 63 6b 20 74 6f  ied, fallback to
c8b0: 20 75 73 69 6e 67 20 74 68 65 20 70 61 72 61 6d   using the param
c8c0: 65 74 65 72 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  eter name...    
c8d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c8e0: 0d 0a 20 20 20 20 20 20 55 73 65 50 61 72 61 6d  ..      UseParam
c8f0: 65 74 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e  eterNameForTypeN
c900: 61 6d 65 20 3d 20 30 78 31 30 30 30 30 30 30 30  ame = 0x10000000
c910: 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00,....      ///
c920: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c930: 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 64 61 74    /// If the dat
c940: 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20  abase type name 
c950: 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 65 78 70  has not been exp
c960: 6c 69 63 69 74 6c 79 20 73 65 74 20 66 6f 72 20  licitly set for 
c970: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  the..      /// p
c980: 61 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69  arameter specifi
c990: 65 64 2c 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20  ed, fallback to 
c9a0: 75 73 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  using the databa
c9b0: 73 65 20 74 79 70 65 20 6e 61 6d 65 0d 0a 20 20  se type name..  
c9c0: 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74      /// associat
c9d0: 65 64 20 77 69 74 68 20 74 68 65 20 3c 73 65 65  ed with the <see
c9e0: 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
c9f0: 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  > value...      
ca00: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ca10: 20 20 20 20 20 20 55 73 65 50 61 72 61 6d 65 74        UseParamet
ca20: 65 72 44 62 54 79 70 65 46 6f 72 54 79 70 65 4e  erDbTypeForTypeN
ca30: 61 6d 65 20 3d 20 30 78 32 30 30 30 30 30 30 30  ame = 0x20000000
ca40: 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00,....      ///
ca50: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ca60: 20 20 2f 2f 2f 20 57 68 65 6e 20 72 65 74 75 72    /// When retur
ca70: 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ning column valu
ca80: 65 73 2c 20 73 6b 69 70 20 76 65 72 69 66 79 69  es, skip verifyi
ca90: 6e 67 20 74 68 65 69 72 20 61 66 66 69 6e 69 74  ng their affinit
caa0: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
cab0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
cac0: 4e 6f 56 65 72 69 66 79 54 79 70 65 41 66 66 69  NoVerifyTypeAffi
cad0: 6e 69 74 79 20 3d 20 30 78 34 30 30 30 30 30 30  nity = 0x4000000
cae0: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
caf0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
cb00: 20 20 20 2f 2f 2f 20 41 6c 6c 6f 77 20 74 72 61     /// Allow tra
cb10: 6e 73 61 63 74 69 6f 6e 73 20 74 6f 20 62 65 20  nsactions to be 
cb20: 6e 65 73 74 65 64 2e 20 20 54 68 65 20 6f 75 74  nested.  The out
cb30: 65 72 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69  ermost transacti
cb40: 6f 6e 20 73 74 69 6c 6c 0d 0a 20 20 20 20 20 20  on still..      
cb50: 2f 2f 2f 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65  /// controls whe
cb60: 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 79 20  ther or not any 
cb70: 63 68 61 6e 67 65 73 20 61 72 65 20 75 6c 74 69  changes are ulti
cb80: 6d 61 74 65 6c 79 20 63 6f 6d 6d 69 74 74 65 64  mately committed
cb90: 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72   or..      /// r
cba0: 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 41 6c 6c  olled back.  All
cbb0: 20 6e 6f 6e 2d 6f 75 74 65 72 6d 6f 73 74 20 74   non-outermost t
cbc0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 72 65 20  ransactions are 
cbd0: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e  implemented usin
cbe0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  g..      /// the
cbf0: 20 53 41 56 45 50 4f 49 4e 54 20 63 6f 6e 73 74   SAVEPOINT const
cc00: 72 75 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ruct...      ///
cc10: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
cc20: 20 20 20 41 6c 6c 6f 77 4e 65 73 74 65 64 54 72     AllowNestedTr
cc30: 61 6e 73 61 63 74 69 6f 6e 73 20 3d 20 30 78 38  ansactions = 0x8
cc40: 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  000000000,....  
cc50: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
cc60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
cc70: 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65  n binding parame
cc80: 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  ter values, alwa
cc90: 79 73 20 62 69 6e 64 20 3c 73 65 65 20 63 72 65  ys bind <see cre
cca0: 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a  f="Decimal" />..
ccb0: 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73        /// values
ccc0: 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20   as though they 
ccd0: 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20  were plain text 
cce0: 28 69 2e 65 2e 20 6e 6f 74 20 3c 73 65 65 20 63  (i.e. not <see c
ccf0: 72 65 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e  ref="Decimal" />
cd00: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 68 69  ,..      /// whi
cd10: 63 68 20 69 73 20 74 68 65 20 6c 65 67 61 63 79  ch is the legacy
cd20: 20 62 65 68 61 76 69 6f 72 29 2e 0d 0a 20 20 20   behavior)...   
cd30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cd40: 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64 44 65 63  >..      BindDec
cd50: 69 6d 61 6c 41 73 54 65 78 74 20 3d 20 30 78 31  imalAsText = 0x1
cd60: 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20  0000000000,.... 
cd70: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
cd80: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
cd90: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  en returning col
cda0: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
cdb0: 79 73 20 72 65 74 75 72 6e 20 3c 73 65 65 20 63  ys return <see c
cdc0: 72 65 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e  ref="Decimal" />
cdd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75  ..      /// valu
cde0: 65 73 20 61 73 20 74 68 6f 75 67 68 20 74 68 65  es as though the
cdf0: 79 20 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78  y were plain tex
ce00: 74 20 28 69 2e 65 2e 20 6e 6f 74 20 3c 73 65 65  t (i.e. not <see
ce10: 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
ce20: 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 68  >,..      /// wh
ce30: 69 63 68 20 69 73 20 74 68 65 20 6c 65 67 61 63  ich is the legac
ce40: 79 20 62 65 68 61 76 69 6f 72 29 2e 0d 0a 20 20  y behavior)...  
ce50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ce60: 79 3e 0d 0a 20 20 20 20 20 20 47 65 74 44 65 63  y>..      GetDec
ce70: 69 6d 61 6c 41 73 54 65 78 74 20 3d 20 30 78 32  imalAsText = 0x2
ce80: 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20  0000000000,.... 
ce90: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
cea0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
ceb0: 65 6e 20 62 69 6e 64 69 6e 67 20 3c 73 65 65 20  en binding <see 
cec0: 63 72 65 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f  cref="Decimal" /
ced0: 3e 20 70 61 72 61 6d 65 74 65 72 20 76 61 6c 75  > parameter valu
cee0: 65 73 2c 20 61 6c 77 61 79 73 20 75 73 65 0d 0a  es, always use..
cef0: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e        /// the in
cf00: 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20  variant culture 
cf10: 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 20  when converting 
cf20: 74 68 65 69 72 20 76 61 6c 75 65 73 20 74 6f 20  their values to 
cf30: 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  strings...      
cf40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cf50: 20 20 20 20 20 20 42 69 6e 64 49 6e 76 61 72 69        BindInvari
cf60: 61 6e 74 44 65 63 69 6d 61 6c 20 3d 20 30 78 34  antDecimal = 0x4
cf70: 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20  0000000000,.... 
cf80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
cf90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
cfa0: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 3c 73 65  en returning <se
cfb0: 65 20 63 72 65 66 3d 22 44 65 63 69 6d 61 6c 22  e cref="Decimal"
cfc0: 20 2f 3e 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65   /> column value
cfd0: 73 2c 20 61 6c 77 61 79 73 20 75 73 65 0d 0a 20  s, always use.. 
cfe0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 76       /// the inv
cff0: 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77  ariant culture w
d000: 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 20 74  hen converting t
d010: 68 65 69 72 20 76 61 6c 75 65 73 20 66 72 6f 6d  heir values from
d020: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20   strings...     
d030: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d040: 0a 20 20 20 20 20 20 47 65 74 49 6e 76 61 72 69  .      GetInvari
d050: 61 6e 74 44 65 63 69 6d 61 6c 20 3d 20 30 78 38  antDecimal = 0x8
d060: 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20  0000000000,.... 
d070: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
d080: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 62  y>..      /// <b
d090: 3e 45 58 50 45 52 49 4d 45 4e 54 41 4c 3c 2f 62  >EXPERIMENTAL</b
d0a0: 3e 20 2d 2d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  > --..      /// 
d0b0: 45 6e 61 62 6c 65 20 77 61 69 74 69 6e 67 20 66  Enable waiting f
d0c0: 6f 72 20 74 68 65 20 65 6e 6c 69 73 74 6d 65 6e  or the enlistmen
d0d0: 74 20 74 6f 20 62 65 20 72 65 73 65 74 20 70 72  t to be reset pr
d0e0: 69 6f 72 20 74 6f 20 61 74 74 65 6d 70 74 69 6e  ior to attemptin
d0f0: 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  g..      /// to 
d100: 63 72 65 61 74 65 20 61 20 6e 65 77 20 65 6e 6c  create a new enl
d110: 69 73 74 6d 65 6e 74 2e 20 20 54 68 69 73 20 6d  istment.  This m
d120: 61 79 20 62 65 20 6e 65 63 65 73 73 61 72 79 20  ay be necessary 
d130: 64 75 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  due to the..    
d140: 20 20 2f 2f 2f 20 73 65 6d 61 6e 74 69 63 73 20    /// semantics 
d150: 75 73 65 64 20 62 79 20 64 69 73 74 72 69 62 75  used by distribu
d160: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
d170: 2c 20 77 68 69 63 68 20 63 6f 6d 70 6c 65 74 65  , which complete
d180: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 79 6e  ..      /// asyn
d190: 63 68 72 6f 6e 6f 75 73 6c 79 2e 0d 0a 20 20 20  chronously...   
d1a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d1b0: 3e 0d 0a 20 20 20 20 20 20 57 61 69 74 46 6f 72  >..      WaitFor
d1c0: 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73 65 74 20  EnlistmentReset 
d1d0: 3d 20 30 78 31 30 30 30 30 30 30 30 30 30 30 30  = 0x100000000000
d1e0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
d1f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d200: 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64 69 6e 67  /// When binding
d210: 20 70 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65   parameter value
d220: 73 20 6f 72 20 72 65 74 75 72 6e 69 6e 67 20 63  s or returning c
d230: 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c  olumn values, al
d240: 77 61 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ways..      /// 
d250: 74 72 65 61 74 20 74 68 65 6d 20 61 73 20 74 68  treat them as th
d260: 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 20 70  ough they were p
d270: 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20  lain text (i.e. 
d280: 6e 6f 20 6e 75 6d 65 72 69 63 2c 0d 0a 20 20 20  no numeric,..   
d290: 20 20 20 2f 2f 2f 20 64 61 74 65 2f 74 69 6d 65     /// date/time
d2a0: 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76 65  , or other conve
d2b0: 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65  rsions should be
d2c0: 20 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20   attempted)...  
d2d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d2e0: 79 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64 41 6e  y>..      BindAn
d2f0: 64 47 65 74 41 6c 6c 41 73 54 65 78 74 20 3d 20  dGetAllAsText = 
d300: 42 69 6e 64 41 6c 6c 41 73 54 65 78 74 20 7c 20  BindAllAsText | 
d310: 47 65 74 41 6c 6c 41 73 54 65 78 74 2c 0d 0a 0d  GetAllAsText,...
d320: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
d330: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d340: 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72  When binding par
d350: 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61  ameter values, a
d360: 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 69 6e  lways use the in
d370: 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20  variant culture 
d380: 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  when..      /// 
d390: 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72  converting their
d3a0: 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e   values to strin
d3b0: 67 73 20 6f 72 20 66 72 6f 6d 20 73 74 72 69 6e  gs or from strin
d3c0: 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  gs...      /// <
d3d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
d3e0: 20 43 6f 6e 76 65 72 74 41 6e 64 42 69 6e 64 49   ConvertAndBindI
d3f0: 6e 76 61 72 69 61 6e 74 54 65 78 74 20 3d 20 43  nvariantText = C
d400: 6f 6e 76 65 72 74 49 6e 76 61 72 69 61 6e 74 54  onvertInvariantT
d410: 65 78 74 20 7c 20 42 69 6e 64 49 6e 76 61 72 69  ext | BindInvari
d420: 61 6e 74 54 65 78 74 2c 0d 0a 0d 0a 20 20 20 20  antText,....    
d430: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d440: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
d450: 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65  binding paramete
d460: 72 20 76 61 6c 75 65 73 20 6f 72 20 72 65 74 75  r values or retu
d470: 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c  rning column val
d480: 75 65 73 2c 20 61 6c 77 61 79 73 0d 0a 20 20 20  ues, always..   
d490: 20 20 20 2f 2f 2f 20 74 72 65 61 74 20 74 68 65     /// treat the
d4a0: 6d 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79  m as though they
d4b0: 20 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74   were plain text
d4c0: 20 28 69 2e 65 2e 20 6e 6f 20 6e 75 6d 65 72 69   (i.e. no numeri
d4d0: 63 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61  c,..      /// da
d4e0: 74 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65  te/time, or othe
d4f0: 72 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68  r conversions sh
d500: 6f 75 6c 64 20 62 65 20 61 74 74 65 6d 70 74 65  ould be attempte
d510: 64 29 20 61 6e 64 20 61 6c 77 61 79 73 0d 0a 20  d) and always.. 
d520: 20 20 20 20 20 2f 2f 2f 20 75 73 65 20 74 68 65       /// use the
d530: 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75   invariant cultu
d540: 72 65 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  re when converti
d550: 6e 67 20 74 68 65 69 72 20 76 61 6c 75 65 73 20  ng their values 
d560: 74 6f 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20  to strings...   
d570: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d580: 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64 41 6e 64  >..      BindAnd
d590: 47 65 74 41 6c 6c 41 73 49 6e 76 61 72 69 61 6e  GetAllAsInvarian
d5a0: 74 54 65 78 74 20 3d 20 42 69 6e 64 41 6e 64 47  tText = BindAndG
d5b0: 65 74 41 6c 6c 41 73 54 65 78 74 20 7c 20 42 69  etAllAsText | Bi
d5c0: 6e 64 49 6e 76 61 72 69 61 6e 74 54 65 78 74 2c  ndInvariantText,
d5d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
d5e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
d5f0: 2f 2f 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20  // When binding 
d600: 70 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73  parameter values
d610: 20 6f 72 20 72 65 74 75 72 6e 69 6e 67 20 63 6f   or returning co
d620: 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77  lumn values, alw
d630: 61 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ays..      /// t
d640: 72 65 61 74 20 74 68 65 6d 20 61 73 20 74 68 6f  reat them as tho
d650: 75 67 68 20 74 68 65 79 20 77 65 72 65 20 70 6c  ugh they were pl
d660: 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e  ain text (i.e. n
d670: 6f 20 6e 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20  o numeric,..    
d680: 20 20 2f 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c    /// date/time,
d690: 20 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76 65 72   or other conver
d6a0: 73 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20  sions should be 
d6b0: 61 74 74 65 6d 70 74 65 64 29 20 61 6e 64 20 61  attempted) and a
d6c0: 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  lways..      ///
d6d0: 20 75 73 65 20 74 68 65 20 69 6e 76 61 72 69 61   use the invaria
d6e0: 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20  nt culture when 
d6f0: 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72  converting their
d700: 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e   values to strin
d710: 67 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72  gs..      /// or
d720: 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d 0a   from strings...
d730: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d740: 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 76  ary>..      Conv
d750: 65 72 74 41 6e 64 42 69 6e 64 41 6e 64 47 65 74  ertAndBindAndGet
d760: 41 6c 6c 41 73 49 6e 76 61 72 69 61 6e 74 54 65  AllAsInvariantTe
d770: 78 74 20 3d 20 42 69 6e 64 41 6e 64 47 65 74 41  xt = BindAndGetA
d780: 6c 6c 41 73 54 65 78 74 20 7c 0d 0a 20 20 20 20  llAsText |..    
d790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7b0: 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65             Conve
d7c0: 72 74 41 6e 64 42 69 6e 64 49 6e 76 61 72 69 61  rtAndBindInvaria
d7d0: 6e 74 54 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20  ntText,....     
d7e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d7f0: 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65        /// Enable
d800: 73 20 75 73 65 20 6f 66 20 61 6c 6c 20 70 65 72  s use of all per
d810: 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c 75  -connection valu
d820: 65 20 68 61 6e 64 6c 69 6e 67 20 63 61 6c 6c 62  e handling callb
d830: 61 63 6b 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  acks...      ///
d840: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d850: 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e     UseConnection
d860: 41 6c 6c 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  AllValueCallback
d870: 73 20 3d 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f  s = UseConnectio
d880: 6e 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61  nBindValueCallba
d890: 63 6b 73 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  cks |..         
d8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 73                Us
d8c0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 52 65 61 64 56  eConnectionReadV
d8d0: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 2c 0d 0a  alueCallbacks,..
d8e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
d8f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d900: 20 45 6e 61 62 6c 65 73 20 75 73 65 20 6f 66 20   Enables use of 
d910: 61 6c 6c 20 61 70 70 6c 69 63 61 62 6c 65 20 3c  all applicable <
d920: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
d930: 50 61 72 61 6d 65 74 65 72 22 20 2f 3e 0d 0a 20  Parameter" />.. 
d940: 20 20 20 20 20 2f 2f 2f 20 70 72 6f 70 65 72 74       /// propert
d950: 69 65 73 20 61 73 20 66 61 6c 6c 62 61 63 6b 73  ies as fallbacks
d960: 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73   for the databas
d970: 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20  e type name...  
d980: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d990: 79 3e 0d 0a 20 20 20 20 20 20 55 73 65 50 61 72  y>..      UsePar
d9a0: 61 6d 65 74 65 72 41 6e 79 74 68 69 6e 67 46 6f  ameterAnythingFo
d9b0: 72 54 79 70 65 4e 61 6d 65 20 3d 20 55 73 65 50  rTypeName = UseP
d9c0: 61 72 61 6d 65 74 65 72 4e 61 6d 65 46 6f 72 54  arameterNameForT
d9d0: 79 70 65 4e 61 6d 65 20 7c 0d 0a 20 20 20 20 20  ypeName |..     
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da00: 20 20 20 55 73 65 50 61 72 61 6d 65 74 65 72 44     UseParameterD
da10: 62 54 79 70 65 46 6f 72 54 79 70 65 4e 61 6d 65  bTypeForTypeName
da20: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
da30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
da40: 2f 2f 2f 20 45 6e 61 62 6c 65 20 61 6c 6c 20 6c  /// Enable all l
da50: 6f 67 67 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  ogging...      /
da60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23  // </summary>..#
da70: 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55  if INTEROP_VIRTU
da80: 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20 20  AL_TABLE..      
da90: 4c 6f 67 41 6c 6c 20 3d 20 4c 6f 67 50 72 65 70  LogAll = LogPrep
daa0: 61 72 65 20 7c 20 4c 6f 67 50 72 65 42 69 6e 64  are | LogPreBind
dab0: 20 7c 20 4c 6f 67 42 69 6e 64 20 7c 0d 0a 20 20   | LogBind |..  
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67               Log
dad0: 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69 6f  CallbackExceptio
dae0: 6e 20 7c 20 4c 6f 67 42 61 63 6b 75 70 20 7c 20  n | LogBackup | 
daf0: 4c 6f 67 4d 6f 64 75 6c 65 45 72 72 6f 72 20 7c  LogModuleError |
db00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db10: 20 4c 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74   LogModuleExcept
db20: 69 6f 6e 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ion,..#else..   
db30: 20 20 20 4c 6f 67 41 6c 6c 20 3d 20 4c 6f 67 50     LogAll = LogP
db40: 72 65 70 61 72 65 20 7c 20 4c 6f 67 50 72 65 42  repare | LogPreB
db50: 69 6e 64 20 7c 20 4c 6f 67 42 69 6e 64 20 7c 0d  ind | LogBind |.
db60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
db70: 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70  LogCallbackExcep
db80: 74 69 6f 6e 20 7c 20 4c 6f 67 42 61 63 6b 75 70  tion | LogBackup
db90: 2c 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ,..#endif....   
dba0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
dbb0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
dbc0: 64 65 66 61 75 6c 74 20 6c 6f 67 67 69 6e 67 20  default logging 
dbd0: 72 65 6c 61 74 65 64 20 66 6c 61 67 73 20 66 6f  related flags fo
dbe0: 72 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e  r new connection
dbf0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
dc00: 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 49 4e  summary>..#if IN
dc10: 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41  TEROP_VIRTUAL_TA
dc20: 42 4c 45 0d 0a 20 20 20 20 20 20 4c 6f 67 44 65  BLE..      LogDe
dc30: 66 61 75 6c 74 20 3d 20 4c 6f 67 43 61 6c 6c 62  fault = LogCallb
dc40: 61 63 6b 45 78 63 65 70 74 69 6f 6e 20 7c 20 4c  ackException | L
dc50: 6f 67 4d 6f 64 75 6c 65 45 78 63 65 70 74 69 6f  ogModuleExceptio
dc60: 6e 2c 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  n,..#else..     
dc70: 20 4c 6f 67 44 65 66 61 75 6c 74 20 3d 20 4c 6f   LogDefault = Lo
dc80: 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69  gCallbackExcepti
dc90: 6f 6e 2c 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  on,..#endif.... 
dca0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
dcb0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
dcc0: 65 20 64 65 66 61 75 6c 74 20 65 78 74 72 61 20  e default extra 
dcd0: 66 6c 61 67 73 20 66 6f 72 20 6e 65 77 20 63 6f  flags for new co
dce0: 6e 6e 65 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  nnections...    
dcf0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
dd00: 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20  ..      Default 
dd10: 3d 20 4c 6f 67 44 65 66 61 75 6c 74 20 7c 20 42  = LogDefault | B
dd20: 69 6e 64 49 6e 76 61 72 69 61 6e 74 44 65 63 69  indInvariantDeci
dd30: 6d 61 6c 20 7c 20 47 65 74 49 6e 76 61 72 69 61  mal | GetInvaria
dd40: 6e 74 44 65 63 69 6d 61 6c 2c 0d 0a 0d 0a 20 20  ntDecimal,....  
dd50: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
dd60: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
dd70: 20 64 65 66 61 75 6c 74 20 65 78 74 72 61 20 66   default extra f
dd80: 6c 61 67 73 20 66 6f 72 20 6e 65 77 20 63 6f 6e  lags for new con
dd90: 6e 65 63 74 69 6f 6e 73 20 77 69 74 68 20 61 6c  nections with al
dda0: 6c 20 6c 6f 67 67 69 6e 67 20 65 6e 61 62 6c 65  l logging enable
ddb0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
ddc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ddd0: 44 65 66 61 75 6c 74 41 6e 64 4c 6f 67 41 6c 6c  DefaultAndLogAll
dde0: 20 3d 20 44 65 66 61 75 6c 74 20 7c 20 4c 6f 67   = Default | Log
ddf0: 41 6c 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  All..  }....  //
de00: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
de10: 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65  // These are the
de20: 20 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 66 69   supported confi
de30: 67 75 72 61 74 69 6f 6e 20 76 65 72 62 73 20 66  guration verbs f
de40: 6f 72 20 75 73 65 20 77 69 74 68 20 74 68 65 20  or use with the 
de50: 6e 61 74 69 76 65 0d 0a 20 20 2f 2f 2f 20 53 51  native..  /// SQ
de60: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 54  Lite library.  T
de70: 68 65 79 20 61 72 65 20 75 73 65 64 20 77 69 74  hey are used wit
de80: 68 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  h the..  /// <se
de90: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
dea0: 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 43 6f 6e 66  nnection.SetConf
deb0: 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f 6e 22  igurationOption"
dec0: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 2f   /> method...  /
ded0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
dee0: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
def0: 69 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e  iteConfigDbOpsEn
df00: 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f  um..  {..    ///
df10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
df20: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
df30: 65 70 72 65 73 65 6e 74 73 20 61 6e 20 75 6e 6b  epresents an unk
df40: 6e 6f 77 6e 20 28 6f 72 20 69 6e 76 61 6c 69 64  nown (or invalid
df50: 29 20 6f 70 74 69 6f 6e 2c 20 64 6f 20 6e 6f 74  ) option, do not
df60: 20 75 73 65 20 69 74 2e 0d 0a 20 20 20 20 2f 2f   use it...    //
df70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
df80: 20 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49    SQLITE_DBCONFI
df90: 47 5f 4e 4f 4e 45 20 3d 20 30 2c 20 2f 2f 20 6e  G_NONE = 0, // n
dfa0: 69 6c 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  il....    /// <s
dfb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
dfc0: 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
dfd0: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 73 75  not currently su
dfe0: 70 70 6f 72 74 65 64 20 62 79 20 53 79 73 74 65  pported by Syste
dff0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 20 20  m.Data.SQLite.  
e000: 49 74 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 79 20  It..    /// may 
e010: 62 65 20 73 75 70 70 6f 72 74 65 64 20 69 6e 20  be supported in 
e020: 74 68 65 20 66 75 74 75 72 65 2e 0d 0a 20 20 20  the future...   
e030: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e040: 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f  .    SQLITE_DBCO
e050: 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 3d  NFIG_LOOKASIDE =
e060: 20 31 30 30 31 2c 20 2f 2f 20 76 6f 69 64 2a 20   1001, // void* 
e070: 69 6e 74 20 69 6e 74 0d 0a 0d 0a 20 20 20 20 2f  int int....    /
e080: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e090: 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f    /// This optio
e0a0: 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61  n is used to ena
e0b0: 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74  ble or disable t
e0c0: 68 65 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  he enforcement o
e0d0: 66 0d 0a 20 20 20 20 2f 2f 2f 20 66 6f 72 65 69  f..    /// forei
e0e0: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
e0f0: 74 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ts...    /// </s
e100: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c  ummary>..    SQL
e110: 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
e120: 42 4c 45 5f 46 4b 45 59 20 3d 20 31 30 30 32 2c  BLE_FKEY = 1002,
e130: 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 0d 0a   // int int*....
e140: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e150: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
e160: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
e170: 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
e180: 62 6c 65 20 74 72 69 67 67 65 72 73 2e 0d 0a 20  ble triggers... 
e190: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e1a0: 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42  >..    SQLITE_DB
e1b0: 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52  CONFIG_ENABLE_TR
e1c0: 49 47 47 45 52 20 3d 20 31 30 30 33 2c 20 2f 2f  IGGER = 1003, //
e1d0: 20 69 6e 74 20 69 6e 74 2a 0d 0a 0d 0a 20 20 20   int int*....   
e1e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e1f0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74      /// This opt
e200: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65  ion is used to e
e210: 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65  nable or disable
e220: 20 74 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e   the two-argumen
e230: 74 20 76 65 72 73 69 6f 6e 0d 0a 20 20 20 20 2f  t version..    /
e240: 2f 2f 20 6f 66 20 74 68 65 20 66 74 73 33 5f 74  // of the fts3_t
e250: 6f 6b 65 6e 69 7a 65 72 28 29 20 66 75 6e 63 74  okenizer() funct
e260: 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61 72  ion which is par
e270: 74 20 6f 66 20 74 68 65 20 46 54 53 33 20 66 75  t of the FTS3 fu
e280: 6c 6c 2d 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f  ll-text..    ///
e290: 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 65   search engine e
e2a0: 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  xtension...    /
e2b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e2c0: 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46     SQLITE_DBCONF
e2d0: 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54  IG_ENABLE_FTS3_T
e2e0: 4f 4b 45 4e 49 5a 45 52 20 3d 20 31 30 30 34 2c  OKENIZER = 1004,
e2f0: 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 0d 0a   // int int*....
e300: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e310: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
e320: 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
e330: 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
e340: 62 6c 65 20 74 68 65 20 6c 6f 61 64 69 6e 67 20  ble the loading 
e350: 6f 66 20 65 78 74 65 6e 73 69 6f 6e 73 2e 0d 0a  of extensions...
e360: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e370: 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 44  y>..    SQLITE_D
e380: 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 4c  BCONFIG_ENABLE_L
e390: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 20 3d 20  OAD_EXTENSION = 
e3a0: 31 30 30 35 20 2f 2f 20 69 6e 74 20 69 6e 74 2a  1005 // int int*
e3b0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 20 54 68  ..  }....  // Th
e3c0: 65 73 65 20 61 72 65 20 74 68 65 20 6f 70 74 69  ese are the opti
e3d0: 6f 6e 73 20 74 6f 20 74 68 65 20 69 6e 74 65 72  ons to the inter
e3e0: 6e 61 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  nal sqlite3_conf
e3f0: 69 67 20 63 61 6c 6c 2e 0d 0a 20 20 69 6e 74 65  ig call...  inte
e400: 72 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65  rnal enum SQLite
e410: 43 6f 6e 66 69 67 4f 70 73 45 6e 75 6d 0d 0a 20  ConfigOpsEnum.. 
e420: 20 7b 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43   {..    SQLITE_C
e430: 4f 4e 46 49 47 5f 4e 4f 4e 45 20 3d 20 30 2c 20  ONFIG_NONE = 0, 
e440: 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51 4c 49  // nil..    SQLI
e450: 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
e460: 54 48 52 45 41 44 20 3d 20 31 2c 20 2f 2f 20 6e  THREAD = 1, // n
e470: 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  il..    SQLITE_C
e480: 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
e490: 44 20 3d 20 32 2c 20 2f 2f 20 6e 69 6c 0d 0a 20  D = 2, // nil.. 
e4a0: 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
e4b0: 5f 53 45 52 49 41 4c 49 5a 45 44 20 3d 20 33 2c  _SERIALIZED = 3,
e4c0: 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51 4c   // nil..    SQL
e4d0: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f  ITE_CONFIG_MALLO
e4e0: 43 20 3d 20 34 2c 20 2f 2f 20 73 71 6c 69 74 65  C = 4, // sqlite
e4f0: 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 0d 0a  3_mem_methods*..
e500: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
e510: 47 5f 47 45 54 4d 41 4c 4c 4f 43 20 3d 20 35 2c  G_GETMALLOC = 5,
e520: 20 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f   // sqlite3_mem_
e530: 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51  methods*..    SQ
e540: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41  LITE_CONFIG_SCRA
e550: 54 43 48 20 3d 20 36 2c 20 2f 2f 20 76 6f 69 64  TCH = 6, // void
e560: 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74 20 4e  *, int sz, int N
e570: 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
e580: 46 49 47 5f 50 41 47 45 43 41 43 48 45 20 3d 20  FIG_PAGECACHE = 
e590: 37 2c 20 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74  7, // void*, int
e5a0: 20 73 7a 2c 20 69 6e 74 20 4e 0d 0a 20 20 20 20   sz, int N..    
e5b0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
e5c0: 41 50 20 3d 20 38 2c 20 2f 2f 20 76 6f 69 64 2a  AP = 8, // void*
e5d0: 2c 20 69 6e 74 20 6e 42 79 74 65 2c 20 69 6e 74  , int nByte, int
e5e0: 20 6d 69 6e 0d 0a 20 20 20 20 53 51 4c 49 54 45   min..    SQLITE
e5f0: 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55  _CONFIG_MEMSTATU
e600: 53 20 3d 20 39 2c 20 2f 2f 20 62 6f 6f 6c 65 61  S = 9, // boolea
e610: 6e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  n..    SQLITE_CO
e620: 4e 46 49 47 5f 4d 55 54 45 58 20 3d 20 31 30 2c  NFIG_MUTEX = 10,
e630: 20 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 75 74 65   // sqlite3_mute
e640: 78 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20  x_methods*..    
e650: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
e660: 54 4d 55 54 45 58 20 3d 20 31 31 2c 20 2f 2f 20  TMUTEX = 11, // 
e670: 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
e680: 74 68 6f 64 73 2a 0d 0a 20 20 20 20 2f 2f 20 70  thods*..    // p
e690: 72 65 76 69 6f 75 73 6c 79 20 53 51 4c 49 54 45  reviously SQLITE
e6a0: 5f 43 4f 4e 46 49 47 5f 43 48 55 4e 4b 41 4c 4c  _CONFIG_CHUNKALL
e6b0: 4f 43 20 31 32 20 77 68 69 63 68 20 69 73 20 6e  OC 12 which is n
e6c0: 6f 77 20 75 6e 75 73 65 64 0d 0a 20 20 20 20 53  ow unused..    S
e6d0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f  QLITE_CONFIG_LOO
e6e0: 4b 41 53 49 44 45 20 3d 20 31 33 2c 20 2f 2f 20  KASIDE = 13, // 
e6f0: 69 6e 74 20 69 6e 74 0d 0a 20 20 20 20 53 51 4c  int int..    SQL
e700: 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
e710: 45 20 3d 20 31 34 2c 20 2f 2f 20 73 71 6c 69 74  E = 14, // sqlit
e720: 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64  e3_pcache_method
e730: 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  s*..    SQLITE_C
e740: 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 20  ONFIG_GETPCACHE 
e750: 3d 20 31 35 2c 20 2f 2f 20 73 71 6c 69 74 65 33  = 15, // sqlite3
e760: 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 2a  _pcache_methods*
e770: 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
e780: 46 49 47 5f 4c 4f 47 20 3d 20 31 36 2c 20 2f 2f  FIG_LOG = 16, //
e790: 20 78 46 75 6e 63 2c 20 76 6f 69 64 2a 0d 0a 20   xFunc, void*.. 
e7a0: 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
e7b0: 5f 55 52 49 20 3d 20 31 37 2c 20 2f 2f 20 69 6e  _URI = 17, // in
e7c0: 74 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  t..    SQLITE_CO
e7d0: 4e 46 49 47 5f 50 43 41 43 48 45 32 20 3d 20 31  NFIG_PCACHE2 = 1
e7e0: 38 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 70 63  8, // sqlite3_pc
e7f0: 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 0d 0a  ache_methods2*..
e800: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
e810: 47 5f 47 45 54 50 43 41 43 48 45 32 20 3d 20 31  G_GETPCACHE2 = 1
e820: 39 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 70 63  9, // sqlite3_pc
e830: 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 0d 0a  ache_methods2*..
e840: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
e850: 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  G_COVERING_INDEX
e860: 5f 53 43 41 4e 20 3d 20 32 30 2c 20 2f 2f 20 69  _SCAN = 20, // i
e870: 6e 74 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  nt..    SQLITE_C
e880: 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 20 3d 20 32  ONFIG_SQLLOG = 2
e890: 31 2c 20 2f 2f 20 78 53 71 6c 6c 6f 67 2c 20 76  1, // xSqllog, v
e8a0: 6f 69 64 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45  oid*..    SQLITE
e8b0: 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a  _CONFIG_MMAP_SIZ
e8c0: 45 20 3d 20 32 32 2c 20 2f 2f 20 73 71 6c 69 74  E = 22, // sqlit
e8d0: 65 33 5f 69 6e 74 36 34 2c 20 73 71 6c 69 74 65  e3_int64, sqlite
e8e0: 33 5f 69 6e 74 36 34 0d 0a 20 20 20 20 53 51 4c  3_int64..    SQL
e8f0: 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32  ITE_CONFIG_WIN32
e900: 5f 48 45 41 50 53 49 5a 45 20 3d 20 32 33 2c 20  _HEAPSIZE = 23, 
e910: 2f 2f 20 69 6e 74 20 6e 42 79 74 65 0d 0a 20 20  // int nByte..  
e920: 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
e930: 50 43 41 43 48 45 5f 48 44 52 53 5a 20 3d 20 32  PCACHE_HDRSZ = 2
e940: 34 2c 20 2f 2f 20 69 6e 74 20 2a 70 73 7a 0d 0a  4, // int *psz..
e950: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
e960: 47 5f 50 4d 41 53 5a 20 3d 20 32 35 20 2f 2f 20  G_PMASZ = 25 // 
e970: 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 7a 50  unsigned int szP
e980: 6d 61 0d 0a 20 20 7d 0d 0a 7d 0d 0a              ma..  }..}..