System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f896f4a9772e9fb4e10dc99763e67bf8801190c2:


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 63  / <param name="c
1900: 61 6e 54 68 72 6f 77 22 3e 4e 6f 6e 2d 7a 65 72  anThrow">Non-zer
1910: 6f 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69  o if the operati
1920: 6f 6e 20 69 73 20 61 6c 6c 6f 77 65 64 20 74 6f  on is allowed to
1930: 20 74 68 72 6f 77 20 65 78 63 65 70 74 69 6f 6e   throw exception
1940: 73 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  s, zero otherwis
1950: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
1960: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
1970: 74 20 76 6f 69 64 20 43 6c 6f 73 65 28 62 6f 6f  t void Close(boo
1980: 6c 20 63 61 6e 54 68 72 6f 77 29 3b 0d 0a 20 20  l canThrow);..  
1990: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
19a0: 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68  .    /// Sets th
19b0: 65 20 62 75 73 79 20 74 69 6d 65 6f 75 74 20 6f  e busy timeout o
19c0: 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  n the connection
19d0: 2e 20 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  .  SQLiteCommand
19e0: 20 77 69 6c 6c 20 63 61 6c 6c 20 74 68 69 73 20   will call this 
19f0: 62 65 66 6f 72 65 20 65 78 65 63 75 74 69 6e 67  before executing
1a00: 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 2e 0d 0a 20   any command... 
1a10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1a20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1a30: 6d 20 6e 61 6d 65 3d 22 6e 54 69 6d 65 6f 75 74  m name="nTimeout
1a40: 4d 53 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  MS">The number o
1a50: 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 74  f milliseconds t
1a60: 6f 20 77 61 69 74 20 62 65 66 6f 72 65 20 72 65  o wait before re
1a70: 74 75 72 6e 69 6e 67 20 53 51 4c 49 54 45 5f 42  turning SQLITE_B
1a80: 55 53 59 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  USY</param>..   
1a90: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
1aa0: 63 74 20 76 6f 69 64 20 53 65 74 54 69 6d 65 6f  ct void SetTimeo
1ab0: 75 74 28 69 6e 74 20 6e 54 69 6d 65 6f 75 74 4d  ut(int nTimeoutM
1ac0: 53 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  S);..    /// <su
1ad0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1ae0: 52 65 74 75 72 6e 73 20 74 68 65 20 74 65 78 74  Returns the text
1af0: 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 72 72   of the last err
1b00: 6f 72 20 69 73 73 75 65 64 20 62 79 20 53 51 4c  or issued by SQL
1b10: 69 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ite..    /// </s
1b20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1b30: 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75   <returns></retu
1b40: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
1b50: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
1b60: 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28  ng GetLastError(
1b70: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
1b80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1b90: 20 52 65 74 75 72 6e 73 20 74 68 65 20 74 65 78   Returns the tex
1ba0: 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 72  t of the last er
1bb0: 72 6f 72 20 69 73 73 75 65 64 20 62 79 20 53 51  ror issued by SQ
1bc0: 4c 69 74 65 20 2d 4f 52 2d 20 74 68 65 20 73 70  Lite -OR- the sp
1bd0: 65 63 69 66 69 65 64 20 64 65 66 61 75 6c 74 20  ecified default 
1be0: 65 72 72 6f 72 20 74 65 78 74 20 69 66 0d 0a 20  error text if.. 
1bf0: 20 20 20 2f 2f 2f 20 6e 6f 6e 65 20 69 73 20 61     /// none is a
1c00: 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20 74 68  vailable from th
1c10: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1c20: 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  brary...    /// 
1c30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1c40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c50: 22 64 65 66 56 61 6c 75 65 22 3e 0d 0a 20 20 20  "defValue">..   
1c60: 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 74   /// The error t
1c70: 65 78 74 20 74 6f 20 72 65 74 75 72 6e 20 69 6e  ext to return in
1c80: 20 74 68 65 20 65 76 65 6e 74 20 74 68 61 74 20   the event that 
1c90: 6f 6e 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c  one is not avail
1ca0: 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 53 51  able from the SQ
1cb0: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
1cc0: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  y...    /// </pa
1cd0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1ce0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
1cf0: 20 54 68 65 20 65 72 72 6f 72 20 74 65 78 74 2e   The error text.
1d00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
1d10: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
1d20: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
1d30: 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28  ng GetLastError(
1d40: 73 74 72 69 6e 67 20 64 65 66 56 61 6c 75 65 29  string defValue)
1d50: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
1d60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1d70: 57 68 65 6e 20 70 6f 6f 6c 69 6e 67 20 69 73 20  When pooling is 
1d80: 65 6e 61 62 6c 65 64 2c 20 66 6f 72 63 65 20 74  enabled, force t
1d90: 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  his connection t
1da0: 6f 20 62 65 20 64 69 73 70 6f 73 65 64 20 72 61  o be disposed ra
1db0: 74 68 65 72 20 74 68 61 6e 20 72 65 74 75 72 6e  ther than return
1dc0: 65 64 20 74 6f 20 74 68 65 20 70 6f 6f 6c 0d 0a  ed to the pool..
1dd0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1de0: 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
1df0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 43   abstract void C
1e00: 6c 65 61 72 50 6f 6f 6c 28 29 3b 0d 0a 0d 0a 20  learPool();.... 
1e10: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1e20: 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 70  ..    /// When p
1e30: 6f 6f 6c 69 6e 67 20 69 73 20 65 6e 61 62 6c 65  ooling is enable
1e40: 64 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  d, returns the n
1e50: 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c 20 65 6e  umber of pool en
1e60: 74 72 69 65 73 20 6d 61 74 63 68 69 6e 67 20 74  tries matching t
1e70: 68 65 20 63 75 72 72 65 6e 74 20 66 69 6c 65 20  he current file 
1e80: 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  name...    /// <
1e90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ea0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
1eb0: 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c 20 65  number of pool e
1ec0: 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e 67 20  ntries matching 
1ed0: 74 68 65 20 63 75 72 72 65 6e 74 20 66 69 6c 65  the current file
1ee0: 20 6e 61 6d 65 2e 3c 2f 72 65 74 75 72 6e 73 3e   name.</returns>
1ef0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
1f00: 62 73 74 72 61 63 74 20 69 6e 74 20 43 6f 75 6e  bstract int Coun
1f10: 74 50 6f 6f 6c 28 29 3b 0d 0a 0d 0a 20 20 20 20  tPool();....    
1f20: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1f30: 20 20 20 2f 2f 2f 20 50 72 65 70 61 72 65 73 20     /// Prepares 
1f40: 61 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  a SQL statement 
1f50: 66 6f 72 20 65 78 65 63 75 74 69 6f 6e 2e 0d 0a  for execution...
1f60: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f70: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
1f80: 61 6d 20 6e 61 6d 65 3d 22 63 6e 6e 22 3e 54 68  am name="cnn">Th
1f90: 65 20 73 6f 75 72 63 65 20 63 6f 6e 6e 65 63 74  e source connect
1fa0: 69 6f 6e 20 70 72 65 70 61 72 69 6e 67 20 74 68  ion preparing th
1fb0: 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 43 61 6e 20  e command.  Can 
1fc0: 62 65 20 6e 75 6c 6c 20 66 6f 72 20 61 6e 79 20  be null for any 
1fd0: 63 61 6c 6c 65 72 20 65 78 63 65 70 74 20 4c 49  caller except LI
1fe0: 4e 51 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  NQ</param>..    
1ff0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2000: 22 73 74 72 53 71 6c 22 3e 54 68 65 20 53 51 4c  "strSql">The SQL
2010: 20 63 6f 6d 6d 61 6e 64 20 74 65 78 74 20 74 6f   command text to
2020: 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61 6d 3e   prepare</param>
2030: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2040: 20 6e 61 6d 65 3d 22 70 72 65 76 69 6f 75 73 22   name="previous"
2050: 3e 54 68 65 20 70 72 65 76 69 6f 75 73 20 73 74  >The previous st
2060: 61 74 65 6d 65 6e 74 20 69 6e 20 61 20 6d 75 6c  atement in a mul
2070: 74 69 2d 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  ti-statement com
2080: 6d 61 6e 64 2c 20 6f 72 20 6e 75 6c 6c 20 69 66  mand, or null if
2090: 20 6e 6f 20 70 72 65 76 69 6f 75 73 20 73 74 61   no previous sta
20a0: 74 65 6d 65 6e 74 20 65 78 69 73 74 73 3c 2f 70  tement exists</p
20b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
20c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69 6d 65  param name="time
20d0: 6f 75 74 4d 53 22 3e 54 68 65 20 74 69 6d 65 6f  outMS">The timeo
20e0: 75 74 20 74 6f 20 77 61 69 74 20 62 65 66 6f 72  ut to wait befor
20f0: 65 20 61 62 6f 72 74 69 6e 67 20 74 68 65 20 70  e aborting the p
2100: 72 65 70 61 72 65 3c 2f 70 61 72 61 6d 3e 0d 0a  repare</param>..
2110: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2120: 61 6d 65 3d 22 73 74 72 52 65 6d 61 69 6e 22 3e  ame="strRemain">
2130: 54 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  The remainder of
2140: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74   the statement t
2150: 68 61 74 20 77 61 73 20 6e 6f 74 20 70 72 6f 63  hat was not proc
2160: 65 73 73 65 64 2e 20 20 45 61 63 68 20 63 61 6c  essed.  Each cal
2170: 6c 20 74 6f 20 70 72 65 70 61 72 65 20 70 61 72  l to prepare par
2180: 73 65 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  ses the..    ///
2190: 20 53 51 4c 20 75 70 20 74 6f 20 74 6f 20 65 69   SQL up to to ei
21a0: 74 68 65 72 20 74 68 65 20 65 6e 64 20 6f 66 20  ther the end of 
21b0: 74 68 65 20 74 65 78 74 20 6f 72 20 74 6f 20 74  the text or to t
21c0: 68 65 20 66 69 72 73 74 20 73 65 6d 69 2d 63 6f  he first semi-co
21d0: 6c 6f 6e 20 64 65 6c 69 6d 69 74 65 72 2e 20 20  lon delimiter.  
21e0: 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 74 65  The remaining te
21f0: 78 74 20 69 73 20 72 65 74 75 72 6e 65 64 0d 0a  xt is returned..
2200: 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 66 6f 72      /// here for
2210: 20 61 20 73 75 62 73 65 71 75 65 6e 74 20 63 61   a subsequent ca
2220: 6c 6c 20 74 6f 20 50 72 65 70 61 72 65 28 29 20  ll to Prepare() 
2230: 75 6e 74 69 6c 20 61 6c 6c 20 74 68 65 20 74 65  until all the te
2240: 78 74 20 68 61 73 20 62 65 65 6e 20 70 72 6f 63  xt has been proc
2250: 65 73 73 65 64 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  essed.</param>..
2260: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2270: 3e 52 65 74 75 72 6e 73 20 61 6e 20 69 6e 69 74  >Returns an init
2280: 69 61 6c 69 7a 65 64 20 53 51 4c 69 74 65 53 74  ialized SQLiteSt
2290: 61 74 65 6d 65 6e 74 2e 3c 2f 72 65 74 75 72 6e  atement.</return
22a0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
22b0: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
22c0: 53 74 61 74 65 6d 65 6e 74 20 50 72 65 70 61 72  Statement Prepar
22d0: 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  e(SQLiteConnecti
22e0: 6f 6e 20 63 6e 6e 2c 20 73 74 72 69 6e 67 20 73  on cnn, string s
22f0: 74 72 53 71 6c 2c 20 53 51 4c 69 74 65 53 74 61  trSql, SQLiteSta
2300: 74 65 6d 65 6e 74 20 70 72 65 76 69 6f 75 73 2c  tement previous,
2310: 20 75 69 6e 74 20 74 69 6d 65 6f 75 74 4d 53 2c   uint timeoutMS,
2320: 20 72 65 66 20 73 74 72 69 6e 67 20 73 74 72 52   ref string strR
2330: 65 6d 61 69 6e 29 3b 0d 0a 20 20 20 20 2f 2f 2f  emain);..    ///
2340: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2350: 2f 2f 2f 20 53 74 65 70 73 20 74 68 72 6f 75 67  /// Steps throug
2360: 68 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61  h a prepared sta
2370: 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 2f 2f 2f  tement...    ///
2380: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2390: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
23a0: 3d 22 73 74 6d 74 22 3e 54 68 65 20 53 51 4c 69  ="stmt">The SQLi
23b0: 74 65 53 74 61 74 65 6d 65 6e 74 20 74 6f 20 73  teStatement to s
23c0: 74 65 70 20 74 68 72 6f 75 67 68 3c 2f 70 61 72  tep through</par
23d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
23e0: 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 61 20  turns>True if a 
23f0: 72 6f 77 20 77 61 73 20 72 65 74 75 72 6e 65 64  row was returned
2400: 2c 20 46 61 6c 73 65 20 69 66 20 6e 6f 74 2e 3c  , False if not.<
2410: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
2420: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
2430: 20 62 6f 6f 6c 20 53 74 65 70 28 53 51 4c 69 74   bool Step(SQLit
2440: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 29  eStatement stmt)
2450: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;..    /// <summ
2460: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
2470: 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69  turns non-zero i
2480: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
2490: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 72 65 61  statement is rea
24a0: 64 2d 6f 6e 6c 79 20 69 6e 20 6e 61 74 75 72 65  d-only in nature
24b0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
24c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
24d0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 6d 74  param name="stmt
24e0: 22 3e 54 68 65 20 73 74 61 74 65 6d 65 6e 74 20  ">The statement 
24f0: 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72 61 6d  to check.</param
2500: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
2510: 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68 65 20  rns>True if the 
2520: 6f 75 74 65 72 20 71 75 65 72 79 20 69 73 20 72  outer query is r
2530: 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 72 65 74 75 72  ead-only.</retur
2540: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
2550: 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  l abstract bool 
2560: 49 73 52 65 61 64 4f 6e 6c 79 28 53 51 4c 69 74  IsReadOnly(SQLit
2570: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 29  eStatement stmt)
2580: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;..    /// <summ
2590: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
25a0: 73 65 74 73 20 61 20 70 72 65 70 61 72 65 64 20  sets a prepared 
25b0: 73 74 61 74 65 6d 65 6e 74 20 73 6f 20 69 74 20  statement so it 
25c0: 63 61 6e 20 62 65 20 65 78 65 63 75 74 65 64 20  can be executed 
25d0: 61 67 61 69 6e 2e 20 20 49 66 20 74 68 65 20 65  again.  If the e
25e0: 72 72 6f 72 20 72 65 74 75 72 6e 65 64 20 69 73  rror returned is
25f0: 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 2c 0d   SQLITE_SCHEMA,.
2600: 0a 20 20 20 20 2f 2f 2f 20 74 72 61 6e 73 70 61  .    /// transpa
2610: 72 65 6e 74 6c 79 20 61 74 74 65 6d 70 74 20 74  rently attempt t
2620: 6f 20 72 65 62 75 69 6c 64 20 74 68 65 20 53 51  o rebuild the SQ
2630: 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 20  L statement and 
2640: 74 68 72 6f 77 20 61 6e 20 65 72 72 6f 72 20 69  throw an error i
2650: 66 20 74 68 61 74 20 77 61 73 20 6e 6f 74 20 70  f that was not p
2660: 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  ossible...    //
2670: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2680: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2690: 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 73 74 61  e="stmt">The sta
26a0: 74 65 6d 65 6e 74 20 74 6f 20 72 65 73 65 74 3c  tement to reset<
26b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
26c0: 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e   <returns>Return
26d0: 73 20 2d 31 20 69 66 20 74 68 65 20 73 63 68 65  s -1 if the sche
26e0: 6d 61 20 63 68 61 6e 67 65 64 20 77 68 69 6c 65  ma changed while
26f0: 20 72 65 73 65 74 74 69 6e 67 2c 20 30 20 69 66   resetting, 0 if
2700: 20 74 68 65 20 72 65 73 65 74 20 77 61 73 20 73   the reset was s
2710: 75 63 65 73 73 66 75 6c 20 6f 72 20 36 20 28 53  ucessful or 6 (S
2720: 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 29 20 69 66  QLITE_LOCKED) if
2730: 20 74 68 65 20 72 65 73 65 74 20 66 61 69 6c 65   the reset faile
2740: 64 20 64 75 65 20 74 6f 20 61 20 6c 6f 63 6b 3c  d due to a lock<
2750: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
2760: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
2770: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2780: 20 52 65 73 65 74 28 53 51 4c 69 74 65 53 74 61   Reset(SQLiteSta
2790: 74 65 6d 65 6e 74 20 73 74 6d 74 29 3b 0d 0a 0d  tement stmt);...
27a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
27b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65  y>..    /// Atte
27c0: 6d 70 74 73 20 74 6f 20 69 6e 74 65 72 72 75 70  mpts to interrup
27d0: 74 20 74 68 65 20 71 75 65 72 79 20 63 75 72 72  t the query curr
27e0: 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ently executing 
27f0: 6f 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  on the associate
2800: 64 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61 74 69 76  d..    /// nativ
2810: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2820: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ction...    /// 
2830: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2840: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
2850: 74 20 76 6f 69 64 20 43 61 6e 63 65 6c 28 29 3b  t void Cancel();
2860: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2870: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
2880: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 62 69 6e  his function bin
2890: 64 73 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65  ds a user-define
28a0: 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 74 68  d function to th
28b0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
28c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
28d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
28e0: 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  m name="function
28f0: 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20 20  Attribute">..   
2900: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
2910: 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69  ef="SQLiteFuncti
2920: 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e 20 6f  onAttribute"/> o
2930: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
2940: 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 2f  ontaining..    /
2950: 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74 61 20  // the metadata 
2960: 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  for the function
2970: 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d 0a 20   to be bound... 
2980: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2990: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
29a0: 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 22 3e  name="function">
29b0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73  ..    /// The <s
29c0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46  ee cref="SQLiteF
29d0: 75 6e 63 74 69 6f 6e 22 2f 3e 20 6f 62 6a 65 63  unction"/> objec
29e0: 74 20 69 6e 73 74 61 6e 63 65 20 74 68 61 74 20  t instance that 
29f0: 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 0d 0a  implements the..
2a00: 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e      /// function
2a10: 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d 0a 20   to be bound... 
2a20: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a30: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
2a40: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
2a50: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
2a60: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
2a70: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
2a80: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
2a90: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2aa0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2ab0: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2ac0: 64 46 75 6e 63 74 69 6f 6e 28 53 51 4c 69 74 65  dFunction(SQLite
2ad0: 46 75 6e 63 74 69 6f 6e 41 74 74 72 69 62 75 74  FunctionAttribut
2ae0: 65 20 66 75 6e 63 74 69 6f 6e 41 74 74 72 69 62  e functionAttrib
2af0: 75 74 65 2c 20 53 51 4c 69 74 65 46 75 6e 63 74  ute, SQLiteFunct
2b00: 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20 53 51  ion function, SQ
2b10: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2b20: 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20  ags flags);.... 
2b30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2b40: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66  ..    /// This f
2b50: 75 6e 63 74 69 6f 6e 20 75 6e 62 69 6e 64 73 20  unction unbinds 
2b60: 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66  a user-defined f
2b70: 75 6e 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65  unction from the
2b80: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
2b90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2ba0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2bb0: 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e 41   name="functionA
2bc0: 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20 20 20  ttribute">..    
2bd0: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
2be0: 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  f="SQLiteFunctio
2bf0: 6e 41 74 74 72 69 62 75 74 65 22 2f 3e 20 6f 62  nAttribute"/> ob
2c00: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
2c10: 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 2f 2f  ntaining..    //
2c20: 2f 20 74 68 65 20 6d 65 74 61 64 61 74 61 20 66  / the metadata f
2c30: 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  or the function 
2c40: 74 6f 20 62 65 20 75 6e 62 6f 75 6e 64 2e 0d 0a  to be unbound...
2c50: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2c60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2c70: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
2c80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
2c90: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
2ca0: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
2cb0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
2cc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2cd0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
2ce0: 72 6e 73 3e 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  rns>Non-zero if 
2cf0: 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 77 61 73  the function was
2d00: 20 75 6e 62 6f 75 6e 64 2e 3c 2f 72 65 74 75 72   unbound.</retur
2d10: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
2d20: 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  l abstract bool 
2d30: 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e 28 53  UnbindFunction(S
2d40: 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41 74 74  QLiteFunctionAtt
2d50: 72 69 62 75 74 65 20 66 75 6e 63 74 69 6f 6e 41  ribute functionA
2d60: 74 74 72 69 62 75 74 65 2c 20 53 51 4c 69 74 65  ttribute, SQLite
2d70: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2d80: 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 69  flags);....    i
2d90: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
2da0: 20 76 6f 69 64 20 42 69 6e 64 5f 44 6f 75 62 6c   void Bind_Doubl
2db0: 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e(SQLiteStatemen
2dc0: 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f  t stmt, SQLiteCo
2dd0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
2de0: 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  ags, int index, 
2df0: 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b 0d 0a  double value);..
2e00: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
2e10: 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64 5f  tract void Bind_
2e20: 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74 61 74  Int32(SQLiteStat
2e30: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69  ement stmt, SQLi
2e40: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
2e50: 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64  s flags, int ind
2e60: 65 78 2c 20 49 6e 74 33 32 20 76 61 6c 75 65 29  ex, Int32 value)
2e70: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
2e80: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69  abstract void Bi
2e90: 6e 64 5f 55 49 6e 74 33 32 28 53 51 4c 69 74 65  nd_UInt32(SQLite
2ea0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
2eb0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2ec0: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
2ed0: 20 69 6e 64 65 78 2c 20 55 49 6e 74 33 32 20 76   index, UInt32 v
2ee0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65  alue);..    inte
2ef0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
2f00: 69 64 20 42 69 6e 64 5f 49 6e 74 36 34 28 53 51  id Bind_Int64(SQ
2f10: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
2f20: 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  mt, SQLiteConnec
2f30: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c  tionFlags flags,
2f40: 20 69 6e 74 20 69 6e 64 65 78 2c 20 49 6e 74 36   int index, Int6
2f50: 34 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69  4 value);..    i
2f60: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
2f70: 20 76 6f 69 64 20 42 69 6e 64 5f 55 49 6e 74 36   void Bind_UInt6
2f80: 34 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  4(SQLiteStatemen
2f90: 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f  t stmt, SQLiteCo
2fa0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
2fb0: 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  ags, int index, 
2fc0: 55 49 6e 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a  UInt64 value);..
2fd0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
2fe0: 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64 5f  tract void Bind_
2ff0: 42 6f 6f 6c 65 61 6e 28 53 51 4c 69 74 65 53 74  Boolean(SQLiteSt
3000: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
3010: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3020: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
3030: 6e 64 65 78 2c 20 62 6f 6f 6c 20 76 61 6c 75 65  ndex, bool value
3040: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3050: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42   abstract void B
3060: 69 6e 64 5f 54 65 78 74 28 53 51 4c 69 74 65 53  ind_Text(SQLiteS
3070: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53  tatement stmt, S
3080: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
3090: 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20  lags flags, int 
30a0: 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20 76 61  index, string va
30b0: 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  lue);..    inter
30c0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
30d0: 64 20 42 69 6e 64 5f 42 6c 6f 62 28 53 51 4c 69  d Bind_Blob(SQLi
30e0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
30f0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
3100: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
3110: 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65 5b 5d  nt index, byte[]
3120: 20 62 6c 6f 62 44 61 74 61 29 3b 0d 0a 20 20 20   blobData);..   
3130: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3140: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44 61 74  ct void Bind_Dat
3150: 65 54 69 6d 65 28 53 51 4c 69 74 65 53 74 61 74  eTime(SQLiteStat
3160: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69  ement stmt, SQLi
3170: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
3180: 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64  s flags, int ind
3190: 65 78 2c 20 44 61 74 65 54 69 6d 65 20 64 74 29  ex, DateTime dt)
31a0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
31b0: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69  abstract void Bi
31c0: 6e 64 5f 4e 75 6c 6c 28 53 51 4c 69 74 65 53 74  nd_Null(SQLiteSt
31d0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
31e0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
31f0: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
3200: 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e  ndex);....    in
3210: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3220: 69 6e 74 20 42 69 6e 64 5f 50 61 72 61 6d 43 6f  int Bind_ParamCo
3230: 75 6e 74 28 53 51 4c 69 74 65 53 74 61 74 65 6d  unt(SQLiteStatem
3240: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
3250: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
3260: 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20 69 6e 74  flags);..    int
3270: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73  ernal abstract s
3280: 74 72 69 6e 67 20 42 69 6e 64 5f 50 61 72 61 6d  tring Bind_Param
3290: 4e 61 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65  Name(SQLiteState
32a0: 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74  ment stmt, SQLit
32b0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
32c0: 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65   flags, int inde
32d0: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
32e0: 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 42  l abstract int B
32f0: 69 6e 64 5f 50 61 72 61 6d 49 6e 64 65 78 28 53  ind_ParamIndex(S
3300: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
3310: 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  tmt, SQLiteConne
3320: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
3330: 2c 20 73 74 72 69 6e 67 20 70 61 72 61 6d 4e 61  , string paramNa
3340: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  me);....    inte
3350: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e  rnal abstract in
3360: 74 20 43 6f 6c 75 6d 6e 43 6f 75 6e 74 28 53 51  t ColumnCount(SQ
3370: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3380: 6d 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  mt);..    intern
3390: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
33a0: 6e 67 20 43 6f 6c 75 6d 6e 4e 61 6d 65 28 53 51  ng ColumnName(SQ
33b0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
33c0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
33d0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
33e0: 73 74 72 61 63 74 20 54 79 70 65 41 66 66 69 6e  stract TypeAffin
33f0: 69 74 79 20 43 6f 6c 75 6d 6e 41 66 66 69 6e 69  ity ColumnAffini
3400: 74 79 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ty(SQLiteStateme
3410: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3420: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
3430: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
3440: 6e 67 20 43 6f 6c 75 6d 6e 54 79 70 65 28 53 51  ng ColumnType(SQ
3450: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3460: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 72  mt, int index, r
3470: 65 66 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  ef TypeAffinity 
3480: 6e 41 66 66 69 6e 69 74 79 29 3b 0d 0a 20 20 20  nAffinity);..   
3490: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
34a0: 63 74 20 69 6e 74 20 43 6f 6c 75 6d 6e 49 6e 64  ct int ColumnInd
34b0: 65 78 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ex(SQLiteStateme
34c0: 6e 74 20 73 74 6d 74 2c 20 73 74 72 69 6e 67 20  nt stmt, string 
34d0: 63 6f 6c 75 6d 6e 4e 61 6d 65 29 3b 0d 0a 20 20  columnName);..  
34e0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
34f0: 61 63 74 20 73 74 72 69 6e 67 20 43 6f 6c 75 6d  act string Colum
3500: 6e 4f 72 69 67 69 6e 61 6c 4e 61 6d 65 28 53 51  nOriginalName(SQ
3510: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3520: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3530: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3540: 73 74 72 61 63 74 20 73 74 72 69 6e 67 20 43 6f  stract string Co
3550: 6c 75 6d 6e 44 61 74 61 62 61 73 65 4e 61 6d 65  lumnDatabaseName
3560: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3570: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
3580: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3590: 20 61 62 73 74 72 61 63 74 20 73 74 72 69 6e 67   abstract string
35a0: 20 43 6f 6c 75 6d 6e 54 61 62 6c 65 4e 61 6d 65   ColumnTableName
35b0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
35c0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
35d0: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
35e0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 43   abstract void C
35f0: 6f 6c 75 6d 6e 4d 65 74 61 44 61 74 61 28 73 74  olumnMetaData(st
3600: 72 69 6e 67 20 64 61 74 61 42 61 73 65 2c 20 73  ring dataBase, s
3610: 74 72 69 6e 67 20 74 61 62 6c 65 2c 20 73 74 72  tring table, str
3620: 69 6e 67 20 63 6f 6c 75 6d 6e 2c 20 72 65 66 20  ing column, ref 
3630: 73 74 72 69 6e 67 20 64 61 74 61 54 79 70 65 2c  string dataType,
3640: 20 72 65 66 20 73 74 72 69 6e 67 20 63 6f 6c 6c   ref string coll
3650: 61 74 65 53 65 71 75 65 6e 63 65 2c 20 72 65 66  ateSequence, ref
3660: 20 62 6f 6f 6c 20 6e 6f 74 4e 75 6c 6c 2c 20 72   bool notNull, r
3670: 65 66 20 62 6f 6f 6c 20 70 72 69 6d 61 72 79 4b  ef bool primaryK
3680: 65 79 2c 20 72 65 66 20 62 6f 6f 6c 20 61 75 74  ey, ref bool aut
3690: 6f 49 6e 63 72 65 6d 65 6e 74 29 3b 0d 0a 20 20  oIncrement);..  
36a0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
36b0: 61 63 74 20 76 6f 69 64 20 47 65 74 49 6e 64 65  act void GetInde
36c0: 78 43 6f 6c 75 6d 6e 45 78 74 65 6e 64 65 64 49  xColumnExtendedI
36d0: 6e 66 6f 28 73 74 72 69 6e 67 20 64 61 74 61 62  nfo(string datab
36e0: 61 73 65 2c 20 73 74 72 69 6e 67 20 69 6e 64 65  ase, string inde
36f0: 78 2c 20 73 74 72 69 6e 67 20 63 6f 6c 75 6d 6e  x, string column
3700: 2c 20 72 65 66 20 69 6e 74 20 73 6f 72 74 4d 6f  , ref int sortMo
3710: 64 65 2c 20 72 65 66 20 69 6e 74 20 6f 6e 45 72  de, ref int onEr
3720: 72 6f 72 2c 20 72 65 66 20 73 74 72 69 6e 67 20  ror, ref string 
3730: 63 6f 6c 6c 61 74 69 6f 6e 53 65 71 75 65 6e 63  collationSequenc
3740: 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  e);....    inter
3750: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 6f 62 6a  nal abstract obj
3760: 65 63 74 20 47 65 74 4f 62 6a 65 63 74 28 53 51  ect GetObject(SQ
3770: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3780: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3790: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
37a0: 73 74 72 61 63 74 20 64 6f 75 62 6c 65 20 47 65  stract double Ge
37b0: 74 44 6f 75 62 6c 65 28 53 51 4c 69 74 65 53 74  tDouble(SQLiteSt
37c0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
37d0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
37e0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
37f0: 20 42 6f 6f 6c 65 61 6e 20 47 65 74 42 6f 6f 6c   Boolean GetBool
3800: 65 61 6e 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ean(SQLiteStatem
3810: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3820: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3830: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 42 79  nal abstract SBy
3840: 74 65 20 47 65 74 53 42 79 74 65 28 53 51 4c 69  te GetSByte(SQLi
3850: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3860: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
3870: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3880: 72 61 63 74 20 42 79 74 65 20 47 65 74 42 79 74  ract Byte GetByt
3890: 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e(SQLiteStatemen
38a0: 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  t stmt, int inde
38b0: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
38c0: 6c 20 61 62 73 74 72 61 63 74 20 49 6e 74 31 36  l abstract Int16
38d0: 20 47 65 74 49 6e 74 31 36 28 53 51 4c 69 74 65   GetInt16(SQLite
38e0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
38f0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
3900: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3910: 63 74 20 55 49 6e 74 31 36 20 47 65 74 55 49 6e  ct UInt16 GetUIn
3920: 74 31 36 28 53 51 4c 69 74 65 53 74 61 74 65 6d  t16(SQLiteStatem
3930: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3940: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3950: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49 6e 74  nal abstract Int
3960: 33 32 20 47 65 74 49 6e 74 33 32 28 53 51 4c 69  32 GetInt32(SQLi
3970: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3980: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
3990: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
39a0: 72 61 63 74 20 55 49 6e 74 33 32 20 47 65 74 55  ract UInt32 GetU
39b0: 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74 61 74  Int32(SQLiteStat
39c0: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
39d0: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
39e0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
39f0: 6e 74 36 34 20 47 65 74 49 6e 74 36 34 28 53 51  nt64 GetInt64(SQ
3a00: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3a10: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3a20: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3a30: 73 74 72 61 63 74 20 55 49 6e 74 36 34 20 47 65  stract UInt64 Ge
3a40: 74 55 49 6e 74 36 34 28 53 51 4c 69 74 65 53 74  tUInt64(SQLiteSt
3a50: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
3a60: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
3a70: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
3a80: 20 73 74 72 69 6e 67 20 47 65 74 54 65 78 74 28   string GetText(
3a90: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3aa0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3ab0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3ac0: 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65  abstract long Ge
3ad0: 74 42 79 74 65 73 28 53 51 4c 69 74 65 53 74 61  tBytes(SQLiteSta
3ae0: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3af0: 20 69 6e 64 65 78 2c 20 69 6e 74 20 6e 44 61 74   index, int nDat
3b00: 61 6f 66 66 73 65 74 2c 20 62 79 74 65 5b 5d 20  aoffset, byte[] 
3b10: 62 44 65 73 74 2c 20 69 6e 74 20 6e 53 74 61 72  bDest, int nStar
3b20: 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74 68 29 3b  t, int nLength);
3b30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
3b40: 62 73 74 72 61 63 74 20 63 68 61 72 20 47 65 74  bstract char Get
3b50: 43 68 61 72 28 53 51 4c 69 74 65 53 74 61 74 65  Char(SQLiteState
3b60: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
3b70: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
3b80: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 6c 6f  rnal abstract lo
3b90: 6e 67 20 47 65 74 43 68 61 72 73 28 53 51 4c 69  ng GetChars(SQLi
3ba0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3bb0: 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 69 6e 74  , int index, int
3bc0: 20 6e 44 61 74 61 6f 66 66 73 65 74 2c 20 63 68   nDataoffset, ch
3bd0: 61 72 5b 5d 20 62 44 65 73 74 2c 20 69 6e 74 20  ar[] bDest, int 
3be0: 6e 53 74 61 72 74 2c 20 69 6e 74 20 6e 4c 65 6e  nStart, int nLen
3bf0: 67 74 68 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  gth);..    inter
3c00: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 44 61 74  nal abstract Dat
3c10: 65 54 69 6d 65 20 47 65 74 44 61 74 65 54 69 6d  eTime GetDateTim
3c20: 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e(SQLiteStatemen
3c30: 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  t stmt, int inde
3c40: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
3c50: 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20  l abstract bool 
3c60: 49 73 4e 75 6c 6c 28 53 51 4c 69 74 65 53 74 61  IsNull(SQLiteSta
3c70: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74  tement stmt, int
3c80: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20   index);....    
3c90: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3ca0: 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
3cb0: 65 20 43 72 65 61 74 65 43 6f 6c 6c 61 74 69 6f  e CreateCollatio
3cc0: 6e 28 73 74 72 69 6e 67 20 73 74 72 43 6f 6c 6c  n(string strColl
3cd0: 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65 43 6f 6c  ation, SQLiteCol
3ce0: 6c 61 74 69 6f 6e 20 66 75 6e 63 2c 20 53 51 4c  lation func, SQL
3cf0: 69 74 65 43 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e  iteCollation fun
3d00: 63 31 36 2c 20 62 6f 6f 6c 20 40 74 68 72 6f 77  c16, bool @throw
3d10: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3d20: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
3d30: 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61 74 65  ErrorCode Create
3d40: 46 75 6e 63 74 69 6f 6e 28 73 74 72 69 6e 67 20  Function(string 
3d50: 73 74 72 46 75 6e 63 74 69 6f 6e 2c 20 69 6e 74  strFunction, int
3d60: 20 6e 41 72 67 73 2c 20 62 6f 6f 6c 20 6e 65 65   nArgs, bool nee
3d70: 64 43 6f 6c 6c 53 65 71 2c 20 53 51 4c 69 74 65  dCollSeq, SQLite
3d80: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 2c 20 53  Callback func, S
3d90: 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 66 75  QLiteCallback fu
3da0: 6e 63 73 74 65 70 2c 20 53 51 4c 69 74 65 46 69  ncstep, SQLiteFi
3db0: 6e 61 6c 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  nalCallback func
3dc0: 66 69 6e 61 6c 2c 20 62 6f 6f 6c 20 40 74 68 72  final, bool @thr
3dd0: 6f 77 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ow);..    intern
3de0: 61 6c 20 61 62 73 74 72 61 63 74 20 43 6f 6c 6c  al abstract Coll
3df0: 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 20 47 65  ationSequence Ge
3e00: 74 43 6f 6c 6c 61 74 69 6f 6e 53 65 71 75 65 6e  tCollationSequen
3e10: 63 65 28 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  ce(SQLiteFunctio
3e20: 6e 20 66 75 6e 63 2c 20 49 6e 74 50 74 72 20 63  n func, IntPtr c
3e30: 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 69 6e  ontext);..    in
3e40: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3e50: 69 6e 74 20 43 6f 6e 74 65 78 74 43 6f 6c 6c 61  int ContextColla
3e60: 74 65 43 6f 6d 70 61 72 65 28 43 6f 6c 6c 61 74  teCompare(Collat
3e70: 69 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e 75 6d 20  ionEncodingEnum 
3e80: 65 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74  enc, IntPtr cont
3e90: 65 78 74 2c 20 73 74 72 69 6e 67 20 73 31 2c 20  ext, string s1, 
3ea0: 73 74 72 69 6e 67 20 73 32 29 3b 0d 0a 20 20 20  string s2);..   
3eb0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3ec0: 63 74 20 69 6e 74 20 43 6f 6e 74 65 78 74 43 6f  ct int ContextCo
3ed0: 6c 6c 61 74 65 43 6f 6d 70 61 72 65 28 43 6f 6c  llateCompare(Col
3ee0: 6c 61 74 69 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e  lationEncodingEn
3ef0: 75 6d 20 65 6e 63 2c 20 49 6e 74 50 74 72 20 63  um enc, IntPtr c
3f00: 6f 6e 74 65 78 74 2c 20 63 68 61 72 5b 5d 20 63  ontext, char[] c
3f10: 31 2c 20 63 68 61 72 5b 5d 20 63 32 29 3b 0d 0a  1, char[] c2);..
3f20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
3f30: 62 73 74 72 61 63 74 20 69 6e 74 20 41 67 67 72  bstract int Aggr
3f40: 65 67 61 74 65 43 6f 75 6e 74 28 49 6e 74 50 74  egateCount(IntPt
3f50: 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20  r context);..   
3f60: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3f70: 63 74 20 49 6e 74 50 74 72 20 41 67 67 72 65 67  ct IntPtr Aggreg
3f80: 61 74 65 43 6f 6e 74 65 78 74 28 49 6e 74 50 74  ateContext(IntPt
3f90: 72 20 63 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a 20  r context);.... 
3fa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3fb0: 72 61 63 74 20 6c 6f 6e 67 20 47 65 74 50 61 72  ract long GetPar
3fc0: 61 6d 56 61 6c 75 65 42 79 74 65 73 28 49 6e 74  amValueBytes(Int
3fd0: 50 74 72 20 70 74 72 2c 20 69 6e 74 20 6e 44 61  Ptr ptr, int nDa
3fe0: 74 61 4f 66 66 73 65 74 2c 20 62 79 74 65 5b 5d  taOffset, byte[]
3ff0: 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53 74 61   bDest, int nSta
4000: 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74 68 29  rt, int nLength)
4010: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
4020: 61 62 73 74 72 61 63 74 20 64 6f 75 62 6c 65 20  abstract double 
4030: 47 65 74 50 61 72 61 6d 56 61 6c 75 65 44 6f 75  GetParamValueDou
4040: 62 6c 65 28 49 6e 74 50 74 72 20 70 74 72 29 3b  ble(IntPtr ptr);
4050: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
4060: 62 73 74 72 61 63 74 20 69 6e 74 20 47 65 74 50  bstract int GetP
4070: 61 72 61 6d 56 61 6c 75 65 49 6e 74 33 32 28 49  aramValueInt32(I
4080: 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 20 20 20  ntPtr ptr);..   
4090: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
40a0: 63 74 20 49 6e 74 36 34 20 47 65 74 50 61 72 61  ct Int64 GetPara
40b0: 6d 56 61 6c 75 65 49 6e 74 36 34 28 49 6e 74 50  mValueInt64(IntP
40c0: 74 72 20 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e  tr ptr);..    in
40d0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
40e0: 73 74 72 69 6e 67 20 47 65 74 50 61 72 61 6d 56  string GetParamV
40f0: 61 6c 75 65 54 65 78 74 28 49 6e 74 50 74 72 20  alueText(IntPtr 
4100: 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  ptr);..    inter
4110: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 54 79 70  nal abstract Typ
4120: 65 41 66 66 69 6e 69 74 79 20 47 65 74 50 61 72  eAffinity GetPar
4130: 61 6d 56 61 6c 75 65 54 79 70 65 28 49 6e 74 50  amValueType(IntP
4140: 74 72 20 70 74 72 29 3b 0d 0a 0d 0a 20 20 20 20  tr ptr);....    
4150: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
4160: 74 20 76 6f 69 64 20 52 65 74 75 72 6e 42 6c 6f  t void ReturnBlo
4170: 62 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74  b(IntPtr context
4180: 2c 20 62 79 74 65 5b 5d 20 76 61 6c 75 65 29 3b  , byte[] value);
4190: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
41a0: 62 73 74 72 61 63 74 20 76 6f 69 64 20 52 65 74  bstract void Ret
41b0: 75 72 6e 44 6f 75 62 6c 65 28 49 6e 74 50 74 72  urnDouble(IntPtr
41c0: 20 63 6f 6e 74 65 78 74 2c 20 64 6f 75 62 6c 65   context, double
41d0: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e   value);..    in
41e0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
41f0: 76 6f 69 64 20 52 65 74 75 72 6e 45 72 72 6f 72  void ReturnError
4200: 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c  (IntPtr context,
4210: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 29 3b 0d   string value);.
4220: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
4230: 73 74 72 61 63 74 20 76 6f 69 64 20 52 65 74 75  stract void Retu
4240: 72 6e 49 6e 74 33 32 28 49 6e 74 50 74 72 20 63  rnInt32(IntPtr c
4250: 6f 6e 74 65 78 74 2c 20 49 6e 74 33 32 20 76 61  ontext, Int32 va
4260: 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  lue);..    inter
4270: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
4280: 64 20 52 65 74 75 72 6e 49 6e 74 36 34 28 49 6e  d ReturnInt64(In
4290: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 49 6e  tPtr context, In
42a0: 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  t64 value);..   
42b0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
42c0: 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 4e 75  ct void ReturnNu
42d0: 6c 6c 28 49 6e 74 50 74 72 20 63 6f 6e 74 65 78  ll(IntPtr contex
42e0: 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  t);..    interna
42f0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
4300: 52 65 74 75 72 6e 54 65 78 74 28 49 6e 74 50 74  ReturnText(IntPt
4310: 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e  r context, strin
4320: 67 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66  g value);....#if
4330: 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
4340: 5f 54 41 42 4c 45 0d 0a 20 20 20 20 2f 2f 2f 20  _TABLE..    /// 
4350: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
4360: 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74  // Calls the nat
4370: 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  ive SQLite core 
4380: 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72  library in order
4390: 20 74 6f 20 63 72 65 61 74 65 20 61 20 64 69 73   to create a dis
43a0: 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f  posable..    ///
43b0: 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69   module containi
43c0: 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  ng the implement
43d0: 61 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75  ation of a virtu
43e0: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  al table...    /
43f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
4400: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
4410: 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
4420: 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65    /// The module
4430: 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20 75 73   object to be us
4440: 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  ed when creating
4450: 20 74 68 65 20 6e 61 74 69 76 65 20 64 69 73 70   the native disp
4460: 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 2e 0d 0a  osable module...
4470: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4480: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4490: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
44a0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
44b0: 73 20 66 6f 72 20 74 68 65 20 61 73 73 6f 63 69  s for the associ
44c0: 61 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  ated <see cref="
44d0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
44e0: 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
44f0: 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ance...    /// <
4500: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
4510: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
4520: 6f 69 64 20 43 72 65 61 74 65 4d 6f 64 75 6c 65  oid CreateModule
4530: 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f  (SQLiteModule mo
4540: 64 75 6c 65 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  dule, SQLiteConn
4550: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
4560: 73 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  s);....    /// <
4570: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
4580: 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69  / Calls the nati
4590: 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  ve SQLite core l
45a0: 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20  ibrary in order 
45b0: 74 6f 20 63 6c 65 61 6e 75 70 20 74 68 65 20 72  to cleanup the r
45c0: 65 73 6f 75 72 63 65 73 0d 0a 20 20 20 20 2f 2f  esources..    //
45d0: 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
45e0: 68 20 61 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61  h a module conta
45f0: 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d  ining the implem
4600: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69  entation of a vi
4610: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
4620: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4630: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4640: 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d   name="module">.
4650: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64  .    /// The mod
4660: 75 6c 65 20 6f 62 6a 65 63 74 20 70 72 65 76 69  ule object previ
4670: 6f 75 73 6c 79 20 70 61 73 73 65 64 20 74 6f 20  ously passed to 
4680: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 43  the <see cref="C
4690: 72 65 61 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d  reateModule" />.
46a0: 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e  .    /// method.
46b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
46c0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
46d0: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
46e0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
46f0: 61 67 73 20 66 6f 72 20 74 68 65 20 61 73 73 6f  ags for the asso
4700: 63 69 61 74 65 64 20 3c 73 65 65 20 63 72 65 66  ciated <see cref
4710: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
4720: 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  on" /> object in
4730: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
4740: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69   </param>..    i
4750: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
4760: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 4d 6f 64   void DisposeMod
4770: 75 6c 65 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65  ule(SQLiteModule
4780: 20 6d 6f 64 75 6c 65 2c 20 53 51 4c 69 74 65 43   module, SQLiteC
4790: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
47a0: 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  lags);....    //
47b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
47c0: 20 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e   /// Calls the n
47d0: 61 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72  ative SQLite cor
47e0: 65 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64  e library in ord
47f0: 65 72 20 74 6f 20 64 65 63 6c 61 72 65 20 61 20  er to declare a 
4800: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
4810: 20 20 20 2f 2f 2f 20 69 6e 20 72 65 73 70 6f 6e     /// in respon
4820: 73 65 20 74 6f 20 61 20 63 61 6c 6c 20 69 6e 74  se to a call int
4830: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
4840: 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
4850: 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
4860: 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65  ..    /// or <se
4870: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
4880: 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
4890: 6e 65 63 74 22 20 2f 3e 20 76 69 72 74 75 61 6c  nect" /> virtual
48a0: 20 74 61 62 6c 65 20 6d 65 74 68 6f 64 73 2e 0d   table methods..
48b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
48c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
48d0: 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65  ram name="module
48e0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
48f0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f  virtual table mo
4900: 64 75 6c 65 20 74 68 61 74 20 69 73 20 74 6f 20  dule that is to 
4910: 62 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  be responsible f
4920: 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  or the virtual t
4930: 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  able..    /// be
4940: 69 6e 67 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20  ing declared... 
4950: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
4960: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4970: 6e 61 6d 65 3d 22 73 74 72 53 71 6c 22 3e 0d 0a  name="strSql">..
4980: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69      /// The stri
4990: 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
49a0: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
49b0: 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 76  describing the v
49c0: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 6f 0d  irtual table to.
49d0: 0a 20 20 20 20 2f 2f 2f 20 62 65 20 64 65 63 6c  .    /// be decl
49e0: 61 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ared...    /// <
49f0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
4a00: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
4a10: 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  ror">..    /// U
4a20: 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65  pon success, the
4a30: 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69   contents of thi
4a40: 73 20 70 61 72 61 6d 65 74 65 72 20 61 72 65 20  s parameter are 
4a50: 75 6e 64 65 66 69 6e 65 64 2e 20 20 55 70 6f 6e  undefined.  Upon
4a60: 20 66 61 69 6c 75 72 65 2c 0d 0a 20 20 20 20 2f   failure,..    /
4a70: 2f 2f 20 69 74 20 73 68 6f 75 6c 64 20 63 6f 6e  // it should con
4a80: 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69  tain an appropri
4a90: 61 74 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ate error messag
4aa0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
4ab0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
4ac0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
4ad0: 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
4ae0: 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
4af0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
4b00: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
4b10: 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74  l abstract SQLit
4b20: 65 45 72 72 6f 72 43 6f 64 65 20 44 65 63 6c 61  eErrorCode Decla
4b30: 72 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 53  reVirtualTable(S
4b40: 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75  QLiteModule modu
4b50: 6c 65 2c 20 73 74 72 69 6e 67 20 73 74 72 53 71  le, string strSq
4b60: 6c 2c 20 72 65 66 20 73 74 72 69 6e 67 20 65 72  l, ref string er
4b70: 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ror);....    ///
4b80: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4b90: 2f 2f 2f 20 43 61 6c 6c 73 20 74 68 65 20 6e 61  /// Calls the na
4ba0: 74 69 76 65 20 53 51 4c 69 74 65 20 63 6f 72 65  tive SQLite core
4bb0: 20 6c 69 62 72 61 72 79 20 69 6e 20 6f 72 64 65   library in orde
4bc0: 72 20 74 6f 20 64 65 63 6c 61 72 65 20 61 20 76  r to declare a v
4bd0: 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
4be0: 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 20 69    /// function i
4bf0: 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20  n response to a 
4c00: 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 3c 73  call into the <s
4c10: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
4c20: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72  NativeModule.xCr
4c30: 65 61 74 65 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  eate" />..    //
4c40: 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22  / or <see cref="
4c50: 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
4c60: 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e  ule.xConnect" />
4c70: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
4c80: 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 2f 2f 2f  ethods...    ///
4c90: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4ca0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4cb0: 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20  ="module">..    
4cc0: 2f 2f 2f 20 54 68 65 20 76 69 72 74 75 61 6c 20  /// The virtual 
4cd0: 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 74 68 61  table module tha
4ce0: 74 20 69 73 20 74 6f 20 62 65 20 72 65 73 70 6f  t is to be respo
4cf0: 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20 76  nsible for the v
4d00: 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
4d10: 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 20 62    /// function b
4d20: 65 69 6e 67 20 64 65 63 6c 61 72 65 64 2e 0d 0a  eing declared...
4d30: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4d40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4d50: 20 6e 61 6d 65 3d 22 61 72 67 75 6d 65 6e 74 43   name="argumentC
4d60: 6f 75 6e 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ount">..    /// 
4d70: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  The number of ar
4d80: 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 66  guments to the f
4d90: 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 64 65  unction being de
4da0: 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  clared...    ///
4db0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
4dc0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4dd0: 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  name">..    /// 
4de0: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
4df0: 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67 20 64  function being d
4e00: 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f 2f  eclared...    //
4e10: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
4e20: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4e30: 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f  "error">..    //
4e40: 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
4e50: 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20  the contents of 
4e60: 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 61  this parameter a
4e70: 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 55  re undefined.  U
4e80: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 0d 0a 20 20  pon failure,..  
4e90: 20 20 2f 2f 2f 20 69 74 20 73 68 6f 75 6c 64 20    /// it should 
4ea0: 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72 6f  contain an appro
4eb0: 70 72 69 61 74 65 20 65 72 72 6f 72 20 6d 65 73  priate error mes
4ec0: 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sage...    /// <
4ed0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
4ee0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
4ef0: 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
4f00: 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
4f10: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
4f20: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
4f30: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
4f40: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 44 65  LiteErrorCode De
4f50: 63 6c 61 72 65 56 69 72 74 75 61 6c 46 75 6e 63  clareVirtualFunc
4f60: 74 69 6f 6e 28 53 51 4c 69 74 65 4d 6f 64 75 6c  tion(SQLiteModul
4f70: 65 20 6d 6f 64 75 6c 65 2c 20 69 6e 74 20 61 72  e module, int ar
4f80: 67 75 6d 65 6e 74 43 6f 75 6e 74 2c 20 73 74 72  gumentCount, str
4f90: 69 6e 67 20 6e 61 6d 65 2c 20 72 65 66 20 73 74  ing name, ref st
4fa0: 72 69 6e 67 20 65 72 72 6f 72 29 3b 0d 0a 23 65  ring error);..#e
4fb0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ndif....    /// 
4fc0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
4fd0: 2f 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69  // Enables or di
4fe0: 73 61 62 6c 65 73 20 61 20 63 6f 6e 66 69 67 75  sables a configu
4ff0: 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 66 6f  ration option fo
5000: 72 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d  r the database..
5010: 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74  .    /// connect
5020: 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
5030: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5040: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f  / <param name="o
5050: 70 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ption">..    ///
5060: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   The database co
5070: 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
5080: 6f 6e 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20  on to enable or 
5090: 64 69 73 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  disable...    //
50a0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
50b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
50c0: 22 62 4f 6e 4f 66 66 22 3e 0d 0a 20 20 20 20 2f  "bOnOff">..    /
50d0: 2f 2f 20 54 72 75 65 20 74 6f 20 65 6e 61 62 6c  // True to enabl
50e0: 65 20 6c 6f 61 64 69 6e 67 20 6f 66 20 65 78 74  e loading of ext
50f0: 65 6e 73 69 6f 6e 73 2c 20 66 61 6c 73 65 20 74  ensions, false t
5100: 6f 20 64 69 73 61 62 6c 65 2e 0d 0a 20 20 20 20  o disable...    
5110: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
5120: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
5130: 0a 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64  .    /// A stand
5140: 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
5150: 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  n code...    ///
5160: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
5170: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5180: 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ct SQLiteErrorCo
5190: 64 65 20 53 65 74 43 6f 6e 66 69 67 75 72 61 74  de SetConfigurat
51a0: 69 6f 6e 4f 70 74 69 6f 6e 28 53 51 4c 69 74 65  ionOption(SQLite
51b0: 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20  ConfigDbOpsEnum 
51c0: 6f 70 74 69 6f 6e 2c 20 62 6f 6f 6c 20 62 4f 6e  option, bool bOn
51d0: 4f 66 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Off);..    /// <
51e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
51f0: 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69 73  / Enables or dis
5200: 61 62 6c 65 73 20 65 78 74 65 6e 73 69 6f 6e 20  ables extension 
5210: 6c 6f 61 64 69 6e 67 20 62 79 20 53 51 4c 69 74  loading by SQLit
5220: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
5230: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5240: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 4f 6e  <param name="bOn
5250: 4f 66 66 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  Off">..    /// T
5260: 72 75 65 20 74 6f 20 65 6e 61 62 6c 65 20 6c 6f  rue to enable lo
5270: 61 64 69 6e 67 20 6f 66 20 65 78 74 65 6e 73 69  ading of extensi
5280: 6f 6e 73 2c 20 66 61 6c 73 65 20 74 6f 20 64 69  ons, false to di
5290: 73 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  sable...    /// 
52a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e  </param>..    in
52b0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
52c0: 76 6f 69 64 20 53 65 74 4c 6f 61 64 45 78 74 65  void SetLoadExte
52d0: 6e 73 69 6f 6e 28 62 6f 6f 6c 20 62 4f 6e 4f 66  nsion(bool bOnOf
52e0: 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  f);..    /// <su
52f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5300: 4c 6f 61 64 73 20 61 20 53 51 4c 69 74 65 20 65  Loads a SQLite e
5310: 78 74 65 6e 73 69 6f 6e 20 6c 69 62 72 61 72 79  xtension library
5320: 20 66 72 6f 6d 20 74 68 65 20 6e 61 6d 65 64 20   from the named 
5330: 66 69 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  file...    /// <
5340: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
5350: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5360: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
5370: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
5380: 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b  the dynamic link
5390: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 63 6f   library file co
53a0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 65 78 74  ntaining the ext
53b0: 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  ension...    ///
53c0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
53d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
53e0: 70 72 6f 63 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  procName">..    
53f0: 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
5400: 74 68 65 20 65 78 70 6f 72 74 65 64 20 66 75 6e  the exported fun
5410: 63 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 69 6e  ction used to in
5420: 69 74 69 61 6c 69 7a 65 20 74 68 65 20 65 78 74  itialize the ext
5430: 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  ension...    ///
5440: 20 49 66 20 6e 75 6c 6c 2c 20 74 68 65 20 64 65   If null, the de
5450: 66 61 75 6c 74 20 22 73 71 6c 69 74 65 33 5f 65  fault "sqlite3_e
5460: 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 22 20 77  xtension_init" w
5470: 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a 20 20  ill be used...  
5480: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
5490: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
54a0: 74 72 61 63 74 20 76 6f 69 64 20 4c 6f 61 64 45  tract void LoadE
54b0: 78 74 65 6e 73 69 6f 6e 28 73 74 72 69 6e 67 20  xtension(string 
54c0: 66 69 6c 65 4e 61 6d 65 2c 20 73 74 72 69 6e 67  fileName, string
54d0: 20 70 72 6f 63 4e 61 6d 65 29 3b 0d 0a 20 20 20   procName);..   
54e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
54f0: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20      /// Enables 
5500: 6f 72 20 64 69 73 61 62 6c 65 64 20 65 78 74 65  or disabled exte
5510: 6e 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73  ned result codes
5520: 20 72 65 74 75 72 6e 65 64 20 62 79 20 53 51 4c   returned by SQL
5530: 69 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ite..    /// </s
5540: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5550: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 4f   <param name="bO
5560: 6e 4f 66 66 22 3e 74 72 75 65 20 74 6f 20 65 6e  nOff">true to en
5570: 61 62 6c 65 20 65 78 74 65 6e 64 65 64 20 72 65  able extended re
5580: 73 75 6c 74 20 63 6f 64 65 73 2c 20 66 61 6c 73  sult codes, fals
5590: 65 20 74 6f 20 64 69 73 61 62 6c 65 2e 3c 2f 70  e to disable.</p
55a0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
55b0: 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e  returns></return
55c0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
55d0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53   abstract void S
55e0: 65 74 45 78 74 65 6e 64 65 64 52 65 73 75 6c 74  etExtendedResult
55f0: 43 6f 64 65 73 28 62 6f 6f 6c 20 62 4f 6e 4f 66  Codes(bool bOnOf
5600: 66 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  f);..    /// <su
5610: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5620: 52 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 65  Returns the nume
5630: 72 69 63 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ric result code 
5640: 66 6f 72 20 74 68 65 20 6d 6f 73 74 20 72 65 63  for the most rec
5650: 65 6e 74 20 66 61 69 6c 65 64 20 53 51 4c 69 74  ent failed SQLit
5660: 65 20 41 50 49 20 63 61 6c 6c 0d 0a 20 20 20 20  e API call..    
5670: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
5680: 69 74 68 20 74 68 65 20 64 61 74 61 62 61 73 65  ith the database
5690: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
56a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
56b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
56c0: 6e 73 3e 52 65 73 75 6c 74 20 63 6f 64 65 3c 2f  ns>Result code</
56d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
56e0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
56f0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
5700: 52 65 73 75 6c 74 43 6f 64 65 28 29 3b 0d 0a 20  ResultCode();.. 
5710: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5720: 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
5730: 73 20 74 68 65 20 65 78 74 65 6e 64 65 64 20 6e  s the extended n
5740: 75 6d 65 72 69 63 20 72 65 73 75 6c 74 20 63 6f  umeric result co
5750: 64 65 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20  de for the most 
5760: 72 65 63 65 6e 74 20 66 61 69 6c 65 64 20 53 51  recent failed SQ
5770: 4c 69 74 65 20 41 50 49 20 63 61 6c 6c 0d 0a 20  Lite API call.. 
5780: 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65     /// associate
5790: 64 20 77 69 74 68 20 74 68 65 20 64 61 74 61 62  d with the datab
57a0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  ase connection..
57b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
57c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
57d0: 74 75 72 6e 73 3e 45 78 74 65 6e 64 65 64 20 72  turns>Extended r
57e0: 65 73 75 6c 74 20 63 6f 64 65 3c 2f 72 65 74 75  esult code</retu
57f0: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
5800: 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  al abstract SQLi
5810: 74 65 45 72 72 6f 72 43 6f 64 65 20 45 78 74 65  teErrorCode Exte
5820: 6e 64 65 64 52 65 73 75 6c 74 43 6f 64 65 28 29  ndedResultCode()
5830: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
5840: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5850: 41 64 64 20 61 20 6c 6f 67 20 6d 65 73 73 61 67  Add a log messag
5860: 65 20 76 69 61 20 74 68 65 20 53 51 4c 69 74 65  e via the SQLite
5870: 20 73 71 6c 69 74 65 33 5f 6c 6f 67 20 69 6e 74   sqlite3_log int
5880: 65 72 66 61 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  erface...    ///
5890: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
58a0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
58b0: 3d 22 69 45 72 72 43 6f 64 65 22 3e 45 72 72 6f  ="iErrCode">Erro
58c0: 72 20 63 6f 64 65 20 74 6f 20 62 65 20 6c 6f 67  r code to be log
58d0: 67 65 64 20 77 69 74 68 20 74 68 65 20 6d 65 73  ged with the mes
58e0: 73 61 67 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  sage.</param>.. 
58f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5900: 6d 65 3d 22 7a 4d 65 73 73 61 67 65 22 3e 53 74  me="zMessage">St
5910: 72 69 6e 67 20 74 6f 20 62 65 20 6c 6f 67 67 65  ring to be logge
5920: 64 2e 20 20 55 6e 6c 69 6b 65 20 74 68 65 20 53  d.  Unlike the S
5930: 51 4c 69 74 65 20 73 71 6c 69 74 65 33 5f 6c 6f  QLite sqlite3_lo
5940: 67 28 29 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 74  g()..    /// int
5950: 65 72 66 61 63 65 2c 20 74 68 69 73 20 73 68 6f  erface, this sho
5960: 75 6c 64 20 62 65 20 70 72 65 2d 66 6f 72 6d 61  uld be pre-forma
5970: 74 74 65 64 2e 20 20 43 6f 6e 73 69 64 65 72 20  tted.  Consider 
5980: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f  using the..    /
5990: 2f 2f 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  // String.Format
59a0: 28 29 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 70 61  () function.</pa
59b0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
59c0: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
59d0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
59e0: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 4c 6f  abstract void Lo
59f0: 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65 45  gMessage(SQLiteE
5a00: 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f 64  rrorCode iErrCod
5a10: 65 2c 20 73 74 72 69 6e 67 20 7a 4d 65 73 73 61  e, string zMessa
5a20: 67 65 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  ge);....#if INTE
5a30: 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
5a40: 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
5a50: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
5a60: 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74  bstract void Set
5a70: 50 61 73 73 77 6f 72 64 28 62 79 74 65 5b 5d 20  Password(byte[] 
5a80: 70 61 73 73 77 6f 72 64 42 79 74 65 73 29 3b 0d  passwordBytes);.
5a90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
5aa0: 73 74 72 61 63 74 20 76 6f 69 64 20 43 68 61 6e  stract void Chan
5ab0: 67 65 50 61 73 73 77 6f 72 64 28 62 79 74 65 5b  gePassword(byte[
5ac0: 5d 20 6e 65 77 50 61 73 73 77 6f 72 64 42 79 74  ] newPasswordByt
5ad0: 65 73 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  es);..#endif....
5ae0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5af0: 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 50 72  tract void SetPr
5b00: 6f 67 72 65 73 73 48 6f 6f 6b 28 69 6e 74 20 6e  ogressHook(int n
5b10: 4f 70 73 2c 20 53 51 4c 69 74 65 50 72 6f 67 72  Ops, SQLiteProgr
5b20: 65 73 73 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63  essCallback func
5b30: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
5b40: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53   abstract void S
5b50: 65 74 41 75 74 68 6f 72 69 7a 65 72 48 6f 6f 6b  etAuthorizerHook
5b60: 28 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65  (SQLiteAuthorize
5b70: 72 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b  rCallback func);
5b80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
5b90: 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74  bstract void Set
5ba0: 55 70 64 61 74 65 48 6f 6f 6b 28 53 51 4c 69 74  UpdateHook(SQLit
5bb0: 65 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20  eUpdateCallback 
5bc0: 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65  func);..    inte
5bd0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
5be0: 69 64 20 53 65 74 43 6f 6d 6d 69 74 48 6f 6f 6b  id SetCommitHook
5bf0: 28 53 51 4c 69 74 65 43 6f 6d 6d 69 74 43 61 6c  (SQLiteCommitCal
5c00: 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20  lback func);..  
5c10: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
5c20: 61 63 74 20 76 6f 69 64 20 53 65 74 54 72 61 63  act void SetTrac
5c30: 65 43 61 6c 6c 62 61 63 6b 28 53 51 4c 69 74 65  eCallback(SQLite
5c40: 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 66 75  TraceCallback fu
5c50: 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  nc);..    intern
5c60: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
5c70: 20 53 65 74 52 6f 6c 6c 62 61 63 6b 48 6f 6f 6b   SetRollbackHook
5c80: 28 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43  (SQLiteRollbackC
5c90: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a  allback func);..
5ca0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5cb0: 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f  tract SQLiteErro
5cc0: 72 43 6f 64 65 20 53 65 74 4c 6f 67 43 61 6c 6c  rCode SetLogCall
5cd0: 62 61 63 6b 28 53 51 4c 69 74 65 4c 6f 67 43 61  back(SQLiteLogCa
5ce0: 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 0d  llback func);...
5cf0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
5d00: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 68 65 63  y>..    /// Chec
5d10: 6b 73 20 69 66 20 74 68 65 20 53 51 4c 69 74 65  ks if the SQLite
5d20: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 68 61   core library ha
5d30: 73 20 62 65 65 6e 20 69 6e 69 74 69 61 6c 69 7a  s been initializ
5d40: 65 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ed in the curren
5d50: 74 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  t process...    
5d60: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5d70: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
5d80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
5d90: 65 72 6f 20 69 66 20 74 68 65 20 53 51 4c 69 74  ero if the SQLit
5da0: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 68  e core library h
5db0: 61 73 20 62 65 65 6e 20 69 6e 69 74 69 61 6c 69  as been initiali
5dc0: 7a 65 64 20 69 6e 20 74 68 65 20 63 75 72 72 65  zed in the curre
5dd0: 6e 74 20 70 72 6f 63 65 73 73 2c 0d 0a 20 20 20  nt process,..   
5de0: 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77   /// zero otherw
5df0: 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ise...    /// </
5e00: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
5e10: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5e20: 62 6f 6f 6c 20 49 73 49 6e 69 74 69 61 6c 69 7a  bool IsInitializ
5e30: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74  ed();....    int
5e40: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69  ernal abstract i
5e50: 6e 74 20 47 65 74 43 75 72 73 6f 72 46 6f 72 54  nt GetCursorForT
5e60: 61 62 6c 65 28 53 51 4c 69 74 65 53 74 61 74 65  able(SQLiteState
5e70: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 64  ment stmt, int d
5e80: 61 74 61 62 61 73 65 2c 20 69 6e 74 20 72 6f 6f  atabase, int roo
5e90: 74 50 61 67 65 29 3b 0d 0a 20 20 20 20 69 6e 74  tPage);..    int
5ea0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 6c  ernal abstract l
5eb0: 6f 6e 67 20 47 65 74 52 6f 77 49 64 46 6f 72 43  ong GetRowIdForC
5ec0: 75 72 73 6f 72 28 53 51 4c 69 74 65 53 74 61 74  ursor(SQLiteStat
5ed0: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
5ee0: 63 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  cursor);....    
5ef0: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
5f00: 74 20 6f 62 6a 65 63 74 20 47 65 74 56 61 6c 75  t object GetValu
5f10: 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  e(SQLiteStatemen
5f20: 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f  t stmt, SQLiteCo
5f30: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
5f40: 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20  ags, int index, 
5f50: 53 51 4c 69 74 65 54 79 70 65 20 74 79 70 29 3b  SQLiteType typ);
5f60: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
5f70: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
5f80: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20  eturns non-zero 
5f90: 69 66 20 74 68 65 20 67 69 76 65 6e 20 64 61 74  if the given dat
5fa0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
5fb0: 20 69 73 20 69 6e 20 61 75 74 6f 63 6f 6d 6d 69   is in autocommi
5fc0: 74 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f  t mode...    ///
5fd0: 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65   Autocommit mode
5fe0: 20 69 73 20 6f 6e 20 62 79 20 64 65 66 61 75 6c   is on by defaul
5ff0: 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d  t.  Autocommit m
6000: 6f 64 65 20 69 73 20 64 69 73 61 62 6c 65 64 20  ode is disabled 
6010: 62 79 20 61 20 42 45 47 49 4e 0d 0a 20 20 20 20  by a BEGIN..    
6020: 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  /// statement.  
6030: 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20  Autocommit mode 
6040: 69 73 20 72 65 2d 65 6e 61 62 6c 65 64 20 62 79  is re-enabled by
6050: 20 61 20 43 4f 4d 4d 49 54 20 6f 72 20 52 4f 4c   a COMMIT or ROL
6060: 4c 42 41 43 4b 2e 0d 0a 20 20 20 20 2f 2f 2f 20  LBACK...    /// 
6070: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6080: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
6090: 74 20 62 6f 6f 6c 20 41 75 74 6f 43 6f 6d 6d 69  t bool AutoCommi
60a0: 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
60b0: 67 65 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  get;..    }.... 
60c0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
60d0: 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
60e0: 43 6f 64 65 20 46 69 6c 65 43 6f 6e 74 72 6f 6c  Code FileControl
60f0: 28 73 74 72 69 6e 67 20 7a 44 62 4e 61 6d 65 2c  (string zDbName,
6100: 20 69 6e 74 20 6f 70 2c 20 49 6e 74 50 74 72 20   int op, IntPtr 
6110: 70 41 72 67 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  pArg);....    //
6120: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6130: 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 20 6e   /// Creates a n
6140: 65 77 20 53 51 4c 69 74 65 20 62 61 63 6b 75 70  ew SQLite backup
6150: 20 6f 62 6a 65 63 74 20 62 61 73 65 64 20 6f 6e   object based on
6160: 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 64 65   the provided de
6170: 73 74 69 6e 61 74 69 6f 6e 0d 0a 20 20 20 20 2f  stination..    /
6180: 2f 2f 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  // database conn
6190: 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 73 6f 75  ection.  The sou
61a0: 72 63 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  rce database con
61b0: 6e 65 63 74 69 6f 6e 20 69 73 20 74 68 65 20 6f  nection is the o
61c0: 6e 65 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 73 6f  ne..    /// asso
61d0: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
61e0: 20 6f 62 6a 65 63 74 2e 20 20 54 68 65 20 73 6f   object.  The so
61f0: 75 72 63 65 20 61 6e 64 20 64 65 73 74 69 6e 61  urce and destina
6200: 74 69 6f 6e 20 64 61 74 61 62 61 73 65 0d 0a 20  tion database.. 
6210: 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f     /// connectio
6220: 6e 73 20 63 61 6e 6e 6f 74 20 62 65 20 74 68 65  ns cannot be the
6230: 20 73 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   same...    /// 
6240: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6250: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6260: 22 64 65 73 74 43 6e 6e 22 3e 54 68 65 20 64 65  "destCnn">The de
6270: 73 74 69 6e 61 74 69 6f 6e 20 64 61 74 61 62 61  stination databa
6280: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f  se connection.</
6290: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
62a0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73  <param name="des
62b0: 74 4e 61 6d 65 22 3e 54 68 65 20 64 65 73 74 69  tName">The desti
62c0: 6e 61 74 69 6f 6e 20 64 61 74 61 62 61 73 65 20  nation database 
62d0: 6e 61 6d 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  name.</param>.. 
62e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
62f0: 6d 65 3d 22 73 6f 75 72 63 65 4e 61 6d 65 22 3e  me="sourceName">
6300: 54 68 65 20 73 6f 75 72 63 65 20 64 61 74 61 62  The source datab
6310: 61 73 65 20 6e 61 6d 65 2e 3c 2f 70 61 72 61 6d  ase name.</param
6320: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6330: 72 6e 73 3e 54 68 65 20 6e 65 77 6c 79 20 63 72  rns>The newly cr
6340: 65 61 74 65 64 20 62 61 63 6b 75 70 20 6f 62 6a  eated backup obj
6350: 65 63 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ect.</returns>..
6360: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
6370: 74 72 61 63 74 20 53 51 4c 69 74 65 42 61 63 6b  tract SQLiteBack
6380: 75 70 20 49 6e 69 74 69 61 6c 69 7a 65 42 61 63  up InitializeBac
6390: 6b 75 70 28 0d 0a 20 20 20 20 20 20 20 20 53 51  kup(..        SQ
63a0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 64  LiteConnection d
63b0: 65 73 74 43 6e 6e 2c 20 73 74 72 69 6e 67 20 64  estCnn, string d
63c0: 65 73 74 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  estName,..      
63d0: 20 20 73 74 72 69 6e 67 20 73 6f 75 72 63 65 4e    string sourceN
63e0: 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ame);....    ///
63f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6400: 2f 2f 2f 20 43 6f 70 69 65 73 20 75 70 20 74 6f  /// Copies up to
6410: 20 4e 20 70 61 67 65 73 20 66 72 6f 6d 20 74 68   N pages from th
6420: 65 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73  e source databas
6430: 65 20 74 6f 20 74 68 65 20 64 65 73 74 69 6e 61  e to the destina
6440: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 64 61  tion..    /// da
6450: 74 61 62 61 73 65 20 61 73 73 6f 63 69 61 74 65  tabase associate
6460: 64 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69  d with the speci
6470: 66 69 65 64 20 62 61 63 6b 75 70 20 6f 62 6a 65  fied backup obje
6480: 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ct...    /// </s
6490: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
64a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
64b0: 63 6b 75 70 22 3e 54 68 65 20 62 61 63 6b 75 70  ckup">The backup
64c0: 20 6f 62 6a 65 63 74 20 74 6f 20 75 73 65 2e 3c   object to use.<
64d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
64e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 50   <param name="nP
64f0: 61 67 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  age">..    /// T
6500: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67  he number of pag
6510: 65 73 20 74 6f 20 63 6f 70 79 20 6f 72 20 6e 65  es to copy or ne
6520: 67 61 74 69 76 65 20 74 6f 20 63 6f 70 79 20 61  gative to copy a
6530: 6c 6c 20 72 65 6d 61 69 6e 69 6e 67 20 70 61 67  ll remaining pag
6540: 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  es...    /// </p
6550: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
6560: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 65 74 72  param name="retr
6570: 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74  y">..    /// Set
6580: 20 74 6f 20 74 72 75 65 20 69 66 20 74 68 65 20   to true if the 
6590: 6f 70 65 72 61 74 69 6f 6e 20 6e 65 65 64 73 20  operation needs 
65a0: 74 6f 20 62 65 20 72 65 74 72 69 65 64 20 64 75  to be retried du
65b0: 65 20 74 6f 20 64 61 74 61 62 61 73 65 0d 0a 20  e to database.. 
65c0: 20 20 20 2f 2f 2f 20 6c 6f 63 6b 69 6e 67 20 69     /// locking i
65d0: 73 73 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ssues...    /// 
65e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
65f0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6600: 20 2f 2f 2f 20 54 72 75 65 20 69 66 20 74 68 65   /// True if the
6610: 72 65 20 61 72 65 20 6d 6f 72 65 20 70 61 67 65  re are more page
6620: 73 20 74 6f 20 62 65 20 63 6f 70 69 65 64 2c 20  s to be copied, 
6630: 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e  false otherwise.
6640: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
6650: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
6660: 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  al abstract bool
6670: 20 53 74 65 70 42 61 63 6b 75 70 28 53 51 4c 69   StepBackup(SQLi
6680: 74 65 42 61 63 6b 75 70 20 62 61 63 6b 75 70 2c  teBackup backup,
6690: 20 69 6e 74 20 6e 50 61 67 65 2c 20 72 65 66 20   int nPage, ref 
66a0: 62 6f 6f 6c 20 72 65 74 72 79 29 3b 0d 0a 0d 0a  bool retry);....
66b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
66c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
66d0: 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ns the number of
66e0: 20 70 61 67 65 73 20 72 65 6d 61 69 6e 69 6e 67   pages remaining
66f0: 20 74 6f 20 62 65 20 63 6f 70 69 65 64 20 66 72   to be copied fr
6700: 6f 6d 20 74 68 65 20 73 6f 75 72 63 65 0d 0a 20  om the source.. 
6710: 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20     /// database 
6720: 74 6f 20 74 68 65 20 64 65 73 74 69 6e 61 74 69  to the destinati
6730: 6f 6e 20 64 61 74 61 62 61 73 65 20 61 73 73 6f  on database asso
6740: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
6750: 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 2f  specified..    /
6760: 2f 2f 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74  // backup object
6770: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6780: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6790: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 63 6b  param name="back
67a0: 75 70 22 3e 54 68 65 20 62 61 63 6b 75 70 20 6f  up">The backup o
67b0: 62 6a 65 63 74 20 74 6f 20 63 68 65 63 6b 2e 3c  bject to check.<
67c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
67d0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 6e 75   <returns>The nu
67e0: 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20 72 65  mber of pages re
67f0: 6d 61 69 6e 69 6e 67 20 74 6f 20 62 65 20 63 6f  maining to be co
6800: 70 69 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  pied.</returns>.
6810: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
6820: 73 74 72 61 63 74 20 69 6e 74 20 52 65 6d 61 69  stract int Remai
6830: 6e 69 6e 67 42 61 63 6b 75 70 28 53 51 4c 69 74  ningBackup(SQLit
6840: 65 42 61 63 6b 75 70 20 62 61 63 6b 75 70 29 3b  eBackup backup);
6850: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
6860: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
6870: 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c  eturns the total
6880: 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73   number of pages
6890: 20 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 64   in the source d
68a0: 61 74 61 62 61 73 65 20 61 73 73 6f 63 69 61 74  atabase associat
68b0: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 74 68  ed..    /// with
68c0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
68d0: 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20  ackup object... 
68e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
68f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6900: 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e  m name="backup">
6910: 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  The backup objec
6920: 74 20 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72  t to check.</par
6930: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
6940: 74 75 72 6e 73 3e 54 68 65 20 74 6f 74 61 6c 20  turns>The total 
6950: 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73 20  number of pages 
6960: 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 64 61  in the source da
6970: 74 61 62 61 73 65 2e 3c 2f 72 65 74 75 72 6e 73  tabase.</returns
6980: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6990: 61 62 73 74 72 61 63 74 20 69 6e 74 20 50 61 67  abstract int Pag
69a0: 65 43 6f 75 6e 74 42 61 63 6b 75 70 28 53 51 4c  eCountBackup(SQL
69b0: 69 74 65 42 61 63 6b 75 70 20 62 61 63 6b 75 70  iteBackup backup
69c0: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
69d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
69e0: 20 44 65 73 74 72 6f 79 73 20 74 68 65 20 62 61   Destroys the ba
69f0: 63 6b 75 70 20 6f 62 6a 65 63 74 2c 20 72 6f 6c  ckup object, rol
6a00: 6c 69 6e 67 20 62 61 63 6b 20 61 6e 79 20 62 61  ling back any ba
6a10: 63 6b 75 70 20 74 68 61 74 20 6d 61 79 20 62 65  ckup that may be
6a20: 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f   in..    /// pro
6a30: 67 65 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  gess...    /// <
6a40: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6a50: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6a60: 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61 63 6b  backup">The back
6a70: 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 64 65 73  up object to des
6a80: 74 72 6f 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  troy.</param>.. 
6a90: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
6aa0: 72 61 63 74 20 76 6f 69 64 20 46 69 6e 69 73 68  ract void Finish
6ab0: 42 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63  Backup(SQLiteBac
6ac0: 6b 75 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  kup backup);....
6ad0: 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
6b40: 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
6b50: 65 6d 62 65 72 73 0d 0a 20 20 20 20 70 75 62 6c  embers..    publ
6b60: 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
6b70: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
6b80: 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
6b90: 0d 0a 20 20 20 20 20 20 20 20 47 43 2e 53 75 70  ..        GC.Sup
6ba0: 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
6bb0: 69 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  is);..    }..   
6bc0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
6bd0: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c30: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
6c40: 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
6c50: 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
6c60: 0a 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f  .    private boo
6c70: 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20  l disposed;..   
6c80: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
6c90: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
6ca0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 7b   throw */..    {
6cb0: 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44  ..#if THROW_ON_D
6cc0: 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20  ISPOSED..       
6cd0: 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a   if (disposed)..
6ce0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
6cf0: 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
6d00: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 74 79  osedException(ty
6d10: 70 65 6f 66 28 53 51 4c 69 74 65 42 61 73 65 29  peof(SQLiteBase)
6d20: 2e 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  .Name);..#endif.
6d30: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 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 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6da0: 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76  .    protected v
6db0: 69 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70  irtual void Disp
6dc0: 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69  ose(bool disposi
6dd0: 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ng)..    {..    
6de0: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
6df0: 64 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  d)..        {.. 
6e00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20             //if 
6e10: 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
6e20: 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20           //{..  
6e30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
6e70: 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
6e80: 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
6e90: 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
6ea0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
6ee0: 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20    //}....       
6ef0: 20 20 20 20 20 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 2f 2f 2f  ////////////////
6f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
6f20: 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
6f30: 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
6f40: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
6f50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
6f90: 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72     disposed = tr
6fa0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
6fb0: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6fc0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
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 2f 2f  ////////////////
7020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7030: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74      #region Dest
7040: 72 75 63 74 6f 72 0d 0a 20 20 20 20 7e 53 51 4c  ructor..    ~SQL
7050: 69 74 65 42 61 73 65 28 29 0d 0a 20 20 20 20 7b  iteBase()..    {
7060: 0d 0a 20 20 20 20 20 20 20 20 44 69 73 70 6f 73  ..        Dispos
7070: 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 7d  e(false);..    }
7080: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
7090: 0d 0a 0d 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f  ///////....    /
7100: 2f 20 54 68 65 73 65 20 73 74 61 74 69 63 73 20  / These statics 
7110: 61 72 65 20 68 65 72 65 20 66 6f 72 20 6c 61 63  are here for lac
7120: 6b 20 6f 66 20 61 20 62 65 74 74 65 72 20 70 6c  k of a better pl
7130: 61 63 65 20 74 6f 20 70 75 74 20 74 68 65 6d 2e  ace to put them.
7140: 0d 0a 20 20 20 20 2f 2f 20 54 68 65 79 20 65 78  ..    // They ex
7150: 69 73 74 20 68 65 72 65 20 62 65 63 61 75 73 65  ist here because
7160: 20 74 68 65 79 20 61 72 65 20 63 61 6c 6c 65 64   they are called
7170: 20 64 75 72 69 6e 67 20 74 68 65 20 66 69 6e 61   during the fina
7180: 6c 69 7a 61 74 69 6f 6e 20 6f 66 0d 0a 20 20 20  lization of..   
7190: 20 2f 2f 20 61 20 53 51 4c 69 74 65 53 74 61 74   // a SQLiteStat
71a0: 65 6d 65 6e 74 48 61 6e 64 6c 65 2c 20 53 51 4c  ementHandle, SQL
71b0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
71c0: 64 6c 65 2c 20 61 6e 64 20 53 51 4c 69 74 65 46  dle, and SQLiteF
71d0: 75 6e 63 74 69 6f 6e 43 6f 6f 6b 69 65 48 61 6e  unctionCookieHan
71e0: 64 6c 65 2e 0d 0a 20 20 20 20 2f 2f 20 54 68 65  dle...    // The
71f0: 72 65 66 6f 72 65 20 74 68 65 73 65 20 66 75 6e  refore these fun
7200: 63 74 69 6f 6e 73 20 68 61 76 65 20 74 6f 20 62  ctions have to b
7210: 65 20 73 74 61 74 69 63 2c 20 61 6e 64 20 68 61  e static, and ha
7220: 76 65 20 74 6f 20 62 65 20 6c 6f 77 2d 6c 65 76  ve to be low-lev
7230: 65 6c 2e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  el.....    /////
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 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
72a0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
72b0: 20 73 74 72 69 6e 67 5b 5d 20 5f 65 72 72 6f 72   string[] _error
72c0: 4d 65 73 73 61 67 65 73 20 3d 20 7b 0d 0a 20 20  Messages = {..  
72d0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
72e0: 4f 4b 20 20 20 20 20 20 20 20 20 20 2a 2f 20 22  OK          */ "
72f0: 6e 6f 74 20 61 6e 20 65 72 72 6f 72 22 2c 0d 0a  not an error",..
7300: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
7310: 45 5f 45 52 52 4f 52 20 20 20 20 20 20 20 2a 2f  E_ERROR       */
7320: 20 22 53 51 4c 20 6c 6f 67 69 63 20 65 72 72 6f   "SQL logic erro
7330: 72 20 6f 72 20 6d 69 73 73 69 6e 67 20 64 61 74  r or missing dat
7340: 61 62 61 73 65 22 2c 0d 0a 20 20 20 20 20 20 20  abase",..       
7350: 20 2f 2a 20 53 51 4c 49 54 45 5f 49 4e 54 45 52   /* SQLITE_INTER
7360: 4e 41 4c 20 20 20 20 2a 2f 20 22 69 6e 74 65 72  NAL    */ "inter
7370: 6e 61 6c 20 6c 6f 67 69 63 20 65 72 72 6f 72 22  nal logic error"
7380: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7390: 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20  LITE_PERM       
73a0: 20 2a 2f 20 22 61 63 63 65 73 73 20 70 65 72 6d   */ "access perm
73b0: 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 22 2c 0d  ission denied",.
73c0: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
73d0: 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20 2a  TE_ABORT       *
73e0: 2f 20 22 63 61 6c 6c 62 61 63 6b 20 72 65 71 75  / "callback requ
73f0: 65 73 74 65 64 20 71 75 65 72 79 20 61 62 6f 72  ested query abor
7400: 74 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  t",..        /* 
7410: 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20 20 20  SQLITE_BUSY     
7420: 20 20 20 2a 2f 20 22 64 61 74 61 62 61 73 65 20     */ "database 
7430: 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a 20 20 20  is locked",..   
7440: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4c       /* SQLITE_L
7450: 4f 43 4b 45 44 20 20 20 20 20 20 2a 2f 20 22 64  OCKED      */ "d
7460: 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 69 73  atabase table is
7470: 20 6c 6f 63 6b 65 64 22 2c 0d 0a 20 20 20 20 20   locked",..     
7480: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4e 4f 4d     /* SQLITE_NOM
7490: 45 4d 20 20 20 20 20 20 20 2a 2f 20 22 6f 75 74  EM       */ "out
74a0: 20 6f 66 20 6d 65 6d 6f 72 79 22 2c 0d 0a 20 20   of memory",..  
74b0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
74c0: 52 45 41 44 4f 4e 4c 59 20 20 20 20 2a 2f 20 22  READONLY    */ "
74d0: 61 74 74 65 6d 70 74 20 74 6f 20 77 72 69 74 65  attempt to write
74e0: 20 61 20 72 65 61 64 6f 6e 6c 79 20 64 61 74 61   a readonly data
74f0: 62 61 73 65 22 2c 0d 0a 20 20 20 20 20 20 20 20  base",..        
7500: 2f 2a 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 52  /* SQLITE_INTERR
7510: 55 50 54 20 20 20 2a 2f 20 22 69 6e 74 65 72 72  UPT   */ "interr
7520: 75 70 74 65 64 22 2c 0d 0a 20 20 20 20 20 20 20  upted",..       
7530: 20 2f 2a 20 53 51 4c 49 54 45 5f 49 4f 45 52 52   /* SQLITE_IOERR
7540: 20 20 20 20 20 20 20 2a 2f 20 22 64 69 73 6b 20         */ "disk 
7550: 49 2f 4f 20 65 72 72 6f 72 22 2c 0d 0a 20 20 20  I/O error",..   
7560: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43       /* SQLITE_C
7570: 4f 52 52 55 50 54 20 20 20 20 20 2a 2f 20 22 64  ORRUPT     */ "d
7580: 61 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61  atabase disk ima
7590: 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 22  ge is malformed"
75a0: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
75b0: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20  LITE_NOTFOUND   
75c0: 20 2a 2f 20 22 75 6e 6b 6e 6f 77 6e 20 6f 70 65   */ "unknown ope
75d0: 72 61 74 69 6f 6e 22 2c 0d 0a 20 20 20 20 20 20  ration",..      
75e0: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 46 55 4c 4c    /* SQLITE_FULL
75f0: 20 20 20 20 20 20 20 20 2a 2f 20 22 64 61 74 61          */ "data
7600: 62 61 73 65 20 6f 72 20 64 69 73 6b 20 69 73 20  base or disk is 
7610: 66 75 6c 6c 22 2c 0d 0a 20 20 20 20 20 20 20 20  full",..        
7620: 2f 2a 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  /* SQLITE_CANTOP
7630: 45 4e 20 20 20 20 2a 2f 20 22 75 6e 61 62 6c 65  EN    */ "unable
7640: 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 73   to open databas
7650: 65 20 66 69 6c 65 22 2c 0d 0a 20 20 20 20 20 20  e file",..      
7660: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 50 52 4f 54    /* SQLITE_PROT
7670: 4f 43 4f 4c 20 20 20 20 2a 2f 20 22 6c 6f 63 6b  OCOL    */ "lock
7680: 69 6e 67 20 70 72 6f 74 6f 63 6f 6c 22 2c 0d 0a  ing protocol",..
7690: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
76a0: 45 5f 45 4d 50 54 59 20 20 20 20 20 20 20 2a 2f  E_EMPTY       */
76b0: 20 22 74 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73   "table contains
76c0: 20 6e 6f 20 64 61 74 61 22 2c 0d 0a 20 20 20 20   no data",..    
76d0: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 53 43      /* SQLITE_SC
76e0: 48 45 4d 41 20 20 20 20 20 20 2a 2f 20 22 64 61  HEMA      */ "da
76f0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 68 61  tabase schema ha
7700: 73 20 63 68 61 6e 67 65 64 22 2c 0d 0a 20 20 20  s changed",..   
7710: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 54       /* SQLITE_T
7720: 4f 4f 42 49 47 20 20 20 20 20 20 2a 2f 20 22 73  OOBIG      */ "s
7730: 74 72 69 6e 67 20 6f 72 20 62 6c 6f 62 20 74 6f  tring or blob to
7740: 6f 20 62 69 67 22 2c 0d 0a 20 20 20 20 20 20 20  o big",..       
7750: 20 2f 2a 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54   /* SQLITE_CONST
7760: 52 41 49 4e 54 20 20 2a 2f 20 22 63 6f 6e 73 74  RAINT  */ "const
7770: 72 61 69 6e 74 20 66 61 69 6c 65 64 22 2c 0d 0a  raint failed",..
7780: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
7790: 45 5f 4d 49 53 4d 41 54 43 48 20 20 20 20 2a 2f  E_MISMATCH    */
77a0: 20 22 64 61 74 61 74 79 70 65 20 6d 69 73 6d 61   "datatype misma
77b0: 74 63 68 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  tch",..        /
77c0: 2a 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20  * SQLITE_MISUSE 
77d0: 20 20 20 20 20 2a 2f 20 22 6c 69 62 72 61 72 79       */ "library
77e0: 20 72 6f 75 74 69 6e 65 20 63 61 6c 6c 65 64 20   routine called 
77f0: 6f 75 74 20 6f 66 20 73 65 71 75 65 6e 63 65 22  out of sequence"
7800: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7810: 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20  LITE_NOLFS      
7820: 20 2a 2f 20 22 6c 61 72 67 65 20 66 69 6c 65 20   */ "large file 
7830: 73 75 70 70 6f 72 74 20 69 73 20 64 69 73 61 62  support is disab
7840: 6c 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  led",..        /
7850: 2a 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20  * SQLITE_AUTH   
7860: 20 20 20 20 20 2a 2f 20 22 61 75 74 68 6f 72 69       */ "authori
7870: 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 22 2c 0d  zation denied",.
7880: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7890: 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20 2a  TE_FORMAT      *
78a0: 2f 20 22 61 75 78 69 6c 69 61 72 79 20 64 61 74  / "auxiliary dat
78b0: 61 62 61 73 65 20 66 6f 72 6d 61 74 20 65 72 72  abase format err
78c0: 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a  or",..        /*
78d0: 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20   SQLITE_RANGE   
78e0: 20 20 20 20 2a 2f 20 22 62 69 6e 64 20 6f 72 20      */ "bind or 
78f0: 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20 6f 75 74  column index out
7900: 20 6f 66 20 72 61 6e 67 65 22 2c 0d 0a 20 20 20   of range",..   
7910: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4e       /* SQLITE_N
7920: 4f 54 41 44 42 20 20 20 20 20 20 2a 2f 20 22 66  OTADB      */ "f
7930: 69 6c 65 20 69 73 20 65 6e 63 72 79 70 74 65 64  ile is encrypted
7940: 20 6f 72 20 69 73 20 6e 6f 74 20 61 20 64 61 74   or is not a dat
7950: 61 62 61 73 65 22 2c 0d 0a 20 20 20 20 20 20 20  abase",..       
7960: 20 2f 2a 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43   /* SQLITE_NOTIC
7970: 45 20 20 20 20 20 20 2a 2f 20 22 6e 6f 74 69 66  E      */ "notif
7980: 69 63 61 74 69 6f 6e 20 6d 65 73 73 61 67 65 22  ication message"
7990: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
79a0: 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 20 20 20  LITE_WARNING    
79b0: 20 2a 2f 20 22 77 61 72 6e 69 6e 67 20 6d 65 73   */ "warning mes
79c0: 73 61 67 65 22 0d 0a 20 20 20 20 7d 3b 0d 0a 0d  sage"..    };...
79d0: 0a 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a30: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
7a40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7a50: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 65  // Returns the e
7a60: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 66 6f 72  rror message for
7a70: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 53   the specified S
7a80: 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
7a90: 65 20 75 73 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f  e using..    ///
7aa0: 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 74   the internal st
7ab0: 61 74 69 63 20 6c 6f 6f 6b 75 70 20 74 61 62 6c  atic lookup tabl
7ac0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
7ad0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7ae0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 63 22  <param name="rc"
7af0: 3e 54 68 65 20 53 51 4c 69 74 65 20 72 65 74 75  >The SQLite retu
7b00: 72 6e 20 63 6f 64 65 2e 3c 2f 70 61 72 61 6d 3e  rn code.</param>
7b10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
7b20: 6e 73 3e 54 68 65 20 65 72 72 6f 72 20 6d 65 73  ns>The error mes
7b30: 73 61 67 65 20 6f 72 20 6e 75 6c 6c 20 69 66 20  sage or null if 
7b40: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75  it cannot be fou
7b50: 6e 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  nd.</returns>.. 
7b60: 20 20 20 70 72 6f 74 65 63 74 65 64 20 73 74 61     protected sta
7b70: 74 69 63 20 73 74 72 69 6e 67 20 46 61 6c 6c 62  tic string Fallb
7b80: 61 63 6b 47 65 74 45 72 72 6f 72 53 74 72 69 6e  ackGetErrorStrin
7b90: 67 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  g(SQLiteErrorCod
7ba0: 65 20 72 63 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  e rc)..    {..  
7bb0: 20 20 20 20 20 20 69 66 20 28 5f 65 72 72 6f 72        if (_error
7bc0: 4d 65 73 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c  Messages == null
7bd0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
7be0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
7bf0: 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
7c00: 20 3d 20 28 69 6e 74 29 72 63 3b 0d 0a 0d 0a 20   = (int)rc;.... 
7c10: 20 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65         if ((inde
7c20: 78 20 3c 20 30 29 20 7c 7c 20 28 69 6e 64 65 78  x < 0) || (index
7c30: 20 3e 3d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67   >= _errorMessag
7c40: 65 73 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20  es.Length))..   
7c50: 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d           index =
7c60: 20 28 69 6e 74 29 53 51 4c 69 74 65 45 72 72 6f   (int)SQLiteErro
7c70: 72 43 6f 64 65 2e 45 72 72 6f 72 3b 20 2f 2a 20  rCode.Error; /* 
7c80: 4d 61 6b 65 20 69 6e 74 6f 20 67 65 6e 65 72 69  Make into generi
7c90: 63 20 65 72 72 6f 72 2e 20 2a 2f 0d 0a 0d 0a 20  c error. */.... 
7ca0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 65         return _e
7cb0: 72 72 6f 72 4d 65 73 73 61 67 65 73 5b 69 6e 64  rrorMessages[ind
7cc0: 65 78 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ex];..    }.... 
7cd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
7ce0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 4c 61 73  ic string GetLas
7cf0: 74 45 72 72 6f 72 28 53 51 4c 69 74 65 43 6f 6e  tError(SQLiteCon
7d00: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64  nectionHandle hd
7d10: 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 0d 0a 20  l, IntPtr db).. 
7d20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
7d30: 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20   ((hdl == null) 
7d40: 7c 7c 20 28 64 62 20 3d 3d 20 49 6e 74 50 74 72  || (db == IntPtr
7d50: 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20  .Zero))..       
7d60: 20 20 20 20 20 72 65 74 75 72 6e 20 22 6e 75 6c       return "nul
7d70: 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 72 20  l connection or 
7d80: 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 22  database handle"
7d90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ;....        str
7da0: 69 6e 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c  ing result = nul
7db0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72  l;....        tr
7dc0: 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
7dd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
7de0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
7df0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e    }..        fin
7e00: 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68  ally /* NOTE: Th
7e10: 72 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f  read.Abort() pro
7e20: 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20  tection. */..   
7e30: 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54       {..#if PLAT
7e40: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
7e50: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
7e60: 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e     lock (hdl.syn
7e70: 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20  cRoot)..#else.. 
7e80: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
7e90: 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20  (hdl)..#endif.. 
7ea0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
7eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7ec0: 20 28 21 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64   (!hdl.IsInvalid
7ed0: 20 26 26 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65   && !hdl.IsClose
7ee0: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
7ef0: 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49      {..#if !SQLI
7f00: 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 20 69 6e 74 20 6c 65 6e 20 3d 20 30 3b 0d 0a 20   int len = 0;.. 
7f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f40: 20 20 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38     result = UTF8
7f50: 54 6f 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e  ToString(UnsafeN
7f60: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
7f70: 69 74 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65  ite3_errmsg_inte
7f80: 72 6f 70 28 64 62 2c 20 72 65 66 20 6c 65 6e 29  rop(db, ref len)
7f90: 2c 20 6c 65 6e 29 3b 0d 0a 23 65 6c 73 65 0d 0a  , len);..#else..
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 20 20 20 72 65 73 75 6c 74 20 3d 20 55 54 46      result = UTF
7fc0: 38 54 6f 53 74 72 69 6e 67 28 55 6e 73 61 66 65  8ToString(Unsafe
7fd0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
7fe0: 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 64 62 29  lite3_errmsg(db)
7ff0: 2c 20 2d 31 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  , -1);..#endif..
8000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8010: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
8020: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
8030: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8050: 72 65 73 75 6c 74 20 3d 20 22 63 6c 6f 73 65 64  result = "closed
8060: 20 6f 72 20 69 6e 76 61 6c 69 64 20 63 6f 6e 6e   or invalid conn
8070: 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 22 3b 0d  ection handle";.
8080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8090: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
80a0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
80b0: 20 20 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69        GC.KeepAli
80c0: 76 65 28 68 64 6c 29 3b 0d 0a 20 20 20 20 20 20  ve(hdl);..      
80d0: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
80e0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
80f0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
8100: 6f 69 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70  oid FinishBackup
8110: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
8120: 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74  nHandle hdl, Int
8130: 50 74 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20  Ptr backup)..   
8140: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
8150: 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  (hdl == null) ||
8160: 20 28 62 61 63 6b 75 70 20 3d 3d 20 49 6e 74 50   (backup == IntP
8170: 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e  tr.Zero)) return
8180: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
8190: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
81a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
81b0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
81c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61   }..        fina
81d0: 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72  lly /* NOTE: Thr
81e0: 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74  ead.Abort() prot
81f0: 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20  ection. */..    
8200: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
8210: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
8220: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
8230: 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63    lock (hdl.sync
8240: 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  Root)..#else..  
8250: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
8260: 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  hdl)..#endif..  
8270: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
8280: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
8290: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
82a0: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
82b0: 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74  de n = UnsafeNat
82c0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
82d0: 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68  e3_backup_finish
82e0: 5f 69 6e 74 65 72 6f 70 28 62 61 63 6b 75 70 29  _interop(backup)
82f0: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
8300: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
8310: 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e  ErrorCode n = Un
8320: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
8330: 73 2e 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  s.sqlite3_backup
8340: 5f 66 69 6e 69 73 68 28 62 61 63 6b 75 70 29 3b  _finish(backup);
8350: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
8360: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20            if (n 
8370: 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  != SQLiteErrorCo
8380: 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77  de.Ok) throw new
8390: 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
83a0: 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  (n, null);..    
83b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
83c0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
83d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
83e0: 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 42 6c 6f  ic void CloseBlo
83f0: 62 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  b(SQLiteConnecti
8400: 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
8410: 74 50 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20  tPtr blob)..    
8420: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  {..        if ((
8430: 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  hdl == null) || 
8440: 28 62 6c 6f 62 20 3d 3d 20 49 6e 74 50 74 72 2e  (blob == IntPtr.
8450: 5a 65 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a  Zero)) return;..
8460: 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
8470: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8480: 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
8490: 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ing...        }.
84a0: 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79  .        finally
84b0: 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64   /* NOTE: Thread
84c0: 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74  .Abort() protect
84d0: 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ion. */..       
84e0: 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d   {..#if PLATFORM
84f0: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
8500: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  K..            l
8510: 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f  ock (hdl.syncRoo
8520: 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  t)..#else..     
8530: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c         lock (hdl
8540: 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  )..#endif..     
8550: 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53         {..#if !S
8560: 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a  QLITE_STANDARD..
8570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8580: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8590: 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  n = UnsafeNative
85a0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
85b0: 62 6c 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  blob_close_inter
85c0: 6f 70 28 62 6c 6f 62 29 3b 0d 0a 23 65 6c 73 65  op(blob);..#else
85d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
85e0: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
85f0: 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  e n = UnsafeNati
8600: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
8610: 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 62 6c 6f  3_blob_close(blo
8620: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  b);..#endif..   
8630: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8640: 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  (n != SQLiteErro
8650: 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20  rCode.Ok) throw 
8660: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
8670: 69 6f 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a 20  ion(n, null);.. 
8680: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8690: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
86a0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
86b0: 74 61 74 69 63 20 76 6f 69 64 20 46 69 6e 61 6c  tatic void Final
86c0: 69 7a 65 53 74 61 74 65 6d 65 6e 74 28 53 51 4c  izeStatement(SQL
86d0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
86e0: 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20  dle hdl, IntPtr 
86f0: 73 74 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  stmt)..    {..  
8700: 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d        if ((hdl =
8710: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 73 74 6d 74  = null) || (stmt
8720: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
8730: 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20  ) return;....   
8740: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
8750: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8760: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
8770: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8780: 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e      finally /* N
8790: 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72  OTE: Thread.Abor
87a0: 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20  t() protection. 
87b0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  */..        {..#
87c0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
87d0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
87e0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
87f0: 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  hdl.syncRoot)..#
8800: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
8810: 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65    lock (hdl)..#e
8820: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
8830: 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45    {..#if !SQLITE
8840: 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
8850: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
8860: 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55  eErrorCode n = U
8870: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8880: 64 73 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  ds.sqlite3_final
8890: 69 7a 65 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74  ize_interop(stmt
88a0: 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
88b0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
88c0: 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55  eErrorCode n = U
88d0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
88e0: 64 73 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  ds.sqlite3_final
88f0: 69 7a 65 28 73 74 6d 74 29 3b 0d 0a 23 65 6e 64  ize(stmt);..#end
8900: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
8910: 20 20 20 20 69 66 20 28 6e 20 21 3d 20 53 51 4c      if (n != SQL
8920: 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
8930: 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
8940: 65 45 78 63 65 70 74 69 6f 6e 28 6e 2c 20 6e 75  eException(n, nu
8950: 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
8960: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
8970: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
8980: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
8990: 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f  d CloseConnectio
89a0: 6e 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  n(SQLiteConnecti
89b0: 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
89c0: 74 50 74 72 20 64 62 29 0d 0a 20 20 20 20 7b 0d  tPtr db)..    {.
89d0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64  .        if ((hd
89e0: 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64  l == null) || (d
89f0: 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b == IntPtr.Zero
8a00: 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20  )) return;....  
8a10: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
8a20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8a30: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
8a40: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
8a50: 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20       finally /* 
8a60: 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f  NOTE: Thread.Abo
8a70: 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e  rt() protection.
8a80: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
8a90: 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  #if PLATFORM_COM
8aa0: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
8ab0: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20             lock 
8ac0: 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a  (hdl.syncRoot)..
8ad0: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
8ae0: 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23     lock (hdl)..#
8af0: 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20  endif..         
8b00: 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54     {..#if !SQLIT
8b10: 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20  E_STANDARD..    
8b20: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
8b30: 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20  teErrorCode n = 
8b40: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
8b50: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ods.sqlite3_clos
8b60: 65 5f 69 6e 74 65 72 6f 70 28 64 62 29 3b 0d 0a  e_interop(db);..
8b70: 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20  #else..         
8b80: 20 20 20 20 20 20 20 52 65 73 65 74 43 6f 6e 6e         ResetConn
8b90: 65 63 74 69 6f 6e 28 68 64 6c 2c 20 64 62 2c 20  ection(hdl, db, 
8ba0: 66 61 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  false);....     
8bb0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
8bc0: 65 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55  eErrorCode n = U
8bd0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8be0: 64 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  ds.sqlite3_close
8bf0: 28 64 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  (db);..#endif.. 
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8c10: 66 20 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72  f (n != SQLiteEr
8c20: 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f  rorCode.Ok) thro
8c30: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
8c40: 70 74 69 6f 6e 28 6e 2c 20 47 65 74 4c 61 73 74  ption(n, GetLast
8c50: 45 72 72 6f 72 28 68 64 6c 2c 20 64 62 29 29 3b  Error(hdl, db));
8c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8c70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8c80: 7d 0d 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f  }....#if !INTERO
8c90: 50 5f 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a  P_LEGACY_CLOSE..
8ca0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8cb0: 74 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f  tic void CloseCo
8cc0: 6e 6e 65 63 74 69 6f 6e 56 32 28 53 51 4c 69 74  nnectionV2(SQLit
8cd0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
8ce0: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
8cf0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
8d00: 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75    if ((hdl == nu
8d10: 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e  ll) || (db == In
8d20: 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75  tPtr.Zero)) retu
8d30: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  rn;....        t
8d40: 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
8d50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
8d60: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
8d70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69     }..        fi
8d80: 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54  nally /* NOTE: T
8d90: 68 72 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72  hread.Abort() pr
8da0: 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20  otection. */..  
8db0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
8dc0: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
8dd0: 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
8de0: 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79      lock (hdl.sy
8df0: 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a  ncRoot)..#else..
8e00: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
8e10: 20 28 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a   (hdl)..#endif..
8e20: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23              {..#
8e30: 69 66 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44  if !SQLITE_STAND
8e40: 41 52 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ARD..           
8e50: 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
8e60: 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e  Code n = UnsafeN
8e70: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
8e80: 69 74 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72  ite3_close_inter
8e90: 6f 70 28 64 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a  op(db);..#else..
8ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8eb0: 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28  ResetConnection(
8ec0: 68 64 6c 2c 20 64 62 2c 20 66 61 6c 73 65 29 3b  hdl, db, false);
8ed0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8ee0: 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
8ef0: 6f 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61  ode n = UnsafeNa
8f00: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
8f10: 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 64 62 29  te3_close_v2(db)
8f20: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
8f30: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
8f40: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
8f50: 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65  ode.Ok) throw ne
8f60: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
8f70: 6e 28 6e 2c 20 47 65 74 4c 61 73 74 45 72 72 6f  n(n, GetLastErro
8f80: 72 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20  r(hdl, db));..  
8f90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
8fa0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 23       }..    }..#
8fb0: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74  endif....    int
8fc0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
8fd0: 6c 20 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f  l ResetConnectio
8fe0: 6e 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  n(SQLiteConnecti
8ff0: 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e  onHandle hdl, In
9000: 74 50 74 72 20 64 62 2c 20 62 6f 6f 6c 20 63 61  tPtr db, bool ca
9010: 6e 54 68 72 6f 77 29 0d 0a 20 20 20 20 7b 0d 0a  nThrow)..    {..
9020: 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64 6c          if ((hdl
9030: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62   == null) || (db
9040: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
9050: 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d  ) return false;.
9060: 0a 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  ...        bool 
9070: 72 65 73 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d  result = false;.
9080: 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
9090: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
90a0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
90b0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
90c0: 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
90d0: 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61  y /* NOTE: Threa
90e0: 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63  d.Abort() protec
90f0: 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  tion. */..      
9100: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
9110: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
9120: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
9130: 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f  lock (hdl.syncRo
9140: 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ot)..#else..    
9150: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
9160: 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  l)..#endif..    
9170: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9180: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
9190: 61 6e 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49  anThrow && hdl.I
91a0: 73 49 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20  sInvalid)..     
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
91c0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
91d0: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
91e0: 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69  on("The connecti
91f0: 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 69 6e 76  on handle is inv
9200: 61 6c 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20  alid.");....    
9210: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9220: 63 61 6e 54 68 72 6f 77 20 26 26 20 68 64 6c 2e  canThrow && hdl.
9230: 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
9240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
9250: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
9260: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
9270: 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69  on("The connecti
9280: 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 63 6c 6f  on handle is clo
9290: 73 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  sed.");....     
92a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
92b0: 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26 26  hdl.IsInvalid &&
92c0: 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29 0d   !hdl.IsClosed).
92d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
92e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
92f0: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 73          IntPtr s
9300: 74 6d 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  tmt = IntPtr.Zer
9310: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
9320: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
9330: 72 6f 72 43 6f 64 65 20 6e 3b 0d 0a 0d 0a 20 20  rorCode n;....  
9340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9350: 20 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20    do..          
9360: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 20 20 20 20 20 73 74 6d 74 20 3d 20 55 6e 73 61       stmt = Unsa
9390: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
93a0: 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d  sqlite3_next_stm
93b0: 74 28 64 62 2c 20 73 74 6d 74 29 3b 0d 0a 20 20  t(db, stmt);..  
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93d0: 20 20 20 20 20 20 69 66 20 28 73 74 6d 74 20 21        if (stmt !
93e0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9400: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
9410: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
9420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 20 3d               n =
9440: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
9450: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73  hods.sqlite3_res
9460: 65 74 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29  et_interop(stmt)
9470: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
9480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9490: 20 20 20 20 20 20 6e 20 3d 20 55 6e 73 61 66 65        n = Unsafe
94a0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
94b0: 6c 69 74 65 33 5f 72 65 73 65 74 28 73 74 6d 74  lite3_reset(stmt
94c0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
94f0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 77 68 69             } whi
9500: 6c 65 20 28 73 74 6d 74 20 21 3d 20 49 6e 74 50  le (stmt != IntP
9510: 74 72 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20  tr.Zero);....   
9520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9530: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9540: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
9550: 3a 20 49 73 20 61 20 74 72 61 6e 73 61 63 74 69  : Is a transacti
9560: 6f 6e 20 4e 4f 54 20 70 65 6e 64 69 6e 67 20 6f  on NOT pending o
9570: 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  n the connection
9580: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
9590: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
95a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
95b0: 66 20 28 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28  f (IsAutocommit(
95c0: 68 64 6c 2c 20 64 62 29 29 0d 0a 20 20 20 20 20  hdl, db))..     
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
95e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95f0: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
9600: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
9610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9630: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9660: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 55 6e            n = Un
9670: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
9680: 73 2e 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0d  s.sqlite3_exec(.
9690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
96a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 62 2c               db,
96b0: 20 54 6f 55 54 46 38 28 22 52 4f 4c 4c 42 41 43   ToUTF8("ROLLBAC
96c0: 4b 22 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  K"), IntPtr.Zero
96d0: 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a  , IntPtr.Zero,..
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
9700: 73 74 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  stmt);....      
9710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9720: 20 20 69 66 20 28 6e 20 3d 3d 20 53 51 4c 69 74    if (n == SQLit
9730: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a  eErrorCode.Ok)..
9740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9750: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9770: 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
9780: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
97a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97b0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
97c0: 66 20 28 63 61 6e 54 68 72 6f 77 29 0d 0a 20 20  f (canThrow)..  
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
97f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9800: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53       throw new S
9810: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e  QLiteException(n
9820: 2c 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28 68  , GetLastError(h
9830: 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20 20  dl, db));..     
9840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9850: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9860: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9870: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9880: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9890: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
98a0: 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68    GC.KeepAlive(h
98b0: 64 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  dl);..        re
98c0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
98d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72    }....    inter
98e0: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
98f0: 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28 53 51 4c  IsAutocommit(SQL
9900: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e  iteConnectionHan
9910: 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20  dle hdl, IntPtr 
9920: 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  db)..    {..    
9930: 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20      if ((hdl == 
9940: 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20  null) || (db == 
9950: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65  IntPtr.Zero)) re
9960: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
9970: 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 73 75         bool resu
9980: 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  lt = false;.... 
9990: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
99a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
99b0: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
99c0: 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ...        }..  
99d0: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a        finally /*
99e0: 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62   NOTE: Thread.Ab
99f0: 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e  ort() protection
9a00: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d  . */..        {.
9a10: 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f  .#if PLATFORM_CO
9a20: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b              lock
9a40: 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d   (hdl.syncRoot).
9a50: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
9a60: 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a      lock (hdl)..
9a70: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
9a80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9a90: 20 20 20 20 20 20 20 69 66 20 28 21 68 64 6c 2e         if (!hdl.
9aa0: 49 73 49 6e 76 61 6c 69 64 20 26 26 20 21 68 64  IsInvalid && !hd
9ab0: 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20  l.IsClosed)..   
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ad0: 20 72 65 73 75 6c 74 20 3d 20 28 55 6e 73 61 66   result = (Unsaf
9ae0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
9af0: 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63  qlite3_get_autoc
9b00: 6f 6d 6d 69 74 28 64 62 29 20 3d 3d 20 31 29 3b  ommit(db) == 1);
9b10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9b20: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9b30: 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65      GC.KeepAlive
9b40: 28 68 64 6c 29 3b 20 2f 2a 20 4e 4f 54 45 3a 20  (hdl); /* NOTE: 
9b50: 55 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65  Unreachable code
9b60: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65  . */..        re
9b70: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
9b80: 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f    }..  }....  //
9b90: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
9ba0: 2f 2f 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  //..  /// </summ
9bb0: 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 69  ary>..  public i
9bc0: 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65  nterface ISQLite
9bd0: 53 63 68 65 6d 61 45 78 74 65 6e 73 69 6f 6e 73  SchemaExtensions
9be0: 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f  ..  {..      ///
9bf0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9c00: 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 74 65    /// Creates te
9c10: 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 20 6f  mporary tables o
9c20: 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  n the connection
9c30: 20 73 6f 20 73 63 68 65 6d 61 20 69 6e 66 6f 72   so schema infor
9c40: 6d 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 71 75  mation can be qu
9c50: 65 72 69 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  eried...      //
9c60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
9c70: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9c80: 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
9c90: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
9ca0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 70 6f 6e   connection upon
9cb0: 20 77 68 69 63 68 20 74 6f 20 62 75 69 6c 64 20   which to build 
9cc0: 74 68 65 20 73 63 68 65 6d 61 20 74 61 62 6c 65  the schema table
9cd0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
9ce0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 76 6f  param>..      vo
9cf0: 69 64 20 42 75 69 6c 64 54 65 6d 70 53 63 68 65  id BuildTempSche
9d00: 6d 61 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  ma(SQLiteConnect
9d10: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ion connection);
9d20: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 5b 46 6c 61 67  ..  }....  [Flag
9d30: 73 5d 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65  s]..  internal e
9d40: 6e 75 6d 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  num SQLiteOpenFl
9d50: 61 67 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  agsEnum..  {..  
9d60: 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 20 20 20    None = 0,..   
9d70: 20 52 65 61 64 4f 6e 6c 79 20 3d 20 30 78 31 2c   ReadOnly = 0x1,
9d80: 0d 0a 20 20 20 20 52 65 61 64 57 72 69 74 65 20  ..    ReadWrite 
9d90: 3d 20 30 78 32 2c 0d 0a 20 20 20 20 43 72 65 61  = 0x2,..    Crea
9da0: 74 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20 20 55  te = 0x4,..    U
9db0: 72 69 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20  ri = 0x40,..    
9dc0: 4d 65 6d 6f 72 79 20 3d 20 30 78 38 30 2c 0d 0a  Memory = 0x80,..
9dd0: 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 52 65      Default = Re
9de0: 61 64 57 72 69 74 65 20 7c 20 43 72 65 61 74 65  adWrite | Create
9df0: 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  ,..  }....  /// 
9e00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
9e10: 20 54 68 65 20 65 78 74 72 61 20 62 65 68 61 76   The extra behav
9e20: 69 6f 72 61 6c 20 66 6c 61 67 73 20 74 68 61 74  ioral flags that
9e30: 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20   can be applied 
9e40: 74 6f 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  to a connection.
9e50: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
9e60: 79 3e 0d 0a 20 20 5b 46 6c 61 67 73 28 29 5d 0d  y>..  [Flags()].
9e70: 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53  .  public enum S
9e80: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
9e90: 6c 61 67 73 20 3a 20 6c 6f 6e 67 0d 0a 20 20 7b  lags : long..  {
9ea0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
9eb0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
9ec0: 20 4e 6f 20 65 78 74 72 61 20 66 6c 61 67 73 2e   No extra flags.
9ed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
9ef0: 6e 65 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20  ne = 0x0,....   
9f00: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9f10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62  ..      /// Enab
9f20: 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c  le logging of al
9f30: 6c 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  l SQL statements
9f40: 20 74 6f 20 62 65 20 70 72 65 70 61 72 65 64 2e   to be prepared.
9f50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
9f60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f  mmary>..      Lo
9f70: 67 50 72 65 70 61 72 65 20 3d 20 30 78 31 2c 0d  gPrepare = 0x1,.
9f80: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
9f90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
9fa0: 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67  / Enable logging
9fb0: 20 6f 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61   of all bound pa
9fc0: 72 61 6d 65 74 65 72 20 74 79 70 65 73 20 61 6e  rameter types an
9fd0: 64 20 72 61 77 20 76 61 6c 75 65 73 2e 0d 0a 20  d raw values... 
9fe0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9ff0: 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50 72  ry>..      LogPr
a000: 65 42 69 6e 64 20 3d 20 30 78 32 2c 0d 0a 0d 0a  eBind = 0x2,....
a010: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a020: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
a030: 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66  nable logging of
a040: 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61 6d   all bound param
a050: 65 74 65 72 20 73 74 72 6f 6e 67 6c 79 20 74 79  eter strongly ty
a060: 70 65 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  ped values...   
a070: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a080: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 42 69 6e 64  >..      LogBind
a090: 20 3d 20 30 78 34 2c 0d 0a 0d 0a 20 20 20 20 20   = 0x4,....     
a0a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a0b0: 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65        /// Enable
a0c0: 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20   logging of all 
a0d0: 65 78 63 65 70 74 69 6f 6e 73 20 63 61 75 67 68  exceptions caugh
a0e0: 74 20 66 72 6f 6d 20 75 73 65 72 2d 70 72 6f 76  t from user-prov
a0f0: 69 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ided..      /// 
a100: 6d 61 6e 61 67 65 64 20 63 6f 64 65 20 63 61 6c  managed code cal
a110: 6c 65 64 20 66 72 6f 6d 20 6e 61 74 69 76 65 20  led from native 
a120: 63 6f 64 65 20 76 69 61 20 64 65 6c 65 67 61 74  code via delegat
a130: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
a140: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a150: 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65   LogCallbackExce
a160: 70 74 69 6f 6e 20 3d 20 30 78 38 2c 0d 0a 0d 0a  ption = 0x8,....
a170: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a180: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
a190: 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66  nable logging of
a1a0: 20 62 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f   backup API erro
a1b0: 72 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  rs...      /// <
a1c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a1d0: 20 4c 6f 67 42 61 63 6b 75 70 20 3d 20 30 78 31   LogBackup = 0x1
a1e0: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
a1f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a200: 20 2f 2f 2f 20 53 6b 69 70 20 61 64 64 69 6e 67   /// Skip adding
a210: 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66   the extension f
a220: 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65  unctions provide
a230: 64 20 62 79 20 74 68 65 20 6e 61 74 69 76 65 0d  d by the native.
a240: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72  .      /// inter
a250: 6f 70 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20  op assembly...  
a260: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a270: 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 45 78 74 65  y>..      NoExte
a280: 6e 73 69 6f 6e 46 75 6e 63 74 69 6f 6e 73 20 3d  nsionFunctions =
a290: 20 30 78 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20   0x20,....      
a2a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
a2b0: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
a2c0: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
a2d0: 76 61 6c 75 65 73 20 77 69 74 68 20 74 68 65 20  values with the 
a2e0: 3c 73 65 65 20 63 72 65 66 3d 22 55 49 6e 74 33  <see cref="UInt3
a2f0: 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  2" />..      ///
a300: 20 74 79 70 65 2c 20 75 73 65 20 74 68 65 20 69   type, use the i
a310: 6e 74 65 72 6f 70 20 6d 65 74 68 6f 64 20 74 68  nterop method th
a320: 61 74 20 61 63 63 65 70 74 73 20 61 6e 20 3c 73  at accepts an <s
a330: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
a340: 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61  />..      /// va
a350: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
a360: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a370: 20 20 42 69 6e 64 55 49 6e 74 33 32 41 73 49 6e    BindUInt32AsIn
a380: 74 36 34 20 3d 20 30 78 34 30 2c 0d 0a 0d 0a 20  t64 = 0x40,.... 
a390: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a3a0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
a3b0: 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d  en binding param
a3c0: 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77  eter values, alw
a3d0: 61 79 73 20 62 69 6e 64 20 74 68 65 6d 20 61 73  ays bind them as
a3e0: 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72   though they wer
a3f0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c 61  e..      /// pla
a400: 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f  in text (i.e. no
a410: 20 6e 75 6d 65 72 69 63 2c 20 64 61 74 65 2f 74   numeric, date/t
a420: 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f  ime, or other co
a430: 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64  nversions should
a440: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61  ..      /// be a
a450: 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20  ttempted)...    
a460: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a470: 0d 0a 20 20 20 20 20 20 42 69 6e 64 41 6c 6c 41  ..      BindAllA
a480: 73 54 65 78 74 20 3d 20 30 78 38 30 2c 0d 0a 0d  sText = 0x80,...
a490: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a4a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a4b0: 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63  When returning c
a4c0: 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c  olumn values, al
a4d0: 77 61 79 73 20 72 65 74 75 72 6e 20 74 68 65 6d  ways return them
a4e0: 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20   as though they 
a4f0: 77 65 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  were..      /// 
a500: 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e  plain text (i.e.
a510: 20 6e 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61 74   no numeric, dat
a520: 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72  e/time, or other
a530: 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f   conversions sho
a540: 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  uld..      /// b
a550: 65 20 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20  e attempted)... 
a560: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a570: 72 79 3e 0d 0a 20 20 20 20 20 20 47 65 74 41 6c  ry>..      GetAl
a580: 6c 41 73 54 65 78 74 20 3d 20 30 78 31 30 30 2c  lAsText = 0x100,
a590: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
a5a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
a5b0: 2f 2f 20 50 72 65 76 65 6e 74 20 74 68 69 73 20  // Prevent this 
a5c0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
a5d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20  eConnection" /> 
a5e0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
a5f0: 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  from..      /// 
a600: 6c 6f 61 64 69 6e 67 20 65 78 74 65 6e 73 69 6f  loading extensio
a610: 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ns...      /// <
a620: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a630: 20 4e 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e   NoLoadExtension
a640: 20 3d 20 30 78 32 30 30 2c 0d 0a 0d 0a 23 69 66   = 0x200,....#if
a650: 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
a660: 5f 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f 2f  _TABLE..      //
a670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a680: 20 20 20 2f 2f 2f 20 50 72 65 76 65 6e 74 20 74     /// Prevent t
a690: 68 69 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53  his <see cref="S
a6a0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22  QLiteConnection"
a6b0: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
a6c0: 6e 63 65 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20  nce from..      
a6d0: 2f 2f 2f 20 63 72 65 61 74 69 6e 67 20 76 69 72  /// creating vir
a6e0: 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c  tual table modul
a6f0: 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  es...      /// <
a700: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
a710: 20 4e 6f 43 72 65 61 74 65 4d 6f 64 75 6c 65 20   NoCreateModule 
a720: 3d 20 30 78 34 30 30 2c 0d 0a 23 65 6e 64 69 66  = 0x400,..#endif
a730: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
a740: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
a750: 2f 2f 20 53 6b 69 70 20 62 69 6e 64 69 6e 67 20  // Skip binding 
a760: 61 6e 79 20 66 75 6e 63 74 69 6f 6e 73 20 70 72  any functions pr
a770: 6f 76 69 64 65 64 20 62 79 20 6f 74 68 65 72 20  ovided by other 
a780: 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 69  managed assembli
a790: 65 73 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f  es when..      /
a7a0: 2f 2f 20 6f 70 65 6e 69 6e 67 20 74 68 65 20 63  // opening the c
a7b0: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
a7c0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a7d0: 0d 0a 20 20 20 20 20 20 4e 6f 42 69 6e 64 46 75  ..      NoBindFu
a7e0: 6e 63 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 2c  nctions = 0x800,
a7f0: 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
a800: 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20  VIRTUAL_TABLE.. 
a810: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a820: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 6b  y>..      /// Sk
a830: 69 70 20 73 65 74 74 69 6e 67 20 74 68 65 20 6c  ip setting the l
a840: 6f 67 67 69 6e 67 20 72 65 6c 61 74 65 64 20 70  ogging related p
a850: 72 6f 70 65 72 74 69 65 73 20 6f 66 20 74 68 65  roperties of the
a860: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
a870: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
a880: 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
a890: 6e 73 74 61 6e 63 65 20 74 68 61 74 20 77 61 73  nstance that was
a8a0: 20 70 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20   passed to..    
a8b0: 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63    /// the <see c
a8c0: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
a8d0: 63 74 69 6f 6e 2e 43 72 65 61 74 65 4d 6f 64 75  ction.CreateModu
a8e0: 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  le" /> method...
a8f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a900: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 4c 6f  ary>..      NoLo
a910: 67 4d 6f 64 75 6c 65 20 3d 20 30 78 31 30 30 30  gModule = 0x1000
a920: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
a930: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a940: 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69  /// Enable loggi
a950: 6e 67 20 6f 66 20 61 6c 6c 20 76 69 72 74 75 61  ng of all virtua
a960: 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 65  l table module e
a970: 72 72 6f 72 73 20 73 65 65 6e 20 62 79 20 74 68  rrors seen by th
a980: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
a990: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f  e cref="SQLiteMo
a9a0: 64 75 6c 65 2e 53 65 74 54 61 62 6c 65 45 72 72  dule.SetTableErr
a9b0: 6f 72 28 49 6e 74 50 74 72 2c 53 74 72 69 6e 67  or(IntPtr,String
a9c0: 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  )" /> method... 
a9d0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
a9e0: 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f  ry>..      LogMo
a9f0: 64 75 6c 65 45 72 72 6f 72 20 3d 20 30 78 32 30  duleError = 0x20
aa00: 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  00,....      ///
aa10: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
aa20: 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67    /// Enable log
aa30: 67 69 6e 67 20 6f 66 20 63 65 72 74 61 69 6e 20  ging of certain 
aa40: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f  virtual table mo
aa50: 64 75 6c 65 20 65 78 63 65 70 74 69 6f 6e 73 20  dule exceptions 
aa60: 74 68 61 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20  that cannot..   
aa70: 20 20 20 2f 2f 2f 20 62 65 20 65 61 73 69 6c 79     /// be easily
aa80: 20 64 69 73 63 6f 76 65 72 65 64 20 76 69 61 20   discovered via 
aa90: 6f 74 68 65 72 20 6d 65 61 6e 73 2e 0d 0a 20 20  other means...  
aaa0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
aab0: 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64  y>..      LogMod
aac0: 75 6c 65 45 78 63 65 70 74 69 6f 6e 20 3d 20 30  uleException = 0
aad0: 78 34 30 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a  x4000,..#endif..
aae0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
aaf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
ab00: 20 45 6e 61 62 6c 65 20 74 72 61 63 69 6e 67 20   Enable tracing 
ab10: 6f 66 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69  of potentially i
ab20: 6d 70 6f 72 74 61 6e 74 20 5b 6e 6f 6e 2d 66 61  mportant [non-fa
ab30: 74 61 6c 5d 20 65 72 72 6f 72 20 63 6f 6e 64 69  tal] error condi
ab40: 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  tions..      ///
ab50: 20 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20   that cannot be 
ab60: 65 61 73 69 6c 79 20 72 65 70 6f 72 74 65 64 20  easily reported 
ab70: 74 68 72 6f 75 67 68 20 6f 74 68 65 72 20 6d 65  through other me
ab80: 61 6e 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ans...      /// 
ab90: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
aba0: 20 20 54 72 61 63 65 57 61 72 6e 69 6e 67 20 3d    TraceWarning =
abb0: 20 30 78 38 30 30 30 2c 0d 0a 0d 0a 20 20 20 20   0x8000,....    
abc0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
abd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
abe0: 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65  binding paramete
abf0: 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73  r values, always
ac00: 20 75 73 65 20 74 68 65 20 69 6e 76 61 72 69 61   use the invaria
ac10: 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 0d  nt culture when.
ac20: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65  .      /// conve
ac30: 72 74 69 6e 67 20 74 68 65 69 72 20 76 61 6c 75  rting their valu
ac40: 65 73 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e  es from strings.
ac50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
ac60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f  mmary>..      Co
ac70: 6e 76 65 72 74 49 6e 76 61 72 69 61 6e 74 54 65  nvertInvariantTe
ac80: 78 74 20 3d 20 30 78 31 30 30 30 30 2c 0d 0a 0d  xt = 0x10000,...
ac90: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
aca0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
acb0: 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72  When binding par
acc0: 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61  ameter values, a
acd0: 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 69 6e  lways use the in
ace0: 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20  variant culture 
acf0: 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  when..      /// 
ad00: 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72  converting their
ad10: 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e   values to strin
ad20: 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  gs...      /// <
ad30: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
ad40: 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54 65   BindInvariantTe
ad50: 78 74 20 3d 20 30 78 32 30 30 30 30 2c 0d 0a 0d  xt = 0x20000,...
ad60: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
ad70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
ad80: 44 69 73 61 62 6c 65 20 75 73 69 6e 67 20 74 68  Disable using th
ad90: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f  e connection poo
ada0: 6c 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 49  l by default.  I
adb0: 66 20 74 68 65 20 22 50 6f 6f 6c 69 6e 67 22 0d  f the "Pooling".
adc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65  .      /// conne
add0: 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f  ction string pro
ade0: 70 65 72 74 79 20 69 73 20 73 70 65 63 69 66 69  perty is specifi
adf0: 65 64 2c 20 69 74 73 20 76 61 6c 75 65 20 77 69  ed, its value wi
ae00: 6c 6c 20 6f 76 65 72 72 69 64 65 0d 0a 20 20 20  ll override..   
ae10: 20 20 20 2f 2f 2f 20 74 68 69 73 20 66 6c 61 67     /// this flag
ae20: 2e 20 20 54 68 65 20 70 72 65 63 69 73 65 20 6f  .  The precise o
ae30: 75 74 63 6f 6d 65 20 6f 66 20 63 6f 6d 62 69 6e  utcome of combin
ae40: 69 6e 67 20 74 68 69 73 20 66 6c 61 67 20 77 69  ing this flag wi
ae50: 74 68 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  th the..      //
ae60: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 55 73 65  / <see cref="Use
ae70: 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 22 20  ConnectionPool" 
ae80: 2f 3e 20 66 6c 61 67 20 69 73 20 75 6e 73 70 65  /> flag is unspe
ae90: 63 69 66 69 65 64 3b 20 68 6f 77 65 76 65 72 2c  cified; however,
aea0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 65 20  ..      /// one 
aeb0: 6f 66 20 74 68 65 20 66 6c 61 67 73 20 77 69 6c  of the flags wil
aec0: 6c 20 62 65 20 69 6e 20 65 66 66 65 63 74 2e 0d  l be in effect..
aed0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
aee0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43  mary>..      NoC
aef0: 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20 3d 20  onnectionPool = 
af00: 30 78 34 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0x40000,....    
af10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
af20: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  .      /// Enabl
af30: 65 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e  e using the conn
af40: 65 63 74 69 6f 6e 20 70 6f 6f 6c 20 62 79 20 64  ection pool by d
af50: 65 66 61 75 6c 74 2e 20 20 49 66 20 74 68 65 20  efault.  If the 
af60: 22 50 6f 6f 6c 69 6e 67 22 0d 0a 20 20 20 20 20  "Pooling"..     
af70: 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   /// connection 
af80: 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79 20  string property 
af90: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 69 74  is specified, it
afa0: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 6f 76 65  s value will ove
afb0: 72 72 69 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  rride..      ///
afc0: 20 74 68 69 73 20 66 6c 61 67 2e 20 20 54 68 65   this flag.  The
afd0: 20 70 72 65 63 69 73 65 20 6f 75 74 63 6f 6d 65   precise outcome
afe0: 20 6f 66 20 63 6f 6d 62 69 6e 69 6e 67 20 74 68   of combining th
aff0: 69 73 20 66 6c 61 67 20 77 69 74 68 20 74 68 65  is flag with the
b000: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
b010: 20 63 72 65 66 3d 22 4e 6f 43 6f 6e 6e 65 63 74   cref="NoConnect
b020: 69 6f 6e 50 6f 6f 6c 22 20 2f 3e 20 66 6c 61 67  ionPool" /> flag
b030: 20 69 73 20 75 6e 73 70 65 63 69 66 69 65 64 3b   is unspecified;
b040: 20 68 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20   however,..     
b050: 20 2f 2f 2f 20 6f 6e 65 20 6f 66 20 74 68 65 20   /// one of the 
b060: 66 6c 61 67 73 20 77 69 6c 6c 20 62 65 20 69 6e  flags will be in
b070: 20 65 66 66 65 63 74 2e 0d 0a 20 20 20 20 20 20   effect...      
b080: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b090: 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74        UseConnect
b0a0: 69 6f 6e 50 6f 6f 6c 20 3d 20 30 78 38 30 30 30  ionPool = 0x8000
b0b0: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
b0c0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b0d0: 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 75 73 69 6e   /// Enable usin
b0e0: 67 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e  g per-connection
b0f0: 20 6d 61 70 70 69 6e 67 73 20 62 65 74 77 65 65   mappings betwee
b100: 6e 20 74 79 70 65 20 6e 61 6d 65 73 20 61 6e 64  n type names and
b110: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
b120: 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
b130: 3e 20 76 61 6c 75 65 73 2e 20 20 41 6c 73 6f 20  > values.  Also 
b140: 73 65 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  see the..      /
b150: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
b160: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43  LiteConnection.C
b170: 6c 65 61 72 54 79 70 65 4d 61 70 70 69 6e 67 73  learTypeMappings
b180: 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  " />,..      ///
b190: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b1a0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 47 65 74  teConnection.Get
b1b0: 54 79 70 65 4d 61 70 70 69 6e 67 73 22 20 2f 3e  TypeMappings" />
b1c0: 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  , and..      ///
b1d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b1e0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 64 64  teConnection.Add
b1f0: 54 79 70 65 4d 61 70 70 69 6e 67 22 20 2f 3e 20  TypeMapping" /> 
b200: 6d 65 74 68 6f 64 73 2e 20 20 54 68 65 73 65 0d  methods.  These.
b210: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 2d 63  .      /// per-c
b220: 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e  onnection mappin
b230: 67 73 2c 20 77 68 65 6e 20 70 72 65 73 65 6e 74  gs, when present
b240: 2c 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 63  , override the c
b250: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0d 0a 20 20  orresponding..  
b260: 20 20 20 20 2f 2f 2f 20 67 6c 6f 62 61 6c 20 6d      /// global m
b270: 61 70 70 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20  appings...      
b280: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b290: 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74        UseConnect
b2a0: 69 6f 6e 54 79 70 65 73 20 3d 20 30 78 31 30 30  ionTypes = 0x100
b2b0: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
b2c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b2d0: 20 20 20 2f 2f 2f 20 44 69 73 61 62 6c 65 20 75     /// Disable u
b2e0: 73 69 6e 67 20 67 6c 6f 62 61 6c 20 6d 61 70 70  sing global mapp
b2f0: 69 6e 67 73 20 62 65 74 77 65 65 6e 20 74 79 70  ings between typ
b300: 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20  e names and..   
b310: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
b320: 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c  ="DbType" /> val
b330: 75 65 73 2e 20 20 54 68 69 73 20 6d 61 79 20 62  ues.  This may b
b340: 65 20 75 73 65 66 75 6c 20 69 6e 20 73 6f 6d 65  e useful in some
b350: 20 76 65 72 79 20 6e 61 72 72 6f 77 0d 0a 20 20   very narrow..  
b360: 20 20 20 20 2f 2f 2f 20 63 61 73 65 73 3b 20 68      /// cases; h
b370: 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 72 65  owever, if there
b380: 20 61 72 65 20 6e 6f 20 70 65 72 2d 63 6f 6e 6e   are no per-conn
b390: 65 63 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70  ection type mapp
b3a0: 69 6e 67 73 2c 20 74 68 65 0d 0a 20 20 20 20 20  ings, the..     
b3b0: 20 2f 2f 2f 20 66 61 6c 6c 62 61 63 6b 20 64 65   /// fallback de
b3c0: 66 61 75 6c 74 73 20 77 69 6c 6c 20 62 65 20 75  faults will be u
b3d0: 73 65 64 20 66 6f 72 20 62 6f 74 68 20 74 79 70  sed for both typ
b3e0: 65 20 6e 61 6d 65 73 20 61 6e 64 20 74 68 65 69  e names and thei
b3f0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73  r..      /// ass
b400: 6f 63 69 61 74 65 64 20 3c 73 65 65 20 63 72 65  ociated <see cre
b410: 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
b420: 6c 75 65 73 2e 20 20 54 68 65 72 65 66 6f 72 65  lues.  Therefore
b430: 2c 20 75 73 65 20 6f 66 20 74 68 69 73 20 66 6c  , use of this fl
b440: 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73  ag..      /// is
b450: 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64   not recommended
b460: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b470: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
b480: 6f 47 6c 6f 62 61 6c 54 79 70 65 73 20 3d 20 30  oGlobalTypes = 0
b490: 78 32 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  x200000,....    
b4a0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b4b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
b4c0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
b4d0: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e  QLiteDataReader.
b4e0: 48 61 73 52 6f 77 73 22 20 2f 3e 20 70 72 6f 70  HasRows" /> prop
b4f0: 65 72 74 79 20 69 73 20 75 73 65 64 2c 20 69 74  erty is used, it
b500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
b510: 6c 64 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65  ld return non-ze
b520: 72 6f 20 69 66 20 74 68 65 72 65 20 77 65 72 65  ro if there were
b530: 20 65 76 65 72 20 61 6e 79 20 72 6f 77 73 20 69   ever any rows i
b540: 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  n the associated
b550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75  ..      /// resu
b560: 6c 74 20 73 65 74 73 2e 0d 0a 20 20 20 20 20 20  lt sets...      
b570: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b580: 20 20 20 20 20 20 53 74 69 63 6b 79 48 61 73 52        StickyHasR
b590: 6f 77 73 20 3d 20 30 78 34 30 30 30 30 30 2c 0d  ows = 0x400000,.
b5a0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
b5b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
b5c0: 2f 20 45 6e 61 62 6c 65 20 22 73 74 72 69 63 74  / Enable "strict
b5d0: 22 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 6e  " transaction en
b5e0: 6c 69 73 74 6d 65 6e 74 20 73 65 6d 61 6e 74 69  listment semanti
b5f0: 63 73 2e 20 20 53 65 74 74 69 6e 67 20 74 68 69  cs.  Setting thi
b600: 73 20 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f  s flag..      //
b610: 2f 20 77 69 6c 6c 20 63 61 75 73 65 20 61 6e 20  / will cause an 
b620: 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 62 65 20  exception to be 
b630: 74 68 72 6f 77 6e 20 69 66 20 61 6e 20 61 74 74  thrown if an att
b640: 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74 6f 20  empt is made to 
b650: 65 6e 6c 69 73 74 0d 0a 20 20 20 20 20 20 2f 2f  enlist..      //
b660: 2f 20 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69  / in a transacti
b670: 6f 6e 20 77 69 74 68 20 61 6e 20 75 6e 61 76 61  on with an unava
b680: 69 6c 61 62 6c 65 20 6f 72 20 75 6e 73 75 70 70  ilable or unsupp
b690: 6f 72 74 65 64 20 69 73 6f 6c 61 74 69 6f 6e 20  orted isolation 
b6a0: 6c 65 76 65 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f  level...      //
b6b0: 2f 20 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c  / In the future,
b6c0: 20 6d 6f 72 65 20 65 78 74 65 6e 73 69 76 65 20   more extensive 
b6d0: 63 68 65 63 6b 73 20 6d 61 79 20 62 65 20 65 6e  checks may be en
b6e0: 61 62 6c 65 64 20 62 79 20 74 68 69 73 20 66 6c  abled by this fl
b6f0: 61 67 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ag as..      ///
b700: 20 77 65 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   well...      //
b710: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b720: 20 20 20 20 53 74 72 69 63 74 45 6e 6c 69 73 74      StrictEnlist
b730: 6d 65 6e 74 20 3d 20 30 78 38 30 30 30 30 30 2c  ment = 0x800000,
b740: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
b750: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
b760: 2f 2f 20 45 6e 61 62 6c 65 20 6d 61 70 70 69 6e  // Enable mappin
b770: 67 20 6f 66 20 75 6e 73 75 70 70 6f 72 74 65 64  g of unsupported
b780: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f   transaction iso
b790: 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73 20 74 6f  lation levels to
b7a0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
b7b0: 63 6c 6f 73 65 73 74 20 73 75 70 70 6f 72 74 65  closest supporte
b7c0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73  d transaction is
b7d0: 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 2e 0d 0a  olation level...
b7e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
b7f0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4d 61 70 49  ary>..      MapI
b800: 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 73 20 3d  solationLevels =
b810: 20 30 78 31 30 30 30 30 30 30 2c 0d 0a 0d 0a 20   0x1000000,.... 
b820: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b830: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
b840: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  en returning col
b850: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 74 74 65  umn values, atte
b860: 6d 70 74 20 74 6f 20 64 65 74 65 63 74 20 74 68  mpt to detect th
b870: 65 20 61 66 66 69 6e 69 74 79 20 6f 66 0d 0a 20  e affinity of.. 
b880: 20 20 20 20 20 2f 2f 2f 20 74 65 78 74 75 61 6c       /// textual
b890: 20 76 61 6c 75 65 73 20 62 79 20 63 68 65 63 6b   values by check
b8a0: 69 6e 67 20 69 66 20 74 68 65 79 20 66 75 6c 6c  ing if they full
b8b0: 79 20 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 6f  y conform to tho
b8c0: 73 65 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  se of the..     
b8d0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b8e0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c  TypeAffinity.Nul
b8f0: 6c 22 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f  l" />,..      //
b900: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70  / <see cref="Typ
b910: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 22  eAffinity.Int64"
b920: 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   />,..      /// 
b930: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
b940: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 22 20  ffinity.Double" 
b950: 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  />,..      /// o
b960: 72 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70  r <see cref="Typ
b970: 65 41 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69  eAffinity.DateTi
b980: 6d 65 22 20 2f 3e 20 74 79 70 65 73 2e 0d 0a 20  me" /> types... 
b990: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b9a0: 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 65 63  ry>..      Detec
b9b0: 74 54 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20  tTextAffinity = 
b9c0: 30 78 32 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  0x2000000,....  
b9d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
b9e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
b9f0: 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75  n returning colu
ba00: 6d 6e 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d  mn values, attem
ba10: 70 74 20 74 6f 20 64 65 74 65 63 74 20 74 68 65  pt to detect the
ba20: 20 74 79 70 65 20 6f 66 0d 0a 20 20 20 20 20 20   type of..      
ba30: 2f 2f 2f 20 73 74 72 69 6e 67 20 76 61 6c 75 65  /// string value
ba40: 73 20 62 79 20 63 68 65 63 6b 69 6e 67 20 69 66  s by checking if
ba50: 20 74 68 65 79 20 66 75 6c 6c 79 20 63 6f 6e 66   they fully conf
ba60: 6f 72 6d 20 74 6f 20 74 68 6f 73 65 20 6f 66 0d  orm to those of.
ba70: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c  .      /// the <
ba80: 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41 66  see cref="TypeAf
ba90: 66 69 6e 69 74 79 2e 4e 75 6c 6c 22 20 2f 3e 2c  finity.Null" />,
baa0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
bab0: 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e   cref="TypeAffin
bac0: 69 74 79 2e 49 6e 74 36 34 22 20 2f 3e 2c 0d 0a  ity.Int64" />,..
bad0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
bae0: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
baf0: 79 2e 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a 20  y.Double" />,.. 
bb00: 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65       /// or <see
bb10: 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e   cref="TypeAffin
bb20: 69 74 79 2e 44 61 74 65 54 69 6d 65 22 20 2f 3e  ity.DateTime" />
bb30: 20 74 79 70 65 73 2e 0d 0a 20 20 20 20 20 20 2f   types...      /
bb40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
bb50: 20 20 20 20 20 44 65 74 65 63 74 53 74 72 69 6e       DetectStrin
bb60: 67 54 79 70 65 20 3d 20 30 78 34 30 30 30 30 30  gType = 0x400000
bb70: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
bb80: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
bb90: 20 2f 2f 2f 20 53 6b 69 70 20 71 75 65 72 79 69   /// Skip queryi
bba0: 6e 67 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69  ng runtime confi
bbb0: 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67  guration setting
bbc0: 73 20 66 6f 72 20 75 73 65 20 62 79 20 74 68 65  s for use by the
bbd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
bbe0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
bbf0: 76 65 72 74 22 20 2f 3e 20 63 6c 61 73 73 2c 20  vert" /> class, 
bc00: 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 64 65  including the de
bc10: 66 61 75 6c 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  fault..      ///
bc20: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54 79   <see cref="DbTy
bc30: 70 65 22 20 2f 3e 20 76 61 6c 75 65 20 61 6e 64  pe" /> value and
bc40: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
bc50: 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20  e type name...  
bc60: 20 20 20 20 2f 2f 2f 20 3c 62 3e 4e 4f 54 45 3a      /// <b>NOTE:
bc70: 20 49 66 20 74 68 65 20 3c 73 65 65 20 63 72 65   If the <see cre
bc80: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
bc90: 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54 79 70  ion.DefaultDbTyp
bca0: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  e" />..      ///
bcb0: 20 61 6e 64 2f 6f 72 20 3c 73 65 65 20 63 72 65   and/or <see cre
bcc0: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
bcd0: 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70 65 4e  ion.DefaultTypeN
bce0: 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f  ame" />..      /
bcf0: 2f 2f 20 70 72 6f 70 65 72 74 69 65 73 20 61 72  // properties ar
bd00: 65 20 6e 6f 74 20 73 65 74 20 65 78 70 6c 69 63  e not set explic
bd10: 69 74 6c 79 20 6e 6f 72 20 73 65 74 20 76 69 61  itly nor set via
bd20: 20 74 68 65 69 72 20 63 6f 6e 6e 65 63 74 69 6f   their connectio
bd30: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74 72  n..      /// str
bd40: 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73 20 61  ing properties a
bd50: 6e 64 20 72 65 70 65 61 74 65 64 20 63 61 6c 6c  nd repeated call
bd60: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74  s to determine t
bd70: 68 65 73 65 20 72 75 6e 74 69 6d 65 0d 0a 20 20  hese runtime..  
bd80: 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72      /// configur
bd90: 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 61  ation settings a
bda0: 72 65 20 73 65 65 6e 20 74 6f 20 62 65 20 61 20  re seen to be a 
bdb0: 70 72 6f 62 6c 65 6d 2c 20 74 68 69 73 20 66 6c  problem, this fl
bdc0: 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68  ag..      /// sh
bdd0: 6f 75 6c 64 20 62 65 20 73 65 74 2e 3c 2f 62 3e  ould be set.</b>
bde0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
bdf0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
be00: 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73 20  ConvertSettings 
be10: 3d 20 30 78 38 30 30 30 30 30 30 2c 0d 0a 0d 0a  = 0x8000000,....
be20: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
be30: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57  ry>..      /// W
be40: 68 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61  hen binding para
be50: 6d 65 74 65 72 20 76 61 6c 75 65 73 20 77 69 74  meter values wit
be60: 68 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  h the <see cref=
be70: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 0d 0a 20  "DateTime" />.. 
be80: 20 20 20 20 20 2f 2f 2f 20 74 79 70 65 2c 20 74       /// type, t
be90: 61 6b 65 20 74 68 65 69 72 20 3c 73 65 65 20 63  ake their <see c
bea0: 72 65 66 3d 22 44 61 74 65 54 69 6d 65 4b 69 6e  ref="DateTimeKin
beb0: 64 22 20 2f 3e 20 69 6e 74 6f 20 61 63 63 6f 75  d" /> into accou
bec0: 6e 74 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  nt as..      ///
bed0: 20 77 65 6c 6c 20 61 73 20 74 68 61 74 20 6f 66   well as that of
bee0: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20   the associated 
bef0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
bf00: 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 2e  eConnection" />.
bf10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
bf20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 42 69  mmary>..      Bi
bf30: 6e 64 44 61 74 65 54 69 6d 65 57 69 74 68 4b 69  ndDateTimeWithKi
bf40: 6e 64 20 3d 20 30 78 31 30 30 30 30 30 30 30 2c  nd = 0x10000000,
bf50: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
bf60: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
bf70: 2f 2f 20 49 66 20 61 6e 20 65 78 63 65 70 74 69  // If an excepti
bf80: 6f 6e 20 69 73 20 63 61 75 67 68 74 20 77 68 65  on is caught whe
bf90: 6e 20 72 61 69 73 69 6e 67 20 74 68 65 0d 0a 20  n raising the.. 
bfa0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
bfb0: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
bfc0: 74 69 6f 6e 2e 43 6f 6d 6d 69 74 22 20 2f 3e 20  tion.Commit" /> 
bfd0: 65 76 65 6e 74 2c 20 74 68 65 20 74 72 61 6e 73  event, the trans
bfe0: 61 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f  action..      //
bff0: 2f 20 73 68 6f 75 6c 64 20 62 65 20 72 6f 6c 6c  / should be roll
c000: 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68 69  ed back.  If thi
c010: 73 20 69 73 20 6e 6f 74 20 73 70 65 63 69 66 69  s is not specifi
c020: 65 64 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74  ed, the transact
c030: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ion..      /// w
c040: 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 74 68 65  ill continue the
c050: 20 63 6f 6d 6d 69 74 20 70 72 6f 63 65 73 73 20   commit process 
c060: 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20  instead...      
c070: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c080: 20 20 20 20 20 20 52 6f 6c 6c 62 61 63 6b 4f 6e        RollbackOn
c090: 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 32 30  Exception = 0x20
c0a0: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
c0b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c0c0: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20        /// If an 
c0d0: 65 78 63 65 70 74 69 6f 6e 20 69 73 20 63 61 75  exception is cau
c0e0: 67 68 74 20 77 68 65 6e 20 72 61 69 73 69 6e 67  ght when raising
c0f0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
c100: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
c110: 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 75 74 68  eConnection.Auth
c120: 6f 72 69 7a 65 22 20 2f 3e 20 65 76 65 6e 74 2c  orize" /> event,
c130: 20 74 68 65 20 61 63 74 69 6f 6e 20 73 68 6f 75   the action shou
c140: 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68  ld..      /// sh
c150: 6f 75 6c 64 20 62 65 20 64 65 6e 69 65 64 2e 20  ould be denied. 
c160: 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20   If this is not 
c170: 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 61  specified, the a
c180: 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20  ction will be.. 
c190: 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 77 65 64       /// allowed
c1a0: 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
c1b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c1c0: 0a 20 20 20 20 20 20 44 65 6e 79 4f 6e 45 78 63  .      DenyOnExc
c1d0: 65 70 74 69 6f 6e 20 3d 20 30 78 34 30 30 30 30  eption = 0x40000
c1e0: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
c1f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c200: 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78 63     /// If an exc
c210: 65 70 74 69 6f 6e 20 69 73 20 63 61 75 67 68 74  eption is caught
c220: 20 77 68 65 6e 20 72 61 69 73 69 6e 67 20 74 68   when raising th
c230: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
c240: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
c250: 6e 6e 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65 73  nnection.Progres
c260: 73 22 20 2f 3e 20 65 76 65 6e 74 2c 20 74 68 65  s" /> event, the
c270: 20 6f 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20   operation..    
c280: 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20    /// should be 
c290: 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20 49 66  interrupted.  If
c2a0: 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73 70 65   this is not spe
c2b0: 63 69 66 69 65 64 2c 20 74 68 65 20 6f 70 65 72  cified, the oper
c2c0: 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ation..      ///
c2d0: 20 77 69 6c 6c 20 73 69 6d 70 6c 79 20 63 6f 6e   will simply con
c2e0: 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  tinue...      //
c2f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c300: 20 20 20 20 49 6e 74 65 72 72 75 70 74 4f 6e 45      InterruptOnE
c310: 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 38 30 30  xception = 0x800
c320: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
c330: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c340: 20 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74       /// Attempt
c350: 20 74 6f 20 75 6e 62 69 6e 64 20 61 6c 6c 20 66   to unbind all f
c360: 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65  unctions provide
c370: 64 20 62 79 20 6f 74 68 65 72 20 6d 61 6e 61 67  d by other manag
c380: 65 64 20 61 73 73 65 6d 62 6c 69 65 73 0d 0a 20  ed assemblies.. 
c390: 20 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63 6c       /// when cl
c3a0: 6f 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  osing the connec
c3b0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
c3c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c3d0: 20 20 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f     UnbindFunctio
c3e0: 6e 73 4f 6e 43 6c 6f 73 65 20 3d 20 30 78 31 30  nsOnClose = 0x10
c3f0: 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0000000,....    
c400: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c410: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
c420: 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e  returning column
c430: 20 76 61 6c 75 65 73 20 61 73 20 61 20 3c 73 65   values as a <se
c440: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20  e cref="String" 
c450: 2f 3e 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20  />, skip..      
c460: 2f 2f 2f 20 76 65 72 69 66 79 69 6e 67 20 74 68  /// verifying th
c470: 65 69 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a 20  eir affinity... 
c480: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c490: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65 72  ry>..      NoVer
c4a0: 69 66 79 54 65 78 74 41 66 66 69 6e 69 74 79 20  ifyTextAffinity 
c4b0: 3d 20 30 78 32 30 30 30 30 30 30 30 30 2c 0d 0a  = 0x200000000,..
c4c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
c4d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c4e0: 20 45 6e 61 62 6c 65 20 75 73 69 6e 67 20 70 65   Enable using pe
c4f0: 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70  r-connection map
c500: 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20 74 79  pings between ty
c510: 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20  pe names and..  
c520: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
c530: 66 3d 22 53 51 4c 69 74 65 42 69 6e 64 56 61 6c  f="SQLiteBindVal
c540: 75 65 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 76  ueCallback" /> v
c550: 61 6c 75 65 73 2e 20 20 41 6c 73 6f 20 73 65 65  alues.  Also see
c560: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
c570: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
c580: 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65 61  eConnection.Clea
c590: 72 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20  rTypeCallbacks" 
c5a0: 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  />,..      /// <
c5b0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
c5c0: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65  Connection.TryGe
c5d0: 74 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20  tTypeCallbacks" 
c5e0: 2f 3e 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f  />, and..      /
c5f0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
c600: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 53  LiteConnection.S
c610: 65 74 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22  etTypeCallbacks"
c620: 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20   /> methods...  
c630: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
c640: 79 3e 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e  y>..      UseCon
c650: 6e 65 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65  nectionBindValue
c660: 43 61 6c 6c 62 61 63 6b 73 20 3d 20 30 78 34 30  Callbacks = 0x40
c670: 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0000000,....    
c680: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c690: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  .      /// Enabl
c6a0: 65 20 75 73 69 6e 67 20 70 65 72 2d 63 6f 6e 6e  e using per-conn
c6b0: 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73 20  ection mappings 
c6c0: 62 65 74 77 65 65 6e 20 74 79 70 65 20 6e 61 6d  between type nam
c6d0: 65 73 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f  es and..      //
c6e0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
c6f0: 69 74 65 52 65 61 64 56 61 6c 75 65 43 61 6c 6c  iteReadValueCall
c700: 62 61 63 6b 22 20 2f 3e 20 76 61 6c 75 65 73 2e  back" /> values.
c710: 20 20 41 6c 73 6f 20 73 65 65 20 74 68 65 0d 0a    Also see the..
c720: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
c730: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
c740: 63 74 69 6f 6e 2e 43 6c 65 61 72 54 79 70 65 43  ction.ClearTypeC
c750: 61 6c 6c 62 61 63 6b 73 22 20 2f 3e 2c 0d 0a 20  allbacks" />,.. 
c760: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
c770: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
c780: 74 69 6f 6e 2e 54 72 79 47 65 74 54 79 70 65 43  tion.TryGetTypeC
c790: 61 6c 6c 62 61 63 6b 73 22 20 2f 3e 2c 20 61 6e  allbacks" />, an
c7a0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  d..      /// <se
c7b0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
c7c0: 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 54 79 70 65  nnection.SetType
c7d0: 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e 20 6d 65  Callbacks" /> me
c7e0: 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  thods...      //
c7f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c800: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
c810: 6e 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61  nReadValueCallba
c820: 63 6b 73 20 3d 20 30 78 38 30 30 30 30 30 30 30  cks = 0x80000000
c830: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
c840: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c850: 20 2f 2f 2f 20 49 66 20 74 68 65 20 64 61 74 61   /// If the data
c860: 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20 68  base type name h
c870: 61 73 20 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c  as not been expl
c880: 69 63 69 74 6c 79 20 73 65 74 20 66 6f 72 20 74  icitly set for t
c890: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61  he..      /// pa
c8a0: 72 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65  rameter specifie
c8b0: 64 2c 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75  d, fallback to u
c8c0: 73 69 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74  sing the paramet
c8d0: 65 72 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  er name...      
c8e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
c8f0: 20 20 20 20 20 20 55 73 65 50 61 72 61 6d 65 74        UseParamet
c900: 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d  erNameForTypeNam
c910: 65 20 3d 20 30 78 31 30 30 30 30 30 30 30 30 30  e = 0x1000000000
c920: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
c930: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c940: 2f 2f 2f 20 49 66 20 74 68 65 20 64 61 74 61 62  /// If the datab
c950: 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61  ase type name ha
c960: 73 20 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69  s not been expli
c970: 63 69 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68  citly set for th
c980: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72  e..      /// par
c990: 61 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 64  ameter specified
c9a0: 2c 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73  , fallback to us
c9b0: 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
c9c0: 20 74 79 70 65 20 6e 61 6d 65 0d 0a 20 20 20 20   type name..    
c9d0: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
c9e0: 20 77 69 74 68 20 74 68 65 20 3c 73 65 65 20 63   with the <see c
c9f0: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
ca00: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
ca10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ca20: 20 20 20 20 55 73 65 50 61 72 61 6d 65 74 65 72      UseParameter
ca30: 44 62 54 79 70 65 46 6f 72 54 79 70 65 4e 61 6d  DbTypeForTypeNam
ca40: 65 20 3d 20 30 78 32 30 30 30 30 30 30 30 30 30  e = 0x2000000000
ca50: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
ca60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ca70: 2f 2f 2f 20 57 68 65 6e 20 72 65 74 75 72 6e 69  /// When returni
ca80: 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  ng column values
ca90: 2c 20 73 6b 69 70 20 76 65 72 69 66 79 69 6e 67  , skip verifying
caa0: 20 74 68 65 69 72 20 61 66 66 69 6e 69 74 79 2e   their affinity.
cab0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
cac0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
cad0: 56 65 72 69 66 79 54 79 70 65 41 66 66 69 6e 69  VerifyTypeAffini
cae0: 74 79 20 3d 20 30 78 34 30 30 30 30 30 30 30 30  ty = 0x400000000
caf0: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
cb00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
cb10: 20 2f 2f 2f 20 41 6c 6c 6f 77 20 74 72 61 6e 73   /// Allow trans
cb20: 61 63 74 69 6f 6e 73 20 74 6f 20 62 65 20 6e 65  actions to be ne
cb30: 73 74 65 64 2e 20 20 54 68 65 20 6f 75 74 65 72  sted.  The outer
cb40: 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  most transaction
cb50: 20 73 74 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f   still..      //
cb60: 2f 20 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68  / controls wheth
cb70: 65 72 20 6f 72 20 6e 6f 74 20 61 6e 79 20 63 68  er or not any ch
cb80: 61 6e 67 65 73 20 61 72 65 20 75 6c 74 69 6d 61  anges are ultima
cb90: 74 65 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f  tely committed o
cba0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c  r..      /// rol
cbb0: 6c 65 64 20 62 61 63 6b 2e 20 20 41 6c 6c 20 6e  led back.  All n
cbc0: 6f 6e 2d 6f 75 74 65 72 6d 6f 73 74 20 74 72 61  on-outermost tra
cbd0: 6e 73 61 63 74 69 6f 6e 73 20 61 72 65 20 69 6d  nsactions are im
cbe0: 70 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 0d  plemented using.
cbf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53  .      /// the S
cc00: 41 56 45 50 4f 49 4e 54 20 63 6f 6e 73 74 72 75  AVEPOINT constru
cc10: 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ct...      /// <
cc20: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
cc30: 20 41 6c 6c 6f 77 4e 65 73 74 65 64 54 72 61 6e   AllowNestedTran
cc40: 73 61 63 74 69 6f 6e 73 20 3d 20 30 78 38 30 30  sactions = 0x800
cc50: 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0000000,....    
cc60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cc70: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
cc80: 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65  binding paramete
cc90: 72 20 76 61 6c 75 65 73 20 6f 72 20 72 65 74 75  r values or retu
cca0: 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c  rning column val
ccb0: 75 65 73 2c 20 61 6c 77 61 79 73 0d 0a 20 20 20  ues, always..   
ccc0: 20 20 20 2f 2f 2f 20 74 72 65 61 74 20 74 68 65     /// treat the
ccd0: 6d 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79  m as though they
cce0: 20 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74   were plain text
ccf0: 20 28 69 2e 65 2e 20 6e 6f 20 6e 75 6d 65 72 69   (i.e. no numeri
cd00: 63 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61  c,..      /// da
cd10: 74 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65  te/time, or othe
cd20: 72 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68  r conversions sh
cd30: 6f 75 6c 64 20 62 65 20 61 74 74 65 6d 70 74 65  ould be attempte
cd40: 64 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  d)...      /// <
cd50: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
cd60: 20 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73   BindAndGetAllAs
cd70: 54 65 78 74 20 3d 20 42 69 6e 64 41 6c 6c 41 73  Text = BindAllAs
cd80: 54 65 78 74 20 7c 20 47 65 74 41 6c 6c 41 73 54  Text | GetAllAsT
cd90: 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ext,....      //
cda0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
cdb0: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
cdc0: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
cdd0: 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 75 73 65  lues, always use
cde0: 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63   the invariant c
cdf0: 75 6c 74 75 72 65 20 77 68 65 6e 0d 0a 20 20 20  ulture when..   
ce00: 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 69 6e     /// convertin
ce10: 67 20 74 68 65 69 72 20 76 61 6c 75 65 73 20 74  g their values t
ce20: 6f 20 73 74 72 69 6e 67 73 20 6f 72 20 66 72 6f  o strings or fro
ce30: 6d 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20  m strings...    
ce40: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ce50: 0d 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 41  ..      ConvertA
ce60: 6e 64 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54  ndBindInvariantT
ce70: 65 78 74 20 3d 20 43 6f 6e 76 65 72 74 49 6e 76  ext = ConvertInv
ce80: 61 72 69 61 6e 74 54 65 78 74 20 7c 20 42 69 6e  ariantText | Bin
ce90: 64 49 6e 76 61 72 69 61 6e 74 54 65 78 74 2c 0d  dInvariantText,.
cea0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ceb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cec0: 2f 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70  / When binding p
ced0: 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20  arameter values 
cee0: 6f 72 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  or returning col
cef0: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
cf00: 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72  ys..      /// tr
cf10: 65 61 74 20 74 68 65 6d 20 61 73 20 74 68 6f 75  eat them as thou
cf20: 67 68 20 74 68 65 79 20 77 65 72 65 20 70 6c 61  gh they were pla
cf30: 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f  in text (i.e. no
cf40: 20 6e 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20   numeric,..     
cf50: 20 2f 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20   /// date/time, 
cf60: 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76 65 72 73  or other convers
cf70: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 61  ions should be a
cf80: 74 74 65 6d 70 74 65 64 29 20 61 6e 64 20 61 6c  ttempted) and al
cf90: 77 61 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ways..      /// 
cfa0: 75 73 65 20 74 68 65 20 69 6e 76 61 72 69 61 6e  use the invarian
cfb0: 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20 63  t culture when c
cfc0: 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20  onverting their 
cfd0: 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67  values to string
cfe0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
cff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
d000: 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73 49  BindAndGetAllAsI
d010: 6e 76 61 72 69 61 6e 74 54 65 78 74 20 3d 20 42  nvariantText = B
d020: 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73 54 65  indAndGetAllAsTe
d030: 78 74 20 7c 20 42 69 6e 64 49 6e 76 61 72 69 61  xt | BindInvaria
d040: 6e 74 54 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20  ntText,....     
d050: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d060: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62        /// When b
d070: 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72  inding parameter
d080: 20 76 61 6c 75 65 73 20 6f 72 20 72 65 74 75 72   values or retur
d090: 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ning column valu
d0a0: 65 73 2c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  es, always..    
d0b0: 20 20 2f 2f 2f 20 74 72 65 61 74 20 74 68 65 6d    /// treat them
d0c0: 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20   as though they 
d0d0: 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20  were plain text 
d0e0: 28 69 2e 65 2e 20 6e 6f 20 6e 75 6d 65 72 69 63  (i.e. no numeric
d0f0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  ,..      /// dat
d100: 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72  e/time, or other
d110: 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f   conversions sho
d120: 75 6c 64 20 62 65 20 61 74 74 65 6d 70 74 65 64  uld be attempted
d130: 29 20 61 6e 64 20 61 6c 77 61 79 73 0d 0a 20 20  ) and always..  
d140: 20 20 20 20 2f 2f 2f 20 75 73 65 20 74 68 65 20      /// use the 
d150: 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72  invariant cultur
d160: 65 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e  e when convertin
d170: 67 20 74 68 65 69 72 20 76 61 6c 75 65 73 20 74  g their values t
d180: 6f 20 73 74 72 69 6e 67 73 0d 0a 20 20 20 20 20  o strings..     
d190: 20 2f 2f 2f 20 6f 72 20 66 72 6f 6d 20 73 74 72   /// or from str
d1a0: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
d1b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d1c0: 20 20 20 43 6f 6e 76 65 72 74 41 6e 64 42 69 6e     ConvertAndBin
d1d0: 64 41 6e 64 47 65 74 41 6c 6c 41 73 49 6e 76 61  dAndGetAllAsInva
d1e0: 72 69 61 6e 74 54 65 78 74 20 3d 20 42 69 6e 64  riantText = Bind
d1f0: 41 6e 64 47 65 74 41 6c 6c 41 73 54 65 78 74 20  AndGetAllAsText 
d200: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
d210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d230: 20 20 43 6f 6e 76 65 72 74 41 6e 64 42 69 6e 64    ConvertAndBind
d240: 49 6e 76 61 72 69 61 6e 74 54 65 78 74 2c 0d 0a  InvariantText,..
d250: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
d260: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
d270: 20 45 6e 61 62 6c 65 73 20 75 73 65 20 6f 66 20   Enables use of 
d280: 61 6c 6c 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  all per-connecti
d290: 6f 6e 20 76 61 6c 75 65 20 68 61 6e 64 6c 69 6e  on value handlin
d2a0: 67 20 63 61 6c 6c 62 61 63 6b 73 2e 0d 0a 20 20  g callbacks...  
d2b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d2c0: 79 3e 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e  y>..      UseCon
d2d0: 6e 65 63 74 69 6f 6e 41 6c 6c 56 61 6c 75 65 43  nectionAllValueC
d2e0: 61 6c 6c 62 61 63 6b 73 20 3d 20 55 73 65 43 6f  allbacks = UseCo
d2f0: 6e 6e 65 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75  nnectionBindValu
d300: 65 43 61 6c 6c 62 61 63 6b 73 20 7c 0d 0a 20 20  eCallbacks |..  
d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d330: 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69       UseConnecti
d340: 6f 6e 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62  onReadValueCallb
d350: 61 63 6b 73 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  acks,....      /
d360: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d370: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20      /// Enables 
d380: 75 73 65 20 6f 66 20 61 6c 6c 20 61 70 70 6c 69  use of all appli
d390: 63 61 62 6c 65 20 3c 73 65 65 20 63 72 65 66 3d  cable <see cref=
d3a0: 22 53 51 4c 69 74 65 50 61 72 61 6d 65 74 65 72  "SQLiteParameter
d3b0: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  " />..      /// 
d3c0: 70 72 6f 70 65 72 74 69 65 73 20 61 73 20 66 61  properties as fa
d3d0: 6c 6c 62 61 63 6b 73 20 66 6f 72 20 74 68 65 20  llbacks for the 
d3e0: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
d3f0: 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
d400: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
d410: 20 55 73 65 50 61 72 61 6d 65 74 65 72 41 6e 79   UseParameterAny
d420: 74 68 69 6e 67 46 6f 72 54 79 70 65 4e 61 6d 65  thingForTypeName
d430: 20 3d 20 55 73 65 50 61 72 61 6d 65 74 65 72 4e   = UseParameterN
d440: 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 20 7c  ameForTypeName |
d450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d470: 20 20 20 20 20 20 20 20 20 20 55 73 65 50 61 72            UsePar
d480: 61 6d 65 74 65 72 44 62 54 79 70 65 46 6f 72 54  ameterDbTypeForT
d490: 79 70 65 4e 61 6d 65 2c 0d 0a 0d 0a 20 20 20 20  ypeName,....    
d4a0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d4b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  .      /// Enabl
d4c0: 65 20 61 6c 6c 20 6c 6f 67 67 69 6e 67 2e 0d 0a  e all logging...
d4d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d4e0: 61 72 79 3e 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ary>..#if INTERO
d4f0: 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
d500: 0a 20 20 20 20 20 20 4c 6f 67 41 6c 6c 20 3d 20  .      LogAll = 
d510: 4c 6f 67 50 72 65 70 61 72 65 20 7c 20 4c 6f 67  LogPrepare | Log
d520: 50 72 65 42 69 6e 64 20 7c 20 4c 6f 67 42 69 6e  PreBind | LogBin
d530: 64 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d |..           
d540: 20 20 20 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45      LogCallbackE
d550: 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f 67 42 61  xception | LogBa
d560: 63 6b 75 70 20 7c 20 4c 6f 67 4d 6f 64 75 6c 65  ckup | LogModule
d570: 45 72 72 6f 72 20 7c 0d 0a 20 20 20 20 20 20 20  Error |..       
d580: 20 20 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75 6c          LogModul
d590: 65 45 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6c  eException,..#el
d5a0: 73 65 0d 0a 20 20 20 20 20 20 4c 6f 67 41 6c 6c  se..      LogAll
d5b0: 20 3d 20 4c 6f 67 50 72 65 70 61 72 65 20 7c 20   = LogPrepare | 
d5c0: 4c 6f 67 50 72 65 42 69 6e 64 20 7c 20 4c 6f 67  LogPreBind | Log
d5d0: 42 69 6e 64 20 7c 0d 0a 20 20 20 20 20 20 20 20  Bind |..        
d5e0: 20 20 20 20 20 20 20 4c 6f 67 43 61 6c 6c 62 61         LogCallba
d5f0: 63 6b 45 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f  ckException | Lo
d600: 67 42 61 63 6b 75 70 2c 0d 0a 23 65 6e 64 69 66  gBackup,..#endif
d610: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
d620: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
d630: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 65  // The default e
d640: 78 74 72 61 20 66 6c 61 67 73 20 66 6f 72 20 6e  xtra flags for n
d650: 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0d  ew connections..
d660: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
d670: 6d 61 72 79 3e 0d 0a 23 69 66 20 49 4e 54 45 52  mary>..#if INTER
d680: 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45  OP_VIRTUAL_TABLE
d690: 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20  ..      Default 
d6a0: 3d 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63  = LogCallbackExc
d6b0: 65 70 74 69 6f 6e 20 7c 20 4c 6f 67 4d 6f 64 75  eption | LogModu
d6c0: 6c 65 45 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65  leException,..#e
d6d0: 6c 73 65 0d 0a 20 20 20 20 20 20 44 65 66 61 75  lse..      Defau
d6e0: 6c 74 20 3d 20 4c 6f 67 43 61 6c 6c 62 61 63 6b  lt = LogCallback
d6f0: 45 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6e 64  Exception,..#end
d700: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  if....      /// 
d710: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
d720: 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
d730: 20 65 78 74 72 61 20 66 6c 61 67 73 20 66 6f 72   extra flags for
d740: 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73   new connections
d750: 20 77 69 74 68 20 61 6c 6c 20 6c 6f 67 67 69 6e   with all loggin
d760: 67 20 65 6e 61 62 6c 65 64 2e 0d 0a 20 20 20 20  g enabled...    
d770: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d780: 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 41  ..      DefaultA
d790: 6e 64 4c 6f 67 41 6c 6c 20 3d 20 44 65 66 61 75  ndLogAll = Defau
d7a0: 6c 74 20 7c 20 4c 6f 67 41 6c 6c 0d 0a 20 20 7d  lt | LogAll..  }
d7b0: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
d7c0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65  ry>..  /// These
d7d0: 20 61 72 65 20 74 68 65 20 73 75 70 70 6f 72 74   are the support
d7e0: 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ed configuration
d7f0: 20 76 65 72 62 73 20 66 6f 72 20 75 73 65 20 77   verbs for use w
d800: 69 74 68 20 74 68 65 20 6e 61 74 69 76 65 0d 0a  ith the native..
d810: 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 6c 69 62    /// SQLite lib
d820: 72 61 72 79 2e 20 20 54 68 65 79 20 61 72 65 20  rary.  They are 
d830: 75 73 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20  used with the.. 
d840: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
d850: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d860: 2e 53 65 74 43 6f 6e 66 69 67 75 72 61 74 69 6f  .SetConfiguratio
d870: 6e 4f 70 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68  nOption" /> meth
d880: 6f 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  od...  /// </sum
d890: 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
d8a0: 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f 6e 66 69  enum SQLiteConfi
d8b0: 67 44 62 4f 70 73 45 6e 75 6d 0d 0a 20 20 7b 0d  gDbOpsEnum..  {.
d8c0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
d8d0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
d8e0: 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e 74   value represent
d8f0: 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 28 6f 72  s an unknown (or
d900: 20 69 6e 76 61 6c 69 64 29 20 6f 70 74 69 6f 6e   invalid) option
d910: 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 69 74 2e  , do not use it.
d920: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
d930: 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54 45  ary>..    SQLITE
d940: 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 4e 45 20 3d  _DBCONFIG_NONE =
d950: 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a 0d 0a 20 20   0, // nil....  
d960: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d970: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70  .    /// This op
d980: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 63 75 72 72  tion is not curr
d990: 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20  ently supported 
d9a0: 62 79 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  by System.Data.S
d9b0: 51 4c 69 74 65 2e 20 20 49 74 0d 0a 20 20 20 20  QLite.  It..    
d9c0: 2f 2f 2f 20 6d 61 79 20 62 65 20 73 75 70 70 6f  /// may be suppo
d9d0: 72 74 65 64 20 69 6e 20 74 68 65 20 66 75 74 75  rted in the futu
d9e0: 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  re...    /// </s
d9f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c  ummary>..    SQL
da00: 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f  ITE_DBCONFIG_LOO
da10: 4b 41 53 49 44 45 20 3d 20 31 30 30 31 2c 20 2f  KASIDE = 1001, /
da20: 2f 20 76 6f 69 64 2a 20 69 6e 74 20 69 6e 74 0d  / void* int int.
da30: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
da40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
da50: 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
da60: 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64  d to enable or d
da70: 69 73 61 62 6c 65 20 74 68 65 20 65 6e 66 6f 72  isable the enfor
da80: 63 65 6d 65 6e 74 20 6f 66 0d 0a 20 20 20 20 2f  cement of..    /
da90: 2f 2f 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  // foreign key c
daa0: 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20 20 20  onstraints...   
dab0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
dac0: 0a 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f  .    SQLITE_DBCO
dad0: 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59  NFIG_ENABLE_FKEY
dae0: 20 3d 20 31 30 30 32 2c 20 2f 2f 20 69 6e 74 20   = 1002, // int 
daf0: 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  int*....    /// 
db00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
db10: 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  // This option i
db20: 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
db30: 20 6f 72 20 64 69 73 61 62 6c 65 20 74 72 69 67   or disable trig
db40: 67 65 72 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  gers...    /// <
db50: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 53  /summary>..    S
db60: 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
db70: 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 20 3d 20  NABLE_TRIGGER = 
db80: 31 30 30 33 2c 20 2f 2f 20 69 6e 74 20 69 6e 74  1003, // int int
db90: 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  *....    /// <su
dba0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
dbb0: 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
dbc0: 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72  sed to enable or
dbd0: 20 64 69 73 61 62 6c 65 20 74 68 65 20 74 77 6f   disable the two
dbe0: 2d 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f  -argument versio
dbf0: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68  n..    /// of th
dc00: 65 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72  e fts3_tokenizer
dc10: 28 29 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63  () function whic
dc20: 68 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65  h is part of the
dc30: 20 46 54 53 33 20 66 75 6c 6c 2d 74 65 78 74 0d   FTS3 full-text.
dc40: 0a 20 20 20 20 2f 2f 2f 20 73 65 61 72 63 68 20  .    /// search 
dc50: 65 6e 67 69 6e 65 20 65 78 74 65 6e 73 69 6f 6e  engine extension
dc60: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
dc70: 6d 61 72 79 3e 0d 0a 20 20 20 20 53 51 4c 49 54  mary>..    SQLIT
dc80: 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c  E_DBCONFIG_ENABL
dc90: 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52  E_FTS3_TOKENIZER
dca0: 20 3d 20 31 30 30 34 2c 20 2f 2f 20 69 6e 74 20   = 1004, // int 
dcb0: 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  int*....    /// 
dcc0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
dcd0: 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  // This option i
dce0: 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
dcf0: 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20   or disable the 
dd00: 6c 6f 61 64 69 6e 67 20 6f 66 20 65 78 74 65 6e  loading of exten
dd10: 73 69 6f 6e 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  sions...    /// 
dd20: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
dd30: 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
dd40: 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45  ENABLE_LOAD_EXTE
dd50: 4e 53 49 4f 4e 20 3d 20 31 30 30 35 20 2f 2f 20  NSION = 1005 // 
dd60: 69 6e 74 20 69 6e 74 2a 0d 0a 20 20 7d 0d 0a 0d  int int*..  }...
dd70: 0a 20 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20  .  // These are 
dd80: 74 68 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 74  the options to t
dd90: 68 65 20 69 6e 74 65 72 6e 61 6c 20 73 71 6c 69  he internal sqli
dda0: 74 65 33 5f 63 6f 6e 66 69 67 20 63 61 6c 6c 2e  te3_config call.
ddb0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
ddc0: 6d 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 4f 70  m SQLiteConfigOp
ddd0: 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  sEnum..  {..    
dde0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4e 4f  SQLITE_CONFIG_NO
ddf0: 4e 45 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d 0a  NE = 0, // nil..
de00: 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49      SQLITE_CONFI
de10: 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 3d  G_SINGLETHREAD =
de20: 20 31 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20   1, // nil..    
de30: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
de40: 4c 54 49 54 48 52 45 41 44 20 3d 20 32 2c 20 2f  LTITHREAD = 2, /
de50: 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54  / nil..    SQLIT
de60: 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49  E_CONFIG_SERIALI
de70: 5a 45 44 20 3d 20 33 2c 20 2f 2f 20 6e 69 6c 0d  ZED = 3, // nil.
de80: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
de90: 49 47 5f 4d 41 4c 4c 4f 43 20 3d 20 34 2c 20 2f  IG_MALLOC = 4, /
dea0: 2f 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65  / sqlite3_mem_me
deb0: 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49  thods*..    SQLI
dec0: 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c  TE_CONFIG_GETMAL
ded0: 4c 4f 43 20 3d 20 35 2c 20 2f 2f 20 73 71 6c 69  LOC = 5, // sqli
dee0: 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a  te3_mem_methods*
def0: 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e  ..    SQLITE_CON
df00: 46 49 47 5f 53 43 52 41 54 43 48 20 3d 20 36 2c  FIG_SCRATCH = 6,
df10: 20 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73   // void*, int s
df20: 7a 2c 20 69 6e 74 20 4e 0d 0a 20 20 20 20 53 51  z, int N..    SQ
df30: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45  LITE_CONFIG_PAGE
df40: 43 41 43 48 45 20 3d 20 37 2c 20 2f 2f 20 76 6f  CACHE = 7, // vo
df50: 69 64 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74  id*, int sz, int
df60: 20 4e 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43   N..    SQLITE_C
df70: 4f 4e 46 49 47 5f 48 45 41 50 20 3d 20 38 2c 20  ONFIG_HEAP = 8, 
df80: 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42  // void*, int nB
df90: 79 74 65 2c 20 69 6e 74 20 6d 69 6e 0d 0a 20 20  yte, int min..  
dfa0: 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
dfb0: 4d 45 4d 53 54 41 54 55 53 20 3d 20 39 2c 20 2f  MEMSTATUS = 9, /
dfc0: 2f 20 62 6f 6f 6c 65 61 6e 0d 0a 20 20 20 20 53  / boolean..    S
dfd0: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54  QLITE_CONFIG_MUT
dfe0: 45 58 20 3d 20 31 30 2c 20 2f 2f 20 73 71 6c 69  EX = 10, // sqli
dff0: 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64  te3_mutex_method
e000: 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  s*..    SQLITE_C
e010: 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 3d  ONFIG_GETMUTEX =
e020: 20 31 31 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f   11, // sqlite3_
e030: 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a 0d 0a  mutex_methods*..
e040: 20 20 20 20 2f 2f 20 70 72 65 76 69 6f 75 73 6c      // previousl
e050: 79 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  y SQLITE_CONFIG_
e060: 43 48 55 4e 4b 41 4c 4c 4f 43 20 31 32 20 77 68  CHUNKALLOC 12 wh
e070: 69 63 68 20 69 73 20 6e 6f 77 20 75 6e 75 73 65  ich is now unuse
e080: 64 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  d..    SQLITE_CO
e090: 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 3d  NFIG_LOOKASIDE =
e0a0: 20 31 33 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 0d   13, // int int.
e0b0: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
e0c0: 49 47 5f 50 43 41 43 48 45 20 3d 20 31 34 2c 20  IG_PCACHE = 14, 
e0d0: 2f 2f 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68  // sqlite3_pcach
e0e0: 65 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20  e_methods*..    
e0f0: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
e100: 54 50 43 41 43 48 45 20 3d 20 31 35 2c 20 2f 2f  TPCACHE = 15, //
e110: 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f   sqlite3_pcache_
e120: 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51  methods*..    SQ
e130: 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20  LITE_CONFIG_LOG 
e140: 3d 20 31 36 2c 20 2f 2f 20 78 46 75 6e 63 2c 20  = 16, // xFunc, 
e150: 76 6f 69 64 2a 0d 0a 20 20 20 20 53 51 4c 49 54  void*..    SQLIT
e160: 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 3d 20 31  E_CONFIG_URI = 1
e170: 37 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20 53  7, // int..    S
e180: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
e190: 43 48 45 32 20 3d 20 31 38 2c 20 2f 2f 20 73 71  CHE2 = 18, // sq
e1a0: 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74  lite3_pcache_met
e1b0: 68 6f 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49  hods2*..    SQLI
e1c0: 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41  TE_CONFIG_GETPCA
e1d0: 43 48 45 32 20 3d 20 31 39 2c 20 2f 2f 20 73 71  CHE2 = 19, // sq
e1e0: 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74  lite3_pcache_met
e1f0: 68 6f 64 73 32 2a 0d 0a 20 20 20 20 53 51 4c 49  hods2*..    SQLI
e200: 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
e210: 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 3d 20  NG_INDEX_SCAN = 
e220: 32 30 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20 20 20  20, // int..    
e230: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51  SQLITE_CONFIG_SQ
e240: 4c 4c 4f 47 20 3d 20 32 31 2c 20 2f 2f 20 78 53  LLOG = 21, // xS
e250: 71 6c 6c 6f 67 2c 20 76 6f 69 64 2a 0d 0a 20 20  qllog, void*..  
e260: 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
e270: 4d 4d 41 50 5f 53 49 5a 45 20 3d 20 32 32 2c 20  MMAP_SIZE = 22, 
e280: 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  // sqlite3_int64
e290: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 0d  , sqlite3_int64.
e2a0: 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
e2b0: 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a  IG_WIN32_HEAPSIZ
e2c0: 45 20 3d 20 32 33 2c 20 2f 2f 20 69 6e 74 20 6e  E = 23, // int n
e2d0: 42 79 74 65 0d 0a 20 20 20 20 53 51 4c 49 54 45  Byte..    SQLITE
e2e0: 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48  _CONFIG_PCACHE_H
e2f0: 44 52 53 5a 20 3d 20 32 34 2c 20 2f 2f 20 69 6e  DRSZ = 24, // in
e300: 74 20 2a 70 73 7a 0d 0a 20 20 20 20 53 51 4c 49  t *psz..    SQLI
e310: 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20  TE_CONFIG_PMASZ 
e320: 3d 20 32 35 20 2f 2f 20 75 6e 73 69 67 6e 65 64  = 25 // unsigned
e330: 20 69 6e 74 20 73 7a 50 6d 61 0d 0a 20 20 7d 0d   int szPma..  }.
e340: 0a 7d 0d 0a                                      .}..