System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 95162c1da360533f40ab54a85a840bd4c1023419:


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 44 61 74 61 3b 0d 0a 20 20  System.Data;..  
0170: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 61 74  using System.Dat
0180: 61 2e 43 6f 6d 6d 6f 6e 3b 0d 0a 20 20 75 73 69  a.Common;..  usi
0190: 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f  ng System.Diagno
01a0: 73 74 69 63 73 3b 0d 0a 20 20 75 73 69 6e 67 20  stics;..  using 
01b0: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
01c0: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20 75  ns.Generic;..  u
01d0: 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c 6f 62  sing System.Glob
01e0: 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 20 20 75 73  alization;..  us
01f0: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6d 70 6f  ing System.Compo
0200: 6e 65 6e 74 4d 6f 64 65 6c 3b 0d 0a 20 20 75 73  nentModel;..  us
0210: 69 6e 67 20 53 79 73 74 65 6d 2e 52 65 66 6c 65  ing System.Refle
0220: 63 74 69 6f 6e 3b 0d 0a 20 20 75 73 69 6e 67 20  ction;..  using 
0230: 53 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49  System.Runtime.I
0240: 6e 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d  nteropServices;.
0250: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
0260: 49 4f 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  IO;..  using Sys
0270: 74 65 6d 2e 54 65 78 74 3b 0d 0a 20 20 75 73 69  tem.Text;..  usi
0280: 6e 67 20 53 79 73 74 65 6d 2e 54 68 72 65 61 64  ng System.Thread
0290: 69 6e 67 3b 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  ing;....  //////
02a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0300: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0310: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
0320: 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 73 69   represents a si
0330: 6e 67 6c 65 20 76 61 6c 75 65 20 74 6f 20 62 65  ngle value to be
0340: 20 72 65 74 75 72 6e 65 64 0d 0a 20 20 2f 2f 2f   returned..  ///
0350: 20 66 72 6f 6d 20 74 68 65 20 3c 73 65 65 20 63   from the <see c
0360: 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52  ref="SQLiteDataR
0370: 65 61 64 65 72 22 20 2f 3e 20 63 6c 61 73 73 20  eader" /> class 
0380: 76 69 61 0d 0a 20 20 2f 2f 2f 20 69 74 73 20 3c  via..  /// its <
0390: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
03a0: 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 42 6c  DataReader.GetBl
03b0: 6f 62 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c  ob" />,..  /// <
03c0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
03d0: 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 42 6f  DataReader.GetBo
03e0: 6f 6c 65 61 6e 22 20 2f 3e 2c 0d 0a 20 20 2f 2f  olean" />,..  //
03f0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
0400: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
0410: 74 42 79 74 65 22 20 2f 3e 2c 0d 0a 20 20 2f 2f  tByte" />,..  //
0420: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
0430: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
0440: 74 42 79 74 65 73 22 20 2f 3e 2c 0d 0a 20 20 2f  tBytes" />,..  /
0450: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
0460: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
0470: 65 74 43 68 61 72 22 20 2f 3e 2c 0d 0a 20 20 2f  etChar" />,..  /
0480: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
0490: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
04a0: 65 74 43 68 61 72 73 22 20 2f 3e 2c 0d 0a 20 20  etChars" />,..  
04b0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
04c0: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e  QLiteDataReader.
04d0: 47 65 74 44 61 74 65 54 69 6d 65 22 20 2f 3e 2c  GetDateTime" />,
04e0: 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
04f0: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
0500: 64 65 72 2e 47 65 74 44 65 63 69 6d 61 6c 22 20  der.GetDecimal" 
0510: 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20  />,..  /// <see 
0520: 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61  cref="SQLiteData
0530: 52 65 61 64 65 72 2e 47 65 74 44 6f 75 62 6c 65  Reader.GetDouble
0540: 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65  " />,..  /// <se
0550: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
0560: 74 61 52 65 61 64 65 72 2e 47 65 74 46 6c 6f 61  taReader.GetFloa
0570: 74 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73  t" />,..  /// <s
0580: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44  ee cref="SQLiteD
0590: 61 74 61 52 65 61 64 65 72 2e 47 65 74 47 75 69  ataReader.GetGui
05a0: 64 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73  d" />,..  /// <s
05b0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44  ee cref="SQLiteD
05c0: 61 74 61 52 65 61 64 65 72 2e 47 65 74 49 6e 74  ataReader.GetInt
05d0: 31 36 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c  16" />,..  /// <
05e0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
05f0: 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 49 6e  DataReader.GetIn
0600: 74 33 32 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20  t32" />,..  /// 
0610: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
0620: 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 49  eDataReader.GetI
0630: 6e 74 36 34 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f  nt64" />,..  ///
0640: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
0650: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
0660: 53 74 72 69 6e 67 22 20 2f 3e 2c 20 6f 72 0d 0a  String" />, or..
0670: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
0680: 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
0690: 72 2e 47 65 74 56 61 6c 75 65 22 20 2f 3e 20 6d  r.GetValue" /> m
06a0: 65 74 68 6f 64 2e 20 20 49 66 20 74 68 65 20 76  ethod.  If the v
06b0: 61 6c 75 65 20 6f 66 20 74 68 65 0d 0a 20 20 2f  alue of the..  /
06c0: 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 70 75  // associated pu
06d0: 62 6c 69 63 20 66 69 65 6c 64 20 6f 66 20 74 68  blic field of th
06e0: 69 73 20 63 6c 61 73 73 20 69 73 20 6e 75 6c 6c  is class is null
06f0: 20 75 70 6f 6e 20 72 65 74 75 72 6e 69 6e 67 20   upon returning 
0700: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 2f 2f 2f 20  from the..  /// 
0710: 63 61 6c 6c 62 61 63 6b 2c 20 74 68 65 20 6e 75  callback, the nu
0720: 6c 6c 20 76 61 6c 75 65 20 77 69 6c 6c 20 6f 6e  ll value will on
0730: 6c 79 20 62 65 20 75 73 65 64 20 69 66 20 74 68  ly be used if th
0740: 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 66 6f  e return type fo
0750: 72 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  r the..  /// <se
0760: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
0770: 74 61 52 65 61 64 65 72 22 20 2f 3e 20 6d 65 74  taReader" /> met
0780: 68 6f 64 20 63 61 6c 6c 65 64 20 69 73 20 6e 6f  hod called is no
0790: 74 20 61 20 76 61 6c 75 65 20 74 79 70 65 2e 0d  t a value type..
07a0: 0a 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 76 61  .  /// If the va
07b0: 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
07c0: 65 64 20 66 72 6f 6d 20 74 68 65 20 3c 73 65 65  ed from the <see
07d0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74   cref="SQLiteDat
07e0: 61 52 65 61 64 65 72 22 20 2f 3e 0d 0a 20 20 2f  aReader" />..  /
07f0: 2f 2f 20 6d 65 74 68 6f 64 20 69 73 20 75 6e 73  // method is uns
0800: 75 69 74 61 62 6c 65 20 28 65 2e 67 2e 20 6e 75  uitable (e.g. nu
0810: 6c 6c 20 77 69 74 68 20 61 20 76 61 6c 75 65 20  ll with a value 
0820: 74 79 70 65 29 2c 20 61 6e 20 65 78 63 65 70 74  type), an except
0830: 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 2f 2f 2f 20  ion will..  /// 
0840: 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 2f 2f  be thrown...  //
0850: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0860: 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c  public sealed cl
0870: 61 73 73 20 53 51 4c 69 74 65 44 61 74 61 52 65  ass SQLiteDataRe
0880: 61 64 65 72 56 61 6c 75 65 0d 0a 20 20 7b 0d 0a  aderValue..  {..
0890: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
08b0: 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72  he value to be r
08c0: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65  eturned from the
08d0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ..      /// <see
08e0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74   cref="SQLiteDat
08f0: 61 52 65 61 64 65 72 2e 47 65 74 42 6c 6f 62 22  aReader.GetBlob"
0900: 20 2f 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20   /> method -OR- 
0910: 6e 75 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f  null to..      /
0920: 2f 2f 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65  // indicate an e
0930: 72 72 6f 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  rror...      ///
0940: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0950: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
0960: 42 6c 6f 62 20 42 6c 6f 62 56 61 6c 75 65 3b 0d  Blob BlobValue;.
0970: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
0980: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
0990: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
09a0: 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  e returned from 
09b0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
09c0: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
09d0: 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 42 6f  DataReader.GetBo
09e0: 6f 6c 65 61 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  olean" /> method
09f0: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a 20   -OR- null to.. 
0a00: 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74       /// indicat
0a10: 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20 20  e an error...   
0a20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0a30: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
0a40: 62 6f 6f 6c 3f 20 42 6f 6f 6c 65 61 6e 56 61 6c  bool? BooleanVal
0a50: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ue;....      ///
0a60: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0a70: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
0a80: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 66  to be returned f
0a90: 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  rom the..      /
0aa0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
0ab0: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
0ac0: 65 74 42 79 74 65 22 20 2f 3e 20 6d 65 74 68 6f  etByte" /> metho
0ad0: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a  d -OR- null to..
0ae0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
0af0: 74 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20  te an error...  
0b00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0b10: 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  y>..      public
0b20: 20 62 79 74 65 3f 20 42 79 74 65 56 61 6c 75 65   byte? ByteValue
0b30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ;....      /// <
0b40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0b50: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
0b60: 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
0b70: 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  m the..      ///
0b80: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
0b90: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
0ba0: 42 79 74 65 73 22 20 2f 3e 20 6d 65 74 68 6f 64  Bytes" /> method
0bb0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0bc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0bd0: 75 62 6c 69 63 20 62 79 74 65 5b 5d 20 42 79 74  ublic byte[] Byt
0be0: 65 73 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  esValue;....    
0bf0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
0c10: 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
0c20: 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  ned from the..  
0c30: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
0c40: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
0c50: 64 65 72 2e 47 65 74 43 68 61 72 22 20 2f 3e 20  der.GetChar" /> 
0c60: 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75 6c 6c  method -OR- null
0c70: 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69   to..      /// i
0c80: 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72 6f 72  ndicate an error
0c90: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
0ca0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
0cb0: 75 62 6c 69 63 20 63 68 61 72 3f 20 43 68 61 72  ublic char? Char
0cc0: 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  Value;....      
0cd0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0ce0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
0cf0: 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ue to be returne
0d00: 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20  d from the..    
0d10: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
0d20: 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
0d30: 72 2e 47 65 74 43 68 61 72 73 22 20 2f 3e 20 6d  r.GetChars" /> m
0d40: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
0d50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0d60: 20 20 20 20 70 75 62 6c 69 63 20 63 68 61 72 5b      public char[
0d70: 5d 20 43 68 61 72 73 56 61 6c 75 65 3b 0d 0a 0d  ] CharsValue;...
0d80: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
0d90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
0da0: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20  The value to be 
0db0: 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68  returned from th
0dc0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
0dd0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
0de0: 74 61 52 65 61 64 65 72 2e 47 65 74 44 61 74 65  taReader.GetDate
0df0: 54 69 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  Time" /> method 
0e00: 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a 20 20  -OR- null to..  
0e10: 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65      /// indicate
0e20: 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20 20 20   an error...    
0e30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e40: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 44  ..      public D
0e50: 61 74 65 54 69 6d 65 3f 20 44 61 74 65 54 69 6d  ateTime? DateTim
0e60: 65 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  eValue;....     
0e70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0e80: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
0e90: 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72 6e  lue to be return
0ea0: 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
0eb0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
0ec0: 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
0ed0: 65 72 2e 47 65 74 44 65 63 69 6d 61 6c 22 20 2f  er.GetDecimal" /
0ee0: 3e 20 6d 65 74 68 6f 64 20 2d 4f 52 2d 20 6e 75  > method -OR- nu
0ef0: 6c 6c 20 74 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll to..      ///
0f00: 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65 72 72   indicate an err
0f10: 6f 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  or...      /// <
0f20: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
0f30: 20 70 75 62 6c 69 63 20 64 65 63 69 6d 61 6c 3f   public decimal?
0f40: 20 44 65 63 69 6d 61 6c 56 61 6c 75 65 3b 0d 0a   DecimalValue;..
0f50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
0f60: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
0f70: 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   The value to be
0f80: 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74   returned from t
0f90: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
0fa0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44  ee cref="SQLiteD
0fb0: 61 74 61 52 65 61 64 65 72 2e 47 65 74 44 6f 75  ataReader.GetDou
0fc0: 62 6c 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 2d  ble" /> method -
0fd0: 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a 20 20 20  OR- null to..   
0fe0: 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74 65 20     /// indicate 
0ff0: 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20 20 20 20  an error...     
1000: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1010: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 64 6f  .      public do
1020: 75 62 6c 65 3f 20 44 6f 75 62 6c 65 56 61 6c 75  uble? DoubleValu
1030: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e;....      /// 
1040: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1050: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
1060: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72  o be returned fr
1070: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  om the..      //
1080: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
1090: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
10a0: 74 46 6c 6f 61 74 22 20 2f 3e 20 6d 65 74 68 6f  tFloat" /> metho
10b0: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a  d -OR- null to..
10c0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
10d0: 74 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20  te an error...  
10e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10f0: 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  y>..      public
1100: 20 66 6c 6f 61 74 3f 20 46 6c 6f 61 74 56 61 6c   float? FloatVal
1110: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ue;....      ///
1120: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1130: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
1140: 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 66  to be returned f
1150: 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  rom the..      /
1160: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
1170: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
1180: 65 74 47 75 69 64 22 20 2f 3e 20 6d 65 74 68 6f  etGuid" /> metho
1190: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a  d -OR- null to..
11a0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
11b0: 74 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20  te an error...  
11c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11d0: 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  y>..      public
11e0: 20 47 75 69 64 3f 20 47 75 69 64 56 61 6c 75 65   Guid? GuidValue
11f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ;....      /// <
1200: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1210: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
1220: 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
1230: 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  m the..      ///
1240: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1250: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
1260: 49 6e 74 31 36 22 20 2f 3e 20 6d 65 74 68 6f 64  Int16" /> method
1270: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a 20   -OR- null to.. 
1280: 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74       /// indicat
1290: 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20 20  e an error...   
12a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12b0: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
12c0: 73 68 6f 72 74 3f 20 49 6e 74 31 36 56 61 6c 75  short? Int16Valu
12d0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  e;....      /// 
12e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12f0: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74   /// The value t
1300: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72  o be returned fr
1310: 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  om the..      //
1320: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
1330: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
1340: 74 49 6e 74 33 32 22 20 2f 3e 20 6d 65 74 68 6f  tInt32" /> metho
1350: 64 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a  d -OR- null to..
1360: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61        /// indica
1370: 74 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20  te an error...  
1380: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1390: 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  y>..      public
13a0: 20 69 6e 74 3f 20 49 6e 74 33 32 56 61 6c 75 65   int? Int32Value
13b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ;....      /// <
13c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13d0: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
13e0: 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
13f0: 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  m the..      ///
1400: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1410: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
1420: 49 6e 74 36 34 22 20 2f 3e 20 6d 65 74 68 6f 64  Int64" /> method
1430: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 74 6f 0d 0a 20   -OR- null to.. 
1440: 20 20 20 20 20 2f 2f 2f 20 69 6e 64 69 63 61 74       /// indicat
1450: 65 20 61 6e 20 65 72 72 6f 72 2e 0d 0a 20 20 20  e an error...   
1460: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1470: 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  >..      public 
1480: 6c 6f 6e 67 3f 20 49 6e 74 36 34 56 61 6c 75 65  long? Int64Value
1490: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ;....      /// <
14a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14b0: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
14c0: 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
14d0: 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  m the..      ///
14e0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
14f0: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
1500: 53 74 72 69 6e 67 22 20 2f 3e 20 6d 65 74 68 6f  String" /> metho
1510: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
1520: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1530: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 53 74  public string St
1540: 72 69 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ringValue;....  
1550: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1560: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
1570: 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
1580: 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a  urned from the..
1590: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
15a0: 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52  ref="SQLiteDataR
15b0: 65 61 64 65 72 2e 47 65 74 56 61 6c 75 65 22 20  eader.GetValue" 
15c0: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
15d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15e0: 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f  ..      public o
15f0: 62 6a 65 63 74 20 56 61 6c 75 65 3b 0d 0a 20 20  bject Value;..  
1600: 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
1610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 2f 2f  ////////....  //
1670: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
1680: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
1690: 70 72 65 73 65 6e 74 73 20 74 68 65 20 70 61 72  presents the par
16a0: 61 6d 65 74 65 72 73 20 74 68 61 74 20 61 72 65  ameters that are
16b0: 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 2f 2f 2f   provided..  ///
16c0: 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65   to the <see cre
16d0: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
16e0: 64 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2c  der" /> methods,
16f0: 20 77 69 74 68 0d 0a 20 20 2f 2f 2f 20 74 68 65   with..  /// the
1700: 20 65 78 63 65 70 74 69 6f 6e 20 6f 66 20 74 68   exception of th
1710: 65 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20 28  e column index (
1720: 70 72 6f 76 69 64 65 64 20 73 65 70 61 72 61 74  provided separat
1730: 65 6c 79 29 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  ely)...  /// </s
1740: 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
1750: 63 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  c abstract class
1760: 20 53 51 4c 69 74 65 52 65 61 64 45 76 65 6e 74   SQLiteReadEvent
1770: 41 72 67 73 20 3a 20 45 76 65 6e 74 41 72 67 73  Args : EventArgs
1780: 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 20  ..  {..      // 
1790: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 7d 0d 0a 0d  nothing...  }...
17a0: 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .  /////////////
17b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1800: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  ////....  /// <s
1810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
1820: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
1830: 65 6e 74 73 20 74 68 65 20 70 61 72 61 6d 65 74  ents the paramet
1840: 65 72 73 20 74 68 61 74 20 61 72 65 20 70 72 6f  ers that are pro
1850: 76 69 64 65 64 20 74 6f 0d 0a 20 20 2f 2f 2f 20  vided to..  /// 
1860: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
1870: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e  QLiteDataReader.
1880: 47 65 74 42 6c 6f 62 22 20 2f 3e 20 6d 65 74 68  GetBlob" /> meth
1890: 6f 64 2c 20 77 69 74 68 0d 0a 20 20 2f 2f 2f 20  od, with..  /// 
18a0: 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20 6f 66  the exception of
18b0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 6e 64 65   the column inde
18c0: 78 20 28 70 72 6f 76 69 64 65 64 20 73 65 70 61  x (provided sepa
18d0: 72 61 74 65 6c 79 29 2e 0d 0a 20 20 2f 2f 2f 20  rately)...  /// 
18e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
18f0: 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  blic class SQLit
1900: 65 52 65 61 64 42 6c 6f 62 45 76 65 6e 74 41 72  eReadBlobEventAr
1910: 67 73 20 3a 20 53 51 4c 69 74 65 52 65 61 64 45  gs : SQLiteReadE
1920: 76 65 6e 74 41 72 67 73 0d 0a 20 20 7b 0d 0a 20  ventArgs..  {.. 
1930: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
1940: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
1950: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1960: 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 76 69 64        /// Provid
1970: 65 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  es the underlyin
1980: 67 20 73 74 6f 72 61 67 65 20 66 6f 72 20 74 68  g storage for th
1990: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  e..      /// <se
19a0: 65 20 63 72 65 66 3d 22 52 65 61 64 4f 6e 6c 79  e cref="ReadOnly
19b0: 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e 0d 0a  " /> property...
19c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
19d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76  ary>..      priv
19e0: 61 74 65 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c  ate bool readOnl
19f0: 79 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65  y;..      #endre
1a00: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
1a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a50: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1a60: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
1a70: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
1a80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1a90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f  y>..      /// Co
1aa0: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
1ab0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
1ac0: 73 73 20 74 6f 20 70 61 73 73 20 69 6e 74 6f 20  ss to pass into 
1ad0: 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0d 0a  a user-defined..
1ae0: 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 62 61        /// callba
1af0: 63 6b 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ck associated wi
1b00: 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  th the <see cref
1b10: 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
1b20: 65 72 2e 47 65 74 42 6c 6f 62 22 20 2f 3e 0d 0a  er.GetBlob" />..
1b30: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64        /// method
1b40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
1b50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
1b60: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1b70: 72 65 61 64 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20  readOnly">..    
1b80: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
1b90: 74 68 61 74 20 77 61 73 20 6f 72 69 67 69 6e 61  that was origina
1ba0: 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 66 6f  lly specified fo
1bb0: 72 20 74 68 65 20 22 72 65 61 64 4f 6e 6c 79 22  r the "readOnly"
1bc0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61  ..      /// para
1bd0: 6d 65 74 65 72 20 74 6f 20 74 68 65 20 3c 73 65  meter to the <se
1be0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
1bf0: 74 61 52 65 61 64 65 72 2e 47 65 74 42 6c 6f 62  taReader.GetBlob
1c00: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1c10: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1c20: 0d 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c  ..      internal
1c30: 20 53 51 4c 69 74 65 52 65 61 64 42 6c 6f 62 45   SQLiteReadBlobE
1c40: 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20  ventArgs(..     
1c50: 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e       bool readOn
1c60: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  ly..          ).
1c70: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
1c80: 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c      this.readOnl
1c90: 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20  y = readOnly;.. 
1ca0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
1cb0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
1cc0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d10: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
1d20: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
1d30: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1d40: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
1d50: 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 61  he value that wa
1d60: 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 70 65  s originally spe
1d70: 63 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 22  cified for the "
1d80: 72 65 61 64 4f 6e 6c 79 22 0d 0a 20 20 20 20 20  readOnly"..     
1d90: 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74   /// parameter t
1da0: 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  o the <see cref=
1db0: 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
1dc0: 72 2e 47 65 74 42 6c 6f 62 22 20 2f 3e 20 6d 65  r.GetBlob" /> me
1dd0: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  thod...      ///
1de0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1df0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52     public bool R
1e00: 65 61 64 4f 6e 6c 79 0d 0a 20 20 20 20 20 20 7b  eadOnly..      {
1e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 67 65 74 20  ..          get 
1e20: 7b 20 72 65 74 75 72 6e 20 72 65 61 64 4f 6e 6c  { return readOnl
1e30: 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
1e40: 73 65 74 20 7b 20 72 65 61 64 4f 6e 6c 79 20 3d  set { readOnly =
1e50: 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
1e60: 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
1e70: 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  gion..  }....  /
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee0: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
1ef0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
1f00: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
1f10: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20   the parameters 
1f20: 74 68 61 74 20 61 72 65 20 70 72 6f 76 69 64 65  that are provide
1f30: 64 0d 0a 20 20 2f 2f 2f 20 74 6f 20 74 68 65 20  d..  /// to the 
1f40: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1f50: 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 42  eDataReader.GetB
1f60: 79 74 65 73 22 20 2f 3e 20 61 6e 64 0d 0a 20 20  ytes" /> and..  
1f70: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
1f80: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e  QLiteDataReader.
1f90: 47 65 74 43 68 61 72 73 22 20 2f 3e 20 6d 65 74  GetChars" /> met
1fa0: 68 6f 64 73 2c 20 77 69 74 68 0d 0a 20 20 2f 2f  hods, with..  //
1fb0: 2f 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20  / the exception 
1fc0: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 6e  of the column in
1fd0: 64 65 78 20 28 70 72 6f 76 69 64 65 64 20 73 65  dex (provided se
1fe0: 70 61 72 61 74 65 6c 79 29 2e 0d 0a 20 20 2f 2f  parately)...  //
1ff0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2000: 70 75 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c  public class SQL
2010: 69 74 65 52 65 61 64 41 72 72 61 79 45 76 65 6e  iteReadArrayEven
2020: 74 41 72 67 73 20 3a 20 53 51 4c 69 74 65 52 65  tArgs : SQLiteRe
2030: 61 64 45 76 65 6e 74 41 72 67 73 0d 0a 20 20 7b  adEventArgs..  {
2040: 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
2050: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
2060: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2070: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f  >..      /// Pro
2080: 76 69 64 65 73 20 74 68 65 20 75 6e 64 65 72 6c  vides the underl
2090: 79 69 6e 67 20 73 74 6f 72 61 67 65 20 66 6f 72  ying storage for
20a0: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
20b0: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 61 4f  <see cref="DataO
20c0: 66 66 73 65 74 22 20 2f 3e 20 70 72 6f 70 65 72  ffset" /> proper
20d0: 74 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ty...      /// <
20e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
20f0: 20 70 72 69 76 61 74 65 20 6c 6f 6e 67 20 64 61   private long da
2100: 74 61 4f 66 66 73 65 74 3b 0d 0a 0d 0a 20 20 20  taOffset;....   
2110: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2120: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 76  ..      /// Prov
2130: 69 64 65 73 20 74 68 65 20 75 6e 64 65 72 6c 79  ides the underly
2140: 69 6e 67 20 73 74 6f 72 61 67 65 20 66 6f 72 20  ing storage for 
2150: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
2160: 73 65 65 20 63 72 65 66 3d 22 42 79 74 65 42 75  see cref="ByteBu
2170: 66 66 65 72 22 20 2f 3e 20 70 72 6f 70 65 72 74  ffer" /> propert
2180: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
2190: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
21a0: 70 72 69 76 61 74 65 20 62 79 74 65 5b 5d 20 62  private byte[] b
21b0: 79 74 65 42 75 66 66 65 72 3b 0d 0a 0d 0a 20 20  yteBuffer;....  
21c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
21d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f  >..      /// Pro
21e0: 76 69 64 65 73 20 74 68 65 20 75 6e 64 65 72 6c  vides the underl
21f0: 79 69 6e 67 20 73 74 6f 72 61 67 65 20 66 6f 72  ying storage for
2200: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
2210: 3c 73 65 65 20 63 72 65 66 3d 22 43 68 61 72 42  <see cref="CharB
2220: 75 66 66 65 72 22 20 2f 3e 20 70 72 6f 70 65 72  uffer" /> proper
2230: 74 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ty...      /// <
2240: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2250: 20 70 72 69 76 61 74 65 20 63 68 61 72 5b 5d 20   private char[] 
2260: 63 68 61 72 42 75 66 66 65 72 3b 0d 0a 0d 0a 20  charBuffer;.... 
2270: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
2280: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 72  y>..      /// Pr
2290: 6f 76 69 64 65 73 20 74 68 65 20 75 6e 64 65 72  ovides the under
22a0: 6c 79 69 6e 67 20 73 74 6f 72 61 67 65 20 66 6f  lying storage fo
22b0: 72 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  r the..      ///
22c0: 20 3c 73 65 65 20 63 72 65 66 3d 22 42 75 66 66   <see cref="Buff
22d0: 65 72 4f 66 66 73 65 74 22 20 2f 3e 20 70 72 6f  erOffset" /> pro
22e0: 70 65 72 74 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  perty...      //
22f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2300: 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
2310: 62 75 66 66 65 72 4f 66 66 73 65 74 3b 0d 0a 0d  bufferOffset;...
2320: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
2330: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
2340: 50 72 6f 76 69 64 65 73 20 74 68 65 20 75 6e 64  Provides the und
2350: 65 72 6c 79 69 6e 67 20 73 74 6f 72 61 67 65 20  erlying storage 
2360: 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  for the..      /
2370: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 4c 65  // <see cref="Le
2380: 6e 67 74 68 22 20 2f 3e 20 70 72 6f 70 65 72 74  ngth" /> propert
2390: 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  y...      /// </
23a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
23b0: 70 72 69 76 61 74 65 20 69 6e 74 20 6c 65 6e 67  private int leng
23c0: 74 68 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72  th;..      #endr
23d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
23e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2430: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
2440: 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  e Constructors..
2450: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2460: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43  ry>..      /// C
2470: 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
2480: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c  tance of this cl
2490: 61 73 73 20 74 6f 20 70 61 73 73 20 69 6e 74 6f  ass to pass into
24a0: 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0d   a user-defined.
24b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 62  .      /// callb
24c0: 61 63 6b 20 61 73 73 6f 63 69 61 74 65 64 20 77  ack associated w
24d0: 69 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65  ith the <see cre
24e0: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
24f0: 64 65 72 2e 47 65 74 42 79 74 65 73 22 20 2f 3e  der.GetBytes" />
2500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68  ..      /// meth
2510: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
2520: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
2530: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2540: 3d 22 64 61 74 61 4f 66 66 73 65 74 22 3e 0d 0a  ="dataOffset">..
2550: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61        /// The va
2560: 6c 75 65 20 74 68 61 74 20 77 61 73 20 6f 72 69  lue that was ori
2570: 67 69 6e 61 6c 6c 79 20 73 70 65 63 69 66 69 65  ginally specifie
2580: 64 20 66 6f 72 20 74 68 65 20 22 64 61 74 61 4f  d for the "dataO
2590: 66 66 73 65 74 22 0d 0a 20 20 20 20 20 20 2f 2f  ffset"..      //
25a0: 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  / parameter to t
25b0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
25c0: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
25d0: 65 74 42 79 74 65 73 22 20 2f 3e 20 6f 72 0d 0a  etBytes" /> or..
25e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
25f0: 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52  ref="SQLiteDataR
2600: 65 61 64 65 72 2e 47 65 74 43 68 61 72 73 22 20  eader.GetChars" 
2610: 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  /> methods...   
2620: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2630: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
2640: 6d 20 6e 61 6d 65 3d 22 62 79 74 65 42 75 66 66  m name="byteBuff
2650: 65 72 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  er">..      /// 
2660: 54 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 77  The value that w
2670: 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 70  as originally sp
2680: 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65 20  ecified for the 
2690: 22 62 75 66 66 65 72 22 0d 0a 20 20 20 20 20 20  "buffer"..      
26a0: 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f  /// parameter to
26b0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
26c0: 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72  SQLiteDataReader
26d0: 2e 47 65 74 42 79 74 65 73 22 20 2f 3e 0d 0a 20  .GetBytes" />.. 
26e0: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
26f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
2700: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
2710: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 75 66  <param name="buf
2720: 66 65 72 4f 66 66 73 65 74 22 3e 0d 0a 20 20 20  ferOffset">..   
2730: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
2740: 20 74 68 61 74 20 77 61 73 20 6f 72 69 67 69 6e   that was origin
2750: 61 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 66  ally specified f
2760: 6f 72 20 74 68 65 20 22 62 75 66 66 65 72 4f 66  or the "bufferOf
2770: 66 73 65 74 22 0d 0a 20 20 20 20 20 20 2f 2f 2f  fset"..      ///
2780: 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
2790: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
27a0: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
27b0: 74 42 79 74 65 73 22 20 2f 3e 20 6f 72 0d 0a 20  tBytes" /> or.. 
27c0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
27d0: 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
27e0: 61 64 65 72 2e 47 65 74 43 68 61 72 73 22 20 2f  ader.GetChars" /
27f0: 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
2800: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2810: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
2820: 20 6e 61 6d 65 3d 22 6c 65 6e 67 74 68 22 3e 0d   name="length">.
2830: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  .      /// The v
2840: 61 6c 75 65 20 74 68 61 74 20 77 61 73 20 6f 72  alue that was or
2850: 69 67 69 6e 61 6c 6c 79 20 73 70 65 63 69 66 69  iginally specifi
2860: 65 64 20 66 6f 72 20 74 68 65 20 22 6c 65 6e 67  ed for the "leng
2870: 74 68 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70  th"..      /// p
2880: 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
2890: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
28a0: 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 42  eDataReader.GetB
28b0: 79 74 65 73 22 20 2f 3e 20 6f 72 0d 0a 20 20 20  ytes" /> or..   
28c0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
28d0: 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
28e0: 65 72 2e 47 65 74 43 68 61 72 73 22 20 2f 3e 20  er.GetChars" /> 
28f0: 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
2900: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2910: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
2920: 69 74 65 52 65 61 64 41 72 72 61 79 45 76 65 6e  iteReadArrayEven
2930: 74 41 72 67 73 28 0d 0a 20 20 20 20 20 20 20 20  tArgs(..        
2940: 20 20 6c 6f 6e 67 20 64 61 74 61 4f 66 66 73 65    long dataOffse
2950: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 62 79  t,..          by
2960: 74 65 5b 5d 20 62 79 74 65 42 75 66 66 65 72 2c  te[] byteBuffer,
2970: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20  ..          int 
2980: 62 75 66 66 65 72 4f 66 66 73 65 74 2c 0d 0a 20  bufferOffset,.. 
2990: 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e           int len
29a0: 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 29  gth..          )
29b0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
29c0: 20 20 20 20 20 74 68 69 73 2e 64 61 74 61 4f 66       this.dataOf
29d0: 66 73 65 74 20 3d 20 64 61 74 61 4f 66 66 73 65  fset = dataOffse
29e0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68  t;..          th
29f0: 69 73 2e 62 79 74 65 42 75 66 66 65 72 20 3d 20  is.byteBuffer = 
2a00: 62 79 74 65 42 75 66 66 65 72 3b 0d 0a 20 20 20  byteBuffer;..   
2a10: 20 20 20 20 20 20 20 74 68 69 73 2e 62 75 66 66         this.buff
2a20: 65 72 4f 66 66 73 65 74 20 3d 20 62 75 66 66 65  erOffset = buffe
2a30: 72 4f 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20  rOffset;..      
2a40: 20 20 20 20 74 68 69 73 2e 6c 65 6e 67 74 68 20      this.length 
2a50: 3d 20 6c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20  = length;..     
2a60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ab0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f  /////....      /
2ac0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2ad0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
2ae0: 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
2af0: 66 20 74 68 69 73 20 63 6c 61 73 73 20 74 6f 20  f this class to 
2b00: 70 61 73 73 20 69 6e 74 6f 20 61 20 75 73 65 72  pass into a user
2b10: 2d 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 20 20  -defined..      
2b20: 2f 2f 2f 20 63 61 6c 6c 62 61 63 6b 20 61 73 73  /// callback ass
2b30: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
2b40: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
2b50: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
2b60: 43 68 61 72 73 22 20 2f 3e 0d 0a 20 20 20 20 20  Chars" />..     
2b70: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
2b80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
2ba0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 61 4f  aram name="dataO
2bb0: 66 66 73 65 74 22 3e 0d 0a 20 20 20 20 20 20 2f  ffset">..      /
2bc0: 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 68 61  // The value tha
2bd0: 74 20 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79  t was originally
2be0: 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 74   specified for t
2bf0: 68 65 20 22 64 61 74 61 4f 66 66 73 65 74 22 0d  he "dataOffset".
2c00: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d  .      /// param
2c10: 65 74 65 72 20 74 6f 20 74 68 65 20 3c 73 65 65  eter to the <see
2c20: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74   cref="SQLiteDat
2c30: 61 52 65 61 64 65 72 2e 47 65 74 42 79 74 65 73  aReader.GetBytes
2c40: 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f  " /> or..      /
2c50: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
2c60: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
2c70: 65 74 43 68 61 72 73 22 20 2f 3e 20 6d 65 74 68  etChars" /> meth
2c80: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ods...      /// 
2c90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
2ca0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2cb0: 22 63 68 61 72 42 75 66 66 65 72 22 3e 0d 0a 20  "charBuffer">.. 
2cc0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
2cd0: 75 65 20 74 68 61 74 20 77 61 73 20 6f 72 69 67  ue that was orig
2ce0: 69 6e 61 6c 6c 79 20 73 70 65 63 69 66 69 65 64  inally specified
2cf0: 20 66 6f 72 20 74 68 65 20 22 62 75 66 66 65 72   for the "buffer
2d00: 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72  "..      /// par
2d10: 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 3c 73  ameter to the <s
2d20: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44  ee cref="SQLiteD
2d30: 61 74 61 52 65 61 64 65 72 2e 47 65 74 43 68 61  ataReader.GetCha
2d40: 72 73 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  rs" />..      //
2d50: 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  / method...     
2d60: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2d70: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
2d80: 6e 61 6d 65 3d 22 62 75 66 66 65 72 4f 66 66 73  name="bufferOffs
2d90: 65 74 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  et">..      /// 
2da0: 54 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 77  The value that w
2db0: 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 70  as originally sp
2dc0: 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65 20  ecified for the 
2dd0: 22 62 75 66 66 65 72 4f 66 66 73 65 74 22 0d 0a  "bufferOffset"..
2de0: 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65        /// parame
2df0: 74 65 72 20 74 6f 20 74 68 65 20 3c 73 65 65 20  ter to the <see 
2e00: 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61  cref="SQLiteData
2e10: 52 65 61 64 65 72 2e 47 65 74 42 79 74 65 73 22  Reader.GetBytes"
2e20: 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f   /> or..      //
2e30: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
2e40: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
2e50: 74 43 68 61 72 73 22 20 2f 3e 20 6d 65 74 68 6f  tChars" /> metho
2e60: 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ds...      /// <
2e70: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f  /param>..      /
2e80: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2e90: 6c 65 6e 67 74 68 22 3e 0d 0a 20 20 20 20 20 20  length">..      
2ea0: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 68  /// The value th
2eb0: 61 74 20 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c  at was originall
2ec0: 79 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20  y specified for 
2ed0: 74 68 65 20 22 6c 65 6e 67 74 68 22 0d 0a 20 20  the "length"..  
2ee0: 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
2ef0: 72 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72  r to the <see cr
2f00: 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
2f10: 61 64 65 72 2e 47 65 74 42 79 74 65 73 22 20 2f  ader.GetBytes" /
2f20: 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  > or..      /// 
2f30: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
2f40: 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 43  eDataReader.GetC
2f50: 68 61 72 73 22 20 2f 3e 20 6d 65 74 68 6f 64 73  hars" /> methods
2f60: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
2f70: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 69 6e 74  aram>..      int
2f80: 65 72 6e 61 6c 20 53 51 4c 69 74 65 52 65 61 64  ernal SQLiteRead
2f90: 41 72 72 61 79 45 76 65 6e 74 41 72 67 73 28 0d  ArrayEventArgs(.
2fa0: 0a 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  .          long 
2fb0: 64 61 74 61 4f 66 66 73 65 74 2c 0d 0a 20 20 20  dataOffset,..   
2fc0: 20 20 20 20 20 20 20 63 68 61 72 5b 5d 20 63 68         char[] ch
2fd0: 61 72 42 75 66 66 65 72 2c 0d 0a 20 20 20 20 20  arBuffer,..     
2fe0: 20 20 20 20 20 69 6e 74 20 62 75 66 66 65 72 4f       int bufferO
2ff0: 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
3000: 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d 0a 20 20    int length..  
3010: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3020: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68   {..          th
3030: 69 73 2e 64 61 74 61 4f 66 66 73 65 74 20 3d 20  is.dataOffset = 
3040: 64 61 74 61 4f 66 66 73 65 74 3b 0d 0a 20 20 20  dataOffset;..   
3050: 20 20 20 20 20 20 20 74 68 69 73 2e 63 68 61 72         this.char
3060: 42 75 66 66 65 72 20 3d 20 63 68 61 72 42 75 66  Buffer = charBuf
3070: 66 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fer;..          
3080: 74 68 69 73 2e 62 75 66 66 65 72 4f 66 66 73 65  this.bufferOffse
3090: 74 20 3d 20 62 75 66 66 65 72 4f 66 66 73 65 74  t = bufferOffset
30a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 69  ;..          thi
30b0: 73 2e 6c 65 6e 67 74 68 20 3d 20 6c 65 6e 67 74  s.length = lengt
30c0: 68 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  h;..      }..   
30d0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
30e0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3130: 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
3140: 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
3150: 69 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ies..      /// <
3160: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3170: 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 68  /// The value th
3180: 61 74 20 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c  at was originall
3190: 79 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20  y specified for 
31a0: 74 68 65 20 22 64 61 74 61 4f 66 66 73 65 74 22  the "dataOffset"
31b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61  ..      /// para
31c0: 6d 65 74 65 72 20 74 6f 20 74 68 65 20 3c 73 65  meter to the <se
31d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
31e0: 74 61 52 65 61 64 65 72 2e 47 65 74 42 79 74 65  taReader.GetByte
31f0: 73 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20  s" /> or..      
3200: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
3210: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e  QLiteDataReader.
3220: 47 65 74 43 68 61 72 73 22 20 2f 3e 20 6d 65 74  GetChars" /> met
3230: 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  hods...      ///
3240: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3250: 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 44     public long D
3260: 61 74 61 4f 66 66 73 65 74 0d 0a 20 20 20 20 20  ataOffset..     
3270: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 67 65   {..          ge
3280: 74 20 7b 20 72 65 74 75 72 6e 20 64 61 74 61 4f  t { return dataO
3290: 66 66 73 65 74 3b 20 7d 0d 0a 20 20 20 20 20 20  ffset; }..      
32a0: 20 20 20 20 73 65 74 20 7b 20 64 61 74 61 4f 66      set { dataOf
32b0: 66 73 65 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  fset = value; }.
32c0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
32d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
3320: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
3330: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
3340: 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 61 73  e value that was
3350: 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 70 65 63   originally spec
3360: 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 22 62  ified for the "b
3370: 75 66 66 65 72 22 0d 0a 20 20 20 20 20 20 2f 2f  uffer"..      //
3380: 2f 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  / parameter to t
3390: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
33a0: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
33b0: 65 74 42 79 74 65 73 22 20 2f 3e 0d 0a 20 20 20  etBytes" />..   
33c0: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a     /// method...
33d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
33e0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ary>..      publ
33f0: 69 63 20 62 79 74 65 5b 5d 20 42 79 74 65 42 75  ic byte[] ByteBu
3400: 66 66 65 72 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ffer..      {.. 
3410: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
3420: 65 74 75 72 6e 20 62 79 74 65 42 75 66 66 65 72  eturn byteBuffer
3430: 3b 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ; }..      }....
3440: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3490: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
34a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
34b0: 2f 20 54 68 65 20 76 61 6c 75 65 20 74 68 61 74  / The value that
34c0: 20 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20   was originally 
34d0: 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68  specified for th
34e0: 65 20 22 62 75 66 66 65 72 22 0d 0a 20 20 20 20  e "buffer"..    
34f0: 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72 20    /// parameter 
3500: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
3510: 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
3520: 65 72 2e 47 65 74 43 68 61 72 73 22 20 2f 3e 0d  er.GetChars" />.
3530: 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f  .      /// metho
3540: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
3550: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
3560: 70 75 62 6c 69 63 20 63 68 61 72 5b 5d 20 43 68  public char[] Ch
3570: 61 72 42 75 66 66 65 72 0d 0a 20 20 20 20 20 20  arBuffer..      
3580: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 67 65 74  {..          get
3590: 20 7b 20 72 65 74 75 72 6e 20 63 68 61 72 42 75   { return charBu
35a0: 66 66 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20 7d  ffer; }..      }
35b0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ///....      ///
3610: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3620: 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20    /// The value 
3630: 74 68 61 74 20 77 61 73 20 6f 72 69 67 69 6e 61  that was origina
3640: 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 66 6f  lly specified fo
3650: 72 20 74 68 65 20 22 62 75 66 66 65 72 4f 66 66  r the "bufferOff
3660: 73 65 74 22 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  set"..      /// 
3670: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
3680: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
3690: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
36a0: 42 79 74 65 73 22 20 2f 3e 20 6f 72 0d 0a 20 20  Bytes" /> or..  
36b0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
36c0: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
36d0: 64 65 72 2e 47 65 74 43 68 61 72 73 22 20 2f 3e  der.GetChars" />
36e0: 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20   methods...     
36f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3700: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e  .      public in
3710: 74 20 42 75 66 66 65 72 4f 66 66 73 65 74 0d 0a  t BufferOffset..
3720: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3730: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
3740: 62 75 66 66 65 72 4f 66 66 73 65 74 3b 20 7d 0d  bufferOffset; }.
3750: 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b  .          set {
3760: 20 62 75 66 66 65 72 4f 66 66 73 65 74 20 3d 20   bufferOffset = 
3770: 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
3780: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
3790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
37e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
37f0: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
3800: 20 74 68 61 74 20 77 61 73 20 6f 72 69 67 69 6e   that was origin
3810: 61 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 66  ally specified f
3820: 6f 72 20 74 68 65 20 22 6c 65 6e 67 74 68 22 0d  or the "length".
3830: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d  .      /// param
3840: 65 74 65 72 20 74 6f 20 74 68 65 20 3c 73 65 65  eter to the <see
3850: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74   cref="SQLiteDat
3860: 61 52 65 61 64 65 72 2e 47 65 74 42 79 74 65 73  aReader.GetBytes
3870: 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f  " /> or..      /
3880: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
3890: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47  LiteDataReader.G
38a0: 65 74 43 68 61 72 73 22 20 2f 3e 20 6d 65 74 68  etChars" /> meth
38b0: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ods...      /// 
38c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
38d0: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4c 65 6e    public int Len
38e0: 67 74 68 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  gth..      {..  
38f0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
3900: 74 75 72 6e 20 6c 65 6e 67 74 68 3b 20 7d 0d 0a  turn length; }..
3910: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
3920: 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 3b 20  length = value; 
3930: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
3940: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
3950: 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
3960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 2f 2f  ////////....  //
39c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
39d0: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
39e0: 70 72 65 73 65 6e 74 73 20 74 68 65 20 70 61 72  presents the par
39f0: 61 6d 65 74 65 72 73 20 61 6e 64 20 72 65 74 75  ameters and retu
3a00: 72 6e 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  rn values for th
3a10: 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  e..  /// <see cr
3a20: 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
3a30: 61 64 65 72 2e 47 65 74 42 6c 6f 62 22 20 2f 3e  ader.GetBlob" />
3a40: 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  ,..  /// <see cr
3a50: 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
3a60: 61 64 65 72 2e 47 65 74 42 6f 6f 6c 65 61 6e 22  ader.GetBoolean"
3a70: 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65   />,..  /// <see
3a80: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74   cref="SQLiteDat
3a90: 61 52 65 61 64 65 72 2e 47 65 74 42 79 74 65 22  aReader.GetByte"
3aa0: 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65   />,..  /// <see
3ab0: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74   cref="SQLiteDat
3ac0: 61 52 65 61 64 65 72 2e 47 65 74 42 79 74 65 73  aReader.GetBytes
3ad0: 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65  " />,..  /// <se
3ae0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
3af0: 74 61 52 65 61 64 65 72 2e 47 65 74 43 68 61 72  taReader.GetChar
3b00: 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65  " />,..  /// <se
3b10: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
3b20: 74 61 52 65 61 64 65 72 2e 47 65 74 43 68 61 72  taReader.GetChar
3b30: 73 22 20 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73  s" />,..  /// <s
3b40: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44  ee cref="SQLiteD
3b50: 61 74 61 52 65 61 64 65 72 2e 47 65 74 44 61 74  ataReader.GetDat
3b60: 65 54 69 6d 65 22 20 2f 3e 2c 0d 0a 20 20 2f 2f  eTime" />,..  //
3b70: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
3b80: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
3b90: 74 44 65 63 69 6d 61 6c 22 20 2f 3e 2c 0d 0a 20  tDecimal" />,.. 
3ba0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
3bb0: 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72  SQLiteDataReader
3bc0: 2e 47 65 74 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d  .GetDouble" />,.
3bd0: 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66  .  /// <see cref
3be0: 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
3bf0: 65 72 2e 47 65 74 46 6c 6f 61 74 22 20 2f 3e 2c  er.GetFloat" />,
3c00: 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
3c10: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
3c20: 64 65 72 2e 47 65 74 47 75 69 64 22 20 2f 3e 2c  der.GetGuid" />,
3c30: 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
3c40: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
3c50: 64 65 72 2e 47 65 74 49 6e 74 31 36 22 20 2f 3e  der.GetInt16" />
3c60: 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  ,..  /// <see cr
3c70: 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
3c80: 61 64 65 72 2e 47 65 74 49 6e 74 33 32 22 20 2f  ader.GetInt32" /
3c90: 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63  >,..  /// <see c
3ca0: 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52  ref="SQLiteDataR
3cb0: 65 61 64 65 72 2e 47 65 74 49 6e 74 36 34 22 20  eader.GetInt64" 
3cc0: 2f 3e 2c 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20  />,..  /// <see 
3cd0: 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61  cref="SQLiteData
3ce0: 52 65 61 64 65 72 2e 47 65 74 53 74 72 69 6e 67  Reader.GetString
3cf0: 22 20 2f 3e 2c 20 61 6e 64 0d 0a 20 20 2f 2f 2f  " />, and..  ///
3d00: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
3d10: 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74  teDataReader.Get
3d20: 56 61 6c 75 65 22 20 2f 3e 20 6d 65 74 68 6f 64  Value" /> method
3d30: 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
3d40: 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 63  ary>..  public c
3d50: 6c 61 73 73 20 53 51 4c 69 74 65 52 65 61 64 56  lass SQLiteReadV
3d60: 61 6c 75 65 45 76 65 6e 74 41 72 67 73 20 3a 20  alueEventArgs : 
3d70: 53 51 4c 69 74 65 52 65 61 64 45 76 65 6e 74 41  SQLiteReadEventA
3d80: 72 67 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  rgs..  {..      
3d90: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
3da0: 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Data..      /// 
3db0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
3dc0: 20 2f 2f 2f 20 50 72 6f 76 69 64 65 73 20 74 68   /// Provides th
3dd0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 74 6f  e underlying sto
3de0: 72 61 67 65 20 66 6f 72 20 74 68 65 0d 0a 20 20  rage for the..  
3df0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
3e00: 66 3d 22 4d 65 74 68 6f 64 4e 61 6d 65 22 20 2f  f="MethodName" /
3e10: 3e 20 70 72 6f 70 65 72 74 79 2e 0d 0a 20 20 20  > property...   
3e20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3e30: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
3e40: 20 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61   string methodNa
3e50: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  me;....      ///
3e60: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3e70: 20 20 2f 2f 2f 20 50 72 6f 76 69 64 65 73 20 74    /// Provides t
3e80: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 74  he underlying st
3e90: 6f 72 61 67 65 20 66 6f 72 20 74 68 65 0d 0a 20  orage for the.. 
3ea0: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
3eb0: 65 66 3d 22 45 78 74 72 61 45 76 65 6e 74 41 72  ef="ExtraEventAr
3ec0: 67 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e  gs" /> property.
3ed0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
3ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
3ef0: 69 76 61 74 65 20 53 51 4c 69 74 65 52 65 61 64  ivate SQLiteRead
3f00: 45 76 65 6e 74 41 72 67 73 20 65 78 74 72 61 45  EventArgs extraE
3f10: 76 65 6e 74 41 72 67 73 3b 0d 0a 0d 0a 20 20 20  ventArgs;....   
3f20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3f30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 50 72 6f 76  ..      /// Prov
3f40: 69 64 65 73 20 74 68 65 20 75 6e 64 65 72 6c 79  ides the underly
3f50: 69 6e 67 20 73 74 6f 72 61 67 65 20 66 6f 72 20  ing storage for 
3f60: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  the..      /// <
3f70: 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65 22  see cref="Value"
3f80: 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e 0d 0a 20   /> property... 
3f90: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
3fa0: 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61  ry>..      priva
3fb0: 74 65 20 53 51 4c 69 74 65 44 61 74 61 52 65 61  te SQLiteDataRea
3fc0: 64 65 72 56 61 6c 75 65 20 76 61 6c 75 65 3b 0d  derValue value;.
3fd0: 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
3fe0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
3ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4030: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
4040: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
4050: 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20  nstructors..    
4060: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4070: 0a 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74  .      /// Const
4080: 72 75 63 74 73 20 61 20 6e 65 77 20 69 6e 73 74  ructs a new inst
4090: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
40a0: 73 73 2e 20 20 44 65 70 65 6e 64 69 6e 67 20 6f  ss.  Depending o
40b0: 6e 20 74 68 65 20 6d 65 74 68 6f 64 0d 0a 20 20  n the method..  
40c0: 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20 63 61      /// being ca
40d0: 6c 6c 65 64 2c 20 74 68 65 20 3c 70 61 72 61 6d  lled, the <param
40e0: 72 65 66 20 6e 61 6d 65 3d 22 65 78 74 72 61 45  ref name="extraE
40f0: 76 65 6e 74 41 72 67 73 22 20 2f 3e 20 61 6e 64  ventArgs" /> and
4100: 2f 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /or..      /// <
4110: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 76  paramref name="v
4120: 61 6c 75 65 22 20 2f 3e 20 70 61 72 61 6d 65 74  alue" /> paramet
4130: 65 72 73 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e  ers may be null.
4140: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
4150: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
4160: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d  / <param name="m
4170: 65 74 68 6f 64 4e 61 6d 65 22 3e 0d 0a 20 20 20  ethodName">..   
4180: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
4190: 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  of the <see cref
41a0: 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
41b0: 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20 74 68  er" /> method th
41c0: 61 74 20 77 61 73 0d 0a 20 20 20 20 20 20 2f 2f  at was..      //
41d0: 2f 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  / responsible fo
41e0: 72 20 69 6e 76 6f 6b 69 6e 67 20 74 68 69 73 20  r invoking this 
41f0: 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20 20  callback...     
4200: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
4210: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
4220: 6e 61 6d 65 3d 22 65 78 74 72 61 45 76 65 6e 74  name="extraEvent
4230: 41 72 67 73 22 3e 0d 0a 20 20 20 20 20 20 2f 2f  Args">..      //
4240: 2f 20 49 66 20 74 68 65 20 3c 73 65 65 20 63 72  / If the <see cr
4250: 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
4260: 61 64 65 72 2e 47 65 74 42 79 74 65 73 22 20 2f  ader.GetBytes" /
4270: 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  > or..      /// 
4280: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
4290: 65 44 61 74 61 52 65 61 64 65 72 2e 47 65 74 43  eDataReader.GetC
42a0: 68 61 72 73 22 20 2f 3e 20 6d 65 74 68 6f 64 20  hars" /> method 
42b0: 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 2c  is being called,
42c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73  ..      /// this
42d0: 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 63 6f 6e   object will con
42e0: 74 61 69 6e 20 74 68 65 20 61 72 72 61 79 20 72  tain the array r
42f0: 65 6c 61 74 65 64 20 70 61 72 61 6d 65 74 65 72  elated parameter
4300: 73 20 66 6f 72 20 74 68 61 74 0d 0a 20 20 20 20  s for that..    
4310: 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 20 20 49    /// method.  I
4320: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
4330: 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
4340: 72 2e 47 65 74 42 6c 6f 62 22 20 2f 3e 20 6d 65  r.GetBlob" /> me
4350: 74 68 6f 64 20 69 73 0d 0a 20 20 20 20 20 20 2f  thod is..      /
4360: 2f 2f 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 2c  // being called,
4370: 20 74 68 69 73 20 6f 62 6a 65 63 74 20 77 69 6c   this object wil
4380: 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 62 6c  l contain the bl
4390: 6f 62 20 72 65 6c 61 74 65 64 20 70 61 72 61 6d  ob related param
43a0: 65 74 65 72 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  eters..      ///
43b0: 20 66 6f 72 20 74 68 61 74 20 6d 65 74 68 6f 64   for that method
43c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  ...      /// </p
43d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  aram>..      ///
43e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
43f0: 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lue">..      ///
4400: 20 54 68 69 73 20 6d 61 79 20 62 65 20 75 73 65   This may be use
4410: 64 20 62 79 20 74 68 65 20 63 61 6c 6c 62 61 63  d by the callbac
4420: 6b 20 74 6f 20 73 65 74 20 74 68 65 20 72 65 74  k to set the ret
4430: 75 72 6e 20 76 61 6c 75 65 20 66 6f 72 20 74 68  urn value for th
4440: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c  e..      /// cal
4450: 6c 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  led <see cref="S
4460: 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 22  QLiteDataReader"
4470: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
4480: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
4490: 0a 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  .      internal 
44a0: 53 51 4c 69 74 65 52 65 61 64 56 61 6c 75 65 45  SQLiteReadValueE
44b0: 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20  ventArgs(..     
44c0: 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 74 68       string meth
44d0: 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  odName,..       
44e0: 20 20 20 53 51 4c 69 74 65 52 65 61 64 45 76 65     SQLiteReadEve
44f0: 6e 74 41 72 67 73 20 65 78 74 72 61 45 76 65 6e  ntArgs extraEven
4500: 74 41 72 67 73 2c 0d 0a 20 20 20 20 20 20 20 20  tArgs,..        
4510: 20 20 53 51 4c 69 74 65 44 61 74 61 52 65 61 64    SQLiteDataRead
4520: 65 72 56 61 6c 75 65 20 76 61 6c 75 65 0d 0a 20  erValue value.. 
4530: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4540: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
4550: 68 69 73 2e 6d 65 74 68 6f 64 4e 61 6d 65 20 3d  his.methodName =
4560: 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d 0a 20 20   methodName;..  
4570: 20 20 20 20 20 20 20 20 74 68 69 73 2e 65 78 74          this.ext
4580: 72 61 45 76 65 6e 74 41 72 67 73 20 3d 20 65 78  raEventArgs = ex
4590: 74 72 61 45 76 65 6e 74 41 72 67 73 3b 0d 0a 20  traEventArgs;.. 
45a0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 61           this.va
45b0: 6c 75 65 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20  lue = value;..  
45c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
45d0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
45e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
45f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4630: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
4640: 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
4650: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
4660: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
4670: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 3c 73  e name of the <s
4680: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44  ee cref="SQLiteD
4690: 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20 6d 65  ataReader" /> me
46a0: 74 68 6f 64 20 74 68 61 74 20 77 61 73 0d 0a 20  thod that was.. 
46b0: 20 20 20 20 20 2f 2f 2f 20 72 65 73 70 6f 6e 73       /// respons
46c0: 69 62 6c 65 20 66 6f 72 20 69 6e 76 6f 6b 69 6e  ible for invokin
46d0: 67 20 74 68 69 73 20 63 61 6c 6c 62 61 63 6b 2e  g this callback.
46e0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
46f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75  mmary>..      pu
4700: 62 6c 69 63 20 73 74 72 69 6e 67 20 4d 65 74 68  blic string Meth
4710: 6f 64 4e 61 6d 65 0d 0a 20 20 20 20 20 20 7b 0d  odName..      {.
4720: 0a 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b  .          get {
4730: 20 72 65 74 75 72 6e 20 6d 65 74 68 6f 64 4e 61   return methodNa
4740: 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a  me; }..      }..
4750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ..      ////////
4760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  /....      /// <
47b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
47c0: 2f 2f 2f 20 49 66 20 74 68 65 20 3c 73 65 65 20  /// If the <see 
47d0: 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61  cref="SQLiteData
47e0: 52 65 61 64 65 72 2e 47 65 74 42 79 74 65 73 22  Reader.GetBytes"
47f0: 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f   /> or..      //
4800: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
4810: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 47 65  iteDataReader.Ge
4820: 74 43 68 61 72 73 22 20 2f 3e 20 6d 65 74 68 6f  tChars" /> metho
4830: 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65  d is being calle
4840: 64 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  d,..      /// th
4850: 69 73 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 63  is object will c
4860: 6f 6e 74 61 69 6e 20 74 68 65 20 61 72 72 61 79  ontain the array
4870: 20 72 65 6c 61 74 65 64 20 70 61 72 61 6d 65 74   related paramet
4880: 65 72 73 20 66 6f 72 20 74 68 61 74 0d 0a 20 20  ers for that..  
4890: 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 20      /// method. 
48a0: 20 49 66 20 74 68 65 20 3c 73 65 65 20 63 72 65   If the <see cre
48b0: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
48c0: 64 65 72 2e 47 65 74 42 6c 6f 62 22 20 2f 3e 20  der.GetBlob" /> 
48d0: 6d 65 74 68 6f 64 20 69 73 0d 0a 20 20 20 20 20  method is..     
48e0: 20 2f 2f 2f 20 62 65 69 6e 67 20 63 61 6c 6c 65   /// being calle
48f0: 64 2c 20 74 68 69 73 20 6f 62 6a 65 63 74 20 77  d, this object w
4900: 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20  ill contain the 
4910: 62 6c 6f 62 20 72 65 6c 61 74 65 64 20 70 61 72  blob related par
4920: 61 6d 65 74 65 72 73 0d 0a 20 20 20 20 20 20 2f  ameters..      /
4930: 2f 2f 20 66 6f 72 20 74 68 61 74 20 6d 65 74 68  // for that meth
4940: 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
4950: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4960: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 52 65   public SQLiteRe
4970: 61 64 45 76 65 6e 74 41 72 67 73 20 45 78 74 72  adEventArgs Extr
4980: 61 45 76 65 6e 74 41 72 67 73 0d 0a 20 20 20 20  aEventArgs..    
4990: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 67    {..          g
49a0: 65 74 20 7b 20 72 65 74 75 72 6e 20 65 78 74 72  et { return extr
49b0: 61 45 76 65 6e 74 41 72 67 73 3b 20 7d 0d 0a 20  aEventArgs; }.. 
49c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
4a20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4a30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
4a40: 20 6d 61 79 20 62 65 20 75 73 65 64 20 62 79 20   may be used by 
4a50: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20  the callback to 
4a60: 73 65 74 20 74 68 65 20 72 65 74 75 72 6e 20 76  set the return v
4a70: 61 6c 75 65 20 66 6f 72 20 74 68 65 0d 0a 20 20  alue for the..  
4a80: 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 3c      /// called <
4a90: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
4aa0: 44 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20 6d  DataReader" /> m
4ab0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
4ac0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4ad0: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
4ae0: 65 44 61 74 61 52 65 61 64 65 72 56 61 6c 75 65  eDataReaderValue
4af0: 20 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 7b 0d   Value..      {.
4b00: 0a 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b  .          get {
4b10: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 20 7d   return value; }
4b20: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
4b30: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d   #endregion..  }
4b40: 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
4b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 2f 2f 2f  ///////....  ///
4bb0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
4bc0: 2f 20 54 68 69 73 20 72 65 70 72 65 73 65 6e 74  / This represent
4bd0: 73 20 61 20 6d 65 74 68 6f 64 20 74 68 61 74 20  s a method that 
4be0: 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 69  will be called i
4bf0: 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20  n response to a 
4c00: 72 65 71 75 65 73 74 20 74 6f 0d 0a 20 20 2f 2f  request to..  //
4c10: 2f 20 62 69 6e 64 20 61 20 70 61 72 61 6d 65 74  / bind a paramet
4c20: 65 72 20 74 6f 20 61 20 63 6f 6d 6d 61 6e 64 2e  er to a command.
4c30: 20 20 49 66 20 61 6e 20 65 78 63 65 70 74 69 6f    If an exceptio
4c40: 6e 20 69 73 20 74 68 72 6f 77 6e 2c 20 69 74 20  n is thrown, it 
4c50: 77 69 6c 6c 20 63 61 75 73 65 0d 0a 20 20 2f 2f  will cause..  //
4c60: 2f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20  / the parameter 
4c70: 62 69 6e 64 69 6e 67 20 6f 70 65 72 61 74 69 6f  binding operatio
4c80: 6e 20 74 6f 20 66 61 69 6c 20 2d 41 4e 44 2d 20  n to fail -AND- 
4c90: 69 74 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65  it will continue
4ca0: 20 74 6f 20 75 6e 77 69 6e 64 0d 0a 20 20 2f 2f   to unwind..  //
4cb0: 2f 20 74 68 65 20 63 61 6c 6c 20 73 74 61 63 6b  / the call stack
4cc0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
4cd0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72 61  ry>..  /// <para
4ce0: 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72 74 22  m name="convert"
4cf0: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65  >..  /// The <se
4d00: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
4d10: 6e 76 65 72 74 22 20 2f 3e 20 69 6e 73 74 61 6e  nvert" /> instan
4d20: 63 65 20 69 6e 20 75 73 65 2e 0d 0a 20 20 2f 2f  ce in use...  //
4d30: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 2f 2f  / </param>..  //
4d40: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
4d50: 6f 6d 6d 61 6e 64 22 3e 0d 0a 20 20 2f 2f 2f 20  ommand">..  /// 
4d60: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
4d70: 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e  QLiteCommand" />
4d80: 20 69 6e 73 74 61 6e 63 65 20 69 6e 20 75 73 65   instance in use
4d90: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  ...  /// </param
4da0: 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  >..  /// <param 
4db0: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
4dc0: 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61   /// The flags a
4dd0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
4de0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
4df0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
4e00: 2f 3e 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 2f  /> instance..  /
4e10: 2f 2f 20 69 6e 20 75 73 65 2e 0d 0a 20 20 2f 2f  // in use...  //
4e20: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 2f 2f  / </param>..  //
4e30: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
4e40: 61 72 61 6d 65 74 65 72 22 3e 0d 0a 20 20 2f 2f  arameter">..  //
4e50: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
4e60: 22 53 51 4c 69 74 65 50 61 72 61 6d 65 74 65 72  "SQLiteParameter
4e70: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 20 62 65  " /> instance be
4e80: 69 6e 67 20 62 6f 75 6e 64 20 74 6f 20 74 68 65  ing bound to the
4e90: 20 63 6f 6d 6d 61 6e 64 2e 0d 0a 20 20 2f 2f 2f   command...  ///
4ea0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 2f 2f 2f   </param>..  ///
4eb0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
4ec0: 70 65 4e 61 6d 65 22 3e 0d 0a 20 20 2f 2f 2f 20  peName">..  /// 
4ed0: 54 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  The database typ
4ee0: 65 20 6e 61 6d 65 20 61 73 73 6f 63 69 61 74 65  e name associate
4ef0: 64 20 77 69 74 68 20 74 68 69 73 20 63 61 6c 6c  d with this call
4f00: 62 61 63 6b 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70  back...  /// </p
4f10: 61 72 61 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61  aram>..  /// <pa
4f20: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
4f30: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 6f 72 64  >..  /// The ord
4f40: 69 6e 61 6c 20 6f 66 20 74 68 65 20 70 61 72 61  inal of the para
4f50: 6d 65 74 65 72 20 62 65 69 6e 67 20 62 6f 75 6e  meter being boun
4f60: 64 20 74 6f 20 74 68 65 20 63 6f 6d 6d 61 6e 64  d to the command
4f70: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  ...  /// </param
4f80: 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  >..  /// <param 
4f90: 6e 61 6d 65 3d 22 75 73 65 72 44 61 74 61 22 3e  name="userData">
4fa0: 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61  ..  /// The data
4fb0: 20 6f 72 69 67 69 6e 61 6c 6c 79 20 75 73 65 64   originally used
4fc0: 20 77 68 65 6e 20 72 65 67 69 73 74 65 72 69 6e   when registerin
4fd0: 67 20 74 68 69 73 20 63 61 6c 6c 62 61 63 6b 2e  g this callback.
4fe0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e  ..  /// </param>
4ff0: 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e  ..  /// <param n
5000: 61 6d 65 3d 22 63 6f 6d 70 6c 65 74 65 22 3e 0d  ame="complete">.
5010: 0a 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20  .  /// Non-zero 
5020: 69 66 20 74 68 65 20 64 65 66 61 75 6c 74 20 68  if the default h
5030: 61 6e 64 6c 69 6e 67 20 66 6f 72 20 74 68 65 20  andling for the 
5040: 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69 6e  parameter bindin
5050: 67 20 63 61 6c 6c 20 73 68 6f 75 6c 64 0d 0a 20  g call should.. 
5060: 20 2f 2f 2f 20 62 65 20 73 6b 69 70 70 65 64 20   /// be skipped 
5070: 28 69 2e 65 2e 20 74 68 65 20 70 61 72 61 6d 65  (i.e. the parame
5080: 74 65 72 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  ter should not b
5090: 65 20 62 6f 75 6e 64 20 61 74 20 61 6c 6c 29 2e  e bound at all).
50a0: 20 20 47 72 65 61 74 20 63 61 72 65 0d 0a 20 20    Great care..  
50b0: 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 75 73  /// should be us
50c0: 65 64 20 77 68 65 6e 20 73 65 74 74 69 6e 67 20  ed when setting 
50d0: 74 68 69 73 20 74 6f 20 6e 6f 6e 2d 7a 65 72 6f  this to non-zero
50e0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  ...  /// </param
50f0: 3e 0d 0a 20 20 70 75 62 6c 69 63 20 64 65 6c 65  >..  public dele
5100: 67 61 74 65 20 76 6f 69 64 20 53 51 4c 69 74 65  gate void SQLite
5110: 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63  BindValueCallbac
5120: 6b 28 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65  k(..      SQLite
5130: 43 6f 6e 76 65 72 74 20 63 6f 6e 76 65 72 74 2c  Convert convert,
5140: 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f  ..      SQLiteCo
5150: 6d 6d 61 6e 64 20 63 6f 6d 6d 61 6e 64 2c 0d 0a  mmand command,..
5160: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
5170: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
5180: 73 2c 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65  s,..      SQLite
5190: 50 61 72 61 6d 65 74 65 72 20 70 61 72 61 6d 65  Parameter parame
51a0: 74 65 72 2c 0d 0a 20 20 20 20 20 20 73 74 72 69  ter,..      stri
51b0: 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20  ng typeName,..  
51c0: 20 20 20 20 69 6e 74 20 69 6e 64 65 78 2c 0d 0a      int index,..
51d0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 75 73 65        object use
51e0: 72 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 6f 75  rData,..      ou
51f0: 74 20 62 6f 6f 6c 20 63 6f 6d 70 6c 65 74 65 0d  t bool complete.
5200: 0a 20 20 29 3b 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f  .  );....  /////
5210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
5270: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5280: 0a 20 20 2f 2f 2f 20 54 68 69 73 20 72 65 70 72  .  /// This repr
5290: 65 73 65 6e 74 73 20 61 20 6d 65 74 68 6f 64 20  esents a method 
52a0: 74 68 61 74 20 77 69 6c 6c 20 62 65 20 63 61 6c  that will be cal
52b0: 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
52c0: 74 6f 20 61 20 72 65 71 75 65 73 74 0d 0a 20 20  to a request..  
52d0: 2f 2f 2f 20 74 6f 20 72 65 61 64 20 61 20 76 61  /// to read a va
52e0: 6c 75 65 20 66 72 6f 6d 20 61 20 64 61 74 61 20  lue from a data 
52f0: 72 65 61 64 65 72 2e 20 20 49 66 20 61 6e 20 65  reader.  If an e
5300: 78 63 65 70 74 69 6f 6e 20 69 73 20 74 68 72 6f  xception is thro
5310: 77 6e 2c 20 69 74 20 77 69 6c 6c 0d 0a 20 20 2f  wn, it will..  /
5320: 2f 2f 20 63 61 75 73 65 20 74 68 65 20 64 61 74  // cause the dat
5330: 61 20 72 65 61 64 65 72 20 6f 70 65 72 61 74 69  a reader operati
5340: 6f 6e 20 74 6f 20 66 61 69 6c 20 2d 41 4e 44 2d  on to fail -AND-
5350: 20 69 74 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75   it will continu
5360: 65 20 74 6f 20 75 6e 77 69 6e 64 0d 0a 20 20 2f  e to unwind..  /
5370: 2f 2f 20 74 68 65 20 63 61 6c 6c 20 73 74 61 63  // the call stac
5380: 6b 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  k...  /// </summ
5390: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72  ary>..  /// <par
53a0: 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72 74  am name="convert
53b0: 22 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 3c 73  ">..  /// The <s
53c0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
53d0: 6f 6e 76 65 72 74 22 20 2f 3e 20 69 6e 73 74 61  onvert" /> insta
53e0: 6e 63 65 20 69 6e 20 75 73 65 2e 0d 0a 20 20 2f  nce in use...  /
53f0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 2f  // </param>..  /
5400: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5410: 64 61 74 61 52 65 61 64 65 72 22 3e 0d 0a 20 20  dataReader">..  
5420: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
5430: 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61  f="SQLiteDataRea
5440: 64 65 72 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65  der" /> instance
5450: 20 69 6e 20 75 73 65 2e 0d 0a 20 20 2f 2f 2f 20   in use...  /// 
5460: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 2f 2f 2f 20  </param>..  /// 
5470: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
5480: 67 73 22 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  gs">..  /// The 
5490: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
54a0: 20 77 69 74 68 20 74 68 65 20 3c 73 65 65 20 63   with the <see c
54b0: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
54c0: 63 74 69 6f 6e 22 20 2f 3e 20 69 6e 73 74 61 6e  ction" /> instan
54d0: 63 65 0d 0a 20 20 2f 2f 2f 20 69 6e 20 75 73 65  ce..  /// in use
54e0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  ...  /// </param
54f0: 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  >..  /// <param 
5500: 6e 61 6d 65 3d 22 65 76 65 6e 74 41 72 67 73 22  name="eventArgs"
5510: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 61 72  >..  /// The par
5520: 61 6d 65 74 65 72 20 61 6e 64 20 72 65 74 75 72  ameter and retur
5530: 6e 20 74 79 70 65 20 64 61 74 61 20 66 6f 72 20  n type data for 
5540: 74 68 65 20 63 6f 6c 75 6d 6e 20 62 65 69 6e 67  the column being
5550: 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 0d 0a   read from the..
5560: 20 20 2f 2f 2f 20 64 61 74 61 20 72 65 61 64 65    /// data reade
5570: 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  r...  /// </para
5580: 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  m>..  /// <param
5590: 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22   name="typeName"
55a0: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 64 61 74  >..  /// The dat
55b0: 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20  abase type name 
55c0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
55d0: 74 68 69 73 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a  this callback...
55e0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
55f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5600: 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 2f 2f  e="index">..  //
5610: 2f 20 54 68 65 20 7a 65 72 6f 20 62 61 73 65 64  / The zero based
5620: 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 63 6f   index of the co
5630: 6c 75 6d 6e 20 62 65 69 6e 67 20 72 65 61 64 20  lumn being read 
5640: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 20 72 65  from the data re
5650: 61 64 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70  ader...  /// </p
5660: 61 72 61 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61  aram>..  /// <pa
5670: 72 61 6d 20 6e 61 6d 65 3d 22 75 73 65 72 44 61  ram name="userDa
5680: 74 61 22 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ta">..  /// The 
5690: 64 61 74 61 20 6f 72 69 67 69 6e 61 6c 6c 79 20  data originally 
56a0: 75 73 65 64 20 77 68 65 6e 20 72 65 67 69 73 74  used when regist
56b0: 65 72 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 62  ering this callb
56c0: 61 63 6b 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 70 61  ack...  /// </pa
56d0: 72 61 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 70 61 72  ram>..  /// <par
56e0: 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d 70 6c 65 74  am name="complet
56f0: 65 22 3e 0d 0a 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  e">..  /// Non-z
5700: 65 72 6f 20 69 66 20 74 68 65 20 64 65 66 61 75  ero if the defau
5710: 6c 74 20 68 61 6e 64 6c 69 6e 67 20 66 6f 72 20  lt handling for 
5720: 74 68 65 20 64 61 74 61 20 72 65 61 64 65 72 20  the data reader 
5730: 63 61 6c 6c 20 73 68 6f 75 6c 64 20 62 65 0d 0a  call should be..
5740: 20 20 2f 2f 2f 20 73 6b 69 70 70 65 64 2e 20 20    /// skipped.  
5750: 49 66 20 74 68 69 73 20 69 73 20 73 65 74 20 74  If this is set t
5760: 6f 20 6e 6f 6e 2d 7a 65 72 6f 20 61 6e 64 20 74  o non-zero and t
5770: 68 65 20 6e 65 63 65 73 73 61 72 79 20 72 65 74  he necessary ret
5780: 75 72 6e 20 76 61 6c 75 65 0d 0a 20 20 2f 2f 2f  urn value..  ///
5790: 20 69 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 20   is unavailable 
57a0: 6f 72 20 75 6e 73 75 69 74 61 62 6c 65 2c 20 61  or unsuitable, a
57b0: 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c  n exception will
57c0: 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 2f   be thrown...  /
57d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 70  // </param>..  p
57e0: 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65 20 76  ublic delegate v
57f0: 6f 69 64 20 53 51 4c 69 74 65 52 65 61 64 56 61  oid SQLiteReadVa
5800: 6c 75 65 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20  lueCallback(..  
5810: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 76 65 72      SQLiteConver
5820: 74 20 63 6f 6e 76 65 72 74 2c 0d 0a 20 20 20 20  t convert,..    
5830: 20 20 53 51 4c 69 74 65 44 61 74 61 52 65 61 64    SQLiteDataRead
5840: 65 72 20 64 61 74 61 52 65 61 64 65 72 2c 0d 0a  er dataReader,..
5850: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
5860: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
5870: 73 2c 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65  s,..      SQLite
5880: 52 65 61 64 45 76 65 6e 74 41 72 67 73 20 65 76  ReadEventArgs ev
5890: 65 6e 74 41 72 67 73 2c 0d 0a 20 20 20 20 20 20  entArgs,..      
58a0: 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c  string typeName,
58b0: 0d 0a 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65  ..      int inde
58c0: 78 2c 0d 0a 20 20 20 20 20 20 6f 62 6a 65 63 74  x,..      object
58d0: 20 75 73 65 72 44 61 74 61 2c 0d 0a 20 20 20 20   userData,..    
58e0: 20 20 6f 75 74 20 62 6f 6f 6c 20 63 6f 6d 70 6c    out bool compl
58f0: 65 74 65 0d 0a 20 20 29 3b 0d 0a 0d 0a 20 20 2f  ete..  );....  /
5900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5960: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
5970: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
5980: 63 6c 61 73 73 20 72 65 70 72 65 73 65 6e 74 73  class represents
5990: 20 74 68 65 20 63 75 73 74 6f 6d 20 64 61 74 61   the custom data
59a0: 20 74 79 70 65 20 68 61 6e 64 6c 69 6e 67 20 63   type handling c
59b0: 61 6c 6c 62 61 63 6b 73 0d 0a 20 20 2f 2f 2f 20  allbacks..  /// 
59c0: 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 74 79 70  for a single typ
59d0: 65 20 6e 61 6d 65 2e 0d 0a 20 20 2f 2f 2f 20 3c  e name...  /// <
59e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
59f0: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
5a00: 20 53 51 4c 69 74 65 54 79 70 65 43 61 6c 6c 62   SQLiteTypeCallb
5a10: 61 63 6b 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  acks..  {..     
5a20: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
5a30: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 2f 2f 2f   Data..      ///
5a40: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5a50: 20 20 2f 2f 2f 20 50 72 6f 76 69 64 65 73 20 74    /// Provides t
5a60: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 74  he underlying st
5a70: 6f 72 61 67 65 20 66 6f 72 20 74 68 65 0d 0a 20  orage for the.. 
5a80: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
5a90: 65 66 3d 22 54 79 70 65 4e 61 6d 65 22 20 2f 3e  ef="TypeName" />
5aa0: 20 70 72 6f 70 65 72 74 79 2e 0d 0a 20 20 20 20   property...    
5ab0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5ac0: 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 20  ..      private 
5ad0: 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b  string typeName;
5ae0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
5af0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5b00: 2f 2f 20 50 72 6f 76 69 64 65 73 20 74 68 65 20  // Provides the 
5b10: 75 6e 64 65 72 6c 79 69 6e 67 20 73 74 6f 72 61  underlying stora
5b20: 67 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20  ge for the..    
5b30: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
5b40: 22 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61  "BindValueCallba
5b50: 63 6b 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e  ck" /> property.
5b60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5b70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
5b80: 69 76 61 74 65 20 53 51 4c 69 74 65 42 69 6e 64  ivate SQLiteBind
5b90: 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 20 62 69  ValueCallback bi
5ba0: 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 3b  ndValueCallback;
5bb0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
5bc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5bd0: 2f 2f 20 50 72 6f 76 69 64 65 73 20 74 68 65 20  // Provides the 
5be0: 75 6e 64 65 72 6c 79 69 6e 67 20 73 74 6f 72 61  underlying stora
5bf0: 67 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20  ge for the..    
5c00: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
5c10: 22 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61  "ReadValueCallba
5c20: 63 6b 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e  ck" /> property.
5c30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5c40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
5c50: 69 76 61 74 65 20 53 51 4c 69 74 65 52 65 61 64  ivate SQLiteRead
5c60: 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 20 72 65  ValueCallback re
5c70: 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 3b  adValueCallback;
5c80: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
5c90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
5ca0: 2f 2f 20 50 72 6f 76 69 64 65 73 20 74 68 65 20  // Provides the 
5cb0: 75 6e 64 65 72 6c 79 69 6e 67 20 73 74 6f 72 61  underlying stora
5cc0: 67 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20  ge for the..    
5cd0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
5ce0: 22 42 69 6e 64 56 61 6c 75 65 55 73 65 72 44 61  "BindValueUserDa
5cf0: 74 61 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e  ta" /> property.
5d00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
5d10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72  mmary>..      pr
5d20: 69 76 61 74 65 20 6f 62 6a 65 63 74 20 62 69 6e  ivate object bin
5d30: 64 56 61 6c 75 65 55 73 65 72 44 61 74 61 3b 0d  dValueUserData;.
5d40: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
5d50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
5d60: 2f 20 50 72 6f 76 69 64 65 73 20 74 68 65 20 75  / Provides the u
5d70: 6e 64 65 72 6c 79 69 6e 67 20 73 74 6f 72 61 67  nderlying storag
5d80: 65 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20  e for the..     
5d90: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
5da0: 52 65 61 64 56 61 6c 75 65 55 73 65 72 44 61 74  ReadValueUserDat
5db0: 61 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 2e 0d  a" /> property..
5dc0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5dd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 72 69  mary>..      pri
5de0: 76 61 74 65 20 6f 62 6a 65 63 74 20 72 65 61 64  vate object read
5df0: 56 61 6c 75 65 55 73 65 72 44 61 74 61 3b 0d 0a  ValueUserData;..
5e00: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
5e10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
5e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e60: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
5e70: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
5e80: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
5e90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5ea0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
5eb0: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
5ec0: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e 0d   of this class..
5ed0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
5ee0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
5ef0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 69   <param name="bi
5f00: 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 22  ndValueCallback"
5f10: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
5f20: 20 63 75 73 74 6f 6d 20 70 61 72 61 6d 61 74 65   custom paramate
5f30: 72 20 62 69 6e 64 69 6e 67 20 63 61 6c 6c 62 61  r binding callba
5f40: 63 6b 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65  ck.  This parame
5f50: 74 65 72 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e  ter may be null.
5f60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
5f70: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ram>..      /// 
5f80: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 65 61  <param name="rea
5f90: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 22 3e  dValueCallback">
5fa0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
5fb0: 63 75 73 74 6f 6d 20 64 61 74 61 20 72 65 61 64  custom data read
5fc0: 65 72 20 76 61 6c 75 65 20 63 61 6c 6c 62 61 63  er value callbac
5fd0: 6b 2e 20 20 54 68 69 73 20 70 61 72 61 6d 65 74  k.  This paramet
5fe0: 65 72 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d  er may be null..
5ff0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  .      /// </par
6000: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
6010: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 69 6e 64  param name="bind
6020: 56 61 6c 75 65 55 73 65 72 44 61 74 61 22 3e 0d  ValueUserData">.
6030: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65  .      /// The e
6040: 78 74 72 61 20 64 61 74 61 20 74 6f 20 70 61 73  xtra data to pas
6050: 73 20 69 6e 74 6f 20 74 68 65 20 70 61 72 61 6d  s into the param
6060: 65 74 65 72 20 62 69 6e 64 69 6e 67 20 63 61 6c  eter binding cal
6070: 6c 62 61 63 6b 2e 20 20 54 68 69 73 0d 0a 20 20  lback.  This..  
6080: 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65      /// paramete
6090: 72 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a  r may be null...
60a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
60b0: 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  m>..      /// <p
60c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 72 65 61 64 56  aram name="readV
60d0: 61 6c 75 65 55 73 65 72 44 61 74 61 22 3e 0d 0a  alueUserData">..
60e0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78        /// The ex
60f0: 74 72 61 20 64 61 74 61 20 74 6f 20 70 61 73 73  tra data to pass
6100: 20 69 6e 74 6f 20 74 68 65 20 64 61 74 61 20 72   into the data r
6110: 65 61 64 65 72 20 76 61 6c 75 65 20 63 61 6c 6c  eader value call
6120: 62 61 63 6b 2e 20 20 54 68 69 73 0d 0a 20 20 20  back.  This..   
6130: 20 20 20 2f 2f 2f 20 70 61 72 61 6d 65 74 65 72     /// parameter
6140: 20 6d 61 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20   may be null... 
6150: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
6160: 3e 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  >..      private
6170: 20 53 51 4c 69 74 65 54 79 70 65 43 61 6c 6c 62   SQLiteTypeCallb
6180: 61 63 6b 73 28 0d 0a 20 20 20 20 20 20 20 20 20  acks(..         
6190: 20 53 51 4c 69 74 65 42 69 6e 64 56 61 6c 75 65   SQLiteBindValue
61a0: 43 61 6c 6c 62 61 63 6b 20 62 69 6e 64 56 61 6c  Callback bindVal
61b0: 75 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ueCallback,..   
61c0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 52 65 61         SQLiteRea
61d0: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 20 72  dValueCallback r
61e0: 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  eadValueCallback
61f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 6f 62 6a  ,..          obj
6200: 65 63 74 20 62 69 6e 64 56 61 6c 75 65 55 73 65  ect bindValueUse
6210: 72 44 61 74 61 2c 0d 0a 20 20 20 20 20 20 20 20  rData,..        
6220: 20 20 6f 62 6a 65 63 74 20 72 65 61 64 56 61 6c    object readVal
6230: 75 65 55 73 65 72 44 61 74 61 0d 0a 20 20 20 20  ueUserData..    
6240: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
6250: 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 69 73  ..          this
6260: 2e 62 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61  .bindValueCallba
6270: 63 6b 20 3d 20 62 69 6e 64 56 61 6c 75 65 43 61  ck = bindValueCa
6280: 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20  llback;..       
6290: 20 20 20 74 68 69 73 2e 72 65 61 64 56 61 6c 75     this.readValu
62a0: 65 43 61 6c 6c 62 61 63 6b 20 3d 20 72 65 61 64  eCallback = read
62b0: 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 3b 0d 0a  ValueCallback;..
62c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 62            this.b
62d0: 69 6e 64 56 61 6c 75 65 55 73 65 72 44 61 74 61  indValueUserData
62e0: 20 3d 20 62 69 6e 64 56 61 6c 75 65 55 73 65 72   = bindValueUser
62f0: 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20  Data;..         
6300: 20 74 68 69 73 2e 72 65 61 64 56 61 6c 75 65 55   this.readValueU
6310: 73 65 72 44 61 74 61 20 3d 20 72 65 61 64 56 61  serData = readVa
6320: 6c 75 65 55 73 65 72 44 61 74 61 3b 0d 0a 20 20  lueUserData;..  
6330: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
6340: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
6350: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
63a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74      #region Stat
63b0: 69 63 20 22 46 61 63 74 6f 72 79 22 20 4d 65 74  ic "Factory" Met
63c0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  hods..      /// 
63d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
63e0: 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 20   /// Creates an 
63f0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
6400: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
6410: 65 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20  eTypeCallbacks" 
6420: 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20  /> class...     
6430: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6440: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  .      /// <para
6450: 6d 20 6e 61 6d 65 3d 22 62 69 6e 64 56 61 6c 75  m name="bindValu
6460: 65 43 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20  eCallback">..   
6470: 20 20 20 2f 2f 2f 20 54 68 65 20 63 75 73 74 6f     /// The custo
6480: 6d 20 70 61 72 61 6d 61 74 65 72 20 62 69 6e 64  m paramater bind
6490: 69 6e 67 20 63 61 6c 6c 62 61 63 6b 2e 20 20 54  ing callback.  T
64a0: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 61  his parameter ma
64b0: 79 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  y be null...    
64c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
64d0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
64e0: 20 6e 61 6d 65 3d 22 72 65 61 64 56 61 6c 75 65   name="readValue
64f0: 43 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20 20  Callback">..    
6500: 20 20 2f 2f 2f 20 54 68 65 20 63 75 73 74 6f 6d    /// The custom
6510: 20 64 61 74 61 20 72 65 61 64 65 72 20 76 61 6c   data reader val
6520: 75 65 20 63 61 6c 6c 62 61 63 6b 2e 20 20 54 68  ue callback.  Th
6530: 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79  is parameter may
6540: 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20   be null...     
6550: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6560: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
6570: 6e 61 6d 65 3d 22 62 69 6e 64 56 61 6c 75 65 55  name="bindValueU
6580: 73 65 72 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  serData">..     
6590: 20 2f 2f 2f 20 54 68 65 20 65 78 74 72 61 20 64   /// The extra d
65a0: 61 74 61 20 74 6f 20 70 61 73 73 20 69 6e 74 6f  ata to pass into
65b0: 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 62   the parameter b
65c0: 69 6e 64 69 6e 67 20 63 61 6c 6c 62 61 63 6b 2e  inding callback.
65d0: 20 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f    This..      //
65e0: 2f 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20  / parameter may 
65f0: 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  be null...      
6600: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6610: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6620: 61 6d 65 3d 22 72 65 61 64 56 61 6c 75 65 55 73  ame="readValueUs
6630: 65 72 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20  erData">..      
6640: 2f 2f 2f 20 54 68 65 20 65 78 74 72 61 20 64 61  /// The extra da
6650: 74 61 20 74 6f 20 70 61 73 73 20 69 6e 74 6f 20  ta to pass into 
6660: 74 68 65 20 64 61 74 61 20 72 65 61 64 65 72 20  the data reader 
6670: 76 61 6c 75 65 20 63 61 6c 6c 62 61 63 6b 2e 20  value callback. 
6680: 20 54 68 69 73 0d 0a 20 20 20 20 20 20 2f 2f 2f   This..      ///
6690: 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62   parameter may b
66a0: 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  e null...      /
66b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
66c0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
66d0: 20 53 51 4c 69 74 65 54 79 70 65 43 61 6c 6c 62   SQLiteTypeCallb
66e0: 61 63 6b 73 20 43 72 65 61 74 65 28 0d 0a 20 20  acks Create(..  
66f0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 69          SQLiteBi
6700: 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 20  ndValueCallback 
6710: 62 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63  bindValueCallbac
6720: 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  k,..          SQ
6730: 4c 69 74 65 52 65 61 64 56 61 6c 75 65 43 61 6c  LiteReadValueCal
6740: 6c 62 61 63 6b 20 72 65 61 64 56 61 6c 75 65 43  lback readValueC
6750: 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
6760: 20 20 20 20 6f 62 6a 65 63 74 20 62 69 6e 64 56      object bindV
6770: 61 6c 75 65 55 73 65 72 44 61 74 61 2c 0d 0a 20  alueUserData,.. 
6780: 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
6790: 72 65 61 64 56 61 6c 75 65 55 73 65 72 44 61 74  readValueUserDat
67a0: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  a..          )..
67b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
67c0: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51     return new SQ
67d0: 4c 69 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b  LiteTypeCallback
67e0: 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
67f0: 20 20 62 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62    bindValueCallb
6800: 61 63 6b 2c 20 72 65 61 64 56 61 6c 75 65 43 61  ack, readValueCa
6810: 6c 6c 62 61 63 6b 2c 20 62 69 6e 64 56 61 6c 75  llback, bindValu
6820: 65 55 73 65 72 44 61 74 61 2c 0d 0a 20 20 20 20  eUserData,..    
6830: 20 20 20 20 20 20 20 20 20 20 72 65 61 64 56 61            readVa
6840: 6c 75 65 55 73 65 72 44 61 74 61 29 3b 0d 0a 20  lueUserData);.. 
6850: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
6860: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
6870: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
68c0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
68d0: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
68e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
68f0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
6900: 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65  he database type
6910: 20 6e 61 6d 65 20 74 68 61 74 20 74 68 65 20 63   name that the c
6920: 61 6c 6c 62 61 63 6b 73 20 63 6f 6e 74 61 69 6e  allbacks contain
6930: 65 64 20 69 6e 20 74 68 69 73 20 63 6c 61 73 73  ed in this class
6940: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c  ..      /// will
6950: 20 61 70 70 6c 79 20 74 6f 2e 20 20 54 68 69 73   apply to.  This
6960: 20 76 61 6c 75 65 20 6d 61 79 20 6e 6f 74 20 62   value may not b
6970: 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f  e null...      /
6980: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6990: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
69a0: 6e 67 20 54 79 70 65 4e 61 6d 65 0d 0a 20 20 20  ng TypeName..   
69b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
69c0: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 74 79 70  get { return typ
69d0: 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  eName; }..      
69e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 74      internal set
69f0: 20 7b 20 74 79 70 65 4e 61 6d 65 20 3d 20 76 61   { typeName = va
6a00: 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 7d 0d  lue; }..      }.
6a10: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
6a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a60: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  //....      /// 
6a70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
6a80: 20 2f 2f 2f 20 54 68 65 20 63 75 73 74 6f 6d 20   /// The custom 
6a90: 70 61 72 61 6d 61 74 65 72 20 62 69 6e 64 69 6e  paramater bindin
6aa0: 67 20 63 61 6c 6c 62 61 63 6b 2e 20 20 54 68 69  g callback.  Thi
6ab0: 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 6e  s value may be n
6ac0: 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ull...      /// 
6ad0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6ae0: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 42    public SQLiteB
6af0: 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  indValueCallback
6b00: 20 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61   BindValueCallba
6b10: 63 6b 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ck..      {..   
6b20: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
6b30: 75 72 6e 20 62 69 6e 64 56 61 6c 75 65 43 61 6c  urn bindValueCal
6b40: 6c 62 61 63 6b 3b 20 7d 0d 0a 20 20 20 20 20 20  lback; }..      
6b50: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
6b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ba0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ////....      //
6bb0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6bc0: 20 20 20 2f 2f 2f 20 54 68 65 20 63 75 73 74 6f     /// The custo
6bd0: 6d 20 64 61 74 61 20 72 65 61 64 65 72 20 76 61  m data reader va
6be0: 6c 75 65 20 63 61 6c 6c 62 61 63 6b 2e 20 20 54  lue callback.  T
6bf0: 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65  his value may be
6c00: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f   null...      //
6c10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6c20: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
6c30: 65 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61  eReadValueCallba
6c40: 63 6b 20 52 65 61 64 56 61 6c 75 65 43 61 6c 6c  ck ReadValueCall
6c50: 62 61 63 6b 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  back..      {.. 
6c60: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
6c70: 65 74 75 72 6e 20 72 65 61 64 56 61 6c 75 65 43  eturn readValueC
6c80: 61 6c 6c 62 61 63 6b 3b 20 7d 0d 0a 20 20 20 20  allback; }..    
6c90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ce0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
6d00: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78 74       /// The ext
6d10: 72 61 20 64 61 74 61 20 74 6f 20 70 61 73 73 20  ra data to pass 
6d20: 69 6e 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74  into the paramet
6d30: 65 72 20 62 69 6e 64 69 6e 67 20 63 61 6c 6c 62  er binding callb
6d40: 61 63 6b 2e 20 20 54 68 69 73 0d 0a 20 20 20 20  ack.  This..    
6d50: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 6d 61 79 20    /// value may 
6d60: 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20  be null...      
6d70: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6d80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a        public obj
6d90: 65 63 74 20 42 69 6e 64 56 61 6c 75 65 55 73 65  ect BindValueUse
6da0: 72 44 61 74 61 0d 0a 20 20 20 20 20 20 7b 0d 0a  rData..      {..
6db0: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
6dc0: 72 65 74 75 72 6e 20 62 69 6e 64 56 61 6c 75 65  return bindValue
6dd0: 55 73 65 72 44 61 74 61 3b 20 7d 0d 0a 20 20 20  UserData; }..   
6de0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
6df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6e40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6e50: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78        /// The ex
6e60: 74 72 61 20 64 61 74 61 20 74 6f 20 70 61 73 73  tra data to pass
6e70: 20 69 6e 74 6f 20 74 68 65 20 64 61 74 61 20 72   into the data r
6e80: 65 61 64 65 72 20 76 61 6c 75 65 20 63 61 6c 6c  eader value call
6e90: 62 61 63 6b 2e 20 20 54 68 69 73 0d 0a 20 20 20  back.  This..   
6ea0: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 6d 61 79     /// value may
6eb0: 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20   be null...     
6ec0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6ed0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62  .      public ob
6ee0: 6a 65 63 74 20 52 65 61 64 56 61 6c 75 65 55 73  ject ReadValueUs
6ef0: 65 72 44 61 74 61 0d 0a 20 20 20 20 20 20 7b 0d  erData..      {.
6f00: 0a 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b  .          get {
6f10: 20 72 65 74 75 72 6e 20 72 65 61 64 56 61 6c 75   return readValu
6f20: 65 55 73 65 72 44 61 74 61 3b 20 7d 0d 0a 20 20  eUserData; }..  
6f30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
6f40: 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a  dregion..  }....
6f50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fb0: 2f 2f 2f 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75  ///....  /// <su
6fc0: 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
6fd0: 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73 65  is class represe
6fe0: 6e 74 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73  nts the mappings
6ff0: 20 62 65 74 77 65 65 6e 20 64 61 74 61 62 61 73   between databas
7000: 65 20 74 79 70 65 20 6e 61 6d 65 73 0d 0a 20 20  e type names..  
7010: 2f 2f 2f 20 61 6e 64 20 74 68 65 69 72 20 61 73  /// and their as
7020: 73 6f 63 69 61 74 65 64 20 63 75 73 74 6f 6d 20  sociated custom 
7030: 64 61 74 61 20 74 79 70 65 20 68 61 6e 64 6c 69  data type handli
7040: 6e 67 20 63 61 6c 6c 62 61 63 6b 73 2e 0d 0a 20  ng callbacks... 
7050: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7060: 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  .  internal seal
7070: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 54  ed class SQLiteT
7080: 79 70 65 43 61 6c 6c 62 61 63 6b 73 4d 61 70 0d  ypeCallbacksMap.
7090: 0a 20 20 20 20 20 20 3a 20 44 69 63 74 69 6f 6e  .      : Diction
70a0: 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69  ary<string, SQLi
70b0: 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 3e  teTypeCallbacks>
70c0: 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f  ..  {..      ///
70d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
70e0: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
70f0: 20 61 6e 20 28 65 6d 70 74 79 29 20 69 6e 73 74   an (empty) inst
7100: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
7110: 73 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ss...      /// <
7120: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7130: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79   public SQLiteTy
7140: 70 65 43 61 6c 6c 62 61 63 6b 73 4d 61 70 28 29  peCallbacksMap()
7150: 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 62 61  ..          : ba
7160: 73 65 28 6e 65 77 20 54 79 70 65 4e 61 6d 65 53  se(new TypeNameS
7170: 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 28 29 29  tringComparer())
7180: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
7190: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
71a0: 6e 67 2e 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ng...      }..  
71b0: 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
71c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 2f 2f  ////////....  //
7220: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
7230: 2f 2f 20 45 76 65 6e 74 20 64 61 74 61 20 66 6f  // Event data fo
7240: 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 76 65  r connection eve
7250: 6e 74 20 68 61 6e 64 6c 65 72 73 2e 0d 0a 20 20  nt handlers...  
7260: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7270: 20 20 70 75 62 6c 69 63 20 63 6c 61 73 73 20 43    public class C
7280: 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72  onnectionEventAr
7290: 67 73 20 3a 20 45 76 65 6e 74 41 72 67 73 0d 0a  gs : EventArgs..
72a0: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
72b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
72c0: 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 6f 66 20  /// The type of 
72d0: 65 76 65 6e 74 20 62 65 69 6e 67 20 72 61 69 73  event being rais
72e0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
72f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
7300: 20 70 75 62 6c 69 63 20 72 65 61 64 6f 6e 6c 79   public readonly
7310: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
7320: 6e 45 76 65 6e 74 54 79 70 65 20 45 76 65 6e 74  nEventType Event
7330: 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f  Type;....      /
7340: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7350: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
7360: 20 63 72 65 66 3d 22 53 74 61 74 65 43 68 61 6e   cref="StateChan
7370: 67 65 45 76 65 6e 74 41 72 67 73 22 20 2f 3e 20  geEventArgs" /> 
7380: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
7390: 74 68 69 73 20 65 76 65 6e 74 2c 20 69 66 20 61  this event, if a
73a0: 6e 79 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ny...      /// <
73b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
73c0: 20 70 75 62 6c 69 63 20 72 65 61 64 6f 6e 6c 79   public readonly
73d0: 20 53 74 61 74 65 43 68 61 6e 67 65 45 76 65 6e   StateChangeEven
73e0: 74 41 72 67 73 20 45 76 65 6e 74 41 72 67 73 3b  tArgs EventArgs;
73f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
7400: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
7410: 2f 2f 20 54 68 65 20 74 72 61 6e 73 61 63 74 69  // The transacti
7420: 6f 6e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  on associated wi
7430: 74 68 20 74 68 69 73 20 65 76 65 6e 74 2c 20 69  th this event, i
7440: 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 2f 2f  f any...      //
7450: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7460: 20 20 20 20 70 75 62 6c 69 63 20 72 65 61 64 6f      public reado
7470: 6e 6c 79 20 49 44 62 54 72 61 6e 73 61 63 74 69  nly IDbTransacti
7480: 6f 6e 20 54 72 61 6e 73 61 63 74 69 6f 6e 3b 0d  on Transaction;.
7490: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
74a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
74b0: 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 61 73  / The command as
74c0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
74d0: 69 73 20 65 76 65 6e 74 2c 20 69 66 20 61 6e 79  is event, if any
74e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
74f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 70  ummary>..      p
7500: 75 62 6c 69 63 20 72 65 61 64 6f 6e 6c 79 20 49  ublic readonly I
7510: 44 62 43 6f 6d 6d 61 6e 64 20 43 6f 6d 6d 61 6e  DbCommand Comman
7520: 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d;....      /// 
7530: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7540: 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 20 72 65   /// The data re
7550: 61 64 65 72 20 61 73 73 6f 63 69 61 74 65 64 20  ader associated 
7560: 77 69 74 68 20 74 68 69 73 20 65 76 65 6e 74 2c  with this event,
7570: 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20   if any...      
7580: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7590: 20 20 20 20 20 20 70 75 62 6c 69 63 20 72 65 61        public rea
75a0: 64 6f 6e 6c 79 20 49 44 61 74 61 52 65 61 64 65  donly IDataReade
75b0: 72 20 44 61 74 61 52 65 61 64 65 72 3b 0d 0a 0d  r DataReader;...
75c0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
75d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
75e0: 54 68 65 20 63 72 69 74 69 63 61 6c 20 68 61 6e  The critical han
75f0: 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20 77  dle associated w
7600: 69 74 68 20 74 68 69 73 20 65 76 65 6e 74 2c 20  ith this event, 
7610: 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 20 2f  if any...      /
7620: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23  // </summary>..#
7630: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7640: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7650: 20 20 20 20 20 70 75 62 6c 69 63 20 72 65 61 64       public read
7660: 6f 6e 6c 79 20 43 72 69 74 69 63 61 6c 48 61 6e  only CriticalHan
7670: 64 6c 65 20 43 72 69 74 69 63 61 6c 48 61 6e 64  dle CriticalHand
7680: 6c 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  le;..#else..    
7690: 20 20 70 75 62 6c 69 63 20 72 65 61 64 6f 6e 6c    public readonl
76a0: 79 20 6f 62 6a 65 63 74 20 43 72 69 74 69 63 61  y object Critica
76b0: 6c 48 61 6e 64 6c 65 3b 0d 0a 23 65 6e 64 69 66  lHandle;..#endif
76c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
76d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
76e0: 2f 2f 20 43 6f 6d 6d 61 6e 64 20 6f 72 20 6d 65  // Command or me
76f0: 73 73 61 67 65 20 74 65 78 74 20 61 73 73 6f 63  ssage text assoc
7700: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
7710: 65 76 65 6e 74 2c 20 69 66 20 61 6e 79 2e 0d 0a  event, if any...
7720: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7730: 61 72 79 3e 0d 0a 20 20 20 20 20 20 70 75 62 6c  ary>..      publ
7740: 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69  ic readonly stri
7750: 6e 67 20 54 65 78 74 3b 0d 0a 0d 0a 20 20 20 20  ng Text;....    
7760: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7770: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 78 74 72 61  .      /// Extra
7780: 20 64 61 74 61 20 61 73 73 6f 63 69 61 74 65 64   data associated
7790: 20 77 69 74 68 20 74 68 69 73 20 65 76 65 6e 74   with this event
77a0: 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20  , if any...     
77b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
77c0: 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 72 65  .      public re
77d0: 61 64 6f 6e 6c 79 20 6f 62 6a 65 63 74 20 44 61  adonly object Da
77e0: 74 61 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ta;....      ///
77f0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
7800: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
7810: 20 74 68 65 20 6f 62 6a 65 63 74 2e 0d 0a 20 20   the object...  
7820: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7830: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 70  y>..      /// <p
7840: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 76 65 6e 74  aram name="event
7850: 54 79 70 65 22 3e 54 68 65 20 74 79 70 65 20 6f  Type">The type o
7860: 66 20 65 76 65 6e 74 20 62 65 69 6e 67 20 72 61  f event being ra
7870: 69 73 65 64 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ised.</param>.. 
7880: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
7890: 6e 61 6d 65 3d 22 65 76 65 6e 74 41 72 67 73 22  name="eventArgs"
78a0: 3e 54 68 65 20 62 61 73 65 20 3c 73 65 65 20 63  >The base <see c
78b0: 72 65 66 3d 22 45 76 65 6e 74 41 72 67 73 22 20  ref="EventArgs" 
78c0: 2f 3e 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  /> associated.. 
78d0: 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
78e0: 69 73 20 65 76 65 6e 74 2c 20 69 66 20 61 6e 79  is event, if any
78f0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20  .</param>..     
7900: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7910: 3d 22 74 72 61 6e 73 61 63 74 69 6f 6e 22 3e 54  ="transaction">T
7920: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61  he transaction a
7930: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
7940: 68 69 73 20 65 76 65 6e 74 2c 20 69 66 20 61 6e  his event, if an
7950: 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  y.</param>..    
7960: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7970: 65 3d 22 63 6f 6d 6d 61 6e 64 22 3e 54 68 65 20  e="command">The 
7980: 63 6f 6d 6d 61 6e 64 20 61 73 73 6f 63 69 61 74  command associat
7990: 65 64 20 77 69 74 68 20 74 68 69 73 20 65 76 65  ed with this eve
79a0: 6e 74 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72  nt, if any.</par
79b0: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
79c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 61  param name="data
79d0: 52 65 61 64 65 72 22 3e 54 68 65 20 64 61 74 61  Reader">The data
79e0: 20 72 65 61 64 65 72 20 61 73 73 6f 63 69 61 74   reader associat
79f0: 65 64 20 77 69 74 68 20 74 68 69 73 20 65 76 65  ed with this eve
7a00: 6e 74 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72  nt, if any.</par
7a10: 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  am>..      /// <
7a20: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 72 69 74  param name="crit
7a30: 69 63 61 6c 48 61 6e 64 6c 65 22 3e 54 68 65 20  icalHandle">The 
7a40: 63 72 69 74 69 63 61 6c 20 68 61 6e 64 6c 65 20  critical handle 
7a50: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
7a60: 74 68 69 73 20 65 76 65 6e 74 2c 20 69 66 20 61  this event, if a
7a70: 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ny.</param>..   
7a80: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7a90: 6d 65 3d 22 74 65 78 74 22 3e 54 68 65 20 63 6f  me="text">The co
7aa0: 6d 6d 61 6e 64 20 6f 72 20 6d 65 73 73 61 67 65  mmand or message
7ab0: 20 74 65 78 74 2c 20 69 66 20 61 6e 79 2e 3c 2f   text, if any.</
7ac0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 2f 2f  param>..      //
7ad0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
7ae0: 61 74 61 22 3e 54 68 65 20 65 78 74 72 61 20 64  ata">The extra d
7af0: 61 74 61 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61  ata, if any.</pa
7b00: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 69 6e 74 65  ram>..      inte
7b10: 72 6e 61 6c 20 43 6f 6e 6e 65 63 74 69 6f 6e 45  rnal ConnectionE
7b20: 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20  ventArgs(..     
7b30: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
7b40: 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 20 65  ctionEventType e
7b50: 76 65 6e 74 54 79 70 65 2c 0d 0a 20 20 20 20 20  ventType,..     
7b60: 20 20 20 20 20 53 74 61 74 65 43 68 61 6e 67 65       StateChange
7b70: 45 76 65 6e 74 41 72 67 73 20 65 76 65 6e 74 41  EventArgs eventA
7b80: 72 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgs,..          
7b90: 49 44 62 54 72 61 6e 73 61 63 74 69 6f 6e 20 74  IDbTransaction t
7ba0: 72 61 6e 73 61 63 74 69 6f 6e 2c 0d 0a 20 20 20  ransaction,..   
7bb0: 20 20 20 20 20 20 20 49 44 62 43 6f 6d 6d 61 6e         IDbComman
7bc0: 64 20 63 6f 6d 6d 61 6e 64 2c 0d 0a 20 20 20 20  d command,..    
7bd0: 20 20 20 20 20 20 49 44 61 74 61 52 65 61 64 65        IDataReade
7be0: 72 20 64 61 74 61 52 65 61 64 65 72 2c 0d 0a 23  r dataReader,..#
7bf0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
7c00: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
7c10: 20 20 20 20 20 20 20 20 20 43 72 69 74 69 63 61           Critica
7c20: 6c 48 61 6e 64 6c 65 20 63 72 69 74 69 63 61 6c  lHandle critical
7c30: 48 61 6e 64 6c 65 2c 0d 0a 23 65 6c 73 65 0d 0a  Handle,..#else..
7c40: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
7c50: 20 63 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 2c   criticalHandle,
7c60: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
7c70: 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 2c      string text,
7c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65  ..          obje
7c90: 63 74 20 64 61 74 61 0d 0a 20 20 20 20 20 20 20  ct data..       
7ca0: 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
7cb0: 20 20 20 20 20 20 20 20 20 45 76 65 6e 74 54 79           EventTy
7cc0: 70 65 20 3d 20 65 76 65 6e 74 54 79 70 65 3b 0d  pe = eventType;.
7cd0: 0a 20 20 20 20 20 20 20 20 20 20 45 76 65 6e 74  .          Event
7ce0: 41 72 67 73 20 3d 20 65 76 65 6e 74 41 72 67 73  Args = eventArgs
7cf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 54 72 61  ;..          Tra
7d00: 6e 73 61 63 74 69 6f 6e 20 3d 20 74 72 61 6e 73  nsaction = trans
7d10: 61 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20  action;..       
7d20: 20 20 20 43 6f 6d 6d 61 6e 64 20 3d 20 63 6f 6d     Command = com
7d30: 6d 61 6e 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  mand;..         
7d40: 20 44 61 74 61 52 65 61 64 65 72 20 3d 20 64 61   DataReader = da
7d50: 74 61 52 65 61 64 65 72 3b 0d 0a 20 20 20 20 20  taReader;..     
7d60: 20 20 20 20 20 43 72 69 74 69 63 61 6c 48 61 6e       CriticalHan
7d70: 64 6c 65 20 3d 20 63 72 69 74 69 63 61 6c 48 61  dle = criticalHa
7d80: 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ndle;..         
7d90: 20 54 65 78 74 20 3d 20 74 65 78 74 3b 0d 0a 20   Text = text;.. 
7da0: 20 20 20 20 20 20 20 20 20 44 61 74 61 20 3d 20           Data = 
7db0: 64 61 74 61 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  data;..      }..
7dc0: 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f    }....  ///////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7e30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7e40: 20 2f 2f 2f 20 52 61 69 73 65 64 20 77 68 65 6e   /// Raised when
7e50: 20 61 6e 20 65 76 65 6e 74 20 70 65 72 74 61 69   an event pertai
7e60: 6e 69 6e 67 20 74 6f 20 61 20 63 6f 6e 6e 65 63  ning to a connec
7e70: 74 69 6f 6e 20 6f 63 63 75 72 73 2e 0d 0a 20 20  tion occurs...  
7e80: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e90: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7ea0: 65 3d 22 73 65 6e 64 65 72 22 3e 54 68 65 20 63  e="sender">The c
7eb0: 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 76 6f 6c 76  onnection involv
7ec0: 65 64 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 2f  ed.</param>..  /
7ed0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7ee0: 65 22 3e 45 78 74 72 61 20 69 6e 66 6f 72 6d 61  e">Extra informa
7ef0: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 65  tion about the e
7f00: 76 65 6e 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  vent.</param>.. 
7f10: 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61 74 65   public delegate
7f20: 20 76 6f 69 64 20 53 51 4c 69 74 65 43 6f 6e 6e   void SQLiteConn
7f30: 65 63 74 69 6f 6e 45 76 65 6e 74 48 61 6e 64 6c  ectionEventHandl
7f40: 65 72 28 6f 62 6a 65 63 74 20 73 65 6e 64 65 72  er(object sender
7f50: 2c 20 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  , ConnectionEven
7f60: 74 41 72 67 73 20 65 29 3b 0d 0a 0d 0a 20 20 2f  tArgs e);....  /
7f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
7fe0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74  ry>..  /// SQLit
7ff0: 65 20 69 6d 70 6c 65 6e 74 61 74 69 6f 6e 20 6f  e implentation o
8000: 66 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  f DbConnection..
8010: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
8020: 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b  >..  /// <remark
8030: 73 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 3c 73  s>..  /// The <s
8040: 65 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74  ee cref="Connect
8050: 69 6f 6e 53 74 72 69 6e 67 22 20 2f 3e 20 70 72  ionString" /> pr
8060: 6f 70 65 72 74 79 20 63 61 6e 20 63 6f 6e 74 61  operty can conta
8070: 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  in the following
8080: 20 70 61 72 61 6d 65 74 65 72 28 73 29 2c 20 64   parameter(s), d
8090: 65 6c 69 6d 69 74 65 64 20 77 69 74 68 20 61 20  elimited with a 
80a0: 73 65 6d 69 2d 63 6f 6c 6f 6e 3a 0d 0a 20 20 2f  semi-colon:..  /
80b0: 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 74  // <list type="t
80c0: 61 62 6c 65 22 3e 0d 0a 20 20 2f 2f 2f 20 3c 6c  able">..  /// <l
80d0: 69 73 74 68 65 61 64 65 72 3e 0d 0a 20 20 2f 2f  istheader>..  //
80e0: 2f 20 3c 74 65 72 6d 3e 50 61 72 61 6d 65 74 65  / <term>Paramete
80f0: 72 3c 2f 74 65 72 6d 3e 0d 0a 20 20 2f 2f 2f 20  r</term>..  /// 
8100: 3c 74 65 72 6d 3e 56 61 6c 75 65 73 3c 2f 74 65  <term>Values</te
8110: 72 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 74 65 72 6d  rm>..  /// <term
8120: 3e 52 65 71 75 69 72 65 64 3c 2f 74 65 72 6d 3e  >Required</term>
8130: 0d 0a 20 20 2f 2f 2f 20 3c 74 65 72 6d 3e 44 65  ..  /// <term>De
8140: 66 61 75 6c 74 3c 2f 74 65 72 6d 3e 0d 0a 20 20  fault</term>..  
8150: 2f 2f 2f 20 3c 2f 6c 69 73 74 68 65 61 64 65 72  /// </listheader
8160: 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  >..  /// <item>.
8170: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
8180: 69 6f 6e 3e 44 61 74 61 20 53 6f 75 72 63 65 3c  ion>Data Source<
8190: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
81a0: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
81b0: 6e 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 6d  n>..  /// This m
81c0: 61 79 20 62 65 20 61 20 66 69 6c 65 20 6e 61 6d  ay be a file nam
81d0: 65 2c 20 74 68 65 20 73 74 72 69 6e 67 20 22 3a  e, the string ":
81e0: 6d 65 6d 6f 72 79 3a 22 2c 20 6f 72 20 61 6e 79  memory:", or any
81f0: 20 73 75 70 70 6f 72 74 65 64 20 55 52 49 20 28   supported URI (
8200: 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 53 51  starting with SQ
8210: 4c 69 74 65 20 33 2e 37 2e 37 29 2e 0d 0a 20 20  Lite 3.7.7)...  
8220: 2f 2f 2f 20 53 74 61 72 74 69 6e 67 20 77 69 74  /// Starting wit
8230: 68 20 72 65 6c 65 61 73 65 20 31 2e 30 2e 38 36  h release 1.0.86
8240: 2e 30 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  .0, in order to 
8250: 75 73 65 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e  use more than on
8260: 65 20 63 6f 6e 73 65 63 75 74 69 76 65 20 62 61  e consecutive ba
8270: 63 6b 73 6c 61 73 68 20 28 65 2e 67 2e 20 66 6f  ckslash (e.g. fo
8280: 72 20 61 0d 0a 20 20 2f 2f 2f 20 55 4e 43 20 70  r a..  /// UNC p
8290: 61 74 68 29 2c 20 65 61 63 68 20 6f 66 20 74 68  ath), each of th
82a0: 65 20 61 64 6a 6f 69 6e 69 6e 67 20 62 61 63 6b  e adjoining back
82b0: 73 6c 61 73 68 20 63 68 61 72 61 63 74 65 72 73  slash characters
82c0: 20 6d 75 73 74 20 62 65 20 64 6f 75 62 6c 65 64   must be doubled
82d0: 20 28 65 2e 67 2e 20 22 5c 5c 4e 65 74 77 6f 72   (e.g. "\\Networ
82e0: 6b 5c 53 68 61 72 65 5c 74 65 73 74 2e 64 62 22  k\Share\test.db"
82f0: 0d 0a 20 20 2f 2f 2f 20 77 6f 75 6c 64 20 62 65  ..  /// would be
8300: 63 6f 6d 65 20 22 5c 5c 5c 5c 4e 65 74 77 6f 72  come "\\\\Networ
8310: 6b 5c 53 68 61 72 65 5c 74 65 73 74 2e 64 62 22  k\Share\test.db"
8320: 29 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63  )...  /// </desc
8330: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
8340: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 59 3c 2f  <description>Y</
8350: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
8360: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
8370: 3e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  ></description>.
8380: 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a  .  /// </item>..
8390: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20    /// <item>..  
83a0: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
83b0: 3e 55 72 69 3c 2f 64 65 73 63 72 69 70 74 69 6f  >Uri</descriptio
83c0: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72  n>..  /// <descr
83d0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 49  iption>..  /// I
83e0: 66 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 69  f specified, thi
83f0: 73 20 6d 75 73 74 20 62 65 20 61 20 66 69 6c 65  s must be a file
8400: 20 6e 61 6d 65 20 74 68 61 74 20 73 74 61 72 74   name that start
8410: 73 20 77 69 74 68 20 22 66 69 6c 65 3a 2f 2f 22  s with "file://"
8420: 2c 20 22 66 69 6c 65 3a 22 2c 20 6f 72 20 22 2f  , "file:", or "/
8430: 22 2e 20 20 41 6e 79 20 6c 65 61 64 69 6e 67 0d  ".  Any leading.
8440: 0a 20 20 2f 2f 2f 20 22 66 69 6c 65 3a 2f 2f 22  .  /// "file://"
8450: 20 6f 72 20 22 66 69 6c 65 3a 22 20 70 72 65 66   or "file:" pref
8460: 69 78 20 77 69 6c 6c 20 62 65 20 73 74 72 69 70  ix will be strip
8470: 70 65 64 20 6f 66 66 20 61 6e 64 20 74 68 65 20  ped off and the 
8480: 72 65 73 75 6c 74 69 6e 67 20 66 69 6c 65 20 6e  resulting file n
8490: 61 6d 65 20 77 69 6c 6c 20 62 65 20 75 73 65 64  ame will be used
84a0: 20 74 6f 20 6f 70 65 6e 0d 0a 20 20 2f 2f 2f 20   to open..  /// 
84b0: 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20  the database... 
84c0: 20 2f 2f 2f 20 3c 2f 64 65 73 63 72 69 70 74 69   /// </descripti
84d0: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
84e0: 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72  ription>N</descr
84f0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
8500: 64 65 73 63 72 69 70 74 69 6f 6e 3e 6e 75 6c 6c  description>null
8510: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
8520: 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20    /// </item>.. 
8530: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f   /// <item>..  /
8540: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
8550: 46 75 6c 6c 55 72 69 3c 2f 64 65 73 63 72 69 70  FullUri</descrip
8560: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
8570: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
8580: 2f 20 49 66 20 73 70 65 63 69 66 69 65 64 2c 20  / If specified, 
8590: 74 68 69 73 20 6d 75 73 74 20 62 65 20 61 20 55  this must be a U
85a0: 52 49 20 69 6e 20 61 20 66 6f 72 6d 61 74 20 72  RI in a format r
85b0: 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 65  ecognized by the
85c0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
85d0: 72 61 72 79 20 28 73 74 61 72 74 69 6e 67 20 77  rary (starting w
85e0: 69 74 68 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74  ith..  /// SQLit
85f0: 65 20 33 2e 37 2e 37 29 2e 20 20 49 74 20 77 69  e 3.7.7).  It wi
8600: 6c 6c 20 62 65 20 70 61 73 73 65 64 20 76 65 72  ll be passed ver
8610: 62 61 74 69 6d 20 74 6f 20 74 68 65 20 53 51 4c  batim to the SQL
8620: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
8630: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72  ...  /// </descr
8640: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
8650: 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64  description>N</d
8660: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
8670: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
8680: 6e 75 6c 6c 3c 2f 64 65 73 63 72 69 70 74 69 6f  null</descriptio
8690: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d  n>..  /// </item
86a0: 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  >..  /// <item>.
86b0: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
86c0: 69 6f 6e 3e 56 65 72 73 69 6f 6e 3c 2f 64 65 73  ion>Version</des
86d0: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
86e0: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 33 3c   <description>3<
86f0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
8700: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
8710: 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  n>N</description
8720: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
8730: 70 74 69 6f 6e 3e 33 3c 2f 64 65 73 63 72 69 70  ption>3</descrip
8740: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69  tion>..  /// </i
8750: 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65  tem>..  /// <ite
8760: 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72  m>..  /// <descr
8770: 69 70 74 69 6f 6e 3e 55 73 65 55 54 46 31 36 45  iption>UseUTF16E
8780: 6e 63 6f 64 69 6e 67 3c 2f 64 65 73 63 72 69 70  ncoding</descrip
8790: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
87a0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
87b0: 2f 20 3c 62 3e 54 72 75 65 3c 2f 62 3e 20 2d 20  / <b>True</b> - 
87c0: 54 68 65 20 55 54 46 2d 31 36 20 65 6e 63 6f 64  The UTF-16 encod
87d0: 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 75 73  ing should be us
87e0: 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e  ed...  /// <br/>
87f0: 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 46 61 6c 73 65  ..  /// <b>False
8800: 3c 2f 62 3e 20 2d 20 54 68 65 20 55 54 46 2d 38  </b> - The UTF-8
8810: 20 65 6e 63 6f 64 69 6e 67 20 73 68 6f 75 6c 64   encoding should
8820: 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 2f 2f 2f   be used...  ///
8830: 20 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d   </description>.
8840: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
8850: 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69  ion>N</descripti
8860: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
8870: 72 69 70 74 69 6f 6e 3e 46 61 6c 73 65 3c 2f 64  ription>False</d
8880: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
8890: 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f  // </item>..  //
88a0: 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20  / <item>..  /// 
88b0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 44 65 66  <description>Def
88c0: 61 75 6c 74 44 62 54 79 70 65 3c 2f 64 65 73 63  aultDbType</desc
88d0: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
88e0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  <description>.. 
88f0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65   /// This is the
8900: 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63 72   default <see cr
8910: 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 74  ef="DbType" /> t
8920: 6f 20 75 73 65 20 77 68 65 6e 20 6f 6e 65 20 63  o use when one c
8930: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
8940: 6e 65 64 20 62 61 73 65 64 20 6f 6e 20 74 68 65  ned based on the
8950: 0d 0a 20 20 2f 2f 2f 20 63 6f 6c 75 6d 6e 20 6d  ..  /// column m
8960: 65 74 61 64 61 74 61 20 61 6e 64 20 74 68 65 20  etadata and the 
8970: 63 6f 6e 66 69 67 75 72 65 64 20 74 79 70 65 20  configured type 
8980: 6d 61 70 70 69 6e 67 73 2e 0d 0a 20 20 2f 2f 2f  mappings...  ///
8990: 20 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d   </description>.
89a0: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
89b0: 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69  ion>N</descripti
89c0: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
89d0: 72 69 70 74 69 6f 6e 3e 6e 75 6c 6c 3c 2f 64 65  ription>null</de
89e0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
89f0: 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  / </item>..  ///
8a00: 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c   <item>..  /// <
8a10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 44 65 66 61  description>Defa
8a20: 75 6c 74 54 79 70 65 4e 61 6d 65 3c 2f 64 65 73  ultTypeName</des
8a30: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
8a40: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a   <description>..
8a50: 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68    /// This is th
8a60: 65 20 64 65 66 61 75 6c 74 20 74 79 70 65 20 6e  e default type n
8a70: 61 6d 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20  ame to use when 
8a80: 6f 6e 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  one cannot be de
8a90: 74 65 72 6d 69 6e 65 64 20 62 61 73 65 64 20 6f  termined based o
8aa0: 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 65 74  n the column met
8ab0: 61 64 61 74 61 0d 0a 20 20 2f 2f 2f 20 61 6e 64  adata..  /// and
8ac0: 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
8ad0: 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2e 0d 0a  type mappings...
8ae0: 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72 69 70 74    /// </descript
8af0: 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  ion>..  /// <des
8b00: 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63  cription>N</desc
8b10: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
8b20: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 6e 75 6c  <description>nul
8b30: 6c 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  l</description>.
8b40: 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a  .  /// </item>..
8b50: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20    /// <item>..  
8b60: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
8b70: 3e 4e 6f 44 65 66 61 75 6c 74 46 6c 61 67 73 3c  >NoDefaultFlags<
8b80: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
8b90: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
8ba0: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 54 72 75  n>..  /// <b>Tru
8bb0: 65 3c 2f 62 3e 20 2d 20 44 6f 20 6e 6f 74 20 63  e</b> - Do not c
8bc0: 6f 6d 62 69 6e 65 20 74 68 65 20 73 70 65 63 69  ombine the speci
8bd0: 66 69 65 64 20 28 6f 72 20 65 78 69 73 74 69 6e  fied (or existin
8be0: 67 29 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c  g) connection fl
8bf0: 61 67 73 20 77 69 74 68 20 74 68 65 20 76 61 6c  ags with the val
8c00: 75 65 20 6f 66 20 74 68 65 0d 0a 20 20 2f 2f 2f  ue of the..  ///
8c10: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 65 66 61   <see cref="Defa
8c20: 75 6c 74 46 6c 61 67 73 22 20 2f 3e 20 70 72 6f  ultFlags" /> pro
8c30: 70 65 72 74 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 62  perty...  /// <b
8c40: 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 46 61  r/>..  /// <b>Fa
8c50: 6c 73 65 3c 2f 62 3e 20 2d 20 43 6f 6d 62 69 6e  lse</b> - Combin
8c60: 65 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  e the specified 
8c70: 28 6f 72 20 65 78 69 73 74 69 6e 67 29 20 63 6f  (or existing) co
8c80: 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73 20 77  nnection flags w
8c90: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66  ith the value of
8ca0: 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65   the..  /// <see
8cb0: 20 63 72 65 66 3d 22 44 65 66 61 75 6c 74 46 6c   cref="DefaultFl
8cc0: 61 67 73 22 20 2f 3e 20 70 72 6f 70 65 72 74 79  ags" /> property
8cd0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72  ...  /// </descr
8ce0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
8cf0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64  description>N</d
8d00: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
8d10: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
8d20: 46 61 6c 73 65 3c 2f 64 65 73 63 72 69 70 74 69  False</descripti
8d30: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65  on>..  /// </ite
8d40: 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  m>..  /// <item>
8d50: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
8d60: 74 69 6f 6e 3e 4e 6f 53 68 61 72 65 64 46 6c 61  tion>NoSharedFla
8d70: 67 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  gs</description>
8d80: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
8d90: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e  tion>..  /// <b>
8da0: 54 72 75 65 3c 2f 62 3e 20 2d 20 44 6f 20 6e 6f  True</b> - Do no
8db0: 74 20 63 6f 6d 62 69 6e 65 20 74 68 65 20 73 70  t combine the sp
8dc0: 65 63 69 66 69 65 64 20 28 6f 72 20 65 78 69 73  ecified (or exis
8dd0: 74 69 6e 67 29 20 63 6f 6e 6e 65 63 74 69 6f 6e  ting) connection
8de0: 20 66 6c 61 67 73 20 77 69 74 68 20 74 68 65 20   flags with the 
8df0: 76 61 6c 75 65 20 6f 66 20 74 68 65 0d 0a 20 20  value of the..  
8e00: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
8e10: 68 61 72 65 64 46 6c 61 67 73 22 20 2f 3e 20 70  haredFlags" /> p
8e20: 72 6f 70 65 72 74 79 2e 0d 0a 20 20 2f 2f 2f 20  roperty...  /// 
8e30: 3c 62 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e  <br/>..  /// <b>
8e40: 46 61 6c 73 65 3c 2f 62 3e 20 2d 20 43 6f 6d 62  False</b> - Comb
8e50: 69 6e 65 20 74 68 65 20 73 70 65 63 69 66 69 65  ine the specifie
8e60: 64 20 28 6f 72 20 65 78 69 73 74 69 6e 67 29 20  d (or existing) 
8e70: 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73  connection flags
8e80: 20 77 69 74 68 20 74 68 65 20 76 61 6c 75 65 20   with the value 
8e90: 6f 66 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73  of the..  /// <s
8ea0: 65 65 20 63 72 65 66 3d 22 53 68 61 72 65 64 46  ee cref="SharedF
8eb0: 6c 61 67 73 22 20 2f 3e 20 70 72 6f 70 65 72 74  lags" /> propert
8ec0: 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63  y...  /// </desc
8ed0: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
8ee0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f  <description>N</
8ef0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
8f00: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
8f10: 3e 46 61 6c 73 65 3c 2f 64 65 73 63 72 69 70 74  >False</descript
8f20: 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74  ion>..  /// </it
8f30: 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d  em>..  /// <item
8f40: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
8f50: 70 74 69 6f 6e 3e 56 66 73 4e 61 6d 65 3c 2f 64  ption>VfsName</d
8f60: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
8f70: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
8f80: 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65  ..  /// The name
8f90: 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f 20 75   of the VFS to u
8fa0: 73 65 20 77 68 65 6e 20 6f 70 65 6e 69 6e 67 20  se when opening 
8fb0: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
8fc0: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20  nection...  /// 
8fd0: 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73  If this is not s
8fe0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 64 65  pecified, the de
8ff0: 66 61 75 6c 74 20 56 46 53 20 77 69 6c 6c 20 62  fault VFS will b
9000: 65 20 75 73 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c  e used...  /// <
9010: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
9020: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
9030: 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  n>N</description
9040: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
9050: 70 74 69 6f 6e 3e 6e 75 6c 6c 3c 2f 64 65 73 63  ption>null</desc
9060: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
9070: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c  </item>..  /// <
9080: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  item>..  /// <de
9090: 73 63 72 69 70 74 69 6f 6e 3e 5a 69 70 56 66 73  scription>ZipVfs
90a0: 56 65 72 73 69 6f 6e 3c 2f 64 65 73 63 72 69 70  Version</descrip
90b0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
90c0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
90d0: 2f 20 49 66 20 6e 6f 6e 2d 6e 75 6c 6c 2c 20 74  / If non-null, t
90e0: 68 69 73 20 69 73 20 74 68 65 20 22 76 65 72 73  his is the "vers
90f0: 69 6f 6e 22 20 6f 66 20 5a 69 70 56 46 53 20 74  ion" of ZipVFS t
9100: 6f 20 75 73 65 2e 20 20 54 68 69 73 20 72 65 71  o use.  This req
9110: 75 69 72 65 73 0d 0a 20 20 2f 2f 2f 20 74 68 65  uires..  /// the
9120: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
9130: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
9140: 6d 62 6c 79 20 2d 41 4e 44 2d 20 70 72 69 6d 61  mbly -AND- prima
9150: 72 79 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d  ry managed assem
9160: 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74 6f 20 62 65  bly..  /// to be
9170: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
9180: 68 65 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55  he INTEROP_INCLU
9190: 44 45 5f 5a 49 50 56 46 53 20 6f 70 74 69 6f 6e  DE_ZIPVFS option
91a0: 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 68 69  ; otherwise, thi
91b0: 73 0d 0a 20 20 2f 2f 2f 20 70 72 6f 70 65 72 74  s..  /// propert
91c0: 79 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 2e 20  y does nothing. 
91d0: 20 54 68 65 20 76 61 6c 69 64 20 76 61 6c 75 65   The valid value
91e0: 73 20 61 72 65 20 22 76 32 22 20 61 6e 64 20 22  s are "v2" and "
91f0: 76 33 22 2e 20 20 55 73 69 6e 67 0d 0a 20 20 2f  v3".  Using..  /
9200: 2f 2f 20 61 6e 79 6f 74 68 65 72 20 76 61 6c 75  // anyother valu
9210: 65 20 77 69 6c 6c 20 63 61 75 73 65 20 61 6e 20  e will cause an 
9220: 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 62 65 20  exception to be 
9230: 74 68 72 6f 77 6e 2e 20 20 50 6c 65 61 73 65 20  thrown.  Please 
9240: 73 65 65 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 5a  see the..  /// Z
9250: 69 70 56 46 53 20 64 6f 63 75 6d 65 6e 74 61 74  ipVFS documentat
9260: 69 6f 6e 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66  ion for more inf
9270: 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 68 6f 77 20  ormation on how 
9280: 74 6f 20 75 73 65 20 74 68 69 73 20 70 61 72 61  to use this para
9290: 6d 65 74 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  meter...  /// </
92a0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
92b0: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
92c0: 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >N</description>
92d0: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
92e0: 74 69 6f 6e 3e 6e 75 6c 6c 3c 2f 64 65 73 63 72  tion>null</descr
92f0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
9300: 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69  /item>..  /// <i
9310: 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  tem>..  /// <des
9320: 63 72 69 70 74 69 6f 6e 3e 44 61 74 65 54 69 6d  cription>DateTim
9330: 65 46 6f 72 6d 61 74 3c 2f 64 65 73 63 72 69 70  eFormat</descrip
9340: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
9350: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
9360: 2f 20 3c 62 3e 54 69 63 6b 73 3c 2f 62 3e 20 2d  / <b>Ticks</b> -
9370: 20 55 73 65 20 74 68 65 20 76 61 6c 75 65 20 6f   Use the value o
9380: 66 20 44 61 74 65 54 69 6d 65 2e 54 69 63 6b 73  f DateTime.Ticks
9390: 2e 3c 62 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62  .<br/>..  /// <b
93a0: 3e 49 53 4f 38 36 30 31 3c 2f 62 3e 20 2d 20 55  >ISO8601</b> - U
93b0: 73 65 20 74 68 65 20 49 53 4f 2d 38 36 30 31 20  se the ISO-8601 
93c0: 66 6f 72 6d 61 74 2e 20 20 55 73 65 73 20 74 68  format.  Uses th
93d0: 65 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  e "yyyy-MM-dd HH
93e0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 22  :mm:ss.FFFFFFFK"
93f0: 20 66 6f 72 6d 61 74 20 66 6f 72 20 55 54 43 0d   format for UTC.
9400: 0a 20 20 2f 2f 2f 20 44 61 74 65 54 69 6d 65 20  .  /// DateTime 
9410: 76 61 6c 75 65 73 20 61 6e 64 20 22 79 79 79 79  values and "yyyy
9420: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e  -MM-dd HH:mm:ss.
9430: 46 46 46 46 46 46 46 22 20 66 6f 72 6d 61 74 20  FFFFFFF" format 
9440: 66 6f 72 20 6c 6f 63 61 6c 20 44 61 74 65 54 69  for local DateTi
9450: 6d 65 20 76 61 6c 75 65 73 29 2e 3c 62 72 2f 3e  me values).<br/>
9460: 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 4a 75 6c 69 61  ..  /// <b>Julia
9470: 6e 44 61 79 3c 2f 62 3e 20 2d 20 54 68 65 20 69  nDay</b> - The i
9480: 6e 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65 20  nterval of time 
9490: 69 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61 63  in days and frac
94a0: 74 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20 73  tions of a day s
94b0: 69 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c 20  ince January 1, 
94c0: 34 37 31 33 20 42 43 2e 3c 62 72 2f 3e 0d 0a 20  4713 BC.<br/>.. 
94d0: 20 2f 2f 2f 20 3c 62 3e 55 6e 69 78 45 70 6f 63   /// <b>UnixEpoc
94e0: 68 3c 2f 62 3e 20 2d 20 54 68 65 20 77 68 6f 6c  h</b> - The whol
94f0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  e number of seco
9500: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
9510: 69 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61 72  ix epoch (Januar
9520: 79 20 31 2c 20 31 39 37 30 29 2e 3c 62 72 2f 3e  y 1, 1970).<br/>
9530: 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 49 6e 76 61 72  ..  /// <b>Invar
9540: 69 61 6e 74 43 75 6c 74 75 72 65 3c 2f 62 3e 20  iantCulture</b> 
9550: 2d 20 41 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e  - Any culture-in
9560: 64 65 70 65 6e 64 65 6e 74 20 73 74 72 69 6e 67  dependent string
9570: 20 76 61 6c 75 65 20 74 68 61 74 20 74 68 65 20   value that the 
9580: 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63  .NET Framework c
9590: 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73 20  an interpret as 
95a0: 61 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65  a valid DateTime
95b0: 2e 3c 62 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62  .<br/>..  /// <b
95c0: 3e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3c  >CurrentCulture<
95d0: 2f 62 3e 20 2d 20 41 6e 79 20 73 74 72 69 6e 67  /b> - Any string
95e0: 20 76 61 6c 75 65 20 74 68 61 74 20 74 68 65 20   value that the 
95f0: 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63  .NET Framework c
9600: 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73 20  an interpret as 
9610: 61 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65  a valid DateTime
9620: 20 75 73 69 6e 67 20 74 68 65 20 63 75 72 72 65   using the curre
9630: 6e 74 20 63 75 6c 74 75 72 65 2e 3c 2f 64 65 73  nt culture.</des
9640: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
9650: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c   <description>N<
9660: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
9670: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
9680: 6e 3e 49 53 4f 38 36 30 31 3c 2f 64 65 73 63 72  n>ISO8601</descr
9690: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
96a0: 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69  /item>..  /// <i
96b0: 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  tem>..  /// <des
96c0: 63 72 69 70 74 69 6f 6e 3e 44 61 74 65 54 69 6d  cription>DateTim
96d0: 65 4b 69 6e 64 3c 2f 64 65 73 63 72 69 70 74 69  eKind</descripti
96e0: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
96f0: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
9700: 3c 62 3e 55 6e 73 70 65 63 69 66 69 65 64 3c 2f  <b>Unspecified</
9710: 62 3e 20 2d 20 4e 6f 74 20 73 70 65 63 69 66 69  b> - Not specifi
9720: 65 64 20 61 73 20 65 69 74 68 65 72 20 55 54 43  ed as either UTC
9730: 20 6f 72 20 6c 6f 63 61 6c 20 74 69 6d 65 2e 0d   or local time..
9740: 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20  .  /// <br/>..  
9750: 2f 2f 2f 20 3c 62 3e 55 74 63 3c 2f 62 3e 20 2d  /// <b>Utc</b> -
9760: 20 54 68 65 20 74 69 6d 65 20 72 65 70 72 65 73   The time repres
9770: 65 6e 74 65 64 20 69 73 20 55 54 43 2e 0d 0a 20  ented is UTC... 
9780: 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 2f 2f   /// <br/>..  //
9790: 2f 20 3c 62 3e 4c 6f 63 61 6c 3c 2f 62 3e 20 2d  / <b>Local</b> -
97a0: 20 54 68 65 20 74 69 6d 65 20 72 65 70 72 65 73   The time repres
97b0: 65 6e 74 65 64 20 69 73 20 6c 6f 63 61 6c 20 74  ented is local t
97c0: 69 6d 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65  ime...  /// </de
97d0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
97e0: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e  / <description>N
97f0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
9800: 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
9810: 6f 6e 3e 55 6e 73 70 65 63 69 66 69 65 64 3c 2f  on>Unspecified</
9820: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
9830: 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f  /// </item>..  /
9840: 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  // <item>..  ///
9850: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 44 61   <description>Da
9860: 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  teTimeFormatStri
9870: 6e 67 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  ng</description>
9880: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
9890: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  tion>..  /// The
98a0: 20 65 78 61 63 74 20 44 61 74 65 54 69 6d 65 20   exact DateTime 
98b0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f  format string to
98c0: 20 75 73 65 20 66 6f 72 20 61 6c 6c 20 66 6f 72   use for all for
98d0: 6d 61 74 74 69 6e 67 20 61 6e 64 20 70 61 72 73  matting and pars
98e0: 69 6e 67 20 6f 66 20 61 6c 6c 20 44 61 74 65 54  ing of all DateT
98f0: 69 6d 65 0d 0a 20 20 2f 2f 2f 20 76 61 6c 75 65  ime..  /// value
9900: 73 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65  s for this conne
9910: 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  ction...  /// </
9920: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
9930: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
9940: 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >N</description>
9950: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
9960: 74 69 6f 6e 3e 6e 75 6c 6c 3c 2f 64 65 73 63 72  tion>null</descr
9970: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
9980: 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69  /item>..  /// <i
9990: 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  tem>..  /// <des
99a0: 63 72 69 70 74 69 6f 6e 3e 42 61 73 65 53 63 68  cription>BaseSch
99b0: 65 6d 61 4e 61 6d 65 3c 2f 64 65 73 63 72 69 70  emaName</descrip
99c0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
99d0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
99e0: 2f 20 53 6f 6d 65 20 62 61 73 65 20 64 61 74 61  / Some base data
99f0: 20 63 6c 61 73 73 65 73 20 69 6e 20 74 68 65 20   classes in the 
9a00: 66 72 61 6d 65 77 6f 72 6b 20 28 65 2e 67 2e 20  framework (e.g. 
9a10: 74 68 6f 73 65 20 74 68 61 74 20 62 75 69 6c 64  those that build
9a20: 20 53 51 4c 20 71 75 65 72 69 65 73 20 64 79 6e   SQL queries dyn
9a30: 61 6d 69 63 61 6c 6c 79 29 0d 0a 20 20 2f 2f 2f  amically)..  ///
9a40: 20 61 73 73 75 6d 65 20 74 68 61 74 20 61 6e 20   assume that an 
9a50: 41 44 4f 2e 4e 45 54 20 70 72 6f 76 69 64 65 72  ADO.NET provider
9a60: 20 63 61 6e 6e 6f 74 20 73 75 70 70 6f 72 74 20   cannot support 
9a70: 61 6e 20 61 6c 74 65 72 6e 61 74 65 20 63 61 74  an alternate cat
9a80: 61 6c 6f 67 20 28 69 2e 65 2e 20 64 61 74 61 62  alog (i.e. datab
9a90: 61 73 65 29 20 77 69 74 68 6f 75 74 20 73 75 70  ase) without sup
9aa0: 70 6f 72 74 69 6e 67 0d 0a 20 20 2f 2f 2f 20 61  porting..  /// a
9ab0: 6c 74 65 72 6e 61 74 65 20 73 63 68 65 6d 61 73  lternate schemas
9ac0: 20 61 73 20 77 65 6c 6c 3b 20 68 6f 77 65 76 65   as well; howeve
9ad0: 72 2c 20 53 51 4c 69 74 65 20 64 6f 65 73 20 6e  r, SQLite does n
9ae0: 6f 74 20 66 69 74 20 69 6e 74 6f 20 74 68 69 73  ot fit into this
9af0: 20 6d 6f 64 65 6c 2e 20 20 54 68 65 72 65 66 6f   model.  Therefo
9b00: 72 65 2c 20 74 68 69 73 20 76 61 6c 75 65 20 69  re, this value i
9b10: 73 20 75 73 65 64 0d 0a 20 20 2f 2f 2f 20 61 73  s used..  /// as
9b20: 20 61 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 61   a placeholder a
9b30: 6e 64 20 72 65 6d 6f 76 65 64 20 70 72 69 6f 72  nd removed prior
9b40: 20 74 6f 20 70 72 65 70 61 72 69 6e 67 20 61 6e   to preparing an
9b50: 79 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  y SQL statements
9b60: 20 74 68 61 74 20 6d 61 79 20 63 6f 6e 74 61 69   that may contai
9b70: 6e 20 69 74 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64  n it...  /// </d
9b80: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
9b90: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
9ba0: 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  N</description>.
9bb0: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
9bc0: 69 6f 6e 3e 73 71 6c 69 74 65 5f 64 65 66 61 75  ion>sqlite_defau
9bd0: 6c 74 5f 73 63 68 65 6d 61 3c 2f 64 65 73 63 72  lt_schema</descr
9be0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
9bf0: 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69  /item>..  /// <i
9c00: 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  tem>..  /// <des
9c10: 63 72 69 70 74 69 6f 6e 3e 42 69 6e 61 72 79 47  cription>BinaryG
9c20: 55 49 44 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  UID</description
9c30: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
9c40: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62  ption>..  /// <b
9c50: 3e 54 72 75 65 3c 2f 62 3e 20 2d 20 53 74 6f 72  >True</b> - Stor
9c60: 65 20 47 55 49 44 20 63 6f 6c 75 6d 6e 73 20 69  e GUID columns i
9c70: 6e 20 62 69 6e 61 72 79 20 66 6f 72 6d 0d 0a 20  n binary form.. 
9c80: 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 2f 2f   /// <br/>..  //
9c90: 2f 20 3c 62 3e 46 61 6c 73 65 3c 2f 62 3e 20 2d  / <b>False</b> -
9ca0: 20 53 74 6f 72 65 20 47 55 49 44 20 63 6f 6c 75   Store GUID colu
9cb0: 6d 6e 73 20 61 73 20 74 65 78 74 0d 0a 20 20 2f  mns as text..  /
9cc0: 2f 2f 20 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  // </description
9cd0: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
9ce0: 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72 69 70  ption>N</descrip
9cf0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
9d00: 73 63 72 69 70 74 69 6f 6e 3e 54 72 75 65 3c 2f  scription>True</
9d10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
9d20: 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f  /// </item>..  /
9d30: 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  // <item>..  ///
9d40: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 43 61   <description>Ca
9d50: 63 68 65 20 53 69 7a 65 3c 2f 64 65 73 63 72 69  che Size</descri
9d60: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64  ption>..  /// <d
9d70: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
9d80: 2f 2f 20 49 66 20 74 68 65 20 61 72 67 75 6d 65  // If the argume
9d90: 6e 74 20 4e 20 69 73 20 70 6f 73 69 74 69 76 65  nt N is positive
9da0: 20 74 68 65 6e 20 74 68 65 20 73 75 67 67 65 73   then the sugges
9db0: 74 65 64 20 63 61 63 68 65 20 73 69 7a 65 20 69  ted cache size i
9dc0: 73 20 73 65 74 20 74 6f 20 4e 2e 0d 0a 20 20 2f  s set to N...  /
9dd0: 2f 2f 20 49 66 20 74 68 65 20 61 72 67 75 6d 65  // If the argume
9de0: 6e 74 20 4e 20 69 73 20 6e 65 67 61 74 69 76 65  nt N is negative
9df0: 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65  , then the numbe
9e00: 72 20 6f 66 20 63 61 63 68 65 20 70 61 67 65 73  r of cache pages
9e10: 20 69 73 20 61 64 6a 75 73 74 65 64 0d 0a 20 20   is adjusted..  
9e20: 2f 2f 2f 20 74 6f 20 75 73 65 20 61 70 70 72 6f  /// to use appro
9e30: 78 69 6d 61 74 65 6c 79 20 61 62 73 28 4e 2a 34  ximately abs(N*4
9e40: 30 39 36 29 20 62 79 74 65 73 20 6f 66 20 6d 65  096) bytes of me
9e50: 6d 6f 72 79 2e 20 42 61 63 6b 77 61 72 64 73 20  mory. Backwards 
9e60: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 0d 0a 20  compatibility.. 
9e70: 20 2f 2f 2f 20 6e 6f 74 65 3a 20 54 68 65 20 62   /// note: The b
9e80: 65 68 61 76 69 6f 72 20 6f 66 20 63 61 63 68 65  ehavior of cache
9e90: 5f 73 69 7a 65 20 77 69 74 68 20 61 20 6e 65 67  _size with a neg
9ea0: 61 74 69 76 65 20 4e 20 77 61 73 20 64 69 66 66  ative N was diff
9eb0: 65 72 65 6e 74 20 69 6e 20 53 51 4c 69 74 65 0d  erent in SQLite.
9ec0: 0a 20 20 2f 2f 2f 20 76 65 72 73 69 6f 6e 73 20  .  /// versions 
9ed0: 70 72 69 6f 72 20 74 6f 20 33 2e 37 2e 31 30 2e  prior to 3.7.10.
9ee0: 20 49 6e 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e   In version 3.7.
9ef0: 39 20 61 6e 64 20 65 61 72 6c 69 65 72 2c 20 74  9 and earlier, t
9f00: 68 65 20 6e 75 6d 62 65 72 20 6f 66 0d 0a 20 20  he number of..  
9f10: 2f 2f 2f 20 70 61 67 65 73 20 69 6e 20 74 68 65  /// pages in the
9f20: 20 63 61 63 68 65 20 77 61 73 20 73 65 74 20 74   cache was set t
9f30: 6f 20 74 68 65 20 61 62 73 6f 6c 75 74 65 20 76  o the absolute v
9f40: 61 6c 75 65 20 6f 66 20 4e 2e 0d 0a 20 20 2f 2f  alue of N...  //
9f50: 2f 20 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  / </description>
9f60: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
9f70: 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74  tion>N</descript
9f80: 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  ion>..  /// <des
9f90: 63 72 69 70 74 69 6f 6e 3e 2d 32 30 30 30 3c 2f  cription>-2000</
9fa0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
9fb0: 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f  /// </item>..  /
9fc0: 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  // <item>..  ///
9fd0: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 53 79   <description>Sy
9fe0: 6e 63 68 72 6f 6e 6f 75 73 3c 2f 64 65 73 63 72  nchronous</descr
9ff0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
a000: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
a010: 2f 2f 2f 20 3c 62 3e 4e 6f 72 6d 61 6c 3c 2f 62  /// <b>Normal</b
a020: 3e 20 2d 20 4e 6f 72 6d 61 6c 20 66 69 6c 65 20  > - Normal file 
a030: 66 6c 75 73 68 69 6e 67 20 62 65 68 61 76 69 6f  flushing behavio
a040: 72 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  r..  /// <br/>..
a050: 20 20 2f 2f 2f 20 3c 62 3e 46 75 6c 6c 3c 2f 62    /// <b>Full</b
a060: 3e 20 2d 20 46 75 6c 6c 20 66 6c 75 73 68 69 6e  > - Full flushin
a070: 67 20 61 66 74 65 72 20 61 6c 6c 20 77 72 69 74  g after all writ
a080: 65 73 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d  es..  /// <br/>.
a090: 0a 20 20 2f 2f 2f 20 3c 62 3e 4f 66 66 3c 2f 62  .  /// <b>Off</b
a0a0: 3e 20 2d 20 55 6e 64 65 72 6c 79 69 6e 67 20 4f  > - Underlying O
a0b0: 53 20 66 6c 75 73 68 65 73 20 49 2f 4f 27 73 0d  S flushes I/O's.
a0c0: 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72 69 70  .  /// </descrip
a0d0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
a0e0: 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73  scription>N</des
a0f0: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
a100: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 46 75   <description>Fu
a110: 6c 6c 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  ll</description>
a120: 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d  ..  /// </item>.
a130: 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20  .  /// <item>.. 
a140: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
a150: 6e 3e 50 61 67 65 20 53 69 7a 65 3c 2f 64 65 73  n>Page Size</des
a160: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
a170: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 7b 73   <description>{s
a180: 69 7a 65 20 69 6e 20 62 79 74 65 73 7d 3c 2f 64  ize in bytes}</d
a190: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
a1a0: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
a1b0: 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  N</description>.
a1c0: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
a1d0: 69 6f 6e 3e 34 30 39 36 3c 2f 64 65 73 63 72 69  ion>4096</descri
a1e0: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f  ption>..  /// </
a1f0: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74  item>..  /// <it
a200: 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  em>..  /// <desc
a210: 72 69 70 74 69 6f 6e 3e 50 61 73 73 77 6f 72 64  ription>Password
a220: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
a230: 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
a240: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 7b 70 61 73 73  on>..  /// {pass
a250: 77 6f 72 64 7d 20 2d 20 55 73 69 6e 67 20 74 68  word} - Using th
a260: 69 73 20 70 61 72 61 6d 65 74 65 72 20 72 65 71  is parameter req
a270: 75 69 72 65 73 20 74 68 61 74 20 74 68 65 20 6c  uires that the l
a280: 65 67 61 63 79 20 43 72 79 70 74 6f 41 50 49 20  egacy CryptoAPI 
a290: 62 61 73 65 64 0d 0a 20 20 2f 2f 2f 20 63 6f 64  based..  /// cod
a2a0: 65 63 20 28 6f 72 20 74 68 65 20 53 51 4c 69 74  ec (or the SQLit
a2b0: 65 20 45 6e 63 72 79 70 74 69 6f 6e 20 45 78 74  e Encryption Ext
a2c0: 65 6e 73 69 6f 6e 29 20 62 65 20 65 6e 61 62 6c  ension) be enabl
a2d0: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
a2e0: 6d 65 20 66 6f 72 0d 0a 20 20 2f 2f 2f 20 62 6f  me for..  /// bo
a2f0: 74 68 20 74 68 65 20 6e 61 74 69 76 65 20 69 6e  th the native in
a300: 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 61  terop assembly a
a310: 6e 64 20 74 68 65 20 63 6f 72 65 20 6d 61 6e 61  nd the core mana
a320: 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73 3b 20  ged assemblies; 
a330: 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 2f 2f  otherwise,..  //
a340: 2f 20 75 73 69 6e 67 20 74 68 69 73 20 70 61 72  / using this par
a350: 61 6d 65 74 65 72 20 6d 61 79 20 72 65 73 75 6c  ameter may resul
a360: 74 20 69 6e 20 61 6e 20 65 78 63 65 70 74 69 6f  t in an exceptio
a370: 6e 20 62 65 69 6e 67 20 74 68 72 6f 77 6e 20 77  n being thrown w
a380: 68 65 6e 20 61 74 74 65 6d 70 74 69 6e 67 0d 0a  hen attempting..
a390: 20 20 2f 2f 2f 20 74 6f 20 6f 70 65 6e 20 74 68    /// to open th
a3a0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
a3b0: 20 2f 2f 2f 20 3c 2f 64 65 73 63 72 69 70 74 69   /// </descripti
a3c0: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
a3d0: 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72  ription>N</descr
a3e0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
a3f0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 64 65  description></de
a400: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
a410: 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  / </item>..  ///
a420: 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c   <item>..  /// <
a430: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 65 78 50  description>HexP
a440: 61 73 73 77 6f 72 64 3c 2f 64 65 73 63 72 69 70  assword</descrip
a450: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
a460: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
a470: 2f 20 7b 68 65 78 50 61 73 73 77 6f 72 64 7d 20  / {hexPassword} 
a480: 2d 20 4d 75 73 74 20 63 6f 6e 74 61 69 6e 20 61  - Must contain a
a490: 20 73 65 71 75 65 6e 63 65 20 6f 66 20 7a 65 72   sequence of zer
a4a0: 6f 20 6f 72 20 6d 6f 72 65 20 68 65 78 61 64 65  o or more hexade
a4b0: 63 69 6d 61 6c 20 65 6e 63 6f 64 65 64 0d 0a 20  cimal encoded.. 
a4c0: 20 2f 2f 2f 20 62 79 74 65 20 76 61 6c 75 65 73   /// byte values
a4d0: 20 77 69 74 68 6f 75 74 20 61 20 6c 65 61 64 69   without a leadi
a4e0: 6e 67 20 22 30 78 22 20 70 72 65 66 69 78 2e 20  ng "0x" prefix. 
a4f0: 20 55 73 69 6e 67 20 74 68 69 73 20 70 61 72 61   Using this para
a500: 6d 65 74 65 72 20 72 65 71 75 69 72 65 73 0d 0a  meter requires..
a510: 20 20 2f 2f 2f 20 74 68 61 74 20 74 68 65 20 6c    /// that the l
a520: 65 67 61 63 79 20 43 72 79 70 74 6f 41 50 49 20  egacy CryptoAPI 
a530: 62 61 73 65 64 20 63 6f 64 65 63 20 28 6f 72 20  based codec (or 
a540: 74 68 65 20 53 51 4c 69 74 65 20 45 6e 63 72 79  the SQLite Encry
a550: 70 74 69 6f 6e 20 45 78 74 65 6e 73 69 6f 6e 29  ption Extension)
a560: 0d 0a 20 20 2f 2f 2f 20 62 65 20 65 6e 61 62 6c  ..  /// be enabl
a570: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
a580: 6d 65 20 66 6f 72 20 62 6f 74 68 20 74 68 65 20  me for both the 
a590: 6e 61 74 69 76 65 20 69 6e 74 65 72 6f 70 20 61  native interop a
a5a0: 73 73 65 6d 62 6c 79 20 61 6e 64 20 74 68 65 0d  ssembly and the.
a5b0: 0a 20 20 2f 2f 2f 20 63 6f 72 65 20 6d 61 6e 61  .  /// core mana
a5c0: 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73 3b 20  ged assemblies; 
a5d0: 6f 74 68 65 72 77 69 73 65 2c 20 75 73 69 6e 67  otherwise, using
a5e0: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
a5f0: 6d 61 79 20 72 65 73 75 6c 74 20 69 6e 20 61 6e  may result in an
a600: 0d 0a 20 20 2f 2f 2f 20 65 78 63 65 70 74 69 6f  ..  /// exceptio
a610: 6e 20 62 65 69 6e 67 20 74 68 72 6f 77 6e 20 77  n being thrown w
a620: 68 65 6e 20 61 74 74 65 6d 70 74 69 6e 67 20 74  hen attempting t
a630: 6f 20 6f 70 65 6e 20 74 68 65 20 63 6f 6e 6e 65  o open the conne
a640: 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  ction...  /// </
a650: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
a660: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
a670: 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >N</description>
a680: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
a690: 74 69 6f 6e 3e 3c 2f 64 65 73 63 72 69 70 74 69  tion></descripti
a6a0: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65  on>..  /// </ite
a6b0: 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  m>..  /// <item>
a6c0: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
a6d0: 74 69 6f 6e 3e 45 6e 6c 69 73 74 3c 2f 64 65 73  tion>Enlist</des
a6e0: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
a6f0: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a   <description>..
a700: 20 20 2f 2f 2f 20 3c 62 3e 59 3c 2f 62 3e 20 2d    /// <b>Y</b> -
a710: 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65   Automatically e
a720: 6e 6c 69 73 74 20 69 6e 20 64 69 73 74 72 69 62  nlist in distrib
a730: 75 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  uted transaction
a740: 73 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  s..  /// <br/>..
a750: 20 20 2f 2f 2f 20 3c 62 3e 4e 3c 2f 62 3e 20 2d    /// <b>N</b> -
a760: 20 4e 6f 20 61 75 74 6f 6d 61 74 69 63 20 65 6e   No automatic en
a770: 6c 69 73 74 6d 65 6e 74 0d 0a 20 20 2f 2f 2f 20  listment..  /// 
a780: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
a790: 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
a7a0: 6f 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f  on>N</descriptio
a7b0: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72  n>..  /// <descr
a7c0: 69 70 74 69 6f 6e 3e 59 3c 2f 64 65 73 63 72 69  iption>Y</descri
a7d0: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f  ption>..  /// </
a7e0: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74  item>..  /// <it
a7f0: 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  em>..  /// <desc
a800: 72 69 70 74 69 6f 6e 3e 50 6f 6f 6c 69 6e 67 3c  ription>Pooling<
a810: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
a820: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
a830: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 54 72 75  n>..  /// <b>Tru
a840: 65 3c 2f 62 3e 20 2d 20 55 73 65 20 63 6f 6e 6e  e</b> - Use conn
a850: 65 63 74 69 6f 6e 20 70 6f 6f 6c 69 6e 67 2e 3c  ection pooling.<
a860: 62 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 46  br/>..  /// <b>F
a870: 61 6c 73 65 3c 2f 62 3e 20 2d 20 44 6f 20 6e 6f  alse</b> - Do no
a880: 74 20 75 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  t use connection
a890: 20 70 6f 6f 6c 69 6e 67 2e 3c 62 72 2f 3e 3c 62   pooling.<br/><b
a8a0: 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 57 41  r/>..  /// <b>WA
a8b0: 52 4e 49 4e 47 3a 3c 2f 62 3e 20 57 68 65 6e 20  RNING:</b> When 
a8c0: 75 73 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c  using the defaul
a8d0: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f  t connection poo
a8e0: 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  l implementation
a8f0: 2c 0d 0a 20 20 2f 2f 2f 20 73 65 74 74 69 6e 67  ,..  /// setting
a900: 20 74 68 69 73 20 70 72 6f 70 65 72 74 79 20 74   this property t
a910: 6f 20 54 72 75 65 20 73 68 6f 75 6c 64 20 62 65  o True should be
a920: 20 61 76 6f 69 64 65 64 20 62 79 20 61 70 70 6c   avoided by appl
a930: 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 6d 61  ications that ma
a940: 6b 65 0d 0a 20 20 2f 2f 2f 20 75 73 65 20 6f 66  ke..  /// use of
a950: 20 43 4f 4d 20 28 65 69 74 68 65 72 20 64 69 72   COM (either dir
a960: 65 63 74 6c 79 20 6f 72 20 69 6e 64 69 72 65 63  ectly or indirec
a970: 74 6c 79 29 20 64 75 65 20 74 6f 20 70 6f 73 73  tly) due to poss
a980: 69 62 6c 65 20 64 65 61 64 6c 6f 63 6b 73 20 74  ible deadlocks t
a990: 68 61 74 0d 0a 20 20 2f 2f 2f 20 63 61 6e 20 6f  hat..  /// can o
a9a0: 63 63 75 72 20 64 75 72 69 6e 67 20 74 68 65 20  ccur during the 
a9b0: 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20  finalization of 
a9c0: 73 6f 6d 65 20 43 4f 4d 20 6f 62 6a 65 63 74 73  some COM objects
a9d0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72  ...  /// </descr
a9e0: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
a9f0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64  description>N</d
aa00: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
aa10: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
aa20: 46 61 6c 73 65 3c 2f 64 65 73 63 72 69 70 74 69  False</descripti
aa30: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65  on>..  /// </ite
aa40: 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  m>..  /// <item>
aa50: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
aa60: 74 69 6f 6e 3e 46 61 69 6c 49 66 4d 69 73 73 69  tion>FailIfMissi
aa70: 6e 67 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  ng</description>
aa80: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
aa90: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e  tion>..  /// <b>
aaa0: 54 72 75 65 3c 2f 62 3e 20 2d 20 44 6f 6e 27 74  True</b> - Don't
aab0: 20 63 72 65 61 74 65 20 74 68 65 20 64 61 74 61   create the data
aac0: 62 61 73 65 20 69 66 20 69 74 20 64 6f 65 73 20  base if it does 
aad0: 6e 6f 74 20 65 78 69 73 74 2c 20 74 68 72 6f 77  not exist, throw
aae0: 20 61 6e 20 65 72 72 6f 72 20 69 6e 73 74 65 61   an error instea
aaf0: 64 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  d..  /// <br/>..
ab00: 20 20 2f 2f 2f 20 3c 62 3e 46 61 6c 73 65 3c 2f    /// <b>False</
ab10: 62 3e 20 2d 20 41 75 74 6f 6d 61 74 69 63 61 6c  b> - Automatical
ab20: 6c 79 20 63 72 65 61 74 65 20 74 68 65 20 64 61  ly create the da
ab30: 74 61 62 61 73 65 20 69 66 20 69 74 20 64 6f 65  tabase if it doe
ab40: 73 20 6e 6f 74 20 65 78 69 73 74 0d 0a 20 20 2f  s not exist..  /
ab50: 2f 2f 20 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  // </description
ab60: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
ab70: 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72 69 70  ption>N</descrip
ab80: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
ab90: 73 63 72 69 70 74 69 6f 6e 3e 46 61 6c 73 65 3c  scription>False<
aba0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
abb0: 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20   /// </item>..  
abc0: 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f  /// <item>..  //
abd0: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4d  / <description>M
abe0: 61 78 20 50 61 67 65 20 43 6f 75 6e 74 3c 2f 64  ax Page Count</d
abf0: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
ac00: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
ac10: 7b 73 69 7a 65 20 69 6e 20 70 61 67 65 73 7d 20  {size in pages} 
ac20: 2d 20 4c 69 6d 69 74 73 20 74 68 65 20 6d 61 78  - Limits the max
ac30: 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 70  imum number of p
ac40: 61 67 65 73 20 28 6c 69 6d 69 74 73 20 74 68 65  ages (limits the
ac50: 20 73 69 7a 65 29 20 6f 66 20 74 68 65 20 64 61   size) of the da
ac60: 74 61 62 61 73 65 3c 2f 64 65 73 63 72 69 70 74  tabase</descript
ac70: 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73  ion>..  /// <des
ac80: 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63  cription>N</desc
ac90: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
aca0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 30 3c 2f  <description>0</
acb0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
acc0: 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f  /// </item>..  /
acd0: 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  // <item>..  ///
ace0: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4c 65   <description>Le
acf0: 67 61 63 79 20 46 6f 72 6d 61 74 3c 2f 64 65 73  gacy Format</des
ad00: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
ad10: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a   <description>..
ad20: 20 20 2f 2f 2f 20 3c 62 3e 54 72 75 65 3c 2f 62    /// <b>True</b
ad30: 3e 20 2d 20 55 73 65 20 74 68 65 20 6d 6f 72 65  > - Use the more
ad40: 20 63 6f 6d 70 61 74 69 62 6c 65 20 6c 65 67 61   compatible lega
ad50: 63 79 20 33 2e 78 20 64 61 74 61 62 61 73 65 20  cy 3.x database 
ad60: 66 6f 72 6d 61 74 0d 0a 20 20 2f 2f 2f 20 3c 62  format..  /// <b
ad70: 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 46 61  r/>..  /// <b>Fa
ad80: 6c 73 65 3c 2f 62 3e 20 2d 20 55 73 65 20 74 68  lse</b> - Use th
ad90: 65 20 6e 65 77 65 72 20 33 2e 33 78 20 64 61 74  e newer 3.3x dat
ada0: 61 62 61 73 65 20 66 6f 72 6d 61 74 20 77 68 69  abase format whi
adb0: 63 68 20 63 6f 6d 70 72 65 73 73 65 73 20 6e 75  ch compresses nu
adc0: 6d 62 65 72 73 20 6d 6f 72 65 20 65 66 66 65 63  mbers more effec
add0: 74 69 76 65 6c 79 0d 0a 20 20 2f 2f 2f 20 3c 2f  tively..  /// </
ade0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
adf0: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
ae00: 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >N</description>
ae10: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
ae20: 74 69 6f 6e 3e 46 61 6c 73 65 3c 2f 64 65 73 63  tion>False</desc
ae30: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
ae40: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c  </item>..  /// <
ae50: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  item>..  /// <de
ae60: 73 63 72 69 70 74 69 6f 6e 3e 44 65 66 61 75 6c  scription>Defaul
ae70: 74 20 54 69 6d 65 6f 75 74 3c 2f 64 65 73 63 72  t Timeout</descr
ae80: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
ae90: 64 65 73 63 72 69 70 74 69 6f 6e 3e 7b 74 69 6d  description>{tim
aea0: 65 20 69 6e 20 73 65 63 6f 6e 64 73 7d 3c 62 72  e in seconds}<br
aeb0: 2f 3e 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f  />The default co
aec0: 6d 6d 61 6e 64 20 74 69 6d 65 6f 75 74 3c 2f 64  mmand timeout</d
aed0: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
aee0: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
aef0: 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  N</description>.
af00: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
af10: 69 6f 6e 3e 33 30 3c 2f 64 65 73 63 72 69 70 74  ion>30</descript
af20: 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74  ion>..  /// </it
af30: 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d  em>..  /// <item
af40: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
af50: 70 74 69 6f 6e 3e 42 75 73 79 54 69 6d 65 6f 75  ption>BusyTimeou
af60: 74 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  t</description>.
af70: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
af80: 69 6f 6e 3e 7b 74 69 6d 65 20 69 6e 20 6d 69 6c  ion>{time in mil
af90: 6c 69 73 65 63 6f 6e 64 73 7d 3c 62 72 2f 3e 53  liseconds}<br/>S
afa0: 65 74 73 20 74 68 65 20 62 75 73 79 20 74 69 6d  ets the busy tim
afb0: 65 6f 75 74 20 66 6f 72 20 74 68 65 20 63 6f 72  eout for the cor
afc0: 65 20 6c 69 62 72 61 72 79 2e 3c 2f 64 65 73 63  e library.</desc
afd0: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
afe0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f  <description>N</
aff0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
b000: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
b010: 3e 30 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >0</description>
b020: 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d  ..  /// </item>.
b030: 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20  .  /// <item>.. 
b040: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
b050: 6e 3e 57 61 69 74 54 69 6d 65 6f 75 74 3c 2f 64  n>WaitTimeout</d
b060: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
b070: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
b080: 7b 74 69 6d 65 20 69 6e 20 6d 69 6c 6c 69 73 65  {time in millise
b090: 63 6f 6e 64 73 7d 3c 62 72 2f 3e 0d 0a 20 20 2f  conds}<br/>..  /
b0a0: 2f 2f 20 3c 62 3e 45 58 50 45 52 49 4d 45 4e 54  // <b>EXPERIMENT
b0b0: 41 4c 3c 2f 62 3e 20 2d 2d 20 54 68 65 20 77 61  AL</b> -- The wa
b0c0: 69 74 20 74 69 6d 65 6f 75 74 20 74 6f 20 75 73  it timeout to us
b0d0: 65 20 77 69 74 68 0d 0a 20 20 2f 2f 2f 20 3c 73  e with..  /// <s
b0e0: 65 65 20 63 72 65 66 3d 22 57 61 69 74 46 6f 72  ee cref="WaitFor
b0f0: 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73 65 74 22  EnlistmentReset"
b100: 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20 54 68 69   /> method.  Thi
b110: 73 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20 77  s is only used w
b120: 68 65 6e 0d 0a 20 20 2f 2f 2f 20 77 61 69 74 69  hen..  /// waiti
b130: 6e 67 20 66 6f 72 20 74 68 65 20 65 6e 6c 69 73  ng for the enlis
b140: 74 6d 65 6e 74 20 74 6f 20 62 65 20 72 65 73 65  tment to be rese
b150: 74 20 70 72 69 6f 72 20 74 6f 20 65 6e 6c 69 73  t prior to enlis
b160: 74 69 6e 67 20 69 6e 20 61 20 74 72 61 6e 73 61  ting in a transa
b170: 63 74 69 6f 6e 2c 0d 0a 20 20 2f 2f 2f 20 61 6e  ction,..  /// an
b180: 64 20 74 68 65 6e 20 6f 6e 6c 79 20 77 68 65 6e  d then only when
b190: 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
b1a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67   connection flag
b1b0: 20 69 73 20 73 65 74 2e 3c 2f 64 65 73 63 72 69   is set.</descri
b1c0: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64  ption>..  /// <d
b1d0: 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65  escription>N</de
b1e0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
b1f0: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 33  / <description>3
b200: 30 30 30 30 3c 2f 64 65 73 63 72 69 70 74 69 6f  0000</descriptio
b210: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d  n>..  /// </item
b220: 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  >..  /// <item>.
b230: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
b240: 69 6f 6e 3e 4a 6f 75 72 6e 61 6c 20 4d 6f 64 65  ion>Journal Mode
b250: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
b260: 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
b270: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 44 65  on>..  /// <b>De
b280: 6c 65 74 65 3c 2f 62 3e 20 2d 20 44 65 6c 65 74  lete</b> - Delet
b290: 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  e the journal fi
b2a0: 6c 65 20 61 66 74 65 72 20 61 20 63 6f 6d 6d 69  le after a commi
b2b0: 74 2e 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d  t...  /// <br/>.
b2c0: 0a 20 20 2f 2f 2f 20 3c 62 3e 50 65 72 73 69 73  .  /// <b>Persis
b2d0: 74 3c 2f 62 3e 20 2d 20 5a 65 72 6f 20 6f 75 74  t</b> - Zero out
b2e0: 20 61 6e 64 20 6c 65 61 76 65 20 74 68 65 20 6a   and leave the j
b2f0: 6f 75 72 6e 61 6c 20 66 69 6c 65 20 6f 6e 20 64  ournal file on d
b300: 69 73 6b 20 61 66 74 65 72 20 61 0d 0a 20 20 2f  isk after a..  /
b310: 2f 2f 20 63 6f 6d 6d 69 74 2e 0d 0a 20 20 2f 2f  // commit...  //
b320: 2f 20 3c 62 72 2f 3e 0d 0a 20 20 2f 2f 2f 20 3c  / <br/>..  /// <
b330: 62 3e 4f 66 66 3c 2f 62 3e 20 2d 20 44 69 73 61  b>Off</b> - Disa
b340: 62 6c 65 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b  ble the rollback
b350: 20 6a 6f 75 72 6e 61 6c 20 65 6e 74 69 72 65 6c   journal entirel
b360: 79 2e 20 20 54 68 69 73 20 73 61 76 65 73 20 64  y.  This saves d
b370: 69 73 6b 20 49 2f 4f 0d 0a 20 20 2f 2f 2f 20 62  isk I/O..  /// b
b380: 75 74 20 61 74 20 74 68 65 20 65 78 70 65 6e 73  ut at the expens
b390: 65 20 6f 66 20 64 61 74 61 62 61 73 65 20 73 61  e of database sa
b3a0: 66 65 74 79 20 61 6e 64 20 69 6e 74 65 67 72 69  fety and integri
b3b0: 74 79 2e 20 20 49 66 20 74 68 65 20 61 70 70 6c  ty.  If the appl
b3c0: 69 63 61 74 69 6f 6e 0d 0a 20 20 2f 2f 2f 20 75  ication..  /// u
b3d0: 73 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61 73  sing SQLite cras
b3e0: 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  hes in the middl
b3f0: 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69  e of a transacti
b400: 6f 6e 20 77 68 65 6e 20 74 68 69 73 20 6a 6f 75  on when this jou
b410: 72 6e 61 6c 69 6e 67 0d 0a 20 20 2f 2f 2f 20 6d  rnaling..  /// m
b420: 6f 64 65 20 69 73 20 73 65 74 2c 20 74 68 65 6e  ode is set, then
b430: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
b440: 6c 65 20 77 69 6c 6c 20 76 65 72 79 20 6c 69 6b  le will very lik
b450: 65 6c 79 20 67 6f 20 63 6f 72 72 75 70 74 2e 0d  ely go corrupt..
b460: 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20  .  /// <br/>..  
b470: 2f 2f 2f 20 3c 62 3e 54 72 75 6e 63 61 74 65 3c  /// <b>Truncate<
b480: 2f 62 3e 20 2d 20 54 72 75 6e 63 61 74 65 20 74  /b> - Truncate t
b490: 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
b4a0: 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69  to zero-length i
b4b0: 6e 73 74 65 61 64 20 6f 66 0d 0a 20 20 2f 2f 2f  nstead of..  ///
b4c0: 20 64 65 6c 65 74 69 6e 67 20 69 74 2e 0d 0a 20   deleting it... 
b4d0: 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 2f 2f   /// <br/>..  //
b4e0: 2f 20 3c 62 3e 4d 65 6d 6f 72 79 3c 2f 62 3e 20  / <b>Memory</b> 
b4f0: 2d 20 53 74 6f 72 65 20 74 68 65 20 6a 6f 75 72  - Store the jour
b500: 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65 20  nal in volatile 
b510: 52 41 4d 2e 20 20 54 68 69 73 20 73 61 76 65 73  RAM.  This saves
b520: 20 64 69 73 6b 20 49 2f 4f 0d 0a 20 20 2f 2f 2f   disk I/O..  ///
b530: 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70 65   but at the expe
b540: 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65 20  nse of database 
b550: 73 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65 67  safety and integ
b560: 72 69 74 79 2e 20 20 49 66 20 74 68 65 20 61 70  rity.  If the ap
b570: 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 2f 2f 2f  plication..  ///
b580: 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 63 72   using SQLite cr
b590: 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64  ashes in the mid
b5a0: 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63  dle of a transac
b5b0: 74 69 6f 6e 20 77 68 65 6e 20 74 68 69 73 20 6a  tion when this j
b5c0: 6f 75 72 6e 61 6c 69 6e 67 0d 0a 20 20 2f 2f 2f  ournaling..  ///
b5d0: 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74 68   mode is set, th
b5e0: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
b5f0: 66 69 6c 65 20 77 69 6c 6c 20 76 65 72 79 20 6c  file will very l
b600: 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72 75 70 74  ikely go corrupt
b610: 2e 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  ...  /// <br/>..
b620: 20 20 2f 2f 2f 20 3c 62 3e 57 61 6c 3c 2f 62 3e    /// <b>Wal</b>
b630: 20 2d 20 55 73 65 20 61 20 77 72 69 74 65 2d 61   - Use a write-a
b640: 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65 61 64  head log instead
b650: 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6a   of a rollback j
b660: 6f 75 72 6e 61 6c 2e 0d 0a 20 20 2f 2f 2f 20 3c  ournal...  /// <
b670: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
b680: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
b690: 6e 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  n>N</description
b6a0: 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  >..  /// <descri
b6b0: 70 74 69 6f 6e 3e 44 65 6c 65 74 65 3c 2f 64 65  ption>Delete</de
b6c0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
b6d0: 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f  / </item>..  ///
b6e0: 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c   <item>..  /// <
b6f0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 52 65 61 64  description>Read
b700: 20 4f 6e 6c 79 3c 2f 64 65 73 63 72 69 70 74 69   Only</descripti
b710: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
b720: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
b730: 3c 62 3e 54 72 75 65 3c 2f 62 3e 20 2d 20 4f 70  <b>True</b> - Op
b740: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
b750: 66 6f 72 20 72 65 61 64 20 6f 6e 6c 79 20 61 63  for read only ac
b760: 63 65 73 73 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f  cess..  /// <br/
b770: 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 46 61 6c 73  >..  /// <b>Fals
b780: 65 3c 2f 62 3e 20 2d 20 4f 70 65 6e 20 74 68 65  e</b> - Open the
b790: 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 6e 6f   database for no
b7a0: 72 6d 61 6c 20 72 65 61 64 2f 77 72 69 74 65 20  rmal read/write 
b7b0: 61 63 63 65 73 73 0d 0a 20 20 2f 2f 2f 20 3c 2f  access..  /// </
b7c0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
b7d0: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
b7e0: 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >N</description>
b7f0: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
b800: 74 69 6f 6e 3e 46 61 6c 73 65 3c 2f 64 65 73 63  tion>False</desc
b810: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
b820: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c  </item>..  /// <
b830: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  item>..  /// <de
b840: 73 63 72 69 70 74 69 6f 6e 3e 4d 61 78 20 50 6f  scription>Max Po
b850: 6f 6c 20 53 69 7a 65 3c 2f 64 65 73 63 72 69 70  ol Size</descrip
b860: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
b870: 73 63 72 69 70 74 69 6f 6e 3e 54 68 65 20 6d 61  scription>The ma
b880: 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
b890: 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66 6f 72 20  connections for 
b8a0: 74 68 65 20 67 69 76 65 6e 20 63 6f 6e 6e 65 63  the given connec
b8b0: 74 69 6f 6e 20 73 74 72 69 6e 67 20 74 68 61 74  tion string that
b8c0: 20 63 61 6e 20 62 65 20 69 6e 20 74 68 65 20 63   can be in the c
b8d0: 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 3c 2f  onnection pool</
b8e0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
b8f0: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
b900: 3e 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >N</description>
b910: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
b920: 74 69 6f 6e 3e 31 30 30 3c 2f 64 65 73 63 72 69  tion>100</descri
b930: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f  ption>..  /// </
b940: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74  item>..  /// <it
b950: 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  em>..  /// <desc
b960: 72 69 70 74 69 6f 6e 3e 44 65 66 61 75 6c 74 20  ription>Default 
b970: 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 3c 2f  IsolationLevel</
b980: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
b990: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
b9a0: 3e 54 68 65 20 64 65 66 61 75 6c 74 20 74 72 61  >The default tra
b9b0: 6e 73 61 63 69 74 6f 6e 20 69 73 6f 6c 61 74 69  nsaciton isolati
b9c0: 6f 6e 20 6c 65 76 65 6c 3c 2f 64 65 73 63 72 69  on level</descri
b9d0: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64  ption>..  /// <d
b9e0: 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65  escription>N</de
b9f0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
ba00: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 53  / <description>S
ba10: 65 72 69 61 6c 69 7a 61 62 6c 65 3c 2f 64 65 73  erializable</des
ba20: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
ba30: 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20   </item>..  /// 
ba40: 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64  <item>..  /// <d
ba50: 65 73 63 72 69 70 74 69 6f 6e 3e 46 6f 72 65 69  escription>Forei
ba60: 67 6e 20 4b 65 79 73 3c 2f 64 65 73 63 72 69 70  gn Keys</descrip
ba70: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
ba80: 73 63 72 69 70 74 69 6f 6e 3e 45 6e 61 62 6c 65  scription>Enable
ba90: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e   foreign key con
baa0: 73 74 72 61 69 6e 74 73 3c 2f 64 65 73 63 72 69  straints</descri
bab0: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64  ption>..  /// <d
bac0: 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65  escription>N</de
bad0: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
bae0: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 46  / <description>F
baf0: 61 6c 73 65 3c 2f 64 65 73 63 72 69 70 74 69 6f  alse</descriptio
bb00: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d  n>..  /// </item
bb10: 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  >..  /// <item>.
bb20: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
bb30: 69 6f 6e 3e 46 6c 61 67 73 3c 2f 64 65 73 63 72  ion>Flags</descr
bb40: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
bb50: 64 65 73 63 72 69 70 74 69 6f 6e 3e 45 78 74 72  description>Extr
bb60: 61 20 62 65 68 61 76 69 6f 72 61 6c 20 66 6c 61  a behavioral fla
bb70: 67 73 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  gs for the conne
bb80: 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 20  ction.  See the 
bb90: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
bba0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
bbb0: 22 20 2f 3e 20 65 6e 75 6d 65 72 61 74 69 6f 6e  " /> enumeration
bbc0: 20 66 6f 72 20 70 6f 73 73 69 62 6c 65 20 76 61   for possible va
bbd0: 6c 75 65 73 2e 3c 2f 64 65 73 63 72 69 70 74 69  lues.</descripti
bbe0: 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  on>..  /// <desc
bbf0: 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73 63 72  ription>N</descr
bc00: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
bc10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 44 65 66 61  description>Defa
bc20: 75 6c 74 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ult</description
bc30: 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e  >..  /// </item>
bc40: 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a  ..  /// <item>..
bc50: 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
bc60: 6f 6e 3e 53 65 74 44 65 66 61 75 6c 74 73 3c 2f  on>SetDefaults</
bc70: 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
bc80: 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
bc90: 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 54 72 75 65  >..  /// <b>True
bca0: 3c 2f 62 3e 20 2d 20 41 70 70 6c 79 20 74 68 65  </b> - Apply the
bcb0: 20 64 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63 74   default connect
bcc0: 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 74 6f 20  ion settings to 
bcd0: 74 68 65 20 6f 70 65 6e 65 64 20 64 61 74 61 62  the opened datab
bce0: 61 73 65 2e 3c 62 72 2f 3e 0d 0a 20 20 2f 2f 2f  ase.<br/>..  ///
bcf0: 20 3c 62 3e 46 61 6c 73 65 3c 2f 62 3e 20 2d 20   <b>False</b> - 
bd00: 53 6b 69 70 20 61 70 70 6c 79 69 6e 67 20 74 68  Skip applying th
bd10: 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63  e default connec
bd20: 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 74 6f  tion settings to
bd30: 20 74 68 65 20 6f 70 65 6e 65 64 20 64 61 74 61   the opened data
bd40: 62 61 73 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64  base...  /// </d
bd50: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
bd60: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
bd70: 4e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  N</description>.
bd80: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
bd90: 69 6f 6e 3e 54 72 75 65 3c 2f 64 65 73 63 72 69  ion>True</descri
bda0: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f  ption>..  /// </
bdb0: 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74  item>..  /// <it
bdc0: 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63  em>..  /// <desc
bdd0: 72 69 70 74 69 6f 6e 3e 54 6f 46 75 6c 6c 50 61  ription>ToFullPa
bde0: 74 68 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  th</description>
bdf0: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
be00: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e  tion>..  /// <b>
be10: 54 72 75 65 3c 2f 62 3e 20 2d 20 41 74 74 65 6d  True</b> - Attem
be20: 70 74 20 74 6f 20 65 78 70 61 6e 64 20 74 68 65  pt to expand the
be30: 20 64 61 74 61 20 73 6f 75 72 63 65 20 66 69 6c   data source fil
be40: 65 20 6e 61 6d 65 20 74 6f 20 61 20 66 75 6c 6c  e name to a full
be50: 79 20 71 75 61 6c 69 66 69 65 64 20 70 61 74 68  y qualified path
be60: 20 62 65 66 6f 72 65 20 6f 70 65 6e 69 6e 67 2e   before opening.
be70: 0d 0a 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20  ..  /// <br/>.. 
be80: 20 2f 2f 2f 20 3c 62 3e 46 61 6c 73 65 3c 2f 62   /// <b>False</b
be90: 3e 20 2d 20 53 6b 69 70 20 61 74 74 65 6d 70 74  > - Skip attempt
bea0: 69 6e 67 20 74 6f 20 65 78 70 61 6e 64 20 74 68  ing to expand th
beb0: 65 20 64 61 74 61 20 73 6f 75 72 63 65 20 66 69  e data source fi
bec0: 6c 65 20 6e 61 6d 65 20 74 6f 20 61 20 66 75 6c  le name to a ful
bed0: 6c 79 20 71 75 61 6c 69 66 69 65 64 20 70 61 74  ly qualified pat
bee0: 68 20 62 65 66 6f 72 65 20 6f 70 65 6e 69 6e 67  h before opening
bef0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72  ...  /// </descr
bf00: 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c  iption>..  /// <
bf10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64  description>N</d
bf20: 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f  escription>..  /
bf30: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
bf40: 54 72 75 65 3c 2f 64 65 73 63 72 69 70 74 69 6f  True</descriptio
bf50: 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d  n>..  /// </item
bf60: 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  >..  /// <item>.
bf70: 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74  .  /// <descript
bf80: 69 6f 6e 3e 50 72 65 70 61 72 65 52 65 74 72 69  ion>PrepareRetri
bf90: 65 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  es</description>
bfa0: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
bfb0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  tion>..  /// The
bfc0: 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
bfd0: 6f 66 20 72 65 74 72 69 65 73 20 77 68 65 6e 20  of retries when 
bfe0: 70 72 65 70 61 72 69 6e 67 20 53 51 4c 20 74 6f  preparing SQL to
bff0: 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54   be executed.  T
c000: 68 69 73 0d 0a 20 20 2f 2f 2f 20 6e 6f 72 6d 61  his..  /// norma
c010: 6c 6c 79 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73  lly only applies
c020: 20 74 6f 20 70 72 65 70 61 72 61 74 69 6f 6e 20   to preparation 
c030: 65 72 72 6f 72 73 20 72 65 73 75 6c 74 69 6e 67  errors resulting
c040: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
c050: 73 65 0d 0a 20 20 2f 2f 2f 20 73 63 68 65 6d 61  se..  /// schema
c060: 20 62 65 69 6e 67 20 63 68 61 6e 67 65 64 2e 0d   being changed..
c070: 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72 69 70  .  /// </descrip
c080: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64 65  tion>..  /// <de
c090: 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65 73  scription>N</des
c0a0: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
c0b0: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 33 3c   <description>3<
c0c0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
c0d0: 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20   /// </item>..  
c0e0: 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f 2f  /// <item>..  //
c0f0: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 50  / <description>P
c100: 72 6f 67 72 65 73 73 4f 70 73 3c 2f 64 65 73 63  rogressOps</desc
c110: 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20  ription>..  /// 
c120: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  <description>.. 
c130: 20 2f 2f 2f 20 54 68 65 20 61 70 70 72 6f 78 69   /// The approxi
c140: 6d 61 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 76  mate number of v
c150: 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69  irtual machine i
c160: 6e 73 74 72 75 63 74 69 6f 6e 73 20 62 65 74 77  nstructions betw
c170: 65 65 6e 20 70 72 6f 67 72 65 73 73 0d 0a 20 20  een progress..  
c180: 2f 2f 2f 20 65 76 65 6e 74 73 2e 20 20 49 6e 20  /// events.  In 
c190: 6f 72 64 65 72 20 66 6f 72 20 70 72 6f 67 72 65  order for progre
c1a0: 73 73 20 65 76 65 6e 74 73 20 74 6f 20 61 63 74  ss events to act
c1b0: 75 61 6c 6c 79 20 66 69 72 65 2c 20 74 68 65 20  ually fire, the 
c1c0: 65 76 65 6e 74 20 68 61 6e 64 6c 65 72 0d 0a 20  event handler.. 
c1d0: 20 2f 2f 2f 20 6d 75 73 74 20 62 65 20 61 64 64   /// must be add
c1e0: 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63  ed to the <see c
c1f0: 72 65 66 3d 22 50 72 6f 67 72 65 73 73 22 20 2f  ref="Progress" /
c200: 3e 20 65 76 65 6e 74 20 61 73 20 77 65 6c 6c 2e  > event as well.
c210: 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72 69  ..  /// </descri
c220: 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 64  ption>..  /// <d
c230: 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c 2f 64 65  escription>N</de
c240: 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f  scription>..  //
c250: 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 30  / <description>0
c260: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
c270: 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20    /// </item>.. 
c280: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 2f   /// <item>..  /
c290: 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
c2a0: 52 65 63 75 72 73 69 76 65 20 54 72 69 67 67 65  Recursive Trigge
c2b0: 72 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  rs</description>
c2c0: 0d 0a 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70  ..  /// <descrip
c2d0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e  tion>..  /// <b>
c2e0: 54 72 75 65 3c 2f 62 3e 20 2d 20 45 6e 61 62 6c  True</b> - Enabl
c2f0: 65 20 74 68 65 20 72 65 63 75 72 73 69 76 65 20  e the recursive 
c300: 74 72 69 67 67 65 72 20 63 61 70 61 62 69 6c 69  trigger capabili
c310: 74 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 62 3e 46 61  ty...  /// <b>Fa
c320: 6c 73 65 3c 2f 62 3e 20 2d 20 44 69 73 61 62 6c  lse</b> - Disabl
c330: 65 20 74 68 65 20 72 65 63 75 72 73 69 76 65 20  e the recursive 
c340: 74 72 69 67 67 65 72 20 63 61 70 61 62 69 6c 69  trigger capabili
c350: 74 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 64 65 73  ty...  /// </des
c360: 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f  cription>..  ///
c370: 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4e 3c   <description>N<
c380: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
c390: 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
c3a0: 6e 3e 46 61 6c 73 65 3c 2f 64 65 73 63 72 69 70  n>False</descrip
c3b0: 74 69 6f 6e 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 69  tion>..  /// </i
c3c0: 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 6c 69  tem>..  /// </li
c3d0: 73 74 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d  st>..  /// </rem
c3e0: 61 72 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20  arks>..  public 
c3f0: 73 65 61 6c 65 64 20 70 61 72 74 69 61 6c 20 63  sealed partial c
c400: 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65  lass SQLiteConne
c410: 63 74 69 6f 6e 20 3a 20 44 62 43 6f 6e 6e 65 63  ction : DbConnec
c420: 74 69 6f 6e 2c 20 49 43 6c 6f 6e 65 61 62 6c 65  tion, ICloneable
c430: 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  , IDisposable.. 
c440: 20 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20   {..    #region 
c450: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
c460: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
c470: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
c480: 65 20 22 69 6e 76 61 6c 69 64 20 76 61 6c 75 65  e "invalid value
c490: 22 20 66 6f 72 20 74 68 65 20 3c 73 65 65 20 63  " for the <see c
c4a0: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
c4b0: 65 6e 75 6d 65 72 61 74 69 6f 6e 20 75 73 65 64  enumeration used
c4c0: 0d 0a 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 65  ..    /// by the
c4d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 65 66 61   <see cref="Defa
c4e0: 75 6c 74 44 62 54 79 70 65 22 20 2f 3e 20 70 72  ultDbType" /> pr
c4f0: 6f 70 65 72 74 79 2e 20 20 54 68 69 73 20 63 6f  operty.  This co
c500: 6e 73 74 61 6e 74 20 69 73 20 73 68 61 72 65 64  nstant is shared
c510: 0d 0a 20 20 20 20 2f 2f 2f 20 62 79 20 74 68 69  ..    /// by thi
c520: 73 20 63 6c 61 73 73 20 61 6e 64 20 74 68 65 20  s class and the 
c530: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
c540: 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 63 6c  StringBuilder cl
c550: 61 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ass...    /// </
c560: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
c570: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 44 62 54  ternal const DbT
c580: 79 70 65 20 42 61 64 44 62 54 79 70 65 20 3d 20  ype BadDbType = 
c590: 28 44 62 54 79 70 65 29 28 2d 31 29 3b 0d 0a 0d  (DbType)(-1);...
c5a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
c5b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
c5c0: 64 65 66 61 75 6c 74 20 22 73 74 75 62 22 20 28  default "stub" (
c5d0: 69 2e 65 2e 20 70 6c 61 63 65 68 6f 6c 64 65 72  i.e. placeholder
c5e0: 29 20 62 61 73 65 20 73 63 68 65 6d 61 20 6e 61  ) base schema na
c5f0: 6d 65 20 74 6f 20 75 73 65 20 77 68 65 6e 0d 0a  me to use when..
c600: 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 69 6e      /// returnin
c610: 67 20 63 6f 6c 75 6d 6e 20 73 63 68 65 6d 61 20  g column schema 
c620: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 20 55 73  information.  Us
c630: 65 64 20 61 73 20 74 68 65 20 69 6e 69 74 69 61  ed as the initia
c640: 6c 20 76 61 6c 75 65 20 6f 66 0d 0a 20 20 20 20  l value of..    
c650: 2f 2f 2f 20 74 68 65 20 42 61 73 65 53 63 68 65  /// the BaseSche
c660: 6d 61 4e 61 6d 65 20 70 72 6f 70 65 72 74 79 2e  maName property.
c670: 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 73 74    This should st
c680: 61 72 74 20 77 69 74 68 20 22 73 71 6c 69 74 65  art with "sqlite
c690: 5f 2a 22 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 63  _*"..    /// bec
c6a0: 61 75 73 65 20 74 68 6f 73 65 20 6e 61 6d 65 73  ause those names
c6b0: 20 61 72 65 20 72 65 73 65 72 76 65 64 20 66 6f   are reserved fo
c6c0: 72 20 75 73 65 20 62 79 20 53 51 4c 69 74 65 20  r use by SQLite 
c6d0: 28 69 2e 65 2e 20 74 68 65 79 20 63 61 6e 6e 6f  (i.e. they canno
c6e0: 74 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 20 63 6f  t..    /// be co
c6f0: 6e 66 75 73 65 64 20 77 69 74 68 20 74 68 65 20  nfused with the 
c700: 6e 61 6d 65 73 20 6f 66 20 75 73 65 72 20 6f 62  names of user ob
c710: 6a 65 63 74 73 29 2e 0d 0a 20 20 20 20 2f 2f 2f  jects)...    ///
c720: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c730: 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20   internal const 
c740: 73 74 72 69 6e 67 20 44 65 66 61 75 6c 74 42 61  string DefaultBa
c750: 73 65 53 63 68 65 6d 61 4e 61 6d 65 20 3d 20 22  seSchemaName = "
c760: 73 71 6c 69 74 65 5f 64 65 66 61 75 6c 74 5f 73  sqlite_default_s
c770: 63 68 65 6d 61 22 3b 0d 0a 0d 0a 20 20 20 20 70  chema";....    p
c780: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
c790: 69 6e 67 20 4d 65 6d 6f 72 79 46 69 6c 65 4e 61  ing MemoryFileNa
c7a0: 6d 65 20 3d 20 22 3a 6d 65 6d 6f 72 79 3a 22 3b  me = ":memory:";
c7b0: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
c7c0: 20 63 6f 6e 73 74 20 49 73 6f 6c 61 74 69 6f 6e   const Isolation
c7d0: 4c 65 76 65 6c 20 44 65 66 65 72 72 65 64 49 73  Level DeferredIs
c7e0: 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 3d 20 49  olationLevel = I
c7f0: 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 2e 52 65  solationLevel.Re
c800: 61 64 43 6f 6d 6d 69 74 74 65 64 3b 0d 0a 20 20  adCommitted;..  
c810: 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73 74    internal const
c820: 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20   IsolationLevel 
c830: 49 6d 6d 65 64 69 61 74 65 49 73 6f 6c 61 74 69  ImmediateIsolati
c840: 6f 6e 4c 65 76 65 6c 20 3d 20 49 73 6f 6c 61 74  onLevel = Isolat
c850: 69 6f 6e 4c 65 76 65 6c 2e 53 65 72 69 61 6c 69  ionLevel.Seriali
c860: 7a 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 70 72  zable;....    pr
c870: 69 76 61 74 65 20 63 6f 6e 73 74 20 53 51 4c 69  ivate const SQLi
c880: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
c890: 73 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  s FallbackDefaul
c8a0: 74 46 6c 61 67 73 20 3d 20 53 51 4c 69 74 65 43  tFlags = SQLiteC
c8b0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 44  onnectionFlags.D
c8c0: 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 70 72 69  efault;..    pri
c8d0: 76 61 74 65 20 63 6f 6e 73 74 20 53 51 4c 69 74  vate const SQLit
c8e0: 65 53 79 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d  eSynchronousEnum
c8f0: 20 44 65 66 61 75 6c 74 53 79 6e 63 68 72 6f 6e   DefaultSynchron
c900: 6f 75 73 20 3d 20 53 51 4c 69 74 65 53 79 6e 63  ous = SQLiteSync
c910: 68 72 6f 6e 6f 75 73 45 6e 75 6d 2e 44 65 66 61  hronousEnum.Defa
c920: 75 6c 74 3b 0d 0a 20 20 20 20 70 72 69 76 61 74  ult;..    privat
c930: 65 20 63 6f 6e 73 74 20 53 51 4c 69 74 65 4a 6f  e const SQLiteJo
c940: 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 20 44 65  urnalModeEnum De
c950: 66 61 75 6c 74 4a 6f 75 72 6e 61 6c 4d 6f 64 65  faultJournalMode
c960: 20 3d 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c   = SQLiteJournal
c970: 4d 6f 64 65 45 6e 75 6d 2e 44 65 66 61 75 6c 74  ModeEnum.Default
c980: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  ;..    private c
c990: 6f 6e 73 74 20 49 73 6f 6c 61 74 69 6f 6e 4c 65  onst IsolationLe
c9a0: 76 65 6c 20 44 65 66 61 75 6c 74 49 73 6f 6c 61  vel DefaultIsola
c9b0: 74 69 6f 6e 4c 65 76 65 6c 20 3d 20 49 73 6f 6c  tionLevel = Isol
c9c0: 61 74 69 6f 6e 4c 65 76 65 6c 2e 53 65 72 69 61  ationLevel.Seria
c9d0: 6c 69 7a 61 62 6c 65 3b 0d 0a 20 20 20 20 69 6e  lizable;..    in
c9e0: 74 65 72 6e 61 6c 20 63 6f 6e 73 74 20 53 51 4c  ternal const SQL
c9f0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 44  iteDateFormats D
ca00: 65 66 61 75 6c 74 44 61 74 65 54 69 6d 65 46 6f  efaultDateTimeFo
ca10: 72 6d 61 74 20 3d 20 53 51 4c 69 74 65 44 61 74  rmat = SQLiteDat
ca20: 65 46 6f 72 6d 61 74 73 2e 44 65 66 61 75 6c 74  eFormats.Default
ca30: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
ca40: 63 6f 6e 73 74 20 44 61 74 65 54 69 6d 65 4b 69  const DateTimeKi
ca50: 6e 64 20 44 65 66 61 75 6c 74 44 61 74 65 54 69  nd DefaultDateTi
ca60: 6d 65 4b 69 6e 64 20 3d 20 44 61 74 65 54 69 6d  meKind = DateTim
ca70: 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65  eKind.Unspecifie
ca80: 64 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  d;..    internal
ca90: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 65   const string De
caa0: 66 61 75 6c 74 44 61 74 65 54 69 6d 65 46 6f 72  faultDateTimeFor
cab0: 6d 61 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c  matString = null
cac0: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  ;..    private c
cad0: 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 65 66 61  onst string Defa
cae0: 75 6c 74 44 61 74 61 53 6f 75 72 63 65 20 3d 20  ultDataSource = 
caf0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 70 72 69 76 61  null;..    priva
cb00: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
cb10: 44 65 66 61 75 6c 74 55 72 69 20 3d 20 6e 75 6c  DefaultUri = nul
cb20: 6c 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  l;..    private 
cb30: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 65 66  const string Def
cb40: 61 75 6c 74 46 75 6c 6c 55 72 69 20 3d 20 6e 75  aultFullUri = nu
cb50: 6c 6c 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ll;..    private
cb60: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 65   const string De
cb70: 66 61 75 6c 74 48 65 78 50 61 73 73 77 6f 72 64  faultHexPassword
cb80: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 70 72   = null;..    pr
cb90: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
cba0: 6e 67 20 44 65 66 61 75 6c 74 50 61 73 73 77 6f  ng DefaultPasswo
cbb0: 72 64 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  rd = null;..    
cbc0: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
cbd0: 74 20 44 65 66 61 75 6c 74 56 65 72 73 69 6f 6e  t DefaultVersion
cbe0: 20 3d 20 33 3b 0d 0a 20 20 20 20 70 72 69 76 61   = 3;..    priva
cbf0: 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 65 66  te const int Def
cc00: 61 75 6c 74 50 61 67 65 53 69 7a 65 20 3d 20 34  aultPageSize = 4
cc10: 30 39 36 3b 0d 0a 20 20 20 20 70 72 69 76 61 74  096;..    privat
cc20: 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 65 66 61  e const int Defa
cc30: 75 6c 74 4d 61 78 50 61 67 65 43 6f 75 6e 74 20  ultMaxPageCount 
cc40: 3d 20 30 3b 0d 0a 20 20 20 20 70 72 69 76 61 74  = 0;..    privat
cc50: 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 65 66 61  e const int Defa
cc60: 75 6c 74 43 61 63 68 65 53 69 7a 65 20 3d 20 2d  ultCacheSize = -
cc70: 32 30 30 30 3b 0d 0a 20 20 20 20 70 72 69 76 61  2000;..    priva
cc80: 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 65 66  te const int Def
cc90: 61 75 6c 74 4d 61 78 50 6f 6f 6c 53 69 7a 65 20  aultMaxPoolSize 
cca0: 3d 20 31 30 30 3b 0d 0a 20 20 20 20 70 72 69 76  = 100;..    priv
ccb0: 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 44 65  ate const int De
ccc0: 66 61 75 6c 74 43 6f 6e 6e 65 63 74 69 6f 6e 54  faultConnectionT
ccd0: 69 6d 65 6f 75 74 20 3d 20 33 30 3b 0d 0a 20 20  imeout = 30;..  
cce0: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
ccf0: 69 6e 74 20 44 65 66 61 75 6c 74 42 75 73 79 54  int DefaultBusyT
cd00: 69 6d 65 6f 75 74 20 3d 20 30 3b 0d 0a 20 20 20  imeout = 0;..   
cd10: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
cd20: 6e 74 20 44 65 66 61 75 6c 74 57 61 69 74 54 69  nt DefaultWaitTi
cd30: 6d 65 6f 75 74 20 3d 20 33 30 30 30 30 3b 0d 0a  meout = 30000;..
cd40: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
cd50: 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74 4e 6f  t bool DefaultNo
cd60: 44 65 66 61 75 6c 74 46 6c 61 67 73 20 3d 20 66  DefaultFlags = f
cd70: 61 6c 73 65 3b 0d 0a 20 20 20 20 70 72 69 76 61  alse;..    priva
cd80: 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65  te const bool De
cd90: 66 61 75 6c 74 4e 6f 53 68 61 72 65 64 46 6c 61  faultNoSharedFla
cda0: 67 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20  gs = false;..   
cdb0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62   private const b
cdc0: 6f 6f 6c 20 44 65 66 61 75 6c 74 46 61 69 6c 49  ool DefaultFailI
cdd0: 66 4d 69 73 73 69 6e 67 20 3d 20 66 61 6c 73 65  fMissing = false
cde0: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  ;..    private c
cdf0: 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
ce00: 74 52 65 61 64 4f 6e 6c 79 20 3d 20 66 61 6c 73  tReadOnly = fals
ce10: 65 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  e;..    internal
ce20: 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61   const bool Defa
ce30: 75 6c 74 42 69 6e 61 72 79 47 55 49 44 20 3d 20  ultBinaryGUID = 
ce40: 74 72 75 65 3b 0d 0a 20 20 20 20 70 72 69 76 61  true;..    priva
ce50: 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65  te const bool De
ce60: 66 61 75 6c 74 55 73 65 55 54 46 31 36 45 6e 63  faultUseUTF16Enc
ce70: 6f 64 69 6e 67 20 3d 20 66 61 6c 73 65 3b 0d 0a  oding = false;..
ce80: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
ce90: 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74 54 6f  t bool DefaultTo
cea0: 46 75 6c 6c 50 61 74 68 20 3d 20 74 72 75 65 3b  FullPath = true;
ceb0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f  ..    private co
cec0: 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74  nst bool Default
ced0: 50 6f 6f 6c 69 6e 67 20 3d 20 66 61 6c 73 65 3b  Pooling = false;
cee0: 20 2f 2f 20 54 4f 44 4f 3a 20 4d 61 79 62 65 20   // TODO: Maybe 
cef0: 70 72 6f 6d 6f 74 65 20 74 68 69 73 20 74 6f 20  promote this to 
cf00: 73 74 61 74 69 63 20 70 72 6f 70 65 72 74 79 3f  static property?
cf10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f  ..    private co
cf20: 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c 74  nst bool Default
cf30: 4c 65 67 61 63 79 46 6f 72 6d 61 74 20 3d 20 66  LegacyFormat = f
cf40: 61 6c 73 65 3b 0d 0a 20 20 20 20 70 72 69 76 61  alse;..    priva
cf50: 74 65 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65  te const bool De
cf60: 66 61 75 6c 74 46 6f 72 65 69 67 6e 4b 65 79 73  faultForeignKeys
cf70: 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 70   = false;..    p
cf80: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62 6f 6f  rivate const boo
cf90: 6c 20 44 65 66 61 75 6c 74 52 65 63 75 72 73 69  l DefaultRecursi
cfa0: 76 65 54 72 69 67 67 65 72 73 20 3d 20 66 61 6c  veTriggers = fal
cfb0: 73 65 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65  se;..    private
cfc0: 20 63 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61   const bool Defa
cfd0: 75 6c 74 45 6e 6c 69 73 74 20 3d 20 74 72 75 65  ultEnlist = true
cfe0: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  ;..    private c
cff0: 6f 6e 73 74 20 62 6f 6f 6c 20 44 65 66 61 75 6c  onst bool Defaul
d000: 74 53 65 74 44 65 66 61 75 6c 74 73 20 3d 20 74  tSetDefaults = t
d010: 72 75 65 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rue;..    intern
d020: 61 6c 20 63 6f 6e 73 74 20 69 6e 74 20 44 65 66  al const int Def
d030: 61 75 6c 74 50 72 65 70 61 72 65 52 65 74 72 69  aultPrepareRetri
d040: 65 73 20 3d 20 33 3b 0d 0a 20 20 20 20 70 72 69  es = 3;..    pri
d050: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
d060: 67 20 44 65 66 61 75 6c 74 56 66 73 4e 61 6d 65  g DefaultVfsName
d070: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 70 72   = null;..    pr
d080: 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20  ivate const int 
d090: 44 65 66 61 75 6c 74 50 72 6f 67 72 65 73 73 4f  DefaultProgressO
d0a0: 70 73 20 3d 20 30 3b 0d 0a 0d 0a 23 69 66 20 49  ps = 0;....#if I
d0b0: 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a  NTEROP_INCLUDE_Z
d0c0: 49 50 56 46 53 0d 0a 20 20 20 20 70 72 69 76 61  IPVFS..    priva
d0d0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
d0e0: 5a 69 70 56 66 73 5f 41 75 74 6f 6d 61 74 69 63  ZipVfs_Automatic
d0f0: 20 3d 20 22 61 75 74 6f 6d 61 74 69 63 22 3b 0d   = "automatic";.
d100: 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e  .    private con
d110: 73 74 20 73 74 72 69 6e 67 20 5a 69 70 56 66 73  st string ZipVfs
d120: 5f 56 32 20 3d 20 22 76 32 22 3b 0d 0a 20 20 20  _V2 = "v2";..   
d130: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
d140: 74 72 69 6e 67 20 5a 69 70 56 66 73 5f 56 33 20  tring ZipVfs_V3 
d150: 3d 20 22 76 33 22 3b 0d 0a 0d 0a 20 20 20 20 70  = "v3";....    p
d160: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
d170: 69 6e 67 20 44 65 66 61 75 6c 74 5a 69 70 56 66  ing DefaultZipVf
d180: 73 56 65 72 73 69 6f 6e 20 3d 20 6e 75 6c 6c 3b  sVersion = null;
d190: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
d1a0: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e  private const in
d1b0: 74 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43  t SQLITE_FCNTL_C
d1c0: 48 55 4e 4b 5f 53 49 5a 45 20 3d 20 36 3b 0d 0a  HUNK_SIZE = 6;..
d1d0: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
d1e0: 74 20 69 6e 74 20 53 51 4c 49 54 45 5f 46 43 4e  t int SQLITE_FCN
d1f0: 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45 54 52  TL_WIN32_AV_RETR
d200: 59 20 3d 20 39 3b 0d 0a 0d 0a 20 20 20 20 70 72  Y = 9;....    pr
d210: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
d220: 6e 67 20 5f 64 61 74 61 44 69 72 65 63 74 6f 72  ng _dataDirector
d230: 79 20 3d 20 22 7c 44 61 74 61 44 69 72 65 63 74  y = "|DataDirect
d240: 6f 72 79 7c 22 3b 0d 0a 0d 0a 20 20 20 20 70 72  ory|";....    pr
d250: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
d260: 69 6e 67 20 5f 64 65 66 61 75 6c 74 43 61 74 61  ing _defaultCata
d270: 6c 6f 67 4e 61 6d 65 20 3d 20 22 6d 61 69 6e 22  logName = "main"
d280: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ;..    private s
d290: 74 61 74 69 63 20 73 74 72 69 6e 67 20 5f 64 65  tatic string _de
d2a0: 66 61 75 6c 74 4d 61 73 74 65 72 54 61 62 6c 65  faultMasterTable
d2b0: 4e 61 6d 65 20 3d 20 22 73 71 6c 69 74 65 5f 6d  Name = "sqlite_m
d2c0: 61 73 74 65 72 22 3b 0d 0a 0d 0a 20 20 20 20 70  aster";....    p
d2d0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
d2e0: 72 69 6e 67 20 5f 74 65 6d 70 6f 72 61 72 79 43  ring _temporaryC
d2f0: 61 74 61 6c 6f 67 4e 61 6d 65 20 3d 20 22 74 65  atalogName = "te
d300: 6d 70 22 3b 0d 0a 20 20 20 20 70 72 69 76 61 74  mp";..    privat
d310: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
d320: 5f 74 65 6d 70 6f 72 61 72 79 4d 61 73 74 65 72  _temporaryMaster
d330: 54 61 62 6c 65 4e 61 6d 65 20 3d 20 22 73 71 6c  TableName = "sql
d340: 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 22  ite_temp_master"
d350: 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  ;..    #endregio
d360: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
d370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d3c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
d3d0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
d3e0: 53 74 61 74 69 63 20 44 61 74 61 0d 0a 20 20 20  Static Data..   
d3f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d400: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 6e 61      /// The mana
d410: 67 65 64 20 61 73 73 65 6d 62 6c 79 20 63 6f 6e  ged assembly con
d420: 74 61 69 6e 69 6e 67 20 74 68 69 73 20 74 79 70  taining this typ
d430: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
d440: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76  mmary>..    priv
d450: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
d460: 6e 6c 79 20 41 73 73 65 6d 62 6c 79 20 5f 61 73  nly Assembly _as
d470: 73 65 6d 62 6c 79 20 3d 20 74 79 70 65 6f 66 28  sembly = typeof(
d480: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d490: 29 2e 41 73 73 65 6d 62 6c 79 3b 0d 0a 0d 0a 20  ).Assembly;.... 
d4a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d4b0: 0d 0a 20 20 20 20 2f 2f 2f 20 4f 62 6a 65 63 74  ..    /// Object
d4c0: 20 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f   used to synchro
d4d0: 6e 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74  nize access to t
d4e0: 68 65 20 73 74 61 74 69 63 20 69 6e 73 74 61 6e  he static instan
d4f0: 63 65 20 64 61 74 61 0d 0a 20 20 20 20 2f 2f 2f  ce data..    ///
d500: 20 66 6f 72 20 74 68 69 73 20 63 6c 61 73 73 2e   for this class.
d510: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
d520: 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  ary>..    privat
d530: 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
d540: 79 20 6f 62 6a 65 63 74 20 5f 73 79 6e 63 52 6f  y object _syncRo
d550: 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
d560: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
d570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d580: 20 53 74 61 74 69 63 20 76 61 72 69 61 62 6c 65   Static variable
d590: 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 63 6f   to store the co
d5a0: 6e 6e 65 63 74 69 6f 6e 20 65 76 65 6e 74 20 68  nnection event h
d5b0: 61 6e 64 6c 65 72 73 20 74 6f 20 63 61 6c 6c 2e  andlers to call.
d5c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
d5d0: 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  ary>..    privat
d5e0: 65 20 73 74 61 74 69 63 20 65 76 65 6e 74 20 53  e static event S
d5f0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45  QLiteConnectionE
d600: 76 65 6e 74 48 61 6e 64 6c 65 72 20 5f 68 61 6e  ventHandler _han
d610: 64 6c 65 72 73 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  dlers;....    //
d620: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d630: 20 2f 2f 2f 20 54 68 65 20 65 78 74 72 61 20 63   /// The extra c
d640: 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73 20  onnection flags 
d650: 74 6f 20 62 65 20 75 73 65 64 20 66 6f 72 20 61  to be used for a
d660: 6c 6c 20 6f 70 65 6e 65 64 20 63 6f 6e 6e 65 63  ll opened connec
d670: 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tions...    /// 
d680: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d690: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 53  private static S
d6a0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d6b0: 6c 61 67 73 20 5f 73 68 61 72 65 64 46 6c 61 67  lags _sharedFlag
d6c0: 73 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  s;....    /// <s
d6d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d6e0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
d6f0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d700: 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 20 28 66  " /> instance (f
d710: 6f 72 20 74 68 69 73 20 74 68 72 65 61 64 29 20  or this thread) 
d720: 74 68 61 74 0d 0a 20 20 20 20 2f 2f 2f 20 68 61  that..    /// ha
d730: 64 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  d the most recen
d740: 74 20 63 61 6c 6c 20 74 6f 20 3c 73 65 65 20 63  t call to <see c
d750: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65  ref="SQLiteConne
d760: 63 74 69 6f 6e 2e 4f 70 65 6e 22 20 2f 3e 2e 0d  ction.Open" />..
d770: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
d780: 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
d790: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
d7a0: 4f 52 4b 0d 0a 20 20 20 20 5b 54 68 72 65 61 64  ORK..    [Thread
d7b0: 53 74 61 74 69 63 28 29 5d 0d 0a 23 65 6e 64 69  Static()]..#endi
d7c0: 66 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  f..    private s
d7d0: 74 61 74 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e  tatic SQLiteConn
d7e0: 65 63 74 69 6f 6e 20 5f 6c 61 73 74 43 6f 6e 6e  ection _lastConn
d7f0: 65 63 74 69 6f 6e 49 6e 4f 70 65 6e 3b 0d 0a 0d  ectionInOpen;...
d800: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 54 41 4e  .#if SQLITE_STAN
d810: 44 41 52 44 20 26 26 20 21 50 4c 41 54 46 4f 52  DARD && !PLATFOR
d820: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
d830: 52 4b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  RK..    /// <sum
d840: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
d850: 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  sed to hold the 
d860: 61 63 74 69 76 65 20 6c 69 62 72 61 72 79 20 76  active library v
d870: 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f 66  ersion number of
d880: 20 53 51 4c 69 74 65 2e 0d 0a 20 20 20 20 2f 2f   SQLite...    //
d890: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d8a0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
d8b0: 20 69 6e 74 20 5f 76 65 72 73 69 6f 6e 4e 75 6d   int _versionNum
d8c0: 62 65 72 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ber;..#endif..  
d8d0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
d8e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d940: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
d950: 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
d960: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
d970: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 74 61 74  y>..    /// Stat
d980: 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  e of the current
d990: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
d9a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d9b0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 43 6f 6e  .    private Con
d9c0: 6e 65 63 74 69 6f 6e 53 74 61 74 65 20 5f 63 6f  nectionState _co
d9d0: 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 3b 0d 0a  nnectionState;..
d9e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
d9f0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
da00: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
da10: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ng..    /// </su
da20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76  mmary>..    priv
da30: 61 74 65 20 73 74 72 69 6e 67 20 5f 63 6f 6e 6e  ate string _conn
da40: 65 63 74 69 6f 6e 53 74 72 69 6e 67 3b 0d 0a 0d  ectionString;...
da50: 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
da60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
da70: 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 74 72 69     /// This stri
da80: 6e 67 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20  ng will contain 
da90: 65 6e 6f 75 67 68 20 69 6e 66 6f 72 6d 61 74 69  enough informati
daa0: 6f 6e 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74  on to identify t
dab0: 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d  his connection,.
dac0: 0a 20 20 20 20 2f 2f 2f 20 65 2e 67 2e 20 74 68  .    /// e.g. th
dad0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
dae0: 6e 61 6d 65 2c 20 6f 72 69 67 69 6e 61 6c 20 74  name, original t
daf0: 68 72 65 61 64 2c 20 65 74 63 2e 20 20 49 74 20  hread, etc.  It 
db00: 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79  is not currently
db10: 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 70 6f 73 65  ..    /// expose
db20: 64 20 76 69 61 20 74 68 65 20 70 75 62 6c 69 63  d via the public
db30: 20 69 6e 74 65 72 66 61 63 65 20 61 73 20 69 74   interface as it
db40: 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72   is intended for
db50: 20 75 73 65 20 6f 6e 6c 79 20 77 68 65 6e 0d 0a   use only when..
db60: 20 20 20 20 2f 2f 2f 20 64 65 62 75 67 67 69 6e      /// debuggin
db70: 67 20 74 68 69 73 20 6c 69 62 72 61 72 79 2e 0d  g this library..
db80: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
db90: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
dba0: 20 73 74 72 69 6e 67 20 5f 64 65 62 75 67 53 74   string _debugSt
dbb0: 72 69 6e 67 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ring;..#endif...
dbc0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
dbd0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 65 73 74  y>..    /// Nest
dbe0: 69 6e 67 20 6c 65 76 65 6c 20 6f 66 20 74 68 65  ing level of the
dbf0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 70   transactions op
dc00: 65 6e 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63  en on the connec
dc10: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tion..    /// </
dc20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
dc30: 74 65 72 6e 61 6c 20 69 6e 74 20 5f 74 72 61 6e  ternal int _tran
dc40: 73 61 63 74 69 6f 6e 4c 65 76 65 6c 3b 0d 0a 0d  sactionLevel;...
dc50: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
dc60: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 72 61 6e  y>..    /// Tran
dc70: 73 61 63 74 69 6f 6e 20 63 6f 75 6e 74 65 72 20  saction counter 
dc80: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
dc90: 6f 6e 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20  on.  Currently, 
dca0: 74 68 69 73 20 69 73 20 6f 6e 6c 79 20 75 73 65  this is only use
dcb0: 64 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 62 75  d..    /// to bu
dcc0: 69 6c 64 20 53 41 56 45 50 4f 49 4e 54 20 6e 61  ild SAVEPOINT na
dcd0: 6d 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  mes...    /// </
dce0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
dcf0: 74 65 72 6e 61 6c 20 69 6e 74 20 5f 74 72 61 6e  ternal int _tran
dd00: 73 61 63 74 69 6f 6e 53 65 71 75 65 6e 63 65 3b  sactionSequence;
dd10: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
dd20: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  mary>..    /// I
dd30: 66 20 74 68 69 73 20 66 6c 61 67 20 69 73 20 6e  f this flag is n
dd40: 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 20 3c 73 65  on-zero, the <se
dd50: 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65 28  e cref="Dispose(
dd60: 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c  )" /> method wil
dd70: 6c 20 68 61 76 65 0d 0a 20 20 20 20 2f 2f 2f 20  l have..    /// 
dd80: 6e 6f 20 65 66 66 65 63 74 3b 20 68 6f 77 65 76  no effect; howev
dd90: 65 72 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  er, the <see cre
dda0: 66 3d 22 43 6c 6f 73 65 22 20 2f 3e 20 6d 65 74  f="Close" /> met
ddb0: 68 6f 64 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75  hod will continu
ddc0: 65 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  e to..    /// be
ddd0: 68 61 76 65 20 61 73 20 6e 6f 72 6d 61 6c 2e 0d  have as normal..
dde0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
ddf0: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
de00: 6c 20 62 6f 6f 6c 20 5f 6e 6f 44 69 73 70 6f 73  l bool _noDispos
de10: 65 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  e;....    /// <s
de20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
de30: 20 49 66 20 73 65 74 2c 20 74 68 65 6e 20 74 68   If set, then th
de40: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
de50: 63 75 72 72 65 6e 74 6c 79 20 62 65 69 6e 67 20  currently being 
de60: 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 2f  disposed...    /
de70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
de80: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
de90: 5f 64 69 73 70 6f 73 69 6e 67 3b 0d 0a 0d 0a 20  _disposing;.... 
dea0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
deb0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
dec0: 66 61 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e 20  fault isolation 
ded0: 6c 65 76 65 6c 20 66 6f 72 20 6e 65 77 20 74 72  level for new tr
dee0: 61 6e 73 61 63 74 69 6f 6e 73 0d 0a 20 20 20 20  ansactions..    
def0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
df00: 20 20 20 20 70 72 69 76 61 74 65 20 49 73 6f 6c      private Isol
df10: 61 74 69 6f 6e 4c 65 76 65 6c 20 5f 64 65 66 61  ationLevel _defa
df20: 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 3b 0d 0a 0d  ultIsolation;...
df30: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
df40: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
df50: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
df60: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
df70: 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65 64 20   object is used 
df80: 77 69 74 68 20 6c 6f 63 6b 20 73 74 61 74 65 6d  with lock statem
df90: 65 6e 74 73 20 74 6f 20 73 79 6e 63 68 72 6f 6e  ents to synchron
dfa0: 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74 68  ize access to th
dfb0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  e..    /// <see 
dfc0: 63 72 65 66 3d 22 5f 65 6e 6c 69 73 74 6d 65 6e  cref="_enlistmen
dfd0: 74 22 20 2f 3e 20 66 69 65 6c 64 2c 20 62 65 6c  t" /> field, bel
dfe0: 6f 77 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ow...    /// </s
dff0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
e000: 65 72 6e 61 6c 20 72 65 61 64 6f 6e 6c 79 20 6f  ernal readonly o
e010: 62 6a 65 63 74 20 5f 65 6e 6c 69 73 74 6d 65 6e  bject _enlistmen
e020: 74 53 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20  tSyncRoot = new 
e030: 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20  object();....   
e040: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e050: 20 20 20 20 2f 2f 2f 20 57 68 65 74 68 65 72 20      /// Whether 
e060: 6f 72 20 6e 6f 74 20 74 68 65 20 63 6f 6e 6e 65  or not the conne
e070: 63 74 69 6f 6e 20 69 73 20 65 6e 6c 69 73 74 65  ction is enliste
e080: 64 20 69 6e 20 61 20 64 69 73 74 72 75 62 75 74  d in a distrubut
e090: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 0d 0a  ed transaction..
e0a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e0b0: 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
e0c0: 20 53 51 4c 69 74 65 45 6e 6c 69 73 74 6d 65 6e   SQLiteEnlistmen
e0d0: 74 20 5f 65 6e 6c 69 73 74 6d 65 6e 74 3b 0d 0a  t _enlistment;..
e0e0: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
e0f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e100: 20 2f 2f 2f 20 54 68 65 20 70 65 72 2d 63 6f 6e   /// The per-con
e110: 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73  nection mappings
e120: 20 62 65 74 77 65 65 6e 20 74 79 70 65 20 6e 61   between type na
e130: 6d 65 73 20 61 6e 64 20 3c 73 65 65 20 63 72 65  mes and <see cre
e140: 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 0d 0a 20  f="DbType" />.. 
e150: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 20 20     /// values.  
e160: 54 68 65 73 65 20 6d 61 70 70 69 6e 67 73 20 6f  These mappings o
e170: 76 65 72 72 69 64 65 20 74 68 65 20 63 6f 72 72  verride the corr
e180: 65 73 70 6f 6e 64 69 6e 67 20 67 6c 6f 62 61 6c  esponding global
e190: 20 6d 61 70 70 69 6e 67 73 2e 0d 0a 20 20 20 20   mappings...    
e1a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e1b0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
e1c0: 69 74 65 44 62 54 79 70 65 4d 61 70 20 5f 74 79  iteDbTypeMap _ty
e1d0: 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20  peNames;....    
e1e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e1f0: 20 20 20 2f 2f 2f 20 54 68 65 20 70 65 72 2d 63     /// The per-c
e200: 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e  onnection mappin
e210: 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65 20  gs between type 
e220: 6e 61 6d 65 73 20 61 6e 64 20 6f 70 74 69 6f 6e  names and option
e230: 61 6c 20 63 61 6c 6c 62 61 63 6b 73 0d 0a 20 20  al callbacks..  
e240: 20 20 2f 2f 2f 20 66 6f 72 20 70 61 72 61 6d 65    /// for parame
e250: 74 65 72 20 62 69 6e 64 69 6e 67 20 61 6e 64 20  ter binding and 
e260: 76 61 6c 75 65 20 72 65 61 64 69 6e 67 2e 0d 0a  value reading...
e270: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e280: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
e290: 53 51 4c 69 74 65 54 79 70 65 43 61 6c 6c 62 61  SQLiteTypeCallba
e2a0: 63 6b 73 4d 61 70 20 5f 74 79 70 65 43 61 6c 6c  cksMap _typeCall
e2b0: 62 61 63 6b 73 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  backs;....    //
e2c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e2d0: 20 2f 2f 2f 20 54 68 65 20 62 61 73 65 20 53 51   /// The base SQ
e2e0: 4c 69 74 65 20 6f 62 6a 65 63 74 20 74 6f 20 69  Lite object to i
e2f0: 6e 74 65 72 6f 70 20 77 69 74 68 0d 0a 20 20 20  nterop with..   
e300: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e310: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
e320: 4c 69 74 65 42 61 73 65 20 5f 73 71 6c 3b 0d 0a  LiteBase _sql;..
e330: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e340: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
e350: 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65  atabase filename
e360: 20 6d 69 6e 75 73 20 70 61 74 68 20 61 6e 64 20   minus path and 
e370: 65 78 74 65 6e 73 69 6f 6e 0d 0a 20 20 20 20 2f  extension..    /
e380: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e390: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
e3a0: 67 20 5f 64 61 74 61 53 6f 75 72 63 65 3b 0d 0a  g _dataSource;..
e3b0: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f  ..#if INTEROP_CO
e3c0: 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49  DEC || INTEROP_I
e3d0: 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 20 20 20 20  NCLUDE_SEE..    
e3e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e3f0: 20 20 20 2f 2f 2f 20 54 65 6d 70 6f 72 61 72 79     /// Temporary
e400: 20 70 61 73 73 77 6f 72 64 20 73 74 6f 72 61 67   password storag
e410: 65 2c 20 65 6d 70 74 69 65 64 20 61 66 74 65 72  e, emptied after
e420: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 68 61   the database ha
e430: 73 20 62 65 65 6e 20 6f 70 65 6e 65 64 0d 0a 20  s been opened.. 
e440: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e450: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 62  >..    private b
e460: 79 74 65 5b 5d 20 5f 70 61 73 73 77 6f 72 64 3b  yte[] _password;
e470: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
e480: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e490: 20 20 20 2f 2f 2f 20 54 68 65 20 22 73 74 75 62     /// The "stub
e4a0: 22 20 28 69 2e 65 2e 20 70 6c 61 63 65 68 6f 6c  " (i.e. placehol
e4b0: 64 65 72 29 20 62 61 73 65 20 73 63 68 65 6d 61  der) base schema
e4c0: 20 6e 61 6d 65 20 74 6f 20 75 73 65 20 77 68 65   name to use whe
e4d0: 6e 20 72 65 74 75 72 6e 69 6e 67 0d 0a 20 20 20  n returning..   
e4e0: 20 2f 2f 2f 20 63 6f 6c 75 6d 6e 20 73 63 68 65   /// column sche
e4f0: 6d 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d  ma information..
e500: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
e510: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
e520: 6c 20 73 74 72 69 6e 67 20 5f 62 61 73 65 53 63  l string _baseSc
e530: 68 65 6d 61 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  hemaName;....   
e540: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e550: 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78 74 72      /// The extr
e560: 61 20 62 65 68 61 76 69 6f 72 61 6c 20 66 6c 61  a behavioral fla
e570: 67 73 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e  gs for this conn
e580: 65 63 74 69 6f 6e 2c 20 69 66 20 61 6e 79 2e 20  ection, if any. 
e590: 20 53 65 65 20 74 68 65 0d 0a 20 20 20 20 2f 2f   See the..    //
e5a0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
e5b0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
e5c0: 67 73 22 20 2f 3e 20 65 6e 75 6d 65 72 61 74 69  gs" /> enumerati
e5d0: 6f 6e 20 66 6f 72 20 61 20 6c 69 73 74 20 6f 66  on for a list of
e5e0: 0d 0a 20 20 20 20 2f 2f 2f 20 70 6f 73 73 69 62  ..    /// possib
e5f0: 6c 65 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  le values...    
e600: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
e610: 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69      private SQLi
e620: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
e630: 73 20 5f 66 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20  s _flags;....   
e640: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e650: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 61 63 68      /// The cach
e660: 65 64 20 76 61 6c 75 65 73 20 66 6f 72 20 61 6c  ed values for al
e670: 6c 20 73 65 74 74 69 6e 67 73 20 74 68 61 74 20  l settings that 
e680: 68 61 76 65 20 62 65 65 6e 20 66 65 74 63 68 65  have been fetche
e690: 64 20 6f 6e 20 62 65 68 61 6c 66 0d 0a 20 20 20  d on behalf..   
e6a0: 20 2f 2f 2f 20 6f 66 20 74 68 69 73 20 63 6f 6e   /// of this con
e6b0: 6e 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 63  nection.  This c
e6c0: 61 63 68 65 20 6d 61 79 20 62 65 20 63 6c 65 61  ache may be clea
e6d0: 72 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74  red by calling t
e6e0: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  he..    /// <see
e6f0: 20 63 72 65 66 3d 22 43 6c 65 61 72 43 61 63 68   cref="ClearCach
e700: 65 64 53 65 74 74 69 6e 67 73 22 20 2f 3e 20 6d  edSettings" /> m
e710: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ethod...    /// 
e720: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e730: 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
e740: 72 79 3c 73 74 72 69 6e 67 2c 20 6f 62 6a 65 63  ry<string, objec
e750: 74 3e 20 5f 63 61 63 68 65 64 53 65 74 74 69 6e  t> _cachedSettin
e760: 67 73 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  gs;....    /// <
e770: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
e780: 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 64 61  / The default da
e790: 74 61 62 73 65 20 74 79 70 65 20 66 6f 72 20 74  tabse type for t
e7a0: 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20  his connection. 
e7b0: 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c   This value will
e7c0: 20 6f 6e 6c 79 0d 0a 20 20 20 20 2f 2f 2f 20 62   only..    /// b
e7d0: 65 20 75 73 65 64 20 69 66 20 74 68 65 20 3c 73  e used if the <s
e7e0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
e7f0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55  onnectionFlags.U
e800: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65  seConnectionType
e810: 73 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 66  s" />..    /// f
e820: 6c 61 67 20 69 73 20 73 65 74 2e 0d 0a 20 20 20  lag is set...   
e830: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e840: 0a 20 20 20 20 70 72 69 76 61 74 65 20 44 62 54  .    private DbT
e850: 79 70 65 3f 20 5f 64 65 66 61 75 6c 74 44 62 54  ype? _defaultDbT
e860: 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ype;....    /// 
e870: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
e880: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 64  // The default d
e890: 61 74 61 62 73 65 20 74 79 70 65 20 6e 61 6d 65  atabse type name
e8a0: 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65 63   for this connec
e8b0: 74 69 6f 6e 2e 20 20 54 68 69 73 20 76 61 6c 75  tion.  This valu
e8c0: 65 20 77 69 6c 6c 20 6f 6e 6c 79 0d 0a 20 20 20  e will only..   
e8d0: 20 2f 2f 2f 20 62 65 20 75 73 65 64 20 69 66 20   /// be used if 
e8e0: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
e8f0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
e900: 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69  lags.UseConnecti
e910: 6f 6e 54 79 70 65 73 22 20 2f 3e 0d 0a 20 20 20  onTypes" />..   
e920: 20 2f 2f 2f 20 66 6c 61 67 20 69 73 20 73 65 74   /// flag is set
e930: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
e940: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61  mary>..    priva
e950: 74 65 20 73 74 72 69 6e 67 20 5f 64 65 66 61 75  te string _defau
e960: 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20  ltTypeName;.... 
e970: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e980: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61  ..    /// The na
e990: 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f  me of the VFS to
e9a0: 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 6f 70   be used when op
e9b0: 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ening the databa
e9c0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  se connection...
e9d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e9e0: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
e9f0: 73 74 72 69 6e 67 20 5f 76 66 73 4e 61 6d 65 3b  string _vfsName;
ea00: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
ea10: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
ea20: 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 74  efault command t
ea30: 69 6d 65 6f 75 74 0d 0a 20 20 20 20 2f 2f 2f 20  imeout..    /// 
ea40: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ea50: 70 72 69 76 61 74 65 20 69 6e 74 20 5f 64 65 66  private int _def
ea60: 61 75 6c 74 54 69 6d 65 6f 75 74 20 3d 20 44 65  aultTimeout = De
ea70: 66 61 75 6c 74 43 6f 6e 6e 65 63 74 69 6f 6e 54  faultConnectionT
ea80: 69 6d 65 6f 75 74 3b 0d 0a 0d 0a 20 20 20 20 2f  imeout;....    /
ea90: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
eaa0: 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
eab0: 74 20 62 75 73 79 20 74 69 6d 65 6f 75 74 20 74  t busy timeout t
eac0: 6f 20 75 73 65 20 77 69 74 68 20 74 68 65 20 53  o use with the S
ead0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
eae0: 72 79 2e 20 20 54 68 69 73 20 69 73 0d 0a 20 20  ry.  This is..  
eaf0: 20 20 2f 2f 2f 20 6f 6e 6c 79 20 75 73 65 64 20    /// only used 
eb00: 77 68 65 6e 20 6f 70 65 6e 69 6e 67 20 61 20 63  when opening a c
eb10: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
eb20: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
eb30: 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 20      private int 
eb40: 5f 62 75 73 79 54 69 6d 65 6f 75 74 20 3d 20 44  _busyTimeout = D
eb50: 65 66 61 75 6c 74 42 75 73 79 54 69 6d 65 6f 75  efaultBusyTimeou
eb60: 74 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46  t;....#if !PLATF
eb70: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
eb80: 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  WORK..    /// <s
eb90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
eba0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 77 61 69   The default wai
ebb0: 74 20 74 69 6d 65 6f 75 74 20 74 6f 20 75 73 65  t timeout to use
ebc0: 20 77 69 74 68 20 3c 73 65 65 20 63 72 65 66 3d   with <see cref=
ebd0: 22 57 61 69 74 46 6f 72 45 6e 6c 69 73 74 6d 65  "WaitForEnlistme
ebe0: 6e 74 52 65 73 65 74 22 20 2f 3e 0d 0a 20 20 20  ntReset" />..   
ebf0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 20 20 54 68   /// method.  Th
ec00: 69 73 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20  is is only used 
ec10: 77 68 65 6e 20 77 61 69 74 69 6e 67 20 66 6f 72  when waiting for
ec20: 20 74 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74 20   the enlistment 
ec30: 74 6f 20 62 65 20 72 65 73 65 74 0d 0a 20 20 20  to be reset..   
ec40: 20 2f 2f 2f 20 70 72 69 6f 72 20 74 6f 20 65 6e   /// prior to en
ec50: 6c 69 73 74 69 6e 67 20 69 6e 20 61 20 74 72 61  listing in a tra
ec60: 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68  nsaction, and th
ec70: 65 6e 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65  en only when the
ec80: 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20   appropriate..  
ec90: 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e    /// connection
eca0: 20 66 6c 61 67 20 69 73 20 73 65 74 2e 0d 0a 20   flag is set... 
ecb0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ecc0: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 69  >..    private i
ecd0: 6e 74 20 5f 77 61 69 74 54 69 6d 65 6f 75 74 20  nt _waitTimeout 
ece0: 3d 20 44 65 66 61 75 6c 74 57 61 69 74 54 69 6d  = DefaultWaitTim
ecf0: 65 6f 75 74 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  eout;..#endif...
ed00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
ed10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
ed20: 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
ed30: 66 20 72 65 74 72 69 65 73 20 77 68 65 6e 20 70  f retries when p
ed40: 72 65 70 61 72 69 6e 67 20 53 51 4c 20 74 6f 20  reparing SQL to 
ed50: 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68  be executed.  Th
ed60: 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 72 6d  is..    /// norm
ed70: 61 6c 6c 79 20 6f 6e 6c 79 20 61 70 70 6c 69 65  ally only applie
ed80: 73 20 74 6f 20 70 72 65 70 61 72 61 74 69 6f 6e  s to preparation
ed90: 20 65 72 72 6f 72 73 20 72 65 73 75 6c 74 69 6e   errors resultin
eda0: 67 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  g from the datab
edb0: 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 63 68  ase..    /// sch
edc0: 65 6d 61 20 62 65 69 6e 67 20 63 68 61 6e 67 65  ema being change
edd0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
ede0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
edf0: 72 6e 61 6c 20 69 6e 74 20 5f 70 72 65 70 61 72  rnal int _prepar
ee00: 65 52 65 74 72 69 65 73 20 3d 20 44 65 66 61 75  eRetries = Defau
ee10: 6c 74 50 72 65 70 61 72 65 52 65 74 72 69 65 73  ltPrepareRetries
ee20: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
ee30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
ee40: 54 68 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20  The approximate 
ee50: 6e 75 6d 62 65 72 20 6f 66 20 76 69 72 74 75 61  number of virtua
ee60: 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
ee70: 63 74 69 6f 6e 73 20 62 65 74 77 65 65 6e 20 70  ctions between p
ee80: 72 6f 67 72 65 73 73 0d 0a 20 20 20 20 2f 2f 2f  rogress..    ///
ee90: 20 65 76 65 6e 74 73 2e 20 20 49 6e 20 6f 72 64   events.  In ord
eea0: 65 72 20 66 6f 72 20 70 72 6f 67 72 65 73 73 20  er for progress 
eeb0: 65 76 65 6e 74 73 20 74 6f 20 61 63 74 75 61 6c  events to actual
eec0: 6c 79 20 66 69 72 65 2c 20 74 68 65 20 65 76 65  ly fire, the eve
eed0: 6e 74 20 68 61 6e 64 6c 65 72 0d 0a 20 20 20 20  nt handler..    
eee0: 2f 2f 2f 20 6d 75 73 74 20 62 65 20 61 64 64 65  /// must be adde
eef0: 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72  d to the <see cr
ef00: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
ef10: 74 69 6f 6e 2e 50 72 6f 67 72 65 73 73 22 20 2f  tion.Progress" /
ef20: 3e 20 65 76 65 6e 74 20 61 73 0d 0a 20 20 20 20  > event as..    
ef30: 2f 2f 2f 20 77 65 6c 6c 2e 20 20 54 68 69 73 20  /// well.  This 
ef40: 76 61 6c 75 65 20 77 69 6c 6c 20 6f 6e 6c 79 20  value will only 
ef50: 62 65 20 75 73 65 64 20 77 68 65 6e 20 6f 70 65  be used when ope
ef60: 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ning the databas
ef70: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
ef80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76  mmary>..    priv
ef90: 61 74 65 20 69 6e 74 20 5f 70 72 6f 67 72 65 73  ate int _progres
efa0: 73 4f 70 73 20 3d 20 44 65 66 61 75 6c 74 50 72  sOps = DefaultPr
efb0: 6f 67 72 65 73 73 4f 70 73 3b 0d 0a 0d 0a 20 20  ogressOps;....  
efc0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
efd0: 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
efe0: 6f 20 69 66 20 74 68 65 20 62 75 69 6c 74 2d 69  o if the built-i
eff0: 6e 20 28 69 2e 65 2e 20 66 72 61 6d 65 77 6f 72  n (i.e. framewor
f000: 6b 20 70 72 6f 76 69 64 65 64 29 20 63 6f 6e 6e  k provided) conn
f010: 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 0d 0a 20  ection string.. 
f020: 20 20 20 2f 2f 2f 20 70 61 72 73 65 72 20 73 68     /// parser sh
f030: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 77 68 65  ould be used whe
f040: 6e 20 6f 70 65 6e 69 6e 67 20 74 68 65 20 63 6f  n opening the co
f050: 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  nnection...    /
f060: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
f070: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
f080: 5f 70 61 72 73 65 56 69 61 46 72 61 6d 65 77 6f  _parseViaFramewo
f090: 72 6b 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  rk;....    inter
f0a0: 6e 61 6c 20 62 6f 6f 6c 20 5f 62 69 6e 61 72 79  nal bool _binary
f0b0: 47 75 69 64 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74  Guid;....    int
f0c0: 65 72 6e 61 6c 20 69 6e 74 20 5f 76 65 72 73 69  ernal int _versi
f0d0: 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61  on;....    priva
f0e0: 74 65 20 65 76 65 6e 74 20 53 51 4c 69 74 65 50  te event SQLiteP
f0f0: 72 6f 67 72 65 73 73 45 76 65 6e 74 48 61 6e 64  rogressEventHand
f100: 6c 65 72 20 5f 70 72 6f 67 72 65 73 73 48 61 6e  ler _progressHan
f110: 64 6c 65 72 3b 0d 0a 20 20 20 20 70 72 69 76 61  dler;..    priva
f120: 74 65 20 65 76 65 6e 74 20 53 51 4c 69 74 65 41  te event SQLiteA
f130: 75 74 68 6f 72 69 7a 65 72 45 76 65 6e 74 48 61  uthorizerEventHa
f140: 6e 64 6c 65 72 20 5f 61 75 74 68 6f 72 69 7a 65  ndler _authorize
f150: 72 48 61 6e 64 6c 65 72 3b 0d 0a 20 20 20 20 70  rHandler;..    p
f160: 72 69 76 61 74 65 20 65 76 65 6e 74 20 53 51 4c  rivate event SQL
f170: 69 74 65 55 70 64 61 74 65 45 76 65 6e 74 48 61  iteUpdateEventHa
f180: 6e 64 6c 65 72 20 5f 75 70 64 61 74 65 48 61 6e  ndler _updateHan
f190: 64 6c 65 72 3b 0d 0a 20 20 20 20 70 72 69 76 61  dler;..    priva
f1a0: 74 65 20 65 76 65 6e 74 20 53 51 4c 69 74 65 43  te event SQLiteC
f1b0: 6f 6d 6d 69 74 48 61 6e 64 6c 65 72 20 5f 63 6f  ommitHandler _co
f1c0: 6d 6d 69 74 48 61 6e 64 6c 65 72 3b 0d 0a 20 20  mmitHandler;..  
f1d0: 20 20 70 72 69 76 61 74 65 20 65 76 65 6e 74 20    private event 
f1e0: 53 51 4c 69 74 65 54 72 61 63 65 45 76 65 6e 74  SQLiteTraceEvent
f1f0: 48 61 6e 64 6c 65 72 20 5f 74 72 61 63 65 48 61  Handler _traceHa
f200: 6e 64 6c 65 72 3b 0d 0a 20 20 20 20 70 72 69 76  ndler;..    priv
f210: 61 74 65 20 65 76 65 6e 74 20 45 76 65 6e 74 48  ate event EventH
f220: 61 6e 64 6c 65 72 20 5f 72 6f 6c 6c 62 61 63 6b  andler _rollback
f230: 48 61 6e 64 6c 65 72 3b 0d 0a 0d 0a 20 20 20 20  Handler;....    
f240: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 50 72  private SQLitePr
f250: 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 20 5f  ogressCallback _
f260: 70 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b  progressCallback
f270: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 53  ;..    private S
f280: 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 43  QLiteAuthorizerC
f290: 61 6c 6c 62 61 63 6b 20 5f 61 75 74 68 6f 72 69  allback _authori
f2a0: 7a 65 72 43 61 6c 6c 62 61 63 6b 3b 0d 0a 20 20  zerCallback;..  
f2b0: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
f2c0: 55 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 20 5f  UpdateCallback _
f2d0: 75 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 3b 0d  updateCallback;.
f2e0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c  .    private SQL
f2f0: 69 74 65 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63  iteCommitCallbac
f300: 6b 20 5f 63 6f 6d 6d 69 74 43 61 6c 6c 62 61 63  k _commitCallbac
f310: 6b 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  k;..    private 
f320: 53 51 4c 69 74 65 54 72 61 63 65 43 61 6c 6c 62  SQLiteTraceCallb
f330: 61 63 6b 20 5f 74 72 61 63 65 43 61 6c 6c 62 61  ack _traceCallba
f340: 63 6b 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ck;..    private
f350: 20 53 51 4c 69 74 65 52 6f 6c 6c 62 61 63 6b 43   SQLiteRollbackC
f360: 61 6c 6c 62 61 63 6b 20 5f 72 6f 6c 6c 62 61 63  allback _rollbac
f370: 6b 43 61 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20  kCallback;..    
f380: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
f390: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3f0: 2f 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  /....    private
f400: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
f410: 65 74 44 65 66 61 75 6c 74 43 61 74 61 6c 6f 67  etDefaultCatalog
f420: 4e 61 6d 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  Name()..    {.. 
f430: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64         return _d
f440: 65 66 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d  efaultCatalogNam
f450: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
f460: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
f4d0: 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 44 65  static bool IsDe
f4e0: 66 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d 65  faultCatalogName
f4f0: 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
f500: 67 20 63 61 74 61 6c 6f 67 4e 61 6d 65 0d 0a 20  g catalogName.. 
f510: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
f520: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
f530: 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 63  String.Compare(c
f540: 61 74 61 6c 6f 67 4e 61 6d 65 2c 20 47 65 74 44  atalogName, GetD
f550: 65 66 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d  efaultCatalogNam
f560: 65 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e(),..          
f570: 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73    StringComparis
f580: 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
f590: 43 61 73 65 29 20 3d 3d 20 30 3b 0d 0a 20 20 20  Case) == 0;..   
f5a0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f610: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
f620: 73 74 72 69 6e 67 20 47 65 74 54 65 6d 70 6f 72  string GetTempor
f630: 61 72 79 43 61 74 61 6c 6f 67 4e 61 6d 65 28 29  aryCatalogName()
f640: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
f650: 20 72 65 74 75 72 6e 20 5f 74 65 6d 70 6f 72 61   return _tempora
f660: 72 79 43 61 74 61 6c 6f 67 4e 61 6d 65 3b 0d 0a  ryCatalogName;..
f670: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
f680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f6e0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
f6f0: 69 63 20 62 6f 6f 6c 20 49 73 54 65 6d 70 6f 72  ic bool IsTempor
f700: 61 72 79 43 61 74 61 6c 6f 67 4e 61 6d 65 28 0d  aryCatalogName(.
f710: 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
f720: 63 61 74 61 6c 6f 67 4e 61 6d 65 0d 0a 20 20 20  catalogName..   
f730: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
f740: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
f750: 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 63 61 74  ring.Compare(cat
f760: 61 6c 6f 67 4e 61 6d 65 2c 20 47 65 74 54 65 6d  alogName, GetTem
f770: 70 6f 72 61 72 79 43 61 74 61 6c 6f 67 4e 61 6d  poraryCatalogNam
f780: 65 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e(),..          
f790: 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73    StringComparis
f7a0: 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
f7b0: 43 61 73 65 29 20 3d 3d 20 30 3b 0d 0a 20 20 20  Case) == 0;..   
f7c0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
f7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f830: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
f840: 73 74 72 69 6e 67 20 47 65 74 4d 61 73 74 65 72  string GetMaster
f850: 54 61 62 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20  TableName(..    
f860: 20 20 20 20 62 6f 6f 6c 20 74 65 6d 70 6f 72 61      bool tempora
f870: 72 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  ry..        ).. 
f880: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
f890: 74 75 72 6e 20 74 65 6d 70 6f 72 61 72 79 20 3f  turn temporary ?
f8a0: 20 5f 74 65 6d 70 6f 72 61 72 79 4d 61 73 74 65   _temporaryMaste
f8b0: 72 54 61 62 6c 65 4e 61 6d 65 20 3a 20 5f 64 65  rTableName : _de
f8c0: 66 61 75 6c 74 4d 61 73 74 65 72 54 61 62 6c 65  faultMasterTable
f8d0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  Name;..    }....
f8e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
f950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
f960: 2f 20 54 68 69 73 20 65 76 65 6e 74 20 69 73 20  / This event is 
f970: 72 61 69 73 65 64 20 77 68 65 6e 65 76 65 72 20  raised whenever 
f980: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
f990: 6f 70 65 6e 65 64 20 6f 72 20 63 6c 6f 73 65 64  opened or closed
f9a0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
f9b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
f9c0: 63 20 6f 76 65 72 72 69 64 65 20 65 76 65 6e 74  c override event
f9d0: 20 53 74 61 74 65 43 68 61 6e 67 65 45 76 65 6e   StateChangeEven
f9e0: 74 48 61 6e 64 6c 65 72 20 53 74 61 74 65 43 68  tHandler StateCh
f9f0: 61 6e 67 65 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ange;....    ///
fa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fa60: 20 20 20 20 2f 2f 2f 3c 6f 76 65 72 6c 6f 61 64      ///<overload
fa70: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73  s>..    /// Cons
fa80: 74 72 75 63 74 73 20 61 20 6e 65 77 20 53 51 4c  tructs a new SQL
fa90: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  iteConnection ob
faa0: 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ject..    /// </
fab0: 6f 76 65 72 6c 6f 61 64 73 3e 0d 0a 20 20 20 20  overloads>..    
fac0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
fad0: 20 20 20 2f 2f 2f 20 44 65 66 61 75 6c 74 20 63     /// Default c
fae0: 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  onstructor..    
faf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
fb00: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
fb10: 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 29 0d 0a 20  eConnection().. 
fb20: 20 20 20 20 20 3a 20 74 68 69 73 28 28 73 74 72       : this((str
fb30: 69 6e 67 29 6e 75 6c 6c 29 0d 0a 20 20 20 20 7b  ing)null)..    {
fb40: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
fb50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
fb60: 20 20 2f 2f 2f 20 49 6e 69 74 69 61 6c 69 7a 65    /// Initialize
fb70: 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  s the connection
fb80: 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
fb90: 69 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  ied connection s
fba0: 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tring...    /// 
fbb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
fbc0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
fbd0: 22 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  "connectionStrin
fbe0: 67 22 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  g">The connectio
fbf0: 6e 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 2e  n string to use.
fc00: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75  </param>..    pu
fc10: 62 6c 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65  blic SQLiteConne
fc20: 63 74 69 6f 6e 28 73 74 72 69 6e 67 20 63 6f 6e  ction(string con
fc30: 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 29 0d 0a  nectionString)..
fc40: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 63          : this(c
fc50: 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c  onnectionString,
fc60: 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 7b 0d 0a   false)..    {..
fc70: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
fc80: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d 0a 0d  thing...    }...
fc90: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
fca0: 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
fcb0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
fcc0: 20 20 20 2f 2f 2f 20 49 6e 69 74 69 61 6c 69 7a     /// Initializ
fcd0: 65 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  es the connectio
fce0: 6e 20 77 69 74 68 20 61 20 70 72 65 2d 65 78 69  n with a pre-exi
fcf0: 73 74 69 6e 67 20 6e 61 74 69 76 65 20 63 6f 6e  sting native con
fd00: 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e 0d  nection handle..
fd10: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 6f  .    /// This co
fd20: 6e 73 74 72 75 63 74 6f 72 20 6f 76 65 72 6c 6f  nstructor overlo
fd30: 61 64 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74  ad is intended t
fd40: 6f 20 62 65 20 75 73 65 64 20 6f 6e 6c 79 20 62  o be used only b
fd50: 79 20 74 68 65 20 70 72 69 76 61 74 65 0d 0a 20  y the private.. 
fd60: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
fd70: 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 2e 43  ="SQLiteModule.C
fd80: 72 65 61 74 65 4f 72 43 6f 6e 6e 65 63 74 22 20  reateOrConnect" 
fd90: 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
fda0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
fdb0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
fdc0: 61 6d 65 3d 22 64 62 22 3e 0d 0a 20 20 20 20 2f  ame="db">..    /
fdd0: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 63 6f  // The native co
fde0: 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20  nnection handle 
fdf0: 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  to use...    ///
fe00: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
fe10: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
fe20: 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  fileName">..    
fe30: 2f 2f 2f 20 54 68 65 20 66 69 6c 65 20 6e 61 6d  /// The file nam
fe40: 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
fe50: 74 6f 20 74 68 65 20 6e 61 74 69 76 65 20 63 6f  to the native co
fe60: 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 2e  nnection handle.
fe70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
fe80: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
fe90: 61 6d 20 6e 61 6d 65 3d 22 6f 77 6e 48 61 6e 64  am name="ownHand
fea0: 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  le">..    /// No
feb0: 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20 69  n-zero if this i
fec0: 6e 73 74 61 6e 63 65 20 6f 77 6e 73 20 74 68 65  nstance owns the
fed0: 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63 74 69   native connecti
fee0: 6f 6e 20 68 61 6e 64 6c 65 20 61 6e 64 0d 0a 20  on handle and.. 
fef0: 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 64 69     /// should di
ff00: 73 70 6f 73 65 20 6f 66 20 69 74 20 77 68 65 6e  spose of it when
ff10: 20 69 74 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72   it is no longer
ff20: 20 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f   needed...    //
ff30: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
ff40: 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 43  internal SQLiteC
ff50: 6f 6e 6e 65 63 74 69 6f 6e 28 49 6e 74 50 74 72  onnection(IntPtr
ff60: 20 64 62 2c 20 73 74 72 69 6e 67 20 66 69 6c 65   db, string file
ff70: 4e 61 6d 65 2c 20 62 6f 6f 6c 20 6f 77 6e 48 61  Name, bool ownHa
ff80: 6e 64 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 3a  ndle)..        :
ff90: 20 74 68 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a   this()..    {..
ffa0: 20 20 20 20 20 20 20 20 5f 73 71 6c 20 3d 20 6e          _sql = n
ffb0: 65 77 20 53 51 4c 69 74 65 33 28 0d 0a 20 20 20  ew SQLite3(..   
ffc0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
ffd0: 61 74 65 46 6f 72 6d 61 74 73 2e 44 65 66 61 75  ateFormats.Defau
ffe0: 6c 74 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  lt, DateTimeKind
fff0: 2e 55 6e 73 70 65 63 69 66 69 65 64 2c 20 6e 75  .Unspecified, nu
10000 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll,..           
10010 20 64 62 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 6f   db, fileName, o
10020 77 6e 48 61 6e 64 6c 65 29 3b 0d 0a 0d 0a 20 20  wnHandle);....  
10030 20 20 20 20 20 20 5f 66 6c 61 67 73 20 3d 20 53        _flags = S
10040 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
10050 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20  lags.None;....  
10060 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f        _connectio
10070 6e 53 74 61 74 65 20 3d 20 28 64 62 20 21 3d 20  nState = (db != 
10080 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20 3f 0d 0a  IntPtr.Zero) ?..
10090 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e 6e              Conn
100a0 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e  ectionState.Open
100b0 20 3a 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61   : ConnectionSta
100c0 74 65 2e 43 6c 6f 73 65 64 3b 0d 0a 0d 0a 20 20  te.Closed;....  
100d0 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f        _connectio
100e0 6e 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 20  nString = null; 
100f0 2f 2a 20 75 6e 6b 6e 6f 77 6e 20 2a 2f 0d 0a 0d  /* unknown */...
10100 0a 23 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20  .#if DEBUG..    
10110 20 20 20 20 5f 64 65 62 75 67 53 74 72 69 6e 67      _debugString
10120 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73   = HelperMethods
10130 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
10140 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
10150 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
10160 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
10170 20 20 20 20 20 20 20 22 64 62 20 3d 20 7b 30 7d         "db = {0}
10180 2c 20 66 69 6c 65 4e 61 6d 65 20 3d 20 7b 31 7d  , fileName = {1}
10190 2c 20 6f 77 6e 48 61 6e 64 6c 65 20 3d 20 7b 32  , ownHandle = {2
101a0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
101b0 20 64 62 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 6f   db, fileName, o
101c0 77 6e 48 61 6e 64 6c 65 29 3b 0d 0a 23 65 6e 64  wnHandle);..#end
101d0 69 66 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69  if..    }..#endi
101e0 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  f....    /// <su
101f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10200 49 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20  Initializes the 
10210 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20  connection with 
10220 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f  the specified co
10230 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e  nnection string.
10240 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
10250 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
10260 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
10270 63 74 69 6f 6e 53 74 72 69 6e 67 22 3e 0d 0a 20  ctionString">.. 
10280 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
10290 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 74 6f 20  ction string to 
102a0 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  use...    /// </
102b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
102c0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 61 72  <param name="par
102d0 73 65 56 69 61 46 72 61 6d 65 77 6f 72 6b 22 3e  seViaFramework">
102e0 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
102f0 72 6f 20 74 6f 20 70 61 72 73 65 20 74 68 65 20  ro to parse the 
10300 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
10310 67 20 75 73 69 6e 67 20 74 68 65 20 62 75 69 6c  g using the buil
10320 74 2d 69 6e 20 28 69 2e 65 2e 0d 0a 20 20 20 20  t-in (i.e...    
10330 2f 2f 2f 20 66 72 61 6d 65 77 6f 72 6b 20 70 72  /// framework pr
10340 6f 76 69 64 65 64 29 20 70 61 72 73 65 72 20 77  ovided) parser w
10350 68 65 6e 20 6f 70 65 6e 69 6e 67 20 74 68 65 20  hen opening the 
10360 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
10370 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
10380 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
10390 43 6f 6e 6e 65 63 74 69 6f 6e 28 73 74 72 69 6e  Connection(strin
103a0 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  g connectionStri
103b0 6e 67 2c 20 62 6f 6f 6c 20 70 61 72 73 65 56 69  ng, bool parseVi
103c0 61 46 72 61 6d 65 77 6f 72 6b 29 0d 0a 20 20 20  aFramework)..   
103d0 20 7b 0d 0a 20 20 20 20 20 20 5f 6e 6f 44 69 73   {..      _noDis
103e0 70 6f 73 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  pose = false;...
103f0 0a 23 69 66 20 28 53 51 4c 49 54 45 5f 53 54 41  .#if (SQLITE_STA
10400 4e 44 41 52 44 20 7c 7c 20 55 53 45 5f 49 4e 54  NDARD || USE_INT
10410 45 52 4f 50 5f 44 4c 4c 20 7c 7c 20 50 4c 41 54  EROP_DLL || PLAT
10420 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
10430 45 57 4f 52 4b 29 20 26 26 20 50 52 45 4c 4f 41  EWORK) && PRELOA
10440 44 5f 4e 41 54 49 56 45 5f 4c 49 42 52 41 52 59  D_NATIVE_LIBRARY
10450 0d 0a 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61  ..      UnsafeNa
10460 74 69 76 65 4d 65 74 68 6f 64 73 2e 49 6e 69 74  tiveMethods.Init
10470 69 61 6c 69 7a 65 28 29 3b 0d 0a 23 65 6e 64 69  ialize();..#endi
10480 66 0d 0a 0d 0a 20 20 20 20 20 20 53 51 4c 69 74  f....      SQLit
10490 65 4c 6f 67 2e 49 6e 69 74 69 61 6c 69 7a 65 28  eLog.Initialize(
104a0 74 79 70 65 6f 66 28 53 51 4c 69 74 65 43 6f 6e  typeof(SQLiteCon
104b0 6e 65 63 74 69 6f 6e 29 2e 4e 61 6d 65 29 3b 0d  nection).Name);.
104c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
104d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
104e0 4b 20 26 26 20 21 49 4e 54 45 52 4f 50 5f 4c 45  K && !INTEROP_LE
104f0 47 41 43 59 5f 43 4c 4f 53 45 20 26 26 20 53 51  GACY_CLOSE && SQ
10500 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
10510 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
10520 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 69 66  / NOTE: Check if
10530 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f   the sqlite3_clo
10540 73 65 5f 76 32 28 29 20 6e 61 74 69 76 65 20 41  se_v2() native A
10550 50 49 20 73 68 6f 75 6c 64 20 62 65 20 61 76 61  PI should be ava
10560 69 6c 61 62 6c 65 0d 0a 20 20 20 20 20 20 2f 2f  ilable..      //
10570 20 20 20 20 20 20 20 74 6f 20 75 73 65 2e 20 20         to use.  
10580 54 68 69 73 20 6d 75 73 74 20 62 65 20 64 6f 6e  This must be don
10590 65 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 62 65  e dynamically be
105a0 63 61 75 73 65 20 74 68 65 20 64 65 6c 65 67 61  cause the delega
105b0 74 65 20 73 65 74 0d 0a 20 20 20 20 20 20 2f 2f  te set..      //
105c0 20 20 20 20 20 20 20 68 65 72 65 20 69 73 20 75         here is u
105d0 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  sed by the SQLit
105e0 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
105f0 65 20 63 6c 61 73 73 2c 20 77 68 69 63 68 20 69  e class, which i
10600 73 20 61 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  s a..      //   
10610 20 20 20 20 43 72 69 74 69 63 61 6c 48 61 6e 64      CriticalHand
10620 6c 65 20 64 65 72 69 76 65 64 20 63 6c 61 73 73  le derived class
10630 20 28 69 2e 65 2e 20 70 72 6f 74 65 63 74 65 64   (i.e. protected
10640 20 62 79 20 61 20 63 6f 6e 73 74 72 61 69 6e 65   by a constraine
10650 64 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  d..      //     
10660 20 20 65 78 65 63 75 74 69 6f 6e 20 72 65 67 69    execution regi
10670 6f 6e 29 2e 20 20 54 68 65 72 65 66 6f 72 65 2c  on).  Therefore,
10680 20 69 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69   if the underlyi
10690 6e 67 20 6e 61 74 69 76 65 20 65 6e 74 72 79 0d  ng native entry.
106a0 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
106b0 70 6f 69 6e 74 20 69 73 20 75 6e 61 76 61 69 6c  point is unavail
106c0 61 62 6c 65 2c 20 61 6e 20 65 78 63 65 70 74 69  able, an excepti
106d0 6f 6e 20 77 69 6c 6c 20 62 65 20 72 61 69 73 65  on will be raise
106e0 64 20 65 76 65 6e 20 69 66 20 69 74 20 69 73 0d  d even if it is.
106f0 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
10700 6e 65 76 65 72 20 61 63 74 75 61 6c 6c 79 20 63  never actually c
10710 61 6c 6c 65 64 20 28 69 2e 65 2e 20 62 65 63 61  alled (i.e. beca
10720 75 73 65 20 74 68 65 20 72 75 6e 74 69 6d 65 20  use the runtime 
10730 65 61 67 65 72 6c 79 20 70 72 65 70 61 72 65 73  eagerly prepares
10740 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
10750 20 61 6c 6c 20 74 68 65 20 6d 65 74 68 6f 64 73   all the methods
10760 20 69 6e 20 74 68 65 20 63 61 6c 6c 20 67 72 61   in the call gra
10770 70 68 20 6f 66 20 74 68 65 20 63 6f 6e 73 74 72  ph of the constr
10780 61 69 6e 65 64 20 65 78 65 63 75 74 69 6f 6e 0d  ained execution.
10790 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
107a0 72 65 67 69 6f 6e 29 2e 0d 0a 20 20 20 20 20 20  region)...      
107b0 2f 2f 0d 0a 20 20 20 20 20 20 6c 6f 63 6b 20 28  //..      lock (
107c0 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  _syncRoot)..    
107d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
107e0 66 20 28 5f 76 65 72 73 69 6f 6e 4e 75 6d 62 65  f (_versionNumbe
107f0 72 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  r == 0)..       
10800 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10810 20 20 20 20 5f 76 65 72 73 69 6f 6e 4e 75 6d 62      _versionNumb
10820 65 72 20 3d 20 53 51 4c 69 74 65 33 2e 53 51 4c  er = SQLite3.SQL
10830 69 74 65 56 65 72 73 69 6f 6e 4e 75 6d 62 65 72  iteVersionNumber
10840 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
10850 20 20 20 69 66 20 28 5f 76 65 72 73 69 6f 6e 4e     if (_versionN
10860 75 6d 62 65 72 20 3e 3d 20 33 30 30 37 30 31 34  umber >= 3007014
10870 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10880 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
10890 63 74 69 6f 6e 48 61 6e 64 6c 65 2e 63 6c 6f 73  ctionHandle.clos
108a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 53 51  eConnection = SQ
108b0 4c 69 74 65 42 61 73 65 2e 43 6c 6f 73 65 43 6f  LiteBase.CloseCo
108c0 6e 6e 65 63 74 69 6f 6e 56 32 3b 0d 0a 20 20 20  nnectionV2;..   
108d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
108e0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
108f0 20 20 20 5f 63 61 63 68 65 64 53 65 74 74 69 6e     _cachedSettin
10900 67 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e  gs = new Diction
10910 61 72 79 3c 73 74 72 69 6e 67 2c 20 6f 62 6a 65  ary<string, obje
10920 63 74 3e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ct>(..          
10930 6e 65 77 20 54 79 70 65 4e 61 6d 65 53 74 72 69  new TypeNameStri
10940 6e 67 43 6f 6d 70 61 72 65 72 28 29 29 3b 0d 0a  ngComparer());..
10950 0d 0a 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d  ..      _typeNam
10960 65 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 44  es = new SQLiteD
10970 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 20 20 20  bTypeMap();..   
10980 20 20 20 5f 74 79 70 65 43 61 6c 6c 62 61 63 6b     _typeCallback
10990 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 54 79  s = new SQLiteTy
109a0 70 65 43 61 6c 6c 62 61 63 6b 73 4d 61 70 28 29  peCallbacksMap()
109b0 3b 0d 0a 20 20 20 20 20 20 5f 70 61 72 73 65 56  ;..      _parseV
109c0 69 61 46 72 61 6d 65 77 6f 72 6b 20 3d 20 70 61  iaFramework = pa
109d0 72 73 65 56 69 61 46 72 61 6d 65 77 6f 72 6b 3b  rseViaFramework;
109e0 0d 0a 20 20 20 20 20 20 5f 66 6c 61 67 73 20 3d  ..      _flags =
109f0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
10a00 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 20 20  nFlags.None;..  
10a10 20 20 20 20 5f 64 65 66 61 75 6c 74 44 62 54 79      _defaultDbTy
10a20 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  pe = null;..    
10a30 20 20 5f 64 65 66 61 75 6c 74 54 79 70 65 4e 61    _defaultTypeNa
10a40 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
10a50 20 20 5f 76 66 73 4e 61 6d 65 20 3d 20 6e 75 6c    _vfsName = nul
10a60 6c 3b 0d 0a 20 20 20 20 20 20 5f 63 6f 6e 6e 65  l;..      _conne
10a70 63 74 69 6f 6e 53 74 61 74 65 20 3d 20 43 6f 6e  ctionState = Con
10a80 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e 43 6c 6f  nectionState.Clo
10a90 73 65 64 3b 0d 0a 20 20 20 20 20 20 5f 63 6f 6e  sed;..      _con
10aa0 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20  nectionString = 
10ab0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 69  null;....      i
10ac0 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  f (connectionStr
10ad0 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing != null)..  
10ae0 20 20 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e        Connection
10af0 53 74 72 69 6e 67 20 3d 20 63 6f 6e 6e 65 63 74  String = connect
10b00 69 6f 6e 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20  ionString;..    
10b10 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
10b20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10b30 43 6c 6f 6e 65 73 20 74 68 65 20 73 65 74 74 69  Clones the setti
10b40 6e 67 73 20 61 6e 64 20 63 6f 6e 6e 65 63 74 69  ngs and connecti
10b50 6f 6e 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 61  on string from a
10b60 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
10b70 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 65  ction.  If the e
10b80 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69  xisting connecti
10b90 6f 6e 20 69 73 20 61 6c 72 65 61 64 79 20 6f 70  on is already op
10ba0 65 6e 2c 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f  en, this..    //
10bb0 2f 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  / function will 
10bc0 6f 70 65 6e 20 69 74 73 20 6f 77 6e 20 63 6f 6e  open its own con
10bd0 6e 65 63 74 69 6f 6e 2c 20 65 6e 75 6d 65 72 61  nection, enumera
10be0 74 65 20 61 6e 79 20 61 74 74 61 63 68 65 64 20  te any attached 
10bf0 64 61 74 61 62 61 73 65 73 20 6f 66 20 74 68 65  databases of the
10c00 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6e 6e 65 63   original connec
10c10 74 69 6f 6e 2c 20 61 6e 64 20 61 75 74 6f 6d 61  tion, and automa
10c20 74 69 63 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 2f  tically..    ///
10c30 20 61 74 74 61 63 68 20 74 6f 20 74 68 65 6d 2e   attach to them.
10c40 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
10c50 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
10c60 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65  aram name="conne
10c70 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65  ction">The conne
10c80 63 74 69 6f 6e 20 74 6f 20 63 6f 70 79 20 74 68  ction to copy th
10c90 65 20 73 65 74 74 69 6e 67 73 20 66 72 6f 6d 2e  e settings from.
10ca0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75  </param>..    pu
10cb0 62 6c 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65  blic SQLiteConne
10cc0 63 74 69 6f 6e 28 53 51 4c 69 74 65 43 6f 6e 6e  ction(SQLiteConn
10cd0 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
10ce0 6e 29 0d 0a 20 20 20 20 20 20 3a 20 74 68 69 73  n)..      : this
10cf0 28 63 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f 6e 6e  (connection.Conn
10d00 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c 20 63 6f  ectionString, co
10d10 6e 6e 65 63 74 69 6f 6e 2e 50 61 72 73 65 56 69  nnection.ParseVi
10d20 61 46 72 61 6d 65 77 6f 72 6b 29 0d 0a 20 20 20  aFramework)..   
10d30 20 7b 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20   {..#if DEBUG.. 
10d40 20 20 20 20 20 5f 64 65 62 75 67 53 74 72 69 6e       _debugStrin
10d50 67 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f  g = connection._
10d60 64 65 62 75 67 53 74 72 69 6e 67 3b 0d 0a 23 65  debugString;..#e
10d70 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 69 66  ndif....      if
10d80 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 2e 53 74 61   (connection.Sta
10d90 74 65 20 3d 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e  te == Connection
10da0 53 74 61 74 65 2e 4f 70 65 6e 29 0d 0a 20 20 20  State.Open)..   
10db0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 4f 70     {..        Op
10dc0 65 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  en();....       
10dd0 20 2f 2f 20 52 65 61 74 74 61 63 68 20 61 6c 6c   // Reattach all
10de0 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
10df0 73 65 73 20 66 72 6f 6d 20 74 68 65 20 65 78 69  ses from the exi
10e00 73 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e  sting connection
10e10 0d 0a 20 20 20 20 20 20 20 20 75 73 69 6e 67 20  ..        using 
10e20 28 44 61 74 61 54 61 62 6c 65 20 74 62 6c 20 3d  (DataTable tbl =
10e30 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 47 65 74 53   connection.GetS
10e40 63 68 65 6d 61 28 22 43 61 74 61 6c 6f 67 73 22  chema("Catalogs"
10e50 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
10e60 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
10e70 20 28 44 61 74 61 52 6f 77 20 72 6f 77 20 69 6e   (DataRow row in
10e80 20 74 62 6c 2e 52 6f 77 73 29 0d 0a 20 20 20 20   tbl.Rows)..    
10e90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10ea0 20 20 20 20 20 73 74 72 69 6e 67 20 73 74 72 20       string str 
10eb0 3d 20 72 6f 77 5b 30 5d 2e 54 6f 53 74 72 69 6e  = row[0].ToStrin
10ec0 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  g();....        
10ed0 20 20 20 20 69 66 20 28 21 49 73 44 65 66 61 75      if (!IsDefau
10ee0 6c 74 43 61 74 61 6c 6f 67 4e 61 6d 65 28 73 74  ltCatalogName(st
10ef0 72 29 20 26 26 20 21 49 73 54 65 6d 70 6f 72 61  r) && !IsTempora
10f00 72 79 43 61 74 61 6c 6f 67 4e 61 6d 65 28 73 74  ryCatalogName(st
10f10 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r))..           
10f20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10f30 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43    using (SQLiteC
10f40 6f 6d 6d 61 6e 64 20 63 6d 64 20 3d 20 43 72 65  ommand cmd = Cre
10f50 61 74 65 43 6f 6d 6d 61 6e 64 28 29 29 0d 0a 20  ateCommand()).. 
10f60 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f80 63 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 20  cmd.CommandText 
10f90 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  = HelperMethods.
10fa0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
10fb0 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
10fc0 6e 74 43 75 6c 74 75 72 65 2c 20 22 41 54 54 41  ntCulture, "ATTA
10fd0 43 48 20 44 41 54 41 42 41 53 45 20 27 7b 30 7d  CH DATABASE '{0}
10fe0 27 20 41 53 20 5b 7b 31 7d 5d 22 2c 20 72 6f 77  ' AS [{1}]", row
10ff0 5b 31 5d 2c 20 72 6f 77 5b 30 5d 29 3b 0d 0a 20  [1], row[0]);.. 
11000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11010 6d 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  md.ExecuteNonQue
11020 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
11030 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11040 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
11050 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
11060 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
11070 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
11080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
110e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
110f0 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 6c  // Attempts to l
11100 6f 6f 6b 75 70 20 74 68 65 20 6e 61 74 69 76 65  ookup the native
11110 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74   handle associat
11120 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6e 6e  ed with the conn
11130 65 63 74 69 6f 6e 2e 20 20 41 6e 20 65 78 63 65  ection.  An exce
11140 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20  ption will..    
11150 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 20 69 66  /// be thrown if
11160 20 74 68 69 73 20 63 61 6e 6e 6f 74 20 62 65 20   this cannot be 
11170 61 63 63 6f 6d 70 6c 69 73 68 65 64 2e 0d 0a 20  accomplished... 
11180 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11190 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
111a0 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
111b0 6f 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  on">..    /// Th
111c0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 73 73  e connection ass
111d0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
111e0 20 64 65 73 69 72 65 64 20 6e 61 74 69 76 65 20   desired native 
111f0 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  handle...    ///
11200 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
11210 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
11220 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
11230 20 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74   handle associat
11240 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6e 6e  ed with the conn
11250 65 63 74 69 6f 6e 20 6f 72 20 3c 73 65 65 20 63  ection or <see c
11260 72 65 66 3d 22 49 6e 74 50 74 72 2e 5a 65 72 6f  ref="IntPtr.Zero
11270 22 20 2f 3e 20 69 66 20 69 74 0d 0a 20 20 20 20  " /> if it..    
11280 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
11290 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f  termined...    /
112a0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
112b0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
112c0 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  c SQLiteConnecti
112d0 6f 6e 48 61 6e 64 6c 65 20 47 65 74 4e 61 74 69  onHandle GetNati
112e0 76 65 48 61 6e 64 6c 65 28 0d 0a 20 20 20 20 20  veHandle(..     
112f0 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
11300 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a  ion connection..
11310 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
11320 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f  ..        if (co
11330 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  nnection == null
11340 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  )..            t
11350 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
11360 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
11370 63 6f 6e 6e 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d  connection");...
11380 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 33  .        SQLite3
11390 20 73 71 6c 69 74 65 33 20 3d 20 63 6f 6e 6e 65   sqlite3 = conne
113a0 63 74 69 6f 6e 2e 5f 73 71 6c 20 61 73 20 53 51  ction._sql as SQ
113b0 4c 69 74 65 33 3b 0d 0a 0d 0a 20 20 20 20 20 20  Lite3;....      
113c0 20 20 69 66 20 28 73 71 6c 69 74 65 33 20 3d 3d    if (sqlite3 ==
113d0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
113e0 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
113f0 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
11400 63 65 70 74 69 6f 6e 28 22 43 6f 6e 6e 65 63 74  ception("Connect
11410 69 6f 6e 20 68 61 73 20 6e 6f 20 77 72 61 70 70  ion has no wrapp
11420 65 72 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  er");....       
11430 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
11440 6e 48 61 6e 64 6c 65 20 68 61 6e 64 6c 65 20 3d  nHandle handle =
11450 20 73 71 6c 69 74 65 33 2e 5f 73 71 6c 3b 0d 0a   sqlite3._sql;..
11460 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 68 61  ..        if (ha
11470 6e 64 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ndle == null).. 
11480 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
11490 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
114a0 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22  ationException("
114b0 43 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20 61  Connection has a
114c0 6e 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65  n invalid handle
114d0 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  .");....        
114e0 49 6e 74 50 74 72 20 68 61 6e 64 6c 65 50 74 72  IntPtr handlePtr
114f0 20 3d 20 68 61 6e 64 6c 65 3b 0d 0a 0d 0a 20 20   = handle;....  
11500 20 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65        if (handle
11510 50 74 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  Ptr == IntPtr.Ze
11520 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ro)..        {..
11530 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
11540 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
11550 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
11560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11570 20 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 20 68 61    "Connection ha
11580 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 68 61 6e  s an invalid han
11590 64 6c 65 20 70 6f 69 6e 74 65 72 2e 22 29 3b 0d  dle pointer.");.
115a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
115b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 61 6e        return han
115c0 64 6c 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  dle;..    }.... 
115d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
115e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
115f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
11640 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
11650 20 52 61 69 73 65 73 20 74 68 65 20 3c 73 65 65   Raises the <see
11660 20 63 72 65 66 3d 22 43 68 61 6e 67 65 64 22 20   cref="Changed" 
11670 2f 3e 20 65 76 65 6e 74 2e 0d 0a 20 20 20 20 2f  /> event...    /
11680 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11690 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
116a0 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
116b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
116c0 6e 6e 65 63 74 69 6f 6e 20 61 73 73 6f 63 69 61  nnection associa
116d0 74 65 64 20 77 69 74 68 20 74 68 69 73 20 65 76  ted with this ev
116e0 65 6e 74 2e 20 20 49 66 20 74 68 69 73 20 70 61  ent.  If this pa
116f0 72 61 6d 65 74 65 72 20 69 73 20 6e 6f 74 0d 0a  rameter is not..
11700 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 61 6e 64      /// null and
11710 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
11720 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 6e 6f 74  onnection cannot
11730 20 72 61 69 73 65 20 65 76 65 6e 74 73 2c 20 74   raise events, t
11740 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  hen the..    ///
11750 20 72 65 67 69 73 74 65 72 65 64 20 65 76 65 6e   registered even
11760 74 20 68 61 6e 64 6c 65 72 73 20 77 69 6c 6c 20  t handlers will 
11770 6e 6f 74 20 62 65 20 69 6e 76 6f 6b 65 64 2e 0d  not be invoked..
11780 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
11790 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
117a0 6d 20 6e 61 6d 65 3d 22 65 22 3e 0d 0a 20 20 20  m name="e">..   
117b0 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66   /// A <see cref
117c0 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  ="ConnectionEven
117d0 74 41 72 67 73 22 20 2f 3e 20 74 68 61 74 20 63  tArgs" /> that c
117e0 6f 6e 74 61 69 6e 73 20 74 68 65 20 65 76 65 6e  ontains the even
117f0 74 20 64 61 74 61 2e 0d 0a 20 20 20 20 2f 2f 2f  t data...    ///
11800 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69   </param>..    i
11810 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76  nternal static v
11820 6f 69 64 20 4f 6e 43 68 61 6e 67 65 64 28 0d 0a  oid OnChanged(..
11830 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
11840 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
11850 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 43 6f  ion,..        Co
11860 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67  nnectionEventArg
11870 73 20 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  s e..        )..
11880 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54      {..#if !PLAT
11890 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
118a0 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69  EWORK..        i
118b0 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21  f ((connection !
118c0 3d 20 6e 75 6c 6c 29 20 26 26 20 21 63 6f 6e 6e  = null) && !conn
118d0 65 63 74 69 6f 6e 2e 43 61 6e 52 61 69 73 65 45  ection.CanRaiseE
118e0 76 65 6e 74 73 29 0d 0a 20 20 20 20 20 20 20 20  vents)..        
118f0 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 23 65 6e      return;..#en
11900 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 53  dif....        S
11910 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45  QLiteConnectionE
11920 76 65 6e 74 48 61 6e 64 6c 65 72 20 68 61 6e 64  ventHandler hand
11930 6c 65 72 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lers;....       
11940 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74   lock (_syncRoot
11950 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
11960 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 68            if (_h
11970 61 6e 64 6c 65 72 73 20 21 3d 20 6e 75 6c 6c 29  andlers != null)
11980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11990 20 20 68 61 6e 64 6c 65 72 73 20 3d 20 5f 68 61    handlers = _ha
119a0 6e 64 6c 65 72 73 2e 43 6c 6f 6e 65 28 29 20 61  ndlers.Clone() a
119b0 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
119c0 6f 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72 3b 0d  onEventHandler;.
119d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
119e0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
119f0 20 20 20 68 61 6e 64 6c 65 72 73 20 3d 20 6e 75     handlers = nu
11a00 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ll;..        }..
11a10 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 68 61  ..        if (ha
11a20 6e 64 6c 65 72 73 20 21 3d 20 6e 75 6c 6c 29 20  ndlers != null) 
11a30 68 61 6e 64 6c 65 72 73 28 63 6f 6e 6e 65 63 74  handlers(connect
11a40 69 6f 6e 2c 20 65 29 3b 0d 0a 20 20 20 20 7d 0d  ion, e);..    }.
11a50 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
11a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ab0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
11ac0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11ad0 20 2f 2f 2f 20 54 68 69 73 20 65 76 65 6e 74 20   /// This event 
11ae0 69 73 20 72 61 69 73 65 64 20 77 68 65 6e 20 65  is raised when e
11af0 76 65 6e 74 73 20 72 65 6c 61 74 65 64 20 74 6f  vents related to
11b00 20 74 68 65 20 6c 69 66 65 63 79 63 6c 65 20 6f   the lifecycle o
11b10 66 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  f a..    /// SQL
11b20 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  iteConnection ob
11b30 6a 65 63 74 20 6f 63 63 75 72 2e 0d 0a 20 20 20  ject occur...   
11b40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11b50 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
11b60 69 63 20 65 76 65 6e 74 20 53 51 4c 69 74 65 43  ic event SQLiteC
11b70 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 48 61  onnectionEventHa
11b80 6e 64 6c 65 72 20 43 68 61 6e 67 65 64 0d 0a 20  ndler Changed.. 
11b90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 61 64     {..        ad
11ba0 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  d..        {..  
11bb0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
11bc0 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  _syncRoot)..    
11bd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11be0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65             // Re
11bf0 6d 6f 76 65 20 61 6e 79 20 63 6f 70 69 65 73 20  move any copies 
11c00 6f 66 20 74 68 69 73 20 65 76 65 6e 74 20 68 61  of this event ha
11c10 6e 64 6c 65 72 20 66 72 6f 6d 20 72 65 67 69 73  ndler from regis
11c20 74 65 72 65 64 0d 0a 20 20 20 20 20 20 20 20 20  tered..         
11c30 20 20 20 20 20 20 20 2f 2f 20 6c 69 73 74 2e 20         // list. 
11c40 20 54 68 69 73 20 65 73 73 65 6e 74 69 61 6c 6c   This essentiall
11c50 79 20 6d 65 61 6e 73 20 74 68 61 74 20 61 20 68  y means that a h
11c60 61 6e 64 6c 65 72 20 77 69 6c 6c 20 62 65 0d 0a  andler will be..
11c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c80 2f 2f 20 63 61 6c 6c 65 64 20 6f 6e 6c 79 20 6f  // called only o
11c90 6e 63 65 20 6e 6f 20 6d 61 74 74 65 72 20 68 6f  nce no matter ho
11ca0 77 20 6d 61 6e 79 20 74 69 6d 65 73 20 69 74 20  w many times it 
11cb0 69 73 20 61 64 64 65 64 2e 0d 0a 20 20 20 20 20  is added...     
11cc0 20 20 20 20 20 20 20 20 20 20 20 5f 68 61 6e 64             _hand
11cd0 6c 65 72 73 20 2d 3d 20 76 61 6c 75 65 3b 0d 0a  lers -= value;..
11ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11cf0 20 20 2f 2f 20 41 64 64 20 74 68 69 73 20 74 6f    // Add this to
11d00 20 74 68 65 20 6c 69 73 74 20 6f 66 20 65 76 65   the list of eve
11d10 6e 74 20 68 61 6e 64 6c 65 72 73 2e 0d 0a 20 20  nt handlers...  
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 68                _h
11d30 61 6e 64 6c 65 72 73 20 2b 3d 20 76 61 6c 75 65  andlers += value
11d40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
11d50 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
11d60 20 20 20 20 20 72 65 6d 6f 76 65 0d 0a 20 20 20       remove..   
11d70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11d80 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52      lock (_syncR
11d90 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  oot)..          
11da0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11db0 20 20 20 20 20 5f 68 61 6e 64 6c 65 72 73 20 2d       _handlers -
11dc0 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
11dd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11de0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
11df0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
11e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e50 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
11e60 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
11e70 68 69 73 20 70 72 6f 70 65 72 74 79 20 69 73 20  his property is 
11e80 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 6f  used to obtain o
11e90 72 20 73 65 74 20 74 68 65 20 63 75 73 74 6f 6d  r set the custom
11ea0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c   connection pool
11eb0 0d 0a 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d  ..    /// implem
11ec0 65 6e 74 61 74 69 6f 6e 20 74 6f 20 75 73 65 2c  entation to use,
11ed0 20 69 66 20 61 6e 79 2e 20 20 53 65 74 74 69 6e   if any.  Settin
11ee0 67 20 74 68 69 73 20 70 72 6f 70 65 72 74 79 20  g this property 
11ef0 74 6f 20 6e 75 6c 6c 20 77 69 6c 6c 0d 0a 20 20  to null will..  
11f00 20 20 2f 2f 2f 20 63 61 75 73 65 20 74 68 65 20    /// cause the 
11f10 64 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63 74 69  default connecti
11f20 6f 6e 20 70 6f 6f 6c 20 69 6d 70 6c 65 6d 65 6e  on pool implemen
11f30 74 61 74 69 6f 6e 20 74 6f 20 62 65 20 75 73 65  tation to be use
11f40 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
11f50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
11f60 69 63 20 73 74 61 74 69 63 20 49 53 51 4c 69 74  ic static ISQLit
11f70 65 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20  eConnectionPool 
11f80 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 0d 0a  ConnectionPool..
11f90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67      {..        g
11fa0 65 74 20 7b 20 72 65 74 75 72 6e 20 53 51 4c 69  et { return SQLi
11fb0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c  teConnectionPool
11fc0 2e 47 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f  .GetConnectionPo
11fd0 6f 6c 28 29 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ol(); }..       
11fe0 20 73 65 74 20 7b 20 53 51 4c 69 74 65 43 6f 6e   set { SQLiteCon
11ff0 6e 65 63 74 69 6f 6e 50 6f 6f 6c 2e 53 65 74 43  nectionPool.SetC
12000 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 28 76 61  onnectionPool(va
12010 6c 75 65 29 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  lue); }..    }..
12020 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
12030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12080 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
12090 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
120a0 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20  /// Creates and 
120b0 72 65 74 75 72 6e 73 20 61 20 6e 65 77 20 6d 61  returns a new ma
120c0 6e 61 67 65 64 20 64 61 74 61 62 61 73 65 20 63  naged database c
120d0 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65  onnection handle
120e0 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f  .  This..    ///
120f0 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 74 65 6e   method is inten
12100 64 65 64 20 74 6f 20 62 65 20 75 73 65 64 20 62  ded to be used b
12110 79 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  y implementation
12120 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 2f 2f  s of the..    //
12130 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
12140 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f  LiteConnectionPo
12150 6f 6c 22 20 2f 3e 20 69 6e 74 65 72 66 61 63 65  ol" /> interface
12160 20 6f 6e 6c 79 2e 20 20 49 6e 20 74 68 65 6f 72   only.  In theor
12170 79 2c 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20 63  y, it..    /// c
12180 6f 75 6c 64 20 62 65 20 75 73 65 64 20 62 79 20  ould be used by 
12190 6f 74 68 65 72 20 63 6c 61 73 73 65 73 3b 20 68  other classes; h
121a0 6f 77 65 76 65 72 2c 20 74 68 61 74 20 75 73 61  owever, that usa
121b0 67 65 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72  ge is not suppor
121c0 74 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ted...    /// </
121d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
121e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
121f0 61 74 69 76 65 48 61 6e 64 6c 65 22 3e 0d 0a 20  ativeHandle">.. 
12200 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 75 73 74     /// This must
12210 20 62 65 20 61 20 6e 61 74 69 76 65 20 64 61 74   be a native dat
12220 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
12230 20 68 61 6e 64 6c 65 20 72 65 74 75 72 6e 65 64   handle returned
12240 20 62 79 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f   by the..    ///
12250 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
12260 72 61 72 79 20 61 6e 64 20 69 74 20 6d 75 73 74  rary and it must
12270 20 72 65 6d 61 69 6e 20 76 61 6c 69 64 20 61 6e   remain valid an
12280 64 20 6f 70 65 6e 20 64 75 72 69 6e 67 20 74 68  d open during th
12290 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 6e 74 69 72  e..    /// entir
122a0 65 20 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68  e duration of th
122b0 65 20 63 61 6c 6c 69 6e 67 20 6d 65 74 68 6f 64  e calling method
122c0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
122d0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
122e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
122f0 54 68 65 20 6e 65 77 20 6d 61 6e 61 67 65 64 20  The new managed 
12300 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
12310 69 6f 6e 20 68 61 6e 64 6c 65 20 6f 72 20 6e 75  ion handle or nu
12320 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20  ll if it cannot 
12330 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 72 65 61  be..    /// crea
12340 74 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ted...    /// </
12350 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
12360 62 6c 69 63 20 73 74 61 74 69 63 20 6f 62 6a 65  blic static obje
12370 63 74 20 43 72 65 61 74 65 48 61 6e 64 6c 65 28  ct CreateHandle(
12380 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
12390 20 6e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20   nativeHandle.. 
123a0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
123b0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
123c0 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
123d0 72 65 73 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20  result;....     
123e0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
123f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
12400 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
12410 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12420 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54    finally /* NOT
12430 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28  E: Thread.Abort(
12440 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f  ) protection. */
12450 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
12460 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
12470 3d 20 28 6e 61 74 69 76 65 48 61 6e 64 6c 65 20  = (nativeHandle 
12480 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  != IntPtr.Zero) 
12490 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
124a0 20 20 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e     new SQLiteCon
124b0 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 28 6e 61  nectionHandle(na
124c0 74 69 76 65 48 61 6e 64 6c 65 2c 20 74 72 75 65  tiveHandle, true
124d0 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  ) : null;..     
124e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
124f0 69 66 20 28 72 65 73 75 6c 74 20 21 3d 20 6e 75  if (result != nu
12500 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
12510 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12520 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 4f 6e 43  teConnection.OnC
12530 68 61 6e 67 65 64 28 6e 75 6c 6c 2c 20 6e 65 77  hanged(null, new
12540 20 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74   ConnectionEvent
12550 41 72 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20  Args(..         
12560 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
12570 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65  nectionEventType
12580 2e 4e 65 77 43 72 69 74 69 63 61 6c 48 61 6e 64  .NewCriticalHand
12590 6c 65 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20  le, null,..     
125a0 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c             null,
125b0 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 72 65 73   null, null, res
125c0 75 6c 74 2c 20 6e 75 6c 6c 2c 20 6e 65 77 20 6f  ult, null, new o
125d0 62 6a 65 63 74 5b 5d 20 7b 0d 0a 20 20 20 20 20  bject[] {..     
125e0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
125f0 66 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  f(SQLiteConnecti
12600 6f 6e 29 2c 20 6e 61 74 69 76 65 48 61 6e 64 6c  on), nativeHandl
12610 65 20 7d 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  e }));..        
12620 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  }....        ret
12630 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
12640 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
126b0 20 23 72 65 67 69 6f 6e 20 42 61 63 6b 75 70 20   #region Backup 
126c0 41 50 49 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  API Members..   
126d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
126e0 20 20 20 20 2f 2f 2f 20 42 61 63 6b 73 20 75 70      /// Backs up
126f0 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 75   the database, u
12700 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
12710 65 64 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ed database conn
12720 65 63 74 69 6f 6e 20 61 73 20 74 68 65 0d 0a 20  ection as the.. 
12730 20 20 20 2f 2f 2f 20 64 65 73 74 69 6e 61 74 69     /// destinati
12740 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  on...    /// </s
12750 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
12760 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
12770 73 74 69 6e 61 74 69 6f 6e 22 3e 54 68 65 20 64  stination">The d
12780 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74 61 62  estination datab
12790 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c  ase connection.<
127a0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
127b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
127c0 73 74 69 6e 61 74 69 6f 6e 4e 61 6d 65 22 3e 54  stinationName">T
127d0 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64  he destination d
127e0 61 74 61 62 61 73 65 20 6e 61 6d 65 2e 3c 2f 70  atabase name.</p
127f0 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
12800 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72  param name="sour
12810 63 65 4e 61 6d 65 22 3e 54 68 65 20 73 6f 75 72  ceName">The sour
12820 63 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65  ce database name
12830 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
12840 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
12850 70 61 67 65 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f  pages">..    ///
12860 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70   The number of p
12870 61 67 65 73 20 74 6f 20 63 6f 70 79 20 61 74 20  ages to copy at 
12880 61 20 74 69 6d 65 20 2d 4f 52 2d 20 61 20 6e 65  a time -OR- a ne
12890 67 61 74 69 76 65 20 76 61 6c 75 65 20 74 6f 20  gative value to 
128a0 63 6f 70 79 20 61 6c 6c 0d 0a 20 20 20 20 2f 2f  copy all..    //
128b0 2f 20 70 61 67 65 73 2e 20 20 57 68 65 6e 20 61  / pages.  When a
128c0 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65 20   negative value 
128d0 69 73 20 75 73 65 64 2c 20 74 68 65 20 3c 70 61  is used, the <pa
128e0 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 63 61 6c  ramref name="cal
128f0 6c 62 61 63 6b 22 20 2f 3e 0d 0a 20 20 20 20 2f  lback" />..    /
12900 2f 2f 20 6d 61 79 20 6e 65 76 65 72 20 62 65 20  // may never be 
12910 69 6e 76 6f 6b 65 64 2e 0d 0a 20 20 20 20 2f 2f  invoked...    //
12920 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12930 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12940 22 63 61 6c 6c 62 61 63 6b 22 3e 0d 0a 20 20 20  "callback">..   
12950 20 2f 2f 2f 20 54 68 65 20 6d 65 74 68 6f 64 20   /// The method 
12960 74 6f 20 69 6e 76 6f 6b 65 20 62 65 74 77 65 65  to invoke betwee
12970 6e 20 65 61 63 68 20 73 74 65 70 20 6f 66 20 74  n each step of t
12980 68 65 20 62 61 63 6b 75 70 20 70 72 6f 63 65 73  he backup proces
12990 73 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 2f 2f  s.  This..    //
129a0 2f 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20  / parameter may 
129b0 62 65 20 6e 75 6c 6c 20 28 69 2e 65 2e 20 6e 6f  be null (i.e. no
129c0 20 63 61 6c 6c 62 61 63 6b 73 20 77 69 6c 6c 20   callbacks will 
129d0 62 65 20 70 65 72 66 6f 72 6d 65 64 29 2e 20 20  be performed).  
129e0 49 66 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  If the..    /// 
129f0 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
12a00 20 66 61 6c 73 65 20 2d 4f 52 2d 20 74 68 72 6f   false -OR- thro
12a10 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 2c  ws an exception,
12a20 20 74 68 65 20 62 61 63 6b 75 70 20 69 73 20 63   the backup is c
12a30 61 6e 63 65 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f  anceled...    //
12a40 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
12a50 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12a60 22 72 65 74 72 79 4d 69 6c 6c 69 73 65 63 6f 6e  "retryMillisecon
12a70 64 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ds">..    /// Th
12a80 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c  e number of mill
12a90 69 73 65 63 6f 6e 64 73 20 74 6f 20 73 6c 65 65  iseconds to slee
12aa0 70 20 61 66 74 65 72 20 65 6e 63 6f 75 6e 74 65  p after encounte
12ab0 72 69 6e 67 20 61 20 6c 6f 63 6b 69 6e 67 20 65  ring a locking e
12ac0 72 72 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 64 75  rror..    /// du
12ad0 72 69 6e 67 20 74 68 65 20 62 61 63 6b 75 70 20  ring the backup 
12ae0 70 72 6f 63 65 73 73 2e 20 20 41 20 76 61 6c 75  process.  A valu
12af0 65 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f  e less than zero
12b00 20 6d 65 61 6e 73 20 74 68 61 74 20 6e 6f 20 73   means that no s
12b10 6c 65 65 70 0d 0a 20 20 20 20 2f 2f 2f 20 73 68  leep..    /// sh
12b20 6f 75 6c 64 20 62 65 20 70 65 72 66 6f 72 6d 65  ould be performe
12b30 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
12b40 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ram>..    public
12b50 20 76 6f 69 64 20 42 61 63 6b 75 70 44 61 74 61   void BackupData
12b60 62 61 73 65 28 0d 0a 20 20 20 20 20 20 20 20 53  base(..        S
12b70 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  QLiteConnection 
12b80 64 65 73 74 69 6e 61 74 69 6f 6e 2c 0d 0a 20 20  destination,..  
12b90 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 73        string des
12ba0 74 69 6e 61 74 69 6f 6e 4e 61 6d 65 2c 0d 0a 20  tinationName,.. 
12bb0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 6f         string so
12bc0 75 72 63 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  urceName,..     
12bd0 20 20 20 69 6e 74 20 70 61 67 65 73 2c 0d 0a 20     int pages,.. 
12be0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 63         SQLiteBac
12bf0 6b 75 70 43 61 6c 6c 62 61 63 6b 20 63 61 6c 6c  kupCallback call
12c00 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 69  back,..        i
12c10 6e 74 20 72 65 74 72 79 4d 69 6c 6c 69 73 65 63  nt retryMillisec
12c20 6f 6e 64 73 0d 0a 20 20 20 20 20 20 20 20 29 0d  onds..        ).
12c30 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
12c40 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
12c50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
12c60 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65  _connectionState
12c70 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74   != ConnectionSt
12c80 61 74 65 2e 4f 70 65 6e 29 0d 0a 20 20 20 20 20  ate.Open)..     
12c90 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
12ca0 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
12cb0 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  nException(..   
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 6f               "So
12cd0 75 72 63 65 20 64 61 74 61 62 61 73 65 20 69 73  urce database is
12ce0 20 6e 6f 74 20 6f 70 65 6e 2e 22 29 3b 0d 0a 0d   not open.");...
12cf0 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 65 73  .        if (des
12d00 74 69 6e 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  tination == null
12d10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  )..            t
12d20 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
12d30 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
12d40 64 65 73 74 69 6e 61 74 69 6f 6e 22 29 3b 0d 0a  destination");..
12d50 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 65  ..        if (de
12d60 73 74 69 6e 61 74 69 6f 6e 2e 5f 63 6f 6e 6e 65  stination._conne
12d70 63 74 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f  ctionState != Co
12d80 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70  nnectionState.Op
12d90 65 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  en)..           
12da0 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
12db0 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  entException(.. 
12dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
12dd0 44 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74 61  Destination data
12de0 62 61 73 65 20 69 73 20 6e 6f 74 20 6f 70 65 6e  base is not open
12df0 2e 22 2c 20 22 64 65 73 74 69 6e 61 74 69 6f 6e  .", "destination
12e00 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ");....        i
12e10 66 20 28 64 65 73 74 69 6e 61 74 69 6f 6e 4e 61  f (destinationNa
12e20 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
12e30 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
12e40 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
12e50 78 63 65 70 74 69 6f 6e 28 22 64 65 73 74 69 6e  xception("destin
12e60 61 74 69 6f 6e 4e 61 6d 65 22 29 3b 0d 0a 0d 0a  ationName");....
12e70 20 20 20 20 20 20 20 20 69 66 20 28 73 6f 75 72          if (sour
12e80 63 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  ceName == null).
12e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72  .            thr
12ea0 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
12eb0 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 73 6f  ullException("so
12ec0 75 72 63 65 4e 61 6d 65 22 29 3b 0d 0a 0d 0a 20  urceName");.... 
12ed0 20 20 20 20 20 20 20 53 51 4c 69 74 65 42 61 73         SQLiteBas
12ee0 65 20 73 71 6c 69 74 65 42 61 73 65 20 3d 20 5f  e sqliteBase = _
12ef0 73 71 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sql;....        
12f00 69 66 20 28 73 71 6c 69 74 65 42 61 73 65 20 3d  if (sqliteBase =
12f10 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12f20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
12f30 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
12f40 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
12f50 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e 6e             "Conn
12f60 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 68 61  ection object ha
12f70 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 68 61 6e  s an invalid han
12f80 64 6c 65 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  dle.");....     
12f90 20 20 20 53 51 4c 69 74 65 42 61 63 6b 75 70 20     SQLiteBackup 
12fa0 62 61 63 6b 75 70 20 3d 20 6e 75 6c 6c 3b 0d 0a  backup = null;..
12fb0 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
12fc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12fd0 20 20 20 20 20 20 62 61 63 6b 75 70 20 3d 20 73        backup = s
12fe0 71 6c 69 74 65 42 61 73 65 2e 49 6e 69 74 69 61  qliteBase.Initia
12ff0 6c 69 7a 65 42 61 63 6b 75 70 28 0d 0a 20 20 20  lizeBackup(..   
13000 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
13010 74 69 6e 61 74 69 6f 6e 2c 20 64 65 73 74 69 6e  tination, destin
13020 61 74 69 6f 6e 4e 61 6d 65 2c 20 73 6f 75 72 63  ationName, sourc
13030 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77  eName); /* throw
13040 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
13050 20 20 20 62 6f 6f 6c 20 72 65 74 72 79 20 3d 20     bool retry = 
13060 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
13070 20 20 20 20 20 20 77 68 69 6c 65 20 28 73 71 6c        while (sql
13080 69 74 65 42 61 73 65 2e 53 74 65 70 42 61 63 6b  iteBase.StepBack
13090 75 70 28 62 61 63 6b 75 70 2c 20 70 61 67 65 73  up(backup, pages
130a0 2c 20 72 65 66 20 72 65 74 72 79 29 29 20 2f 2a  , ref retry)) /*
130b0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
130c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
130d0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
130e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
130f0 20 4e 4f 54 45 3a 20 49 66 20 61 20 63 61 6c 6c   NOTE: If a call
13100 62 61 63 6b 20 77 61 73 20 73 75 70 70 6c 69 65  back was supplie
13110 64 20 62 79 20 6f 75 72 20 63 61 6c 6c 65 72 2c  d by our caller,
13120 20 63 61 6c 6c 20 69 74 2e 0d 0a 20 20 20 20 20   call it...     
13130 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
13140 20 20 20 20 49 66 20 69 74 20 72 65 74 75 72 6e      If it return
13150 73 20 66 61 6c 73 65 2c 20 68 61 6c 74 20 74 68  s false, halt th
13160 65 20 62 61 63 6b 75 70 20 70 72 6f 63 65 73 73  e backup process
13170 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13180 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13190 20 20 20 20 20 20 20 69 66 20 28 28 63 61 6c 6c         if ((call
131a0 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 26 26  back != null) &&
131b0 20 21 63 61 6c 6c 62 61 63 6b 28 74 68 69 73 2c   !callback(this,
131c0 20 73 6f 75 72 63 65 4e 61 6d 65 2c 0d 0a 20 20   sourceName,..  
131d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131e0 20 20 20 20 20 20 64 65 73 74 69 6e 61 74 69 6f        destinatio
131f0 6e 2c 20 64 65 73 74 69 6e 61 74 69 6f 6e 4e 61  n, destinationNa
13200 6d 65 2c 20 70 61 67 65 73 2c 0d 0a 20 20 20 20  me, pages,..    
13210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13220 20 20 20 20 73 71 6c 69 74 65 42 61 73 65 2e 52      sqliteBase.R
13230 65 6d 61 69 6e 69 6e 67 42 61 63 6b 75 70 28 62  emainingBackup(b
13240 61 63 6b 75 70 29 2c 0d 0a 20 20 20 20 20 20 20  ackup),..       
13250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13260 20 73 71 6c 69 74 65 42 61 73 65 2e 50 61 67 65   sqliteBase.Page
13270 43 6f 75 6e 74 42 61 63 6b 75 70 28 62 61 63 6b  CountBackup(back
13280 75 70 29 2c 20 72 65 74 72 79 29 29 0d 0a 20 20  up), retry))..  
13290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
132a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
132b0 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
132c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
132d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
132e0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
132f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
13300 66 20 77 65 20 6e 65 65 64 20 74 6f 20 72 65 74  f we need to ret
13310 72 79 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  ry the previous 
13320 6f 70 65 72 61 74 69 6f 6e 2c 20 77 61 69 74 20  operation, wait 
13330 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  for..           
13340 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
13350 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c  e number of mill
13360 69 73 65 63 6f 6e 64 73 20 73 70 65 63 69 66 69  iseconds specifi
13370 65 64 20 62 79 20 6f 75 72 20 63 61 6c 6c 65 72  ed by our caller
13380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13390 20 20 2f 2f 20 20 20 20 20 20 20 75 6e 6c 65 73    //       unles
133a0 73 20 74 68 65 20 63 61 6c 6c 65 72 20 75 73 65  s the caller use
133b0 64 20 61 20 6e 65 67 61 74 69 76 65 20 6e 75 6d  d a negative num
133c0 62 65 72 2c 20 69 6e 20 74 68 61 74 20 63 61 73  ber, in that cas
133d0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
133e0 20 20 20 2f 2f 20 20 20 20 20 20 20 73 6b 69 70     //       skip
133f0 20 73 6c 65 65 70 69 6e 67 20 61 74 20 61 6c 6c   sleeping at all
13400 20 62 65 63 61 75 73 65 20 77 65 20 64 6f 20 6e   because we do n
13410 6f 74 20 77 61 6e 74 20 74 6f 20 62 6c 6f 63 6b  ot want to block
13420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13430 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73 20    //       this 
13440 74 68 72 65 61 64 20 66 6f 72 65 76 65 72 2e 0d  thread forever..
13450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13460 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
13470 20 20 20 20 20 69 66 20 28 72 65 74 72 79 20 26       if (retry &
13480 26 20 28 72 65 74 72 79 4d 69 6c 6c 69 73 65 63  & (retryMillisec
13490 6f 6e 64 73 20 3e 3d 20 30 29 29 0d 0a 20 20 20  onds >= 0))..   
134a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134b0 20 54 68 72 65 61 64 2e 53 6c 65 65 70 28 72 65   Thread.Sleep(re
134c0 74 72 79 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 29  tryMilliseconds)
134d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
134e0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
134f0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
13500 3a 20 54 68 65 72 65 20 69 73 20 6e 6f 20 70 6f  : There is no po
13510 69 6e 74 20 69 6e 20 63 61 6c 6c 69 6e 67 20 74  int in calling t
13520 68 65 20 6e 61 74 69 76 65 20 41 50 49 20 74 6f  he native API to
13530 20 63 6f 70 79 0d 0a 20 20 20 20 20 20 20 20 20   copy..         
13540 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
13550 7a 65 72 6f 20 70 61 67 65 73 20 61 73 20 69 74  zero pages as it
13560 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 3b 20 74   does nothing; t
13570 68 65 72 65 66 6f 72 65 2c 20 73 74 6f 70 20 6e  herefore, stop n
13580 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
13590 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
135a0 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 67           if (pag
135b0 65 73 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  es == 0)..      
135c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
135d0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
135e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
135f0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
13600 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20  xception e)..   
13610 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13620 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65      if (HelperMe
13630 74 68 6f 64 73 2e 4c 6f 67 42 61 63 6b 75 70 28  thods.LogBackup(
13640 5f 66 6c 61 67 73 29 29 0d 0a 20 20 20 20 20 20  _flags))..      
13650 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13660 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4c           SQLiteL
13670 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28 48 65  og.LogMessage(He
13680 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
13690 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
136a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
136b0 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
136c0 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
136d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136e0 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f  "Caught exceptio
136f0 6e 20 77 68 69 6c 65 20 62 61 63 6b 69 6e 67 20  n while backing 
13700 75 70 20 64 61 74 61 62 61 73 65 3a 20 7b 30 7d  up database: {0}
13710 22 2c 20 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  ", e));..       
13720 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13730 20 20 20 20 20 20 74 68 72 6f 77 3b 0d 0a 20 20        throw;..  
13740 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13750 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
13760 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13770 20 69 66 20 28 62 61 63 6b 75 70 20 21 3d 20 6e   if (backup != n
13780 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13790 20 20 20 20 20 20 73 71 6c 69 74 65 42 61 73 65        sqliteBase
137a0 2e 46 69 6e 69 73 68 42 61 63 6b 75 70 28 62 61  .FinishBackup(ba
137b0 63 6b 75 70 29 3b 20 2f 2a 20 74 68 72 6f 77 20  ckup); /* throw 
137c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  */..        }.. 
137d0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
137e0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
137f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
13850 20 20 20 23 72 65 67 69 6f 6e 20 50 65 72 2d 43     #region Per-C
13860 6f 6e 6e 65 63 74 69 6f 6e 20 53 65 74 74 69 6e  onnection Settin
13870 67 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  gs..    /// <sum
13880 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
13890 6c 65 61 72 73 20 74 68 65 20 70 65 72 2d 63 6f  lears the per-co
138a0 6e 6e 65 63 74 69 6f 6e 20 63 61 63 68 65 64 20  nnection cached 
138b0 73 65 74 74 69 6e 67 73 2e 0d 0a 20 20 20 20 2f  settings...    /
138c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
138d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
138e0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 6f  ..    /// The to
138f0 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 70 65  tal number of pe
13900 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 65 74  r-connection set
13910 74 69 6e 67 73 20 63 6c 65 61 72 65 64 2e 0d 0a  tings cleared...
13920 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
13930 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  s>..    public i
13940 6e 74 20 43 6c 65 61 72 43 61 63 68 65 64 53 65  nt ClearCachedSe
13950 74 74 69 6e 67 73 28 29 0d 0a 20 20 20 20 7b 0d  ttings()..    {.
13960 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69  .        CheckDi
13970 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
13980 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
13990 3d 20 2d 31 3b 20 2f 2a 20 4e 4f 20 53 45 54 54  = -1; /* NO SETT
139a0 49 4e 47 53 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  INGS */....     
139b0 20 20 20 69 66 20 28 5f 63 61 63 68 65 64 53 65     if (_cachedSe
139c0 74 74 69 6e 67 73 20 21 3d 20 6e 75 6c 6c 29 0d  ttings != null).
139d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
139e0 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
139f0 20 5f 63 61 63 68 65 64 53 65 74 74 69 6e 67 73   _cachedSettings
13a00 2e 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20  .Count;..       
13a10 20 20 20 20 20 5f 63 61 63 68 65 64 53 65 74 74       _cachedSett
13a20 69 6e 67 73 2e 43 6c 65 61 72 28 29 3b 0d 0a 20  ings.Clear();.. 
13a30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13a40 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
13a50 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t;..    }....   
13a60 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ac0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
13ad0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 51  mary>..    /// Q
13ae0 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
13af0 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ns the value of 
13b00 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
13b10 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65  tting, using the
13b20 0d 0a 20 20 20 20 2f 2f 2f 20 63 61 63 68 65 64  ..    /// cached
13b30 20 73 65 74 74 69 6e 67 20 6e 61 6d 65 73 20 61   setting names a
13b40 6e 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  nd values for th
13b50 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 77  is connection, w
13b60 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  hen available...
13b70 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13b80 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
13b90 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d  am name="name">.
13ba0 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d  .    /// The nam
13bb0 65 20 6f 66 20 74 68 65 20 73 65 74 74 69 6e 67  e of the setting
13bc0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
13bd0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
13be0 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ram name="defaul
13bf0 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
13c00 20 76 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74   value to be ret
13c10 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 65 74  urned if the set
13c20 74 69 6e 67 20 68 61 73 20 6e 6f 74 20 62 65 65  ting has not bee
13c30 6e 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79  n set explicitly
13c40 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20 63 61 6e  ..    /// or can
13c50 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
13c60 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
13c70 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
13c80 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
13c90 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
13ca0 76 61 6c 75 65 20 6f 66 20 74 68 65 20 63 61 63  value of the cac
13cb0 68 65 64 20 73 65 74 74 69 6e 67 20 69 73 20 73  hed setting is s
13cc0 74 6f 72 65 64 20 68 65 72 65 20 69 66 20 66 6f  tored here if fo
13cd0 75 6e 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d  und; otherwise,.
13ce0 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 61 6c  .    /// the val
13cf0 75 65 20 6f 66 20 3c 70 61 72 61 6d 72 65 66 20  ue of <paramref 
13d00 6e 61 6d 65 3d 22 64 65 66 61 75 6c 74 22 20 2f  name="default" /
13d10 3e 20 69 73 20 73 74 6f 72 65 64 20 68 65 72 65  > is stored here
13d20 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
13d30 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
13d40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
13d50 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
13d60 63 61 63 68 65 64 20 73 65 74 74 69 6e 67 20 77  cached setting w
13d70 61 73 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77  as found; otherw
13d80 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
13d90 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
13da0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f      internal boo
13db0 6c 20 54 72 79 47 65 74 43 61 63 68 65 64 53 65  l TryGetCachedSe
13dc0 74 74 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tting(..        
13dd0 73 74 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20  string name,    
13de0 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
13df0 20 20 20 6f 62 6a 65 63 74 20 40 64 65 66 61 75     object @defau
13e00 6c 74 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  lt, /* in */..  
13e10 20 20 20 20 20 20 6f 75 74 20 6f 62 6a 65 63 74        out object
13e20 20 76 61 6c 75 65 20 2f 2a 20 6f 75 74 20 2a 2f   value /* out */
13e30 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
13e40 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
13e50 28 6e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c  (name == null) |
13e60 7c 20 28 5f 63 61 63 68 65 64 53 65 74 74 69 6e  | (_cachedSettin
13e70 67 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  gs == null))..  
13e80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13e90 20 20 20 20 20 76 61 6c 75 65 20 3d 20 40 64 65       value = @de
13ea0 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  fault;..        
13eb0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
13ec0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
13ed0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f          return _
13ee0 63 61 63 68 65 64 53 65 74 74 69 6e 67 73 2e 54  cachedSettings.T
13ef0 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c  ryGetValue(name,
13f00 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20   out value);..  
13f10 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
13f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
13f80 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13f90 0a 20 20 20 20 2f 2f 2f 20 41 64 64 73 20 6f 72  .    /// Adds or
13fa0 20 73 65 74 73 20 74 68 65 20 63 61 63 68 65 64   sets the cached
13fb0 20 73 65 74 74 69 6e 67 20 73 70 65 63 69 66 69   setting specifi
13fc0 65 64 20 62 79 20 3c 70 61 72 61 6d 72 65 66 20  ed by <paramref 
13fd0 6e 61 6d 65 3d 22 6e 61 6d 65 22 20 2f 3e 0d 0a  name="name" />..
13fe0 20 20 20 20 2f 2f 2f 20 74 6f 20 74 68 65 20 76      /// to the v
13ff0 61 6c 75 65 20 73 70 65 63 69 66 69 65 64 20 62  alue specified b
14000 79 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65  y <paramref name
14010 3d 22 76 61 6c 75 65 22 20 2f 3e 2e 0d 0a 20 20  ="value" />...  
14020 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14030 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
14040 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
14050 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
14060 6f 66 20 74 68 65 20 63 61 63 68 65 64 20 73 65  of the cached se
14070 74 74 69 6e 67 20 74 6f 20 61 64 64 20 6f 72 20  tting to add or 
14080 72 65 70 6c 61 63 65 2e 0d 0a 20 20 20 20 2f 2f  replace...    //
14090 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
140a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
140b0 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  "value">..    //
140c0 2f 20 54 68 65 20 6e 65 77 20 76 61 6c 75 65 20  / The new value 
140d0 6f 66 20 74 68 65 20 63 61 63 68 65 64 20 73 65  of the cached se
140e0 74 74 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tting...    /// 
140f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e  </param>..    in
14100 74 65 72 6e 61 6c 20 76 6f 69 64 20 53 65 74 43  ternal void SetC
14110 61 63 68 65 64 53 65 74 74 69 6e 67 28 0d 0a 20  achedSetting(.. 
14120 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
14130 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  me, /* in */..  
14140 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
14150 75 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20  ue /* in */..   
14160 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
14170 20 20 20 20 20 20 20 69 66 20 28 28 6e 61 6d 65         if ((name
14180 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 5f 63   == null) || (_c
14190 61 63 68 65 64 53 65 74 74 69 6e 67 73 20 3d 3d  achedSettings ==
141a0 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
141b0 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
141c0 20 20 20 20 20 20 20 20 5f 63 61 63 68 65 64 53          _cachedS
141d0 65 74 74 69 6e 67 73 5b 6e 61 6d 65 5d 20 3d 20  ettings[name] = 
141e0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20  value;..    }.. 
141f0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
14200 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
14210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14260 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
14270 69 6f 6e 20 50 65 72 2d 43 6f 6e 6e 65 63 74 69  ion Per-Connecti
14280 6f 6e 20 54 79 70 65 20 4d 61 70 70 69 6e 67 73  on Type Mappings
14290 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
142a0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6c 65  ry>..    /// Cle
142b0 61 72 73 20 74 68 65 20 70 65 72 2d 63 6f 6e 6e  ars the per-conn
142c0 65 63 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70  ection type mapp
142d0 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ings...    /// <
142e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
142f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
14300 20 20 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20    /// The total 
14310 6e 75 6d 62 65 72 20 6f 66 20 70 65 72 2d 63 6f  number of per-co
14320 6e 6e 65 63 74 69 6f 6e 20 74 79 70 65 20 6d 61  nnection type ma
14330 70 70 69 6e 67 73 20 63 6c 65 61 72 65 64 2e 0d  ppings cleared..
14340 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
14350 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
14360 69 6e 74 20 43 6c 65 61 72 54 79 70 65 4d 61 70  int ClearTypeMap
14370 70 69 6e 67 73 28 29 0d 0a 20 20 20 20 7b 0d 0a  pings()..    {..
14380 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
14390 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
143a0 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d      int result =
143b0 20 2d 31 3b 20 2f 2a 20 4e 4f 20 4d 41 50 50 49   -1; /* NO MAPPI
143c0 4e 47 53 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  NGS */....      
143d0 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73    if (_typeNames
143e0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
143f0 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
14400 5f 74 79 70 65 4e 61 6d 65 73 2e 43 6c 65 61 72  _typeNames.Clear
14410 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  ();....        r
14420 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
14430 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
14440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
144a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
144b0 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
144c0 73 20 74 68 65 20 70 65 72 2d 63 6f 6e 6e 65 63  s the per-connec
144d0 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70 69 6e  tion type mappin
144e0 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  gs...    /// </s
144f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14500 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
14510 2f 2f 2f 20 54 68 65 20 70 65 72 2d 63 6f 6e 6e  /// The per-conn
14520 65 63 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70  ection type mapp
14530 69 6e 67 73 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  ings -OR- null i
14540 66 20 74 68 65 79 20 61 72 65 20 75 6e 61 76 61  f they are unava
14550 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  ilable...    ///
14560 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
14570 20 70 75 62 6c 69 63 20 44 69 63 74 69 6f 6e 61   public Dictiona
14580 72 79 3c 73 74 72 69 6e 67 2c 20 6f 62 6a 65 63  ry<string, objec
14590 74 3e 20 47 65 74 54 79 70 65 4d 61 70 70 69 6e  t> GetTypeMappin
145a0 67 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  gs()..    {..   
145b0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
145c0 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
145d0 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
145e0 6e 67 2c 20 6f 62 6a 65 63 74 3e 20 72 65 73 75  ng, object> resu
145f0 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  lt = null;....  
14600 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e        if (_typeN
14610 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ames != null).. 
14620 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14630 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 6e        result = n
14640 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
14650 72 69 6e 67 2c 20 6f 62 6a 65 63 74 3e 28 5f 74  ring, object>(_t
14660 79 70 65 4e 61 6d 65 73 2e 43 6f 75 6e 74 2c 20  ypeNames.Count, 
14670 5f 74 79 70 65 4e 61 6d 65 73 2e 43 6f 6d 70 61  _typeNames.Compa
14680 72 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rer);....       
14690 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 4b 65       foreach (Ke
146a0 79 56 61 6c 75 65 50 61 69 72 3c 73 74 72 69 6e  yValuePair<strin
146b0 67 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  g, SQLiteDbTypeM
146c0 61 70 70 69 6e 67 3e 20 70 61 69 72 20 69 6e 20  apping> pair in 
146d0 5f 74 79 70 65 4e 61 6d 65 73 29 0d 0a 20 20 20  _typeNames)..   
146e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
146f0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
14700 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
14710 6d 61 70 70 69 6e 67 20 3d 20 70 61 69 72 2e 56  mapping = pair.V
14720 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
14730 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
14740 74 79 70 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b  typeName = null;
14750 20 2f 2a 20 53 79 73 74 65 6d 2e 53 74 72 69 6e   /* System.Strin
14760 67 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  g */..          
14770 20 20 20 20 20 20 6f 62 6a 65 63 74 20 64 61 74        object dat
14780 61 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 20 2f 2a  aType = null; /*
14790 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 44 62 54   System.Data.DbT
147a0 79 70 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ype */..        
147b0 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 70          object p
147c0 72 69 6d 61 72 79 20 3d 20 6e 75 6c 6c 3b 20 20  rimary = null;  
147d0 2f 2a 20 53 79 73 74 65 6d 2e 42 6f 6f 6c 65 61  /* System.Boolea
147e0 6e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n */....        
147f0 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 70 70          if (mapp
14800 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing != null)..  
14810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14830 20 20 20 20 20 74 79 70 65 4e 61 6d 65 20 3d 20       typeName = 
14840 6d 61 70 70 69 6e 67 2e 74 79 70 65 4e 61 6d 65  mapping.typeName
14850 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14860 20 20 20 20 20 20 20 64 61 74 61 54 79 70 65 20         dataType 
14870 3d 20 6d 61 70 70 69 6e 67 2e 64 61 74 61 54 79  = mapping.dataTy
14880 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
14890 20 20 20 20 20 20 20 20 20 70 72 69 6d 61 72 79           primary
148a0 20 3d 20 6d 61 70 70 69 6e 67 2e 70 72 69 6d 61   = mapping.prima
148b0 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
148c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
148d0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
148e0 2e 41 64 64 28 70 61 69 72 2e 4b 65 79 2c 20 6e  .Add(pair.Key, n
148f0 65 77 20 6f 62 6a 65 63 74 5b 5d 20 7b 20 74 79  ew object[] { ty
14900 70 65 4e 61 6d 65 2c 20 64 61 74 61 54 79 70 65  peName, dataType
14910 2c 20 70 72 69 6d 61 72 79 20 7d 29 3b 0d 0a 20  , primary });.. 
14920 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
14930 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
14940 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
14950 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
14960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
149c0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
149d0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 64  ary>..    /// Ad
149e0 64 73 20 61 20 70 65 72 2d 63 6f 6e 6e 65 63 74  ds a per-connect
149f0 69 6f 6e 20 74 79 70 65 20 6d 61 70 70 69 6e 67  ion type mapping
14a00 2c 20 70 6f 73 73 69 62 6c 79 20 72 65 70 6c 61  , possibly repla
14a10 63 69 6e 67 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  cing one or more
14a20 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 61  ..    /// that a
14a30 6c 72 65 61 64 79 20 65 78 69 73 74 2e 0d 0a 20  lready exist... 
14a40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14a50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
14a60 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65  m name="typeName
14a70 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
14a80 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
14a90 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
14aa0 61 6d 65 20 28 65 2e 67 2e 20 22 4d 59 44 41 54  ame (e.g. "MYDAT
14ab0 45 22 29 2e 20 20 54 68 65 20 76 61 6c 75 65 0d  E").  The value.
14ac0 0a 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 69 73  .    /// of this
14ad0 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 6e 6f   parameter canno
14ae0 74 20 62 65 20 6e 75 6c 6c 2e 20 20 55 73 69 6e  t be null.  Usin
14af0 67 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  g an empty strin
14b00 67 20 76 61 6c 75 65 20 28 6f 72 0d 0a 20 20 20  g value (or..   
14b10 20 2f 2f 2f 20 61 20 73 74 72 69 6e 67 20 76 61   /// a string va
14b20 6c 75 65 20 63 6f 6e 73 69 73 74 69 6e 67 20 65  lue consisting e
14b30 6e 74 69 72 65 6c 79 20 6f 66 20 77 68 69 74 65  ntirely of white
14b40 73 70 61 63 65 29 20 66 6f 72 20 74 68 69 73 20  space) for this 
14b50 70 61 72 61 6d 65 74 65 72 0d 0a 20 20 20 20 2f  parameter..    /
14b60 2f 2f 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  // is not recomm
14b70 65 6e 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ended...    /// 
14b80 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
14b90 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
14ba0 61 74 61 54 79 70 65 22 3e 0d 0a 20 20 20 20 2f  ataType">..    /
14bb0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
14bc0 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c  ="DbType" /> val
14bd0 75 65 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62  ue that should b
14be0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
14bf0 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73  h the..    /// s
14c00 70 65 63 69 66 69 65 64 20 74 79 70 65 20 6e 61  pecified type na
14c10 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  me...    /// </p
14c20 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14c30 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 69 6d  param name="prim
14c40 61 72 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  ary">..    /// N
14c50 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73 20  on-zero if this 
14c60 6d 61 70 70 69 6e 67 20 73 68 6f 75 6c 64 20 62  mapping should b
14c70 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20  e considered to 
14c80 62 65 20 74 68 65 20 70 72 69 6d 61 72 79 20 6f  be the primary o
14c90 6e 65 0d 0a 20 20 20 20 2f 2f 2f 20 66 6f 72 20  ne..    /// for 
14ca0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
14cb0 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65 22  ee cref="DbType"
14cc0 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
14cd0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
14ce0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
14cf0 2f 2f 20 41 20 6e 65 67 61 74 69 76 65 20 76 61  // A negative va
14d00 6c 75 65 20 69 66 20 6e 6f 74 68 69 6e 67 20 77  lue if nothing w
14d10 61 73 20 64 6f 6e 65 2e 20 20 5a 65 72 6f 20 69  as done.  Zero i
14d20 66 20 6e 6f 20 70 65 72 2d 63 6f 6e 6e 65 63 74  f no per-connect
14d30 69 6f 6e 20 74 79 70 65 0d 0a 20 20 20 20 2f 2f  ion type..    //
14d40 2f 20 6d 61 70 70 69 6e 67 73 20 77 65 72 65 20  / mappings were 
14d50 72 65 70 6c 61 63 65 64 20 28 69 2e 65 2e 20 69  replaced (i.e. i
14d60 74 20 77 61 73 20 61 20 70 75 72 65 20 61 64 64  t was a pure add
14d70 20 6f 70 65 72 61 74 69 6f 6e 29 2e 20 20 4d 6f   operation).  Mo
14d80 72 65 20 74 68 61 6e 0d 0a 20 20 20 20 2f 2f 2f  re than..    ///
14d90 20 7a 65 72 6f 20 69 66 20 73 6f 6d 65 20 70 65   zero if some pe
14da0 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 79 70  r-connection typ
14db0 65 20 6d 61 70 70 69 6e 67 73 20 77 65 72 65 20  e mappings were 
14dc0 72 65 70 6c 61 63 65 64 2e 0d 0a 20 20 20 20 2f  replaced...    /
14dd0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
14de0 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 41 64     public int Ad
14df0 64 54 79 70 65 4d 61 70 70 69 6e 67 28 0d 0a 20  dTypeMapping(.. 
14e00 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79         string ty
14e10 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  peName,..       
14e20 20 44 62 54 79 70 65 20 64 61 74 61 54 79 70 65   DbType dataType
14e30 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  ,..        bool 
14e40 70 72 69 6d 61 72 79 0d 0a 20 20 20 20 20 20 20  primary..       
14e50 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
14e60 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
14e70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ();....        i
14e80 66 20 28 74 79 70 65 4e 61 6d 65 20 3d 3d 20 6e  f (typeName == n
14e90 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14ea0 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
14eb0 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
14ec0 6e 28 22 74 79 70 65 4e 61 6d 65 22 29 3b 0d 0a  n("typeName");..
14ed0 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 72 65  ..        int re
14ee0 73 75 6c 74 20 3d 20 2d 31 3b 20 2f 2a 20 4e 4f  sult = -1; /* NO
14ef0 20 4d 41 50 50 49 4e 47 53 20 2a 2f 0d 0a 0d 0a   MAPPINGS */....
14f00 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70          if (_typ
14f10 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d  eNames != null).
14f20 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
14f30 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
14f40 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
14f50 20 20 20 69 66 20 28 70 72 69 6d 61 72 79 20 26     if (primary &
14f60 26 20 5f 74 79 70 65 4e 61 6d 65 73 2e 43 6f 6e  & _typeNames.Con
14f70 74 61 69 6e 73 4b 65 79 28 64 61 74 61 54 79 70  tainsKey(dataTyp
14f80 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
14f90 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20 5f       result += _
14fa0 74 79 70 65 4e 61 6d 65 73 2e 52 65 6d 6f 76 65  typeNames.Remove
14fb0 28 64 61 74 61 54 79 70 65 29 20 3f 20 31 20 3a  (dataType) ? 1 :
14fc0 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
14fd0 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
14fe0 73 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28 74 79  s.ContainsKey(ty
14ff0 70 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  peName))..      
15000 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
15010 20 2b 3d 20 5f 74 79 70 65 4e 61 6d 65 73 2e 52   += _typeNames.R
15020 65 6d 6f 76 65 28 74 79 70 65 4e 61 6d 65 29 20  emove(typeName) 
15030 3f 20 31 20 3a 20 30 3b 0d 0a 0d 0a 20 20 20 20  ? 1 : 0;....    
15040 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d          _typeNam
15050 65 73 2e 41 64 64 28 6e 65 77 20 53 51 4c 69 74  es.Add(new SQLit
15060 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 74  eDbTypeMapping(t
15070 79 70 65 4e 61 6d 65 2c 20 64 61 74 61 54 79 70  ypeName, dataTyp
15080 65 2c 20 70 72 69 6d 61 72 79 29 29 3b 0d 0a 20  e, primary));.. 
15090 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
150a0 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c      return resul
150b0 74 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  t;..    }..    #
150c0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
150d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
150e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15130 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
15140 50 65 72 2d 43 6f 6e 6e 65 63 74 69 6f 6e 20 54  Per-Connection T
15150 79 70 65 20 43 61 6c 6c 62 61 63 6b 73 0d 0a 20  ype Callbacks.. 
15160 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15170 0d 0a 20 20 20 20 2f 2f 2f 20 43 6c 65 61 72 73  ..    /// Clears
15180 20 74 68 65 20 70 65 72 2d 63 6f 6e 6e 65 63 74   the per-connect
15190 69 6f 6e 20 74 79 70 65 20 63 61 6c 6c 62 61 63  ion type callbac
151a0 6b 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ks...    /// </s
151b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
151c0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
151d0 2f 2f 2f 20 54 68 65 20 74 6f 74 61 6c 20 6e 75  /// The total nu
151e0 6d 62 65 72 20 6f 66 20 70 65 72 2d 63 6f 6e 6e  mber of per-conn
151f0 65 63 74 69 6f 6e 20 74 79 70 65 20 63 61 6c 6c  ection type call
15200 62 61 63 6b 73 20 63 6c 65 61 72 65 64 2e 0d 0a  backs cleared...
15210 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
15220 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  s>..    public i
15230 6e 74 20 43 6c 65 61 72 54 79 70 65 43 61 6c 6c  nt ClearTypeCall
15240 62 61 63 6b 73 28 29 0d 0a 20 20 20 20 7b 0d 0a  backs()..    {..
15250 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
15260 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
15270 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d      int result =
15280 20 2d 31 3b 20 2f 2a 20 4e 4f 20 43 41 4c 4c 42   -1; /* NO CALLB
15290 41 43 4b 53 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  ACKS */....     
152a0 20 20 20 69 66 20 28 5f 74 79 70 65 43 61 6c 6c     if (_typeCall
152b0 62 61 63 6b 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a  backs != null)..
152c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
152d0 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
152e0 5f 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 2e 43  _typeCallbacks.C
152f0 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
15300 20 20 20 5f 74 79 70 65 43 61 6c 6c 62 61 63 6b     _typeCallback
15310 73 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20  s.Clear();..    
15320 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15330 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
15340 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
15350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
153a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
153b0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
153c0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65  y>..    /// Atte
153d0 6d 70 74 73 20 74 6f 20 67 65 74 20 74 68 65 20  mpts to get the 
153e0 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  per-connection t
153f0 79 70 65 20 63 61 6c 6c 62 61 63 6b 73 20 66 6f  ype callbacks fo
15400 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0d  r the specified.
15410 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
15420 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20  e type name...  
15430 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15440 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
15450 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22   name="typeName"
15460 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
15470 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
15480 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
15490 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
154a0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62  aram name="callb
154b0 61 63 6b 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  acks">..    /// 
154c0 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68  Upon success, th
154d0 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c  is parameter wil
154e0 6c 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6f 62  l contain the ob
154f0 6a 65 63 74 20 68 6f 6c 64 69 6e 67 20 74 68 65  ject holding the
15500 0d 0a 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 62 61  ..    /// callba
15510 63 6b 73 20 66 6f 72 20 74 68 65 20 64 61 74 61  cks for the data
15520 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 20  base type name. 
15530 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74   Upon failure, t
15540 68 69 73 20 70 61 72 61 6d 65 74 65 72 0d 0a 20  his parameter.. 
15550 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 6e     /// will be n
15560 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ull...    /// </
15570 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
15580 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
15590 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
155a0 20 73 75 63 63 65 73 73 3b 20 6f 74 68 65 72 77   success; otherw
155b0 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  ise, zero...    
155c0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
155d0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
155e0 54 72 79 47 65 74 54 79 70 65 43 61 6c 6c 62 61  TryGetTypeCallba
155f0 63 6b 73 28 0d 0a 20 20 20 20 20 20 20 20 73 74  cks(..        st
15600 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a  ring typeName,..
15610 20 20 20 20 20 20 20 20 6f 75 74 20 53 51 4c 69          out SQLi
15620 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 20  teTypeCallbacks 
15630 63 61 6c 6c 62 61 63 6b 73 0d 0a 20 20 20 20 20  callbacks..     
15640 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
15650 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
15660 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
15670 20 69 66 20 28 74 79 70 65 4e 61 6d 65 20 3d 3d   if (typeName ==
15680 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
15690 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
156a0 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
156b0 69 6f 6e 28 22 74 79 70 65 4e 61 6d 65 22 29 3b  ion("typeName");
156c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
156d0 5f 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 3d  _typeCallbacks =
156e0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
156f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15700 63 61 6c 6c 62 61 63 6b 73 20 3d 20 6e 75 6c 6c  callbacks = null
15710 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
15720 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
15730 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
15740 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65 43     return _typeC
15750 61 6c 6c 62 61 63 6b 73 2e 54 72 79 47 65 74 56  allbacks.TryGetV
15760 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f  alue(typeName, o
15770 75 74 20 63 61 6c 6c 62 61 63 6b 73 29 3b 0d 0a  ut callbacks);..
15780 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
15790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
157f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15800 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 2c  >..    /// Sets,
15810 20 72 65 73 65 74 73 2c 20 6f 72 20 63 6c 65 61   resets, or clea
15820 72 73 20 74 68 65 20 70 65 72 2d 63 6f 6e 6e 65  rs the per-conne
15830 63 74 69 6f 6e 20 74 79 70 65 20 63 61 6c 6c 62  ction type callb
15840 61 63 6b 73 20 66 6f 72 20 74 68 65 0d 0a 20 20  acks for the..  
15850 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
15860 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
15870 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
15880 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
15890 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
158a0 70 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  peName">..    //
158b0 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 74  / The database t
158c0 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f  ype name...    /
158d0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
158e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
158f0 3d 22 63 61 6c 6c 62 61 63 6b 73 22 3e 0d 0a 20  ="callbacks">.. 
15900 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63     /// The objec
15910 74 20 68 6f 6c 64 69 6e 67 20 74 68 65 20 63 61  t holding the ca
15920 6c 6c 62 61 63 6b 73 20 66 6f 72 20 74 68 65 20  llbacks for the 
15930 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
15940 6d 65 2e 20 20 49 66 0d 0a 20 20 20 20 2f 2f 2f  me.  If..    ///
15950 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
15960 69 73 20 6e 75 6c 6c 2c 20 61 6e 79 20 63 61 6c  is null, any cal
15970 6c 62 61 63 6b 73 20 66 6f 72 20 74 68 65 20 64  lbacks for the d
15980 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
15990 65 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20  e..    /// will 
159a0 62 65 20 72 65 6d 6f 76 65 64 20 69 66 20 74 68  be removed if th
159b0 65 79 20 61 72 65 20 70 72 65 73 65 6e 74 2e 0d  ey are present..
159c0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
159d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
159e0 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  rns>..    /// No
159f0 6e 2d 7a 65 72 6f 20 69 66 20 63 61 6c 6c 62 61  n-zero if callba
15a00 63 6b 73 20 77 65 72 65 20 73 65 74 20 6f 72 20  cks were set or 
15a10 72 65 6d 6f 76 65 64 3b 20 6f 74 68 65 72 77 69  removed; otherwi
15a20 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f  se, zero...    /
15a30 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
15a40 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 53     public bool S
15a50 65 74 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 28  etTypeCallbacks(
15a60 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
15a70 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 20   typeName,..    
15a80 20 20 20 20 53 51 4c 69 74 65 54 79 70 65 43 61      SQLiteTypeCa
15a90 6c 6c 62 61 63 6b 73 20 63 61 6c 6c 62 61 63 6b  llbacks callback
15aa0 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  s..        )..  
15ab0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
15ac0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
15ad0 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
15ae0 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eName == null)..
15af0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
15b00 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
15b10 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 74 79 70  llException("typ
15b20 65 4e 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20  eName");....    
15b30 20 20 20 20 69 66 20 28 5f 74 79 70 65 43 61 6c      if (_typeCal
15b40 6c 62 61 63 6b 73 20 3d 3d 20 6e 75 6c 6c 29 0d  lbacks == null).
15b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
15b60 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
15b70 20 20 20 20 20 20 69 66 20 28 63 61 6c 6c 62 61        if (callba
15b80 63 6b 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  cks == null)..  
15b90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15ba0 20 5f 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 2e   _typeCallbacks.
15bb0 52 65 6d 6f 76 65 28 74 79 70 65 4e 61 6d 65 29  Remove(typeName)
15bc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 61 6c  ;....        cal
15bd0 6c 62 61 63 6b 73 2e 54 79 70 65 4e 61 6d 65 20  lbacks.TypeName 
15be0 3d 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  = typeName;..   
15bf0 20 20 20 20 20 5f 74 79 70 65 43 61 6c 6c 62 61       _typeCallba
15c00 63 6b 73 5b 74 79 70 65 4e 61 6d 65 5d 20 3d 20  cks[typeName] = 
15c10 63 61 6c 6c 62 61 63 6b 73 3b 0d 0a 0d 0a 20 20  callbacks;....  
15c20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
15c30 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  e;..    }..    #
15c40 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
15c50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15cb0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
15cc0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
15cd0 74 74 65 6d 70 74 73 20 74 6f 20 62 69 6e 64 20  ttempts to bind 
15ce0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
15cf0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46  ee cref="SQLiteF
15d00 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  unction" /> obje
15d10 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 73 74  ct..    /// inst
15d20 61 6e 63 65 20 74 6f 20 74 68 69 73 20 63 6f 6e  ance to this con
15d30 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
15d40 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15d50 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
15d60 65 3d 22 66 75 6e 63 74 69 6f 6e 41 74 74 72 69  e="functionAttri
15d70 62 75 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  bute">..    /// 
15d80 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
15d90 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41 74 74  QLiteFunctionAtt
15da0 72 69 62 75 74 65 22 20 2f 3e 20 6f 62 6a 65 63  ribute" /> objec
15db0 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 74 61  t instance conta
15dc0 69 6e 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74  ining..    /// t
15dd0 68 65 20 6d 65 74 61 64 61 74 61 20 66 6f 72 20  he metadata for 
15de0 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  the function to 
15df0 62 65 20 62 6f 75 6e 64 2e 0d 0a 20 20 20 20 2f  be bound...    /
15e00 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
15e10 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
15e20 3d 22 66 75 6e 63 74 69 6f 6e 22 3e 0d 0a 20 20  ="function">..  
15e30 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
15e40 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
15e50 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ion" /> object i
15e60 6e 73 74 61 6e 63 65 20 74 68 61 74 20 69 6d 70  nstance that imp
15e70 6c 65 6d 65 6e 74 73 20 74 68 65 0d 0a 20 20 20  lements the..   
15e80 20 2f 2f 2f 20 66 75 6e 63 74 69 6f 6e 20 74 6f   /// function to
15e90 20 62 65 20 62 6f 75 6e 64 2e 0d 0a 20 20 20 20   be bound...    
15ea0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
15eb0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 42 69    public void Bi
15ec0 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
15ed0 20 20 20 20 20 53 51 4c 69 74 65 46 75 6e 63 74       SQLiteFunct
15ee0 69 6f 6e 41 74 74 72 69 62 75 74 65 20 66 75 6e  ionAttribute fun
15ef0 63 74 69 6f 6e 41 74 74 72 69 62 75 74 65 2c 0d  ctionAttribute,.
15f00 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 46  .        SQLiteF
15f10 75 6e 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  unction function
15f20 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
15f30 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63   {..        Chec
15f40 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
15f50 20 20 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c          if (_sql
15f60 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
15f70 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
15f80 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
15f90 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  nException(..   
15fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44 61               "Da
15fb0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
15fc0 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72 20  n not valid for 
15fd0 62 69 6e 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e  binding function
15fe0 73 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s.");....       
15ff0 20 5f 73 71 6c 2e 42 69 6e 64 46 75 6e 63 74 69   _sql.BindFuncti
16000 6f 6e 28 66 75 6e 63 74 69 6f 6e 41 74 74 72 69  on(functionAttri
16010 62 75 74 65 2c 20 66 75 6e 63 74 69 6f 6e 2c 20  bute, function, 
16020 5f 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20 7d 0d  _flags);..    }.
16030 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16090 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
160a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
160b0 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
160c0 20 62 69 6e 64 20 74 68 65 20 73 70 65 63 69 66   bind the specif
160d0 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
160e0 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f  QLiteFunction" /
160f0 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f  > object..    //
16100 2f 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 74 68  / instance to th
16110 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  is connection...
16120 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16130 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
16140 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  am name="functio
16150 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20  nAttribute">..  
16160 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
16170 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
16180 69 6f 6e 41 74 74 72 69 62 75 74 65 22 20 2f 3e  ionAttribute" />
16190 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
161a0 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
161b0 20 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74   /// the metadat
161c0 61 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69  a for the functi
161d0 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
161e0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
161f0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
16200 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b  m name="callback
16210 31 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 3c  1">..    /// A <
16220 73 65 65 20 63 72 65 66 3d 22 44 65 6c 65 67 61  see cref="Delega
16230 74 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  te" /> object in
16240 73 74 61 6e 63 65 20 74 68 61 74 20 68 65 6c 70  stance that help
16250 73 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0d  s implement the.
16260 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69 6f  .    /// functio
16270 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 20 20  n to be bound.  
16280 46 6f 72 20 73 63 61 6c 61 72 20 66 75 6e 63 74  For scalar funct
16290 69 6f 6e 73 2c 20 74 68 69 73 20 63 6f 72 72 65  ions, this corre
162a0 73 70 6f 6e 64 73 20 74 6f 20 74 68 65 0d 0a 20  sponds to the.. 
162b0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
162c0 3d 22 53 51 4c 69 74 65 49 6e 76 6f 6b 65 44 65  ="SQLiteInvokeDe
162d0 6c 65 67 61 74 65 22 20 2f 3e 20 74 79 70 65 2e  legate" /> type.
162e0 20 20 46 6f 72 20 61 67 67 72 65 67 61 74 65 20    For aggregate 
162f0 66 75 6e 63 74 69 6f 6e 73 2c 0d 0a 20 20 20 20  functions,..    
16300 2f 2f 2f 20 74 68 69 73 20 63 6f 72 72 65 73 70  /// this corresp
16310 6f 6e 64 73 20 74 6f 20 74 68 65 20 3c 73 65 65  onds to the <see
16320 20 63 72 65 66 3d 22 53 51 4c 69 74 65 53 74 65   cref="SQLiteSte
16330 70 44 65 6c 65 67 61 74 65 22 20 2f 3e 20 74 79  pDelegate" /> ty
16340 70 65 2e 20 20 46 6f 72 0d 0a 20 20 20 20 2f 2f  pe.  For..    //
16350 2f 20 63 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63  / collation func
16360 74 69 6f 6e 73 2c 20 74 68 69 73 20 63 6f 72 72  tions, this corr
16370 65 73 70 6f 6e 64 73 20 74 6f 20 74 68 65 0d 0a  esponds to the..
16380 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
16390 66 3d 22 53 51 4c 69 74 65 43 6f 6d 70 61 72 65  f="SQLiteCompare
163a0 44 65 6c 65 67 61 74 65 22 20 2f 3e 20 74 79 70  Delegate" /> typ
163b0 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
163c0 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
163d0 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c 62  aram name="callb
163e0 61 63 6b 32 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ack2">..    /// 
163f0 41 20 3c 73 65 65 20 63 72 65 66 3d 22 44 65 6c  A <see cref="Del
16400 65 67 61 74 65 22 20 2f 3e 20 6f 62 6a 65 63 74  egate" /> object
16410 20 69 6e 73 74 61 6e 63 65 20 74 68 61 74 20 68   instance that h
16420 65 6c 70 73 20 69 6d 70 6c 65 6d 65 6e 74 20 74  elps implement t
16430 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63  he..    /// func
16440 74 69 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64  tion to be bound
16450 2e 20 20 46 6f 72 20 61 67 67 72 65 67 61 74 65  .  For aggregate
16460 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 69 73   functions, this
16470 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20   corresponds to 
16480 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  the..    /// <se
16490 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46 69  e cref="SQLiteFi
164a0 6e 61 6c 44 65 6c 65 67 61 74 65 22 20 2f 3e 20  nalDelegate" /> 
164b0 74 79 70 65 2e 20 20 46 6f 72 20 6f 74 68 65 72  type.  For other
164c0 20 63 61 6c 6c 62 61 63 6b 20 74 79 70 65 73 2c   callback types,
164d0 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20 69 73 20   it..    /// is 
164e0 6e 6f 74 20 75 73 65 64 20 61 6e 64 20 6d 75 73  not used and mus
164f0 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20  t be null...    
16500 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
16510 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 42 69    public void Bi
16520 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20  ndFunction(..   
16530 20 20 20 20 20 53 51 4c 69 74 65 46 75 6e 63 74       SQLiteFunct
16540 69 6f 6e 41 74 74 72 69 62 75 74 65 20 66 75 6e  ionAttribute fun
16550 63 74 69 6f 6e 41 74 74 72 69 62 75 74 65 2c 0d  ctionAttribute,.
16560 0a 20 20 20 20 20 20 20 20 44 65 6c 65 67 61 74  .        Delegat
16570 65 20 63 61 6c 6c 62 61 63 6b 31 2c 0d 0a 20 20  e callback1,..  
16580 20 20 20 20 20 20 44 65 6c 65 67 61 74 65 20 63        Delegate c
16590 61 6c 6c 62 61 63 6b 32 0d 0a 20 20 20 20 20 20  allback2..      
165a0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
165b0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
165c0 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
165d0 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c  if (_sql == null
165e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  )..            t
165f0 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
16600 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
16610 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
16620 20 20 20 20 20 22 44 61 74 61 62 61 73 65 20 63       "Database c
16630 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61  onnection not va
16640 6c 69 64 20 66 6f 72 20 62 69 6e 64 69 6e 67 20  lid for binding 
16650 66 75 6e 63 74 69 6f 6e 73 2e 22 29 3b 0d 0a 0d  functions.");...
16660 0a 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 42 69  .        _sql.Bi
16670 6e 64 46 75 6e 63 74 69 6f 6e 28 66 75 6e 63 74  ndFunction(funct
16680 69 6f 6e 41 74 74 72 69 62 75 74 65 2c 0d 0a 20  ionAttribute,.. 
16690 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
166a0 51 4c 69 74 65 44 65 6c 65 67 61 74 65 46 75 6e  QLiteDelegateFun
166b0 63 74 69 6f 6e 28 63 61 6c 6c 62 61 63 6b 31 2c  ction(callback1,
166c0 20 63 61 6c 6c 62 61 63 6b 32 29 2c 20 5f 66 6c   callback2), _fl
166d0 61 67 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ags);..    }....
166e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
166f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16740 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
16750 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
16760 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 75 6e  / Attempts to un
16770 62 69 6e 64 20 74 68 65 20 73 70 65 63 69 66 69  bind the specifi
16780 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ed <see cref="SQ
16790 4c 69 74 65 46 75 6e 63 74 69 6f 6e 22 20 2f 3e  LiteFunction" />
167a0 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f   object..    ///
167b0 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 74 68 69   instance to thi
167c0 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  s connection... 
167d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
167e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
167f0 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  m name="function
16800 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20 20  Attribute">..   
16810 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
16820 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74 69  ef="SQLiteFuncti
16830 6f 6e 41 74 74 72 69 62 75 74 65 22 20 2f 3e 20  onAttribute" /> 
16840 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
16850 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
16860 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74 61  /// the metadata
16870 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f   for the functio
16880 6e 20 74 6f 20 62 65 20 75 6e 62 6f 75 6e 64 2e  n to be unbound.
16890 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
168a0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
168b0 75 72 6e 73 3e 4e 6f 6e 2d 7a 65 72 6f 20 69 66  urns>Non-zero if
168c0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 77 61   the function wa
168d0 73 20 75 6e 62 6f 75 6e 64 2e 3c 2f 72 65 74 75  s unbound.</retu
168e0 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
168f0 20 62 6f 6f 6c 20 55 6e 62 69 6e 64 46 75 6e 63   bool UnbindFunc
16900 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 53  tion(..        S
16910 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41 74 74  QLiteFunctionAtt
16920 72 69 62 75 74 65 20 66 75 6e 63 74 69 6f 6e 41  ribute functionA
16930 74 74 72 69 62 75 74 65 0d 0a 20 20 20 20 20 20  ttribute..      
16940 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
16950 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
16960 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
16970 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c  if (_sql == null
16980 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  )..            t
16990 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
169a0 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
169b0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
169c0 20 20 20 20 20 22 44 61 74 61 62 61 73 65 20 63       "Database c
169d0 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61  onnection not va
169e0 6c 69 64 20 66 6f 72 20 75 6e 62 69 6e 64 69 6e  lid for unbindin
169f0 67 20 66 75 6e 63 74 69 6f 6e 73 2e 22 29 3b 0d  g functions.");.
16a00 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
16a10 6e 20 5f 73 71 6c 2e 55 6e 62 69 6e 64 46 75 6e  n _sql.UnbindFun
16a20 63 74 69 6f 6e 28 66 75 6e 63 74 69 6f 6e 41 74  ction(functionAt
16a30 74 72 69 62 75 74 65 2c 20 5f 66 6c 61 67 73 29  tribute, _flags)
16a40 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16ab0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
16ac0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
16ad0 69 73 20 6d 65 74 68 6f 64 20 75 6e 62 69 6e 64  is method unbind
16ae0 73 20 61 6c 6c 20 72 65 67 69 73 74 65 72 65 64  s all registered
16af0 20 28 6b 6e 6f 77 6e 29 20 66 75 6e 63 74 69 6f   (known) functio
16b00 6e 73 20 2d 4f 52 2d 20 61 6c 6c 20 70 72 65 76  ns -OR- all prev
16b10 69 6f 75 73 6c 79 0d 0a 20 20 20 20 2f 2f 2f 20  iously..    /// 
16b20 62 6f 75 6e 64 20 75 73 65 72 2d 64 65 66 69 6e  bound user-defin
16b30 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 66 72 6f  ed functions fro
16b40 6d 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f  m this connectio
16b50 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  n...    /// </su
16b60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
16b70 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 65 67  <param name="reg
16b80 69 73 74 65 72 65 64 22 3e 0d 0a 20 20 20 20 2f  istered">..    /
16b90 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 75  // Non-zero to u
16ba0 6e 62 69 6e 64 20 61 6c 6c 20 72 65 67 69 73 74  nbind all regist
16bb0 65 72 65 64 20 28 6b 6e 6f 77 6e 29 20 66 75 6e  ered (known) fun
16bc0 63 74 69 6f 6e 73 20 2d 4f 52 2d 20 7a 65 72 6f  ctions -OR- zero
16bd0 20 74 6f 20 75 6e 62 69 6e 64 0d 0a 20 20 20 20   to unbind..    
16be0 2f 2f 2f 20 61 6c 6c 20 66 75 6e 63 74 69 6f 6e  /// all function
16bf0 73 20 63 75 72 72 65 6e 74 6c 79 20 62 6f 75 6e  s currently boun
16c00 64 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74  d to the connect
16c10 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
16c20 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
16c30 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
16c40 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 61  // Non-zero if a
16c50 6c 6c 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ll the specified
16c60 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 66 75   user-defined fu
16c70 6e 63 74 69 6f 6e 73 20 77 65 72 65 20 75 6e 62  nctions were unb
16c80 6f 75 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ound...    /// <
16c90 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
16ca0 75 62 6c 69 63 20 62 6f 6f 6c 20 55 6e 62 69 6e  ublic bool Unbin
16cb0 64 41 6c 6c 46 75 6e 63 74 69 6f 6e 73 28 0d 0a  dAllFunctions(..
16cc0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 67          bool reg
16cd0 69 73 74 65 72 65 64 0d 0a 20 20 20 20 20 20 20  istered..       
16ce0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
16cf0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
16d00 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ();....        i
16d10 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29  f (_sql == null)
16d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
16d30 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
16d40 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
16d50 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
16d60 20 20 20 20 22 44 61 74 61 62 61 73 65 20 63 6f      "Database co
16d70 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c  nnection not val
16d80 69 64 20 66 6f 72 20 75 6e 62 69 6e 64 69 6e 67  id for unbinding
16d90 20 66 75 6e 63 74 69 6f 6e 73 2e 22 29 3b 0d 0a   functions.");..
16da0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
16db0 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e   SQLiteFunction.
16dc0 55 6e 62 69 6e 64 41 6c 6c 46 75 6e 63 74 69 6f  UnbindAllFunctio
16dd0 6e 73 28 5f 73 71 6c 2c 20 5f 66 6c 61 67 73 2c  ns(_sql, _flags,
16de0 20 72 65 67 69 73 74 65 72 65 64 29 3b 0d 0a 20   registered);.. 
16df0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
16e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16e60 20 20 20 5b 43 6f 6e 64 69 74 69 6f 6e 61 6c 28     [Conditional(
16e70 22 43 48 45 43 4b 5f 53 54 41 54 45 22 29 5d 0d  "CHECK_STATE")].
16e80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
16e90 61 74 69 63 20 76 6f 69 64 20 43 68 65 63 6b 28  atic void Check(
16ea0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
16eb0 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 0d 0a 20 20   connection)..  
16ec0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
16ed0 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e  (connection == n
16ee0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
16ef0 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
16f00 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
16f10 6e 28 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 29 3b  n("connection");
16f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e  ....        conn
16f30 65 63 74 69 6f 6e 2e 43 68 65 63 6b 44 69 73 70  ection.CheckDisp
16f40 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
16f50 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f     if (connectio
16f60 6e 2e 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61  n._connectionSta
16f70 74 65 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e  te != Connection
16f80 53 74 61 74 65 2e 4f 70 65 6e 29 0d 0a 20 20 20  State.Open)..   
16f90 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
16fa0 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  ew InvalidOperat
16fb0 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 54 68  ionException("Th
16fc0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
16fd0 6e 6f 74 20 6f 70 65 6e 2e 22 29 3b 0d 0a 0d 0a  not open.");....
16fe0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 33 20          SQLite3 
16ff0 73 71 6c 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  sql = connection
17000 2e 5f 73 71 6c 20 61 73 20 53 51 4c 69 74 65 33  ._sql as SQLite3
17010 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
17020 28 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  (sql == null).. 
17030 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
17040 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
17050 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22  ationException("
17060 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  The connection h
17070 61 6e 64 6c 65 20 77 72 61 70 70 65 72 20 69 73  andle wrapper is
17080 20 6e 75 6c 6c 2e 22 29 3b 0d 0a 0d 0a 20 20 20   null.");....   
17090 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
170a0 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 61 6e 64  ctionHandle hand
170b0 6c 65 20 3d 20 73 71 6c 2e 5f 73 71 6c 3b 0d 0a  le = sql._sql;..
170c0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 68 61  ..        if (ha
170d0 6e 64 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ndle == null).. 
170e0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
170f0 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
17100 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22  ationException("
17110 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  The connection h
17120 61 6e 64 6c 65 20 69 73 20 6e 75 6c 6c 2e 22 29  andle is null.")
17130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
17140 28 68 61 6e 64 6c 65 2e 49 73 49 6e 76 61 6c 69  (handle.IsInvali
17150 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
17160 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
17170 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
17180 69 6f 6e 28 22 54 68 65 20 63 6f 6e 6e 65 63 74  ion("The connect
17190 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 69 6e  ion handle is in
171a0 76 61 6c 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20  valid.");....   
171b0 20 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 2e       if (handle.
171c0 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
171d0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
171e0 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
171f0 6e 45 78 63 65 70 74 69 6f 6e 28 22 54 68 65 20  nException("The 
17200 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c  connection handl
17210 65 20 69 73 20 63 6c 6f 73 65 64 2e 22 29 3b 0d  e is closed.");.
17220 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17290 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
172a0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50 61 72 73  y>..    /// Pars
172b0 65 73 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  es a connection 
172c0 73 74 72 69 6e 67 20 69 6e 74 6f 20 63 6f 6d 70  string into comp
172d0 6f 6e 65 6e 74 20 70 61 72 74 73 20 75 73 69 6e  onent parts usin
172e0 67 20 74 68 65 20 63 75 73 74 6f 6d 0d 0a 20 20  g the custom..  
172f0 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e    /// connection
17300 20 73 74 72 69 6e 67 20 70 61 72 73 65 72 2e 20   string parser. 
17310 20 41 6e 20 65 78 63 65 70 74 69 6f 6e 20 6d 61   An exception ma
17320 79 20 62 65 20 74 68 72 6f 77 6e 20 69 66 20 74  y be thrown if t
17330 68 65 20 73 79 6e 74 61 78 0d 0a 20 20 20 20 2f  he syntax..    /
17340 2f 2f 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63  // of the connec
17350 74 69 6f 6e 20 73 74 72 69 6e 67 20 69 73 20 69  tion string is i
17360 6e 63 6f 72 72 65 63 74 2e 0d 0a 20 20 20 20 2f  ncorrect...    /
17370 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17380 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17390 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 53 74  me="connectionSt
173a0 72 69 6e 67 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ring">..    /// 
173b0 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  The connection s
173c0 74 72 69 6e 67 20 74 6f 20 70 61 72 73 65 2e 0d  tring to parse..
173d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
173e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
173f0 6d 20 6e 61 6d 65 3d 22 70 61 72 73 65 56 69 61  m name="parseVia
17400 46 72 61 6d 65 77 6f 72 6b 22 3e 0d 0a 20 20 20  Framework">..   
17410 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
17420 20 70 61 72 73 65 20 74 68 65 20 63 6f 6e 6e 65   parse the conne
17430 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 75 73 69  ction string usi
17440 6e 67 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d  ng the algorithm
17450 20 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20 2f   provided..    /
17460 2f 2f 20 62 79 20 74 68 65 20 66 72 61 6d 65 77  // by the framew
17470 6f 72 6b 20 69 74 73 65 6c 66 2e 20 20 54 68 69  ork itself.  Thi
17480 73 20 69 73 20 6e 6f 74 20 61 70 70 6c 69 63 61  s is not applica
17490 62 6c 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  ble when running
174a0 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f   on the..    ///
174b0 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
174c0 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 2f 2f  amework...    //
174d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
174e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
174f0 22 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 22 3e  "allowNameOnly">
17500 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
17510 72 6f 20 69 66 20 6e 61 6d 65 73 20 61 72 65 20  ro if names are 
17520 61 6c 6c 6f 77 65 64 20 77 69 74 68 6f 75 74 20  allowed without 
17530 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  values...    ///
17540 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
17550 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
17560 20 20 2f 2f 2f 20 54 68 65 20 6c 69 73 74 20 6f    /// The list o
17570 66 20 6b 65 79 2f 76 61 6c 75 65 20 70 61 69 72  f key/value pair
17580 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  s corresponding 
17590 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  to the parameter
175a0 73 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  s specified..   
175b0 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20   /// within the 
175c0 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
175d0 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  g...    /// </re
175e0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
175f0 72 6e 61 6c 20 73 74 61 74 69 63 20 53 6f 72 74  rnal static Sort
17600 65 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20 73  edList<string, s
17610 74 72 69 6e 67 3e 20 50 61 72 73 65 43 6f 6e 6e  tring> ParseConn
17620 65 63 74 69 6f 6e 53 74 72 69 6e 67 28 0d 0a 20  ectionString(.. 
17630 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
17640 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c 0d  nnectionString,.
17650 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 61  .        bool pa
17660 72 73 65 56 69 61 46 72 61 6d 65 77 6f 72 6b 2c  rseViaFramework,
17670 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 61  ..        bool a
17680 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 0d 0a 20 20  llowNameOnly..  
17690 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
176a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
176b0 61 72 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  arseConnectionSt
176c0 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
176d0 20 20 20 6e 75 6c 6c 2c 20 63 6f 6e 6e 65 63 74     null, connect
176e0 69 6f 6e 53 74 72 69 6e 67 2c 20 70 61 72 73 65  ionString, parse
176f0 56 69 61 46 72 61 6d 65 77 6f 72 6b 2c 20 61 6c  ViaFramework, al
17700 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 29 3b 0d 0a 20  lowNameOnly);.. 
17710 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
17720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17780 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17790 0d 0a 20 20 20 20 2f 2f 2f 20 50 61 72 73 65 73  ..    /// Parses
177a0 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74   a connection st
177b0 72 69 6e 67 20 69 6e 74 6f 20 63 6f 6d 70 6f 6e  ring into compon
177c0 65 6e 74 20 70 61 72 74 73 20 75 73 69 6e 67 20  ent parts using 
177d0 74 68 65 20 63 75 73 74 6f 6d 0d 0a 20 20 20 20  the custom..    
177e0 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  /// connection s
177f0 74 72 69 6e 67 20 70 61 72 73 65 72 2e 20 20 41  tring parser.  A
17800 6e 20 65 78 63 65 70 74 69 6f 6e 20 6d 61 79 20  n exception may 
17810 62 65 20 74 68 72 6f 77 6e 20 69 66 20 74 68 65  be thrown if the
17820 20 73 79 6e 74 61 78 0d 0a 20 20 20 20 2f 2f 2f   syntax..    ///
17830 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   of the connecti
17840 6f 6e 20 73 74 72 69 6e 67 20 69 73 20 69 6e 63  on string is inc
17850 6f 72 72 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  orrect...    ///
17860 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17870 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
17880 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a  ="connection">..
17890 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
178a0 65 63 74 69 6f 6e 20 74 68 61 74 20 77 69 6c 6c  ection that will
178b0 20 62 65 20 75 73 69 6e 67 20 74 68 65 20 70 61   be using the pa
178c0 72 73 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rsed connection 
178d0 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f  string...    ///
178e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
178f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17900 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  connectionString
17910 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
17920 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
17930 67 20 74 6f 20 70 61 72 73 65 2e 0d 0a 20 20 20  g to parse...   
17940 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
17950 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
17960 6d 65 3d 22 70 61 72 73 65 56 69 61 46 72 61 6d  me="parseViaFram
17970 65 77 6f 72 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ework">..    ///
17980 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 70 61 72   Non-zero to par
17990 73 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  se the connectio
179a0 6e 20 73 74 72 69 6e 67 20 75 73 69 6e 67 20 74  n string using t
179b0 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 70 72 6f  he algorithm pro
179c0 76 69 64 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 62  vided..    /// b
179d0 79 20 74 68 65 20 66 72 61 6d 65 77 6f 72 6b 20  y the framework 
179e0 69 74 73 65 6c 66 2e 20 20 54 68 69 73 20 69 73  itself.  This is
179f0 20 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c 65 20   not applicable 
17a00 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  when running on 
17a10 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 2e 4e 45  the..    /// .NE
17a20 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77  T Compact Framew
17a30 6f 72 6b 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ork...    /// </
17a40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
17a50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 6c  <param name="all
17a60 6f 77 4e 61 6d 65 4f 6e 6c 79 22 3e 0d 0a 20 20  owNameOnly">..  
17a70 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
17a80 66 20 6e 61 6d 65 73 20 61 72 65 20 61 6c 6c 6f  f names are allo
17a90 77 65 64 20 77 69 74 68 6f 75 74 20 76 61 6c 75  wed without valu
17aa0 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  es...    /// </p
17ab0 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
17ac0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
17ad0 2f 20 54 68 65 20 6c 69 73 74 20 6f 66 20 6b 65  / The list of ke
17ae0 79 2f 76 61 6c 75 65 20 70 61 69 72 73 20 63 6f  y/value pairs co
17af0 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
17b00 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 73 70  he parameters sp
17b10 65 63 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f  ecified..    ///
17b20 20 77 69 74 68 69 6e 20 74 68 65 20 63 6f 6e 6e   within the conn
17b30 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a  ection string...
17b40 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
17b50 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  s>..    private 
17b60 73 74 61 74 69 63 20 53 6f 72 74 65 64 4c 69 73  static SortedLis
17b70 74 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67  t<string, string
17b80 3e 20 50 61 72 73 65 43 6f 6e 6e 65 63 74 69 6f  > ParseConnectio
17b90 6e 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  nString(..      
17ba0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
17bb0 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a  on connection,..
17bc0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
17bd0 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c  onnectionString,
17be0 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70  ..        bool p
17bf0 61 72 73 65 56 69 61 46 72 61 6d 65 77 6f 72 6b  arseViaFramework
17c00 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  ,..        bool 
17c10 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 0d 0a 20  allowNameOnly.. 
17c20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
17c30 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
17c40 70 61 72 73 65 56 69 61 46 72 61 6d 65 77 6f 72  parseViaFramewor
17c50 6b 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k ?..           
17c60 20 50 61 72 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   ParseConnection
17c70 53 74 72 69 6e 67 56 69 61 46 72 61 6d 65 77 6f  StringViaFramewo
17c80 72 6b 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 63  rk(connection, c
17c90 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c  onnectionString,
17ca0 20 66 61 6c 73 65 29 20 3a 0d 0a 20 20 20 20 20   false) :..     
17cb0 20 20 20 20 20 20 20 50 61 72 73 65 43 6f 6e 6e         ParseConn
17cc0 65 63 74 69 6f 6e 53 74 72 69 6e 67 28 63 6f 6e  ectionString(con
17cd0 6e 65 63 74 69 6f 6e 2c 20 63 6f 6e 6e 65 63 74  nection, connect
17ce0 69 6f 6e 53 74 72 69 6e 67 2c 20 61 6c 6c 6f 77  ionString, allow
17cf0 4e 61 6d 65 4f 6e 6c 79 29 3b 0d 0a 20 20 20 20  NameOnly);..    
17d00 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
17d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17d70 70 72 69 76 61 74 65 20 76 6f 69 64 20 53 65 74  private void Set
17d80 75 70 53 51 4c 69 74 65 42 61 73 65 28 53 6f 72  upSQLiteBase(Sor
17d90 74 65 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20  tedList<string, 
17da0 73 74 72 69 6e 67 3e 20 6f 70 74 73 29 0d 0a 20  string> opts).. 
17db0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62     {..        ob
17dc0 6a 65 63 74 20 65 6e 75 6d 56 61 6c 75 65 3b 0d  ject enumValue;.
17dd0 0a 0d 0a 20 20 20 20 20 20 20 20 65 6e 75 6d 56  ...        enumV
17de0 61 6c 75 65 20 3d 20 54 72 79 50 61 72 73 65 45  alue = TryParseE
17df0 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20  num(..          
17e00 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 44    typeof(SQLiteD
17e10 61 74 65 46 6f 72 6d 61 74 73 29 2c 20 46 69 6e  ateFormats), Fin
17e20 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 61 74 65  dKey(opts, "Date
17e30 54 69 6d 65 46 6f 72 6d 61 74 22 2c 0d 0a 20 20  TimeFormat",..  
17e40 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
17e50 74 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2e  tDateTimeFormat.
17e60 54 6f 53 74 72 69 6e 67 28 29 29 2c 20 74 72 75  ToString()), tru
17e70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 53  e);....        S
17e80 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
17e90 20 64 61 74 65 46 6f 72 6d 61 74 20 3d 20 28 65   dateFormat = (e
17ea0 6e 75 6d 56 61 6c 75 65 20 69 73 20 53 51 4c 69  numValue is SQLi
17eb0 74 65 44 61 74 65 46 6f 72 6d 61 74 73 29 20 3f  teDateFormats) ?
17ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 53  ..            (S
17ed0 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
17ee0 29 65 6e 75 6d 56 61 6c 75 65 20 3a 20 44 65 66  )enumValue : Def
17ef0 61 75 6c 74 44 61 74 65 54 69 6d 65 46 6f 72 6d  aultDateTimeForm
17f00 61 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 65  at;....        e
17f10 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50 61  numValue = TryPa
17f20 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20  rseEnum(..      
17f30 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74        typeof(Dat
17f40 65 54 69 6d 65 4b 69 6e 64 29 2c 20 46 69 6e 64  eTimeKind), Find
17f50 4b 65 79 28 6f 70 74 73 2c 20 22 44 61 74 65 54  Key(opts, "DateT
17f60 69 6d 65 4b 69 6e 64 22 2c 0d 0a 20 20 20 20 20  imeKind",..     
17f70 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 44 61         DefaultDa
17f80 74 65 54 69 6d 65 4b 69 6e 64 2e 54 6f 53 74 72  teTimeKind.ToStr
17f90 69 6e 67 28 29 29 2c 20 74 72 75 65 29 3b 0d 0a  ing()), true);..
17fa0 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
17fb0 6d 65 4b 69 6e 64 20 6b 69 6e 64 20 3d 20 28 65  meKind kind = (e
17fc0 6e 75 6d 56 61 6c 75 65 20 69 73 20 44 61 74 65  numValue is Date
17fd0 54 69 6d 65 4b 69 6e 64 29 20 3f 0d 0a 20 20 20  TimeKind) ?..   
17fe0 20 20 20 20 20 20 20 20 20 28 44 61 74 65 54 69           (DateTi
17ff0 6d 65 4b 69 6e 64 29 65 6e 75 6d 56 61 6c 75 65  meKind)enumValue
18000 20 3a 20 44 65 66 61 75 6c 74 44 61 74 65 54 69   : DefaultDateTi
18010 6d 65 4b 69 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20  meKind;....     
18020 20 20 20 73 74 72 69 6e 67 20 64 61 74 65 54 69     string dateTi
18030 6d 65 46 6f 72 6d 61 74 20 3d 20 46 69 6e 64 4b  meFormat = FindK
18040 65 79 28 6f 70 74 73 2c 20 22 44 61 74 65 54 69  ey(opts, "DateTi
18050 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 22 2c  meFormatString",
18060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65  ..            De
18070 66 61 75 6c 74 44 61 74 65 54 69 6d 65 46 6f 72  faultDateTimeFor
18080 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a 0d 0a 20  matString);.... 
18090 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
180a0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 51 4c 69     // NOTE: SQLi
180b0 74 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  te automatically
180c0 20 73 65 74 73 20 74 68 65 20 65 6e 63 6f 64 69   sets the encodi
180d0 6e 67 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ng of the databa
180e0 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  se..        //  
180f0 20 20 20 20 20 74 6f 20 55 54 46 31 36 20 69 66       to UTF16 if
18100 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 73 71 6c   called from sql
18110 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 0d 0a  ite3_open16()...
18120 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18130 20 20 20 20 69 66 20 28 53 51 4c 69 74 65 43 6f      if (SQLiteCo
18140 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28  nvert.ToBoolean(
18150 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 55  FindKey(opts, "U
18160 73 65 55 54 46 31 36 45 6e 63 6f 64 69 6e 67 22  seUTF16Encoding"
18170 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18180 20 20 20 20 20 44 65 66 61 75 6c 74 55 73 65 55       DefaultUseU
18190 54 46 31 36 45 6e 63 6f 64 69 6e 67 2e 54 6f 53  TF16Encoding.ToS
181a0 74 72 69 6e 67 28 29 29 29 29 0d 0a 20 20 20 20  tring())))..    
181b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
181c0 20 20 20 5f 73 71 6c 20 3d 20 6e 65 77 20 53 51     _sql = new SQ
181d0 4c 69 74 65 33 5f 55 54 46 31 36 28 0d 0a 20 20  Lite3_UTF16(..  
181e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61                da
181f0 74 65 46 6f 72 6d 61 74 2c 20 6b 69 6e 64 2c 20  teFormat, kind, 
18200 64 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20  dateTimeFormat, 
18210 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20 6e 75 6c  IntPtr.Zero, nul
18220 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
18230 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20      false);..   
18240 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
18250 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  else..        {.
18260 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 73 71  .            _sq
18270 6c 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 33 28  l = new SQLite3(
18280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18290 20 20 64 61 74 65 46 6f 72 6d 61 74 2c 20 6b 69    dateFormat, ki
182a0 6e 64 2c 20 64 61 74 65 54 69 6d 65 46 6f 72 6d  nd, dateTimeForm
182b0 61 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  at, IntPtr.Zero,
182c0 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20   null,..        
182d0 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d          false);.
182e0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
182f0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18360 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
18370 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ble Members..   
18380 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18390 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
183a0 20 61 6e 64 20 66 69 6e 61 6c 69 7a 65 73 20 74   and finalizes t
183b0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 69  he connection, i
183c0 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d 0a 20  f applicable... 
183d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
183e0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6e 65  >..    public ne
183f0 77 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  w void Dispose()
18400 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
18410 20 69 66 20 28 5f 6e 6f 44 69 73 70 6f 73 65 29   if (_noDispose)
18420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
18430 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
18440 20 62 61 73 65 2e 44 69 73 70 6f 73 65 28 29 3b   base.Dispose();
18450 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
18460 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
18470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
184d0 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44  ..    #region ID
184e0 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65  isposable "Patte
184f0 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  rn" Members..   
18500 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
18510 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 69  sposed;..    pri
18520 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44  vate void CheckD
18530 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72  isposed() /* thr
18540 6f 77 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 23 69  ow */..    {..#i
18550 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f  f THROW_ON_DISPO
18560 53 45 44 0d 0a 20 20 20 20 20 20 20 20 69 66 20  SED..        if 
18570 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  (disposed)..    
18580 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
18590 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
185a0 45 78 63 65 70 74 69 6f 6e 28 74 79 70 65 6f 66  Exception(typeof
185b0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
185c0 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69  n).Name);..#endi
185d0 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  f..    }....    
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18640 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
18650 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6c  ary>..    /// Cl
18660 65 61 6e 73 20 75 70 20 72 65 73 6f 75 72 63 65  eans up resource
18670 73 20 28 6e 61 74 69 76 65 20 61 6e 64 20 6d 61  s (native and ma
18680 6e 61 67 65 64 29 20 61 73 73 6f 63 69 61 74 65  naged) associate
18690 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65  d with the curre
186a0 6e 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  nt instance...  
186b0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
186c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
186d0 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
186e0 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5a 65 72 6f  ">..    /// Zero
186f0 20 77 68 65 6e 20 62 65 69 6e 67 20 64 69 73 70   when being disp
18700 6f 73 65 64 20 76 69 61 20 67 61 72 62 61 67 65  osed via garbage
18710 20 63 6f 6c 6c 65 63 74 69 6f 6e 3b 20 6f 74 68   collection; oth
18720 65 72 77 69 73 65 2c 20 6e 6f 6e 2d 7a 65 72 6f  erwise, non-zero
18730 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
18740 61 6d 3e 0d 0a 20 20 20 20 70 72 6f 74 65 63 74  am>..    protect
18750 65 64 20 6f 76 65 72 72 69 64 65 20 76 6f 69 64  ed override void
18760 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69   Dispose(bool di
18770 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b 0d  sposing)..    {.
18780 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
18790 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41  T_20 && TRACE_WA
187a0 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 69  RNING..        i
187b0 66 20 28 28 5f 66 6c 61 67 73 20 26 20 53 51 4c  f ((_flags & SQL
187c0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
187d0 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
187e0 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
187f0 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57  tionFlags.TraceW
18800 61 72 6e 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  arning)..       
18810 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18820 69 66 20 28 5f 6e 6f 44 69 73 70 6f 73 65 29 0d  if (_noDispose).
18830 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
18840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18850 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69  System.Diagnosti
18860 63 73 2e 54 72 61 63 65 2e 57 72 69 74 65 4c 69  cs.Trace.WriteLi
18870 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
18880 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
18890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
188a0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
188b0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
188c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
188d0 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 44       "WARNING: D
188e0 69 73 70 6f 73 69 6e 67 20 6f 66 20 63 6f 6e 6e  isposing of conn
188f0 65 63 74 69 6f 6e 20 5c 22 7b 30 7d 5c 22 20 77  ection \"{0}\" w
18900 69 74 68 20 74 68 65 20 6e 6f 2d 64 69 73 70 6f  ith the no-dispo
18910 73 65 20 66 6c 61 67 20 73 65 74 2e 22 2c 0d 0a  se flag set.",..
18920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18930 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53      _connectionS
18940 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
18950 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18960 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
18970 20 20 20 20 20 20 5f 64 69 73 70 6f 73 69 6e 67        _disposing
18980 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20   = true;....    
18990 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
189a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
189b0 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a  if (!disposed)..
189c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
189d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
189e0 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
189f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18a00 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   //{..          
18a10 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f        //    ////
18a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a50 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
18a60 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
18a70 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
18a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
18a90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ab0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
18ac0 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d            //}...
18ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ae0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b00 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
18b10 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
18b20 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
18b30 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
18b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18b50 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18b80 20 20 20 20 20 20 20 20 20 20 20 43 6c 6f 73 65             Close
18b90 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
18ba0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
18bb0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
18bc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18bd0 20 20 20 20 20 20 20 62 61 73 65 2e 44 69 73 70         base.Disp
18be0 6f 73 65 28 64 69 73 70 6f 73 69 6e 67 29 3b 0d  ose(disposing);.
18bf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
18c00 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
18c10 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69  / NOTE: Everythi
18c20 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c  ng should be ful
18c30 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74  ly disposed at t
18c40 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20  his point...    
18c50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18c60 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64          disposed
18c70 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
18c80 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20    }..    }..    
18c90 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
18ca0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52  /....#if PLATFOR
18d10 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
18d20 52 4b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  RK..    /// <sum
18d30 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f  mary>..    /// O
18d40 62 73 6f 6c 65 74 65 0d 0a 20 20 20 20 2f 2f 2f  bsolete..    ///
18d50 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18d60 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
18d70 20 69 6e 74 20 43 6f 6e 6e 65 63 74 69 6f 6e 54   int ConnectionT
18d80 69 6d 65 6f 75 74 0d 0a 20 20 20 20 7b 0d 0a 20  imeout..    {.. 
18d90 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
18da0 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b  {..        Check
18db0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
18dc0 20 20 20 20 20 72 65 74 75 72 6e 20 44 65 66 61       return Defa
18dd0 75 6c 74 43 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d  ultConnectionTim
18de0 65 6f 75 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  eout;..      }..
18df0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
18e00 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
18e10 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65 61  y>..    /// Crea
18e20 74 65 73 20 61 20 63 6c 6f 6e 65 20 6f 66 20 74  tes a clone of t
18e30 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  he connection.  
18e40 41 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74  All attached dat
18e50 61 62 61 73 65 73 20 61 6e 64 20 75 73 65 72 2d  abases and user-
18e60 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e  defined function
18e70 73 20 61 72 65 20 63 6c 6f 6e 65 64 2e 20 20 49  s are cloned.  I
18e80 66 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 63  f the existing c
18e90 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65  onnection is ope
18ea0 6e 2c 20 74 68 65 20 63 6c 6f 6e 65 64 20 63 6f  n, the cloned co
18eb0 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  nnection..    //
18ec0 2f 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65 20 6f  / will also be o
18ed0 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  pened...    /// 
18ee0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18ef0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72  /// <returns></r
18f00 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
18f10 6c 69 63 20 6f 62 6a 65 63 74 20 43 6c 6f 6e 65  lic object Clone
18f20 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
18f30 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
18f40 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ;..      return 
18f50 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  new SQLiteConnec
18f60 74 69 6f 6e 28 74 68 69 73 29 3b 0d 0a 20 20 20  tion(this);..   
18f70 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
18f80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
18f90 20 43 72 65 61 74 65 73 20 61 20 64 61 74 61 62   Creates a datab
18fa0 61 73 65 20 66 69 6c 65 2e 20 20 54 68 69 73 20  ase file.  This 
18fb0 6a 75 73 74 20 63 72 65 61 74 65 73 20 61 20 7a  just creates a z
18fc0 65 72 6f 2d 62 79 74 65 20 66 69 6c 65 20 77 68  ero-byte file wh
18fd0 69 63 68 20 53 51 4c 69 74 65 0d 0a 20 20 20 20  ich SQLite..    
18fe0 2f 2f 2f 20 77 69 6c 6c 20 74 75 72 6e 20 69 6e  /// will turn in
18ff0 74 6f 20 61 20 64 61 74 61 62 61 73 65 20 77 68  to a database wh
19000 65 6e 20 74 68 65 20 66 69 6c 65 20 69 73 20 6f  en the file is o
19010 70 65 6e 65 64 20 70 72 6f 70 65 72 6c 79 2e 0d  pened properly..
19020 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
19030 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
19040 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 61 62 61  ram name="databa
19050 73 65 46 69 6c 65 4e 61 6d 65 22 3e 54 68 65 20  seFileName">The 
19060 66 69 6c 65 20 74 6f 20 63 72 65 61 74 65 3c 2f  file to create</
19070 70 61 72 61 6d 3e 0d 0a 20 20 20 20 73 74 61 74  param>..    stat
19080 69 63 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43  ic public void C
19090 72 65 61 74 65 46 69 6c 65 28 73 74 72 69 6e 67  reateFile(string
190a0 20 64 61 74 61 62 61 73 65 46 69 6c 65 4e 61 6d   databaseFileNam
190b0 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
190c0 20 46 69 6c 65 53 74 72 65 61 6d 20 66 73 20 3d   FileStream fs =
190d0 20 46 69 6c 65 2e 43 72 65 61 74 65 28 64 61 74   File.Create(dat
190e0 61 62 61 73 65 46 69 6c 65 4e 61 6d 65 29 3b 0d  abaseFileName);.
190f0 0a 20 20 20 20 20 20 66 73 2e 43 6c 6f 73 65 28  .      fs.Close(
19100 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
19110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19120 20 20 20 20 2f 2f 2f 20 52 61 69 73 65 73 20 74      /// Raises t
19130 68 65 20 73 74 61 74 65 20 63 68 61 6e 67 65 20  he state change 
19140 65 76 65 6e 74 20 77 68 65 6e 20 74 68 65 20 73  event when the s
19150 74 61 74 65 20 6f 66 20 74 68 65 20 63 6f 6e 6e  tate of the conn
19160 65 63 74 69 6f 6e 20 63 68 61 6e 67 65 73 0d 0a  ection changes..
19170 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
19180 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
19190 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 53 74 61 74  am name="newStat
191a0 65 22 3e 54 68 65 20 6e 65 77 20 63 6f 6e 6e 65  e">The new conne
191b0 63 74 69 6f 6e 20 73 74 61 74 65 2e 20 20 49 66  ction state.  If
191c0 20 74 68 69 73 20 69 73 20 64 69 66 66 65 72 65   this is differe
191d0 6e 74 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d  nt..    /// from
191e0 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 74   the previous st
191f0 61 74 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ate, the <see cr
19200 65 66 3d 22 53 74 61 74 65 43 68 61 6e 67 65 22  ef="StateChange"
19210 20 2f 3e 20 65 76 65 6e 74 20 69 73 0d 0a 20 20   /> event is..  
19220 20 20 2f 2f 2f 20 72 61 69 73 65 64 2e 3c 2f 70    /// raised.</p
19230 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
19240 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 76 65 6e  param name="even
19250 74 41 72 67 73 22 3e 54 68 65 20 65 76 65 6e 74  tArgs">The event
19260 20 64 61 74 61 20 63 72 65 61 74 65 64 20 66 6f   data created fo
19270 72 20 74 68 65 20 72 61 69 73 65 64 20 65 76 65  r the raised eve
19280 6e 74 2c 20 69 66 0d 0a 20 20 20 20 2f 2f 2f 20  nt, if..    /// 
19290 69 74 20 77 61 73 20 61 63 74 75 61 6c 6c 79 20  it was actually 
192a0 72 61 69 73 65 64 2e 3c 2f 70 61 72 61 6d 3e 0d  raised.</param>.
192b0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 76 6f  .    internal vo
192c0 69 64 20 4f 6e 53 74 61 74 65 43 68 61 6e 67 65  id OnStateChange
192d0 28 0d 0a 20 20 20 20 20 20 20 20 43 6f 6e 6e 65  (..        Conne
192e0 63 74 69 6f 6e 53 74 61 74 65 20 6e 65 77 53 74  ctionState newSt
192f0 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ate,..        re
19300 66 20 53 74 61 74 65 43 68 61 6e 67 65 45 76 65  f StateChangeEve
19310 6e 74 41 72 67 73 20 65 76 65 6e 74 41 72 67 73  ntArgs eventArgs
19320 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
19330 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 6f 6e 6e   {..        Conn
19340 65 63 74 69 6f 6e 53 74 61 74 65 20 6f 6c 64 53  ectionState oldS
19350 74 61 74 65 20 3d 20 5f 63 6f 6e 6e 65 63 74 69  tate = _connecti
19360 6f 6e 53 74 61 74 65 3b 0d 0a 0d 0a 20 20 20 20  onState;....    
19370 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53      _connectionS
19380 74 61 74 65 20 3d 20 6e 65 77 53 74 61 74 65 3b  tate = newState;
19390 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
193a0 28 53 74 61 74 65 43 68 61 6e 67 65 20 21 3d 20  (StateChange != 
193b0 6e 75 6c 6c 29 20 26 26 20 28 6e 65 77 53 74 61  null) && (newSta
193c0 74 65 20 21 3d 20 6f 6c 64 53 74 61 74 65 29 29  te != oldState))
193d0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
193e0 20 20 20 20 20 20 20 20 20 53 74 61 74 65 43 68           StateCh
193f0 61 6e 67 65 45 76 65 6e 74 41 72 67 73 20 6c 6f  angeEventArgs lo
19400 63 61 6c 45 76 65 6e 74 41 72 67 73 20 3d 0d 0a  calEventArgs =..
19410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19420 6e 65 77 20 53 74 61 74 65 43 68 61 6e 67 65 45  new StateChangeE
19430 76 65 6e 74 41 72 67 73 28 6f 6c 64 53 74 61 74  ventArgs(oldStat
19440 65 2c 20 6e 65 77 53 74 61 74 65 29 3b 0d 0a 0d  e, newState);...
19450 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61  .            Sta
19460 74 65 43 68 61 6e 67 65 28 74 68 69 73 2c 20 6c  teChange(this, l
19470 6f 63 61 6c 45 76 65 6e 74 41 72 67 73 29 3b 0d  ocalEventArgs);.
19480 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ...            e
19490 76 65 6e 74 41 72 67 73 20 3d 20 6c 6f 63 61 6c  ventArgs = local
194a0 45 76 65 6e 74 41 72 67 73 3b 0d 0a 20 20 20 20  EventArgs;..    
194b0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
194c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
194d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
194e0 6d 69 6e 65 73 20 61 6e 64 20 72 65 74 75 72 6e  mines and return
194f0 73 20 74 68 65 20 66 61 6c 6c 62 61 63 6b 20 64  s the fallback d
19500 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e  efault isolation
19510 20 6c 65 76 65 6c 20 77 68 65 6e 20 6f 6e 65 20   level when one 
19520 63 61 6e 6e 6f 74 20 62 65 0d 0a 20 20 20 20 2f  cannot be..    /
19530 2f 2f 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  // obtained from
19540 20 61 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e   an existing con
19550 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65  nection instance
19560 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
19570 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
19580 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
19590 2f 20 54 68 65 20 66 61 6c 6c 62 61 63 6b 20 64  / The fallback d
195a0 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e  efault isolation
195b0 20 6c 65 76 65 6c 20 66 6f 72 20 74 68 69 73 20   level for this 
195c0 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61  connection insta
195d0 6e 63 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f 2f  nce -OR-..    //
195e0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 73 6f  / <see cref="Iso
195f0 6c 61 74 69 6f 6e 4c 65 76 65 6c 2e 55 6e 73 70  lationLevel.Unsp
19600 65 63 69 66 69 65 64 22 20 2f 3e 20 69 66 20 69  ecified" /> if i
19610 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  t cannot be dete
19620 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  rmined...    ///
19630 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
19640 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
19650 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 47  IsolationLevel G
19660 65 74 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  etFallbackDefaul
19670 74 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28  tIsolationLevel(
19680 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
19690 20 20 72 65 74 75 72 6e 20 44 65 66 61 75 6c 74    return Default
196a0 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 3b 0d  IsolationLevel;.
196b0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
196c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
196d0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
196e0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
196f0 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69 6f  default isolatio
19700 6e 20 6c 65 76 65 6c 20 66 6f 72 20 74 68 69 73  n level for this
19710 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 73 74   connection inst
19720 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ance...    /// <
19730 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
19740 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
19750 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
19760 74 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65  t isolation leve
19770 6c 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65  l for this conne
19780 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 20 2d  ction instance -
19790 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  OR-..    /// <se
197a0 65 20 63 72 65 66 3d 22 49 73 6f 6c 61 74 69 6f  e cref="Isolatio
197b0 6e 4c 65 76 65 6c 2e 55 6e 73 70 65 63 69 66 69  nLevel.Unspecifi
197c0 65 64 22 20 2f 3e 20 69 66 20 69 74 20 63 61 6e  ed" /> if it can
197d0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
197e0 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  d...    /// </re
197f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
19800 72 6e 61 6c 20 49 73 6f 6c 61 74 69 6f 6e 4c 65  rnal IsolationLe
19810 76 65 6c 20 47 65 74 44 65 66 61 75 6c 74 49 73  vel GetDefaultIs
19820 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 29 0d 0a  olationLevel()..
19830 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
19840 65 74 75 72 6e 20 5f 64 65 66 61 75 6c 74 49 73  eturn _defaultIs
19850 6f 6c 61 74 69 6f 6e 3b 0d 0a 20 20 20 20 7d 0d  olation;..    }.
19860 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
19870 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 42  ary>..    /// OB
19880 53 4f 4c 45 54 45 2e 20 20 43 72 65 61 74 65 73  SOLETE.  Creates
19890 20 61 20 6e 65 77 20 53 51 4c 69 74 65 54 72 61   a new SQLiteTra
198a0 6e 73 61 63 74 69 6f 6e 20 69 66 20 6f 6e 65 20  nsaction if one 
198b0 69 73 6e 27 74 20 61 6c 72 65 61 64 79 20 61 63  isn't already ac
198c0 74 69 76 65 20 6f 6e 20 74 68 65 20 63 6f 6e 6e  tive on the conn
198d0 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  ection...    ///
198e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
198f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
19900 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  ="isolationLevel
19910 22 3e 54 68 69 73 20 70 61 72 61 6d 65 74 65 72  ">This parameter
19920 20 69 73 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 61   is ignored.</pa
19930 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
19940 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 65 72  aram name="defer
19950 72 65 64 4c 6f 63 6b 22 3e 57 68 65 6e 20 54 52  redLock">When TR
19960 55 45 2c 20 53 51 4c 69 74 65 20 64 65 66 65 72  UE, SQLite defer
19970 73 20 6f 62 74 61 69 6e 69 6e 67 20 61 20 77 72  s obtaining a wr
19980 69 74 65 20 6c 6f 63 6b 20 75 6e 74 69 6c 20 61  ite lock until a
19990 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
199a0 20 69 73 20 72 65 71 75 65 73 74 65 64 2e 0d 0a   is requested...
199b0 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 46 41 4c      /// When FAL
199c0 53 45 2c 20 61 20 77 72 69 74 65 6c 6f 63 6b 20  SE, a writelock 
199d0 69 73 20 6f 62 74 61 69 6e 65 64 20 69 6d 6d 65  is obtained imme
199e0 64 69 61 74 65 6c 79 2e 20 20 54 68 65 20 64 65  diately.  The de
199f0 66 61 75 6c 74 20 69 73 20 54 52 55 45 2c 20 62  fault is TRUE, b
19a00 75 74 20 69 6e 20 61 20 6d 75 6c 74 69 2d 74 68  ut in a multi-th
19a10 72 65 61 64 65 64 20 6d 75 6c 74 69 2d 77 72 69  readed multi-wri
19a20 74 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 65 6e 76  ter..    /// env
19a30 69 72 6f 6e 6d 65 6e 74 2c 20 6f 6e 65 20 6d 61  ironment, one ma
19a40 79 20 69 6e 73 74 65 61 64 20 63 68 6f 6f 73 65  y instead choose
19a50 20 74 6f 20 6c 6f 63 6b 20 74 68 65 20 64 61 74   to lock the dat
19a60 61 62 61 73 65 20 69 6d 6d 65 64 69 61 74 65 6c  abase immediatel
19a70 79 20 74 6f 20 61 76 6f 69 64 20 61 6e 79 20 70  y to avoid any p
19a80 6f 73 73 69 62 6c 65 20 77 72 69 74 65 72 20 64  ossible writer d
19a90 65 61 64 6c 6f 63 6b 2e 3c 2f 70 61 72 61 6d 3e  eadlock.</param>
19aa0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
19ab0 6e 73 3e 52 65 74 75 72 6e 73 20 61 20 53 51 4c  ns>Returns a SQL
19ac0 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 20 6f  iteTransaction o
19ad0 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e 73 3e  bject.</returns>
19ae0 0d 0a 20 20 20 20 5b 4f 62 73 6f 6c 65 74 65 28  ..    [Obsolete(
19af0 22 55 73 65 20 6f 6e 65 20 6f 66 20 74 68 65 20  "Use one of the 
19b00 73 74 61 6e 64 61 72 64 20 42 65 67 69 6e 54 72  standard BeginTr
19b10 61 6e 73 61 63 74 69 6f 6e 20 6d 65 74 68 6f 64  ansaction method
19b20 73 2c 20 74 68 69 73 20 6f 6e 65 20 77 69 6c 6c  s, this one will
19b30 20 62 65 20 72 65 6d 6f 76 65 64 20 73 6f 6f 6e   be removed soon
19b40 22 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ")]..    public 
19b50 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69 6f  SQLiteTransactio
19b60 6e 20 42 65 67 69 6e 54 72 61 6e 73 61 63 74 69  n BeginTransacti
19b70 6f 6e 28 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65  on(IsolationLeve
19b80 6c 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  l isolationLevel
19b90 2c 20 62 6f 6f 6c 20 64 65 66 65 72 72 65 64 4c  , bool deferredL
19ba0 6f 63 6b 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ock)..    {..   
19bb0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
19bc0 28 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ();..      retur
19bd0 6e 20 28 53 51 4c 69 74 65 54 72 61 6e 73 61 63  n (SQLiteTransac
19be0 74 69 6f 6e 29 42 65 67 69 6e 44 62 54 72 61 6e  tion)BeginDbTran
19bf0 73 61 63 74 69 6f 6e 28 64 65 66 65 72 72 65 64  saction(deferred
19c00 4c 6f 63 6b 20 3d 3d 20 66 61 6c 73 65 20 3f 20  Lock == false ? 
19c10 49 6d 6d 65 64 69 61 74 65 49 73 6f 6c 61 74 69  ImmediateIsolati
19c20 6f 6e 4c 65 76 65 6c 20 3a 20 44 65 66 65 72 72  onLevel : Deferr
19c30 65 64 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  edIsolationLevel
19c40 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
19c50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
19c60 20 20 20 20 2f 2f 2f 20 4f 42 53 4f 4c 45 54 45      /// OBSOLETE
19c70 2e 20 20 43 72 65 61 74 65 73 20 61 20 6e 65 77  .  Creates a new
19c80 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69   SQLiteTransacti
19c90 6f 6e 20 69 66 20 6f 6e 65 20 69 73 6e 27 74 20  on if one isn't 
19ca0 61 6c 72 65 61 64 79 20 61 63 74 69 76 65 20 6f  already active o
19cb0 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  n the connection
19cc0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
19cd0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
19ce0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 65  param name="defe
19cf0 72 72 65 64 4c 6f 63 6b 22 3e 57 68 65 6e 20 54  rredLock">When T
19d00 52 55 45 2c 20 53 51 4c 69 74 65 20 64 65 66 65  RUE, SQLite defe
19d10 72 73 20 6f 62 74 61 69 6e 69 6e 67 20 61 20 77  rs obtaining a w
19d20 72 69 74 65 20 6c 6f 63 6b 20 75 6e 74 69 6c 20  rite lock until 
19d30 61 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  a write operatio
19d40 6e 20 69 73 20 72 65 71 75 65 73 74 65 64 2e 0d  n is requested..
19d50 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 46 41  .    /// When FA
19d60 4c 53 45 2c 20 61 20 77 72 69 74 65 6c 6f 63 6b  LSE, a writelock
19d70 20 69 73 20 6f 62 74 61 69 6e 65 64 20 69 6d 6d   is obtained imm
19d80 65 64 69 61 74 65 6c 79 2e 20 20 54 68 65 20 64  ediately.  The d
19d90 65 66 61 75 6c 74 20 69 73 20 66 61 6c 73 65 2c  efault is false,
19da0 20 62 75 74 20 69 6e 20 61 20 6d 75 6c 74 69 2d   but in a multi-
19db0 74 68 72 65 61 64 65 64 20 6d 75 6c 74 69 2d 77  threaded multi-w
19dc0 72 69 74 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 65  riter..    /// e
19dd0 6e 76 69 72 6f 6e 6d 65 6e 74 2c 20 6f 6e 65 20  nvironment, one 
19de0 6d 61 79 20 69 6e 73 74 65 61 64 20 63 68 6f 6f  may instead choo
19df0 73 65 20 74 6f 20 6c 6f 63 6b 20 74 68 65 20 64  se to lock the d
19e00 61 74 61 62 61 73 65 20 69 6d 6d 65 64 69 61 74  atabase immediat
19e10 65 6c 79 20 74 6f 20 61 76 6f 69 64 20 61 6e 79  ely to avoid any
19e20 20 70 6f 73 73 69 62 6c 65 20 77 72 69 74 65 72   possible writer
19e30 20 64 65 61 64 6c 6f 63 6b 2e 3c 2f 70 61 72 61   deadlock.</para
19e40 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
19e50 75 72 6e 73 3e 52 65 74 75 72 6e 73 20 61 20 53  urns>Returns a S
19e60 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e  QLiteTransaction
19e70 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e   object.</return
19e80 73 3e 0d 0a 20 20 20 20 5b 4f 62 73 6f 6c 65 74  s>..    [Obsolet
19e90 65 28 22 55 73 65 20 6f 6e 65 20 6f 66 20 74 68  e("Use one of th
19ea0 65 20 73 74 61 6e 64 61 72 64 20 42 65 67 69 6e  e standard Begin
19eb0 54 72 61 6e 73 61 63 74 69 6f 6e 20 6d 65 74 68  Transaction meth
19ec0 6f 64 73 2c 20 74 68 69 73 20 6f 6e 65 20 77 69  ods, this one wi
19ed0 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20 73 6f  ll be removed so
19ee0 6f 6e 22 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  on")]..    publi
19ef0 63 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74  c SQLiteTransact
19f00 69 6f 6e 20 42 65 67 69 6e 54 72 61 6e 73 61 63  ion BeginTransac
19f10 74 69 6f 6e 28 62 6f 6f 6c 20 64 65 66 65 72 72  tion(bool deferr
19f20 65 64 4c 6f 63 6b 29 0d 0a 20 20 20 20 7b 0d 0a  edLock)..    {..
19f30 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
19f40 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 72 65  sed();..      re
19f50 74 75 72 6e 20 28 53 51 4c 69 74 65 54 72 61 6e  turn (SQLiteTran
19f60 73 61 63 74 69 6f 6e 29 42 65 67 69 6e 44 62 54  saction)BeginDbT
19f70 72 61 6e 73 61 63 74 69 6f 6e 28 64 65 66 65 72  ransaction(defer
19f80 72 65 64 4c 6f 63 6b 20 3d 3d 20 66 61 6c 73 65  redLock == false
19f90 20 3f 20 49 6d 6d 65 64 69 61 74 65 49 73 6f 6c   ? ImmediateIsol
19fa0 61 74 69 6f 6e 4c 65 76 65 6c 20 3a 20 44 65 66  ationLevel : Def
19fb0 65 72 72 65 64 49 73 6f 6c 61 74 69 6f 6e 4c 65  erredIsolationLe
19fc0 76 65 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  vel);..    }....
19fd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
19fe0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65 61 74  >..    /// Creat
19ff0 65 73 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72  es a new <see cr
1a000 65 66 3d 22 53 51 4c 69 74 65 54 72 61 6e 73 61  ef="SQLiteTransa
1a010 63 74 69 6f 6e 22 20 2f 3e 20 69 66 20 6f 6e 65  ction" /> if one
1a020 20 69 73 6e 27 74 20 61 6c 72 65 61 64 79 20 61   isn't already a
1a030 63 74 69 76 65 20 6f 6e 20 74 68 65 20 63 6f 6e  ctive on the con
1a040 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
1a050 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a060 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a070 65 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65  e="isolationLeve
1a080 6c 22 3e 53 75 70 70 6f 72 74 65 64 20 69 73 6f  l">Supported iso
1a090 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73 20 61 72  lation levels ar
1a0a0 65 20 53 65 72 69 61 6c 69 7a 61 62 6c 65 2c 20  e Serializable, 
1a0b0 52 65 61 64 43 6f 6d 6d 69 74 74 65 64 20 61 6e  ReadCommitted an
1a0c0 64 20 55 6e 73 70 65 63 69 66 69 65 64 2e 3c 2f  d Unspecified.</
1a0d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1a0e0 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
1a0f0 2f 2f 20 55 6e 73 70 65 63 69 66 69 65 64 20 77  // Unspecified w
1a100 69 6c 6c 20 75 73 65 20 74 68 65 20 64 65 66 61  ill use the defa
1a110 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65  ult isolation le
1a120 76 65 6c 20 73 70 65 63 69 66 69 65 64 20 69 6e  vel specified in
1a130 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
1a140 73 74 72 69 6e 67 2e 20 20 49 66 20 6e 6f 20 69  string.  If no i
1a150 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 20 69  solation level i
1a160 73 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  s specified in t
1a170 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e  he..    /// conn
1a180 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2c 20 53  ection string, S
1a190 65 72 69 61 6c 69 7a 61 62 6c 65 20 69 73 20 75  erializable is u
1a1a0 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65  sed...    /// Se
1a1b0 72 69 61 6c 69 7a 61 62 6c 65 20 74 72 61 6e 73  rializable trans
1a1c0 61 63 74 69 6f 6e 73 20 61 72 65 20 74 68 65 20  actions are the 
1a1d0 64 65 66 61 75 6c 74 2e 20 20 49 6e 20 74 68 69  default.  In thi
1a1e0 73 20 6d 6f 64 65 2c 20 74 68 65 20 65 6e 67 69  s mode, the engi
1a1f0 6e 65 20 67 65 74 73 20 61 6e 20 69 6d 6d 65 64  ne gets an immed
1a200 69 61 74 65 20 6c 6f 63 6b 20 6f 6e 20 74 68 65  iate lock on the
1a210 20 64 61 74 61 62 61 73 65 2c 20 61 6e 64 20 6e   database, and n
1a220 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 73 0d  o other threads.
1a230 0a 20 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 67  .    /// may beg
1a240 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
1a250 2e 20 20 4f 74 68 65 72 20 74 68 72 65 61 64 73  .  Other threads
1a260 20 6d 61 79 20 72 65 61 64 20 66 72 6f 6d 20 74   may read from t
1a270 68 65 20 64 61 74 61 62 61 73 65 2c 20 62 75 74  he database, but
1a280 20 6e 6f 74 20 77 72 69 74 65 2e 0d 0a 20 20 20   not write...   
1a290 20 2f 2f 2f 20 57 69 74 68 20 61 20 52 65 61 64   /// With a Read
1a2a0 43 6f 6d 6d 69 74 74 65 64 20 69 73 6f 6c 61 74  Committed isolat
1a2b0 69 6f 6e 20 6c 65 76 65 6c 2c 20 6c 6f 63 6b 73  ion level, locks
1a2c0 20 61 72 65 20 64 65 66 65 72 72 65 64 20 61 6e   are deferred an
1a2d0 64 20 65 6c 65 76 61 74 65 64 20 61 73 20 6e 65  d elevated as ne
1a2e0 65 64 65 64 2e 20 20 49 74 20 69 73 20 70 6f 73  eded.  It is pos
1a2f0 73 69 62 6c 65 20 66 6f 72 20 6d 75 6c 74 69 70  sible for multip
1a300 6c 65 20 74 68 72 65 61 64 73 20 74 6f 20 73 74  le threads to st
1a310 61 72 74 0d 0a 20 20 20 20 2f 2f 2f 20 61 20 74  art..    /// a t
1a320 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 20 52 65  ransaction in Re
1a330 61 64 43 6f 6d 6d 69 74 74 65 64 20 6d 6f 64 65  adCommitted mode
1a340 2c 20 62 75 74 20 69 66 20 61 20 74 68 72 65 61  , but if a threa
1a350 64 20 61 74 74 65 6d 70 74 73 20 74 6f 20 63 6f  d attempts to co
1a360 6d 6d 69 74 20 61 20 74 72 61 6e 73 61 63 74 69  mmit a transacti
1a370 6f 6e 20 77 68 69 6c 65 20 61 6e 6f 74 68 65 72  on while another
1a380 20 74 68 72 65 61 64 0d 0a 20 20 20 20 2f 2f 2f   thread..    ///
1a390 20 68 61 73 20 61 20 52 65 61 64 43 6f 6d 6d 69   has a ReadCommi
1a3a0 74 74 65 64 20 6c 6f 63 6b 2c 20 69 74 20 6d 61  tted lock, it ma
1a3b0 79 20 74 69 6d 65 6f 75 74 20 6f 72 20 63 61 75  y timeout or cau
1a3c0 73 65 20 61 20 64 65 61 64 6c 6f 63 6b 20 6f 6e  se a deadlock on
1a3d0 20 62 6f 74 68 20 74 68 72 65 61 64 73 20 75 6e   both threads un
1a3e0 74 69 6c 20 62 6f 74 68 20 74 68 72 65 61 64 73  til both threads
1a3f0 27 20 43 6f 6d 6d 61 6e 64 54 69 6d 65 6f 75 74  ' CommandTimeout
1a400 27 73 20 61 72 65 20 72 65 61 63 68 65 64 2e 0d  's are reached..
1a410 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
1a420 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ks>..    /// <re
1a430 74 75 72 6e 73 3e 52 65 74 75 72 6e 73 20 61 20  turns>Returns a 
1a440 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69 6f  SQLiteTransactio
1a450 6e 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72  n object.</retur
1a460 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
1a470 6e 65 77 20 53 51 4c 69 74 65 54 72 61 6e 73 61  new SQLiteTransa
1a480 63 74 69 6f 6e 20 42 65 67 69 6e 54 72 61 6e 73  ction BeginTrans
1a490 61 63 74 69 6f 6e 28 49 73 6f 6c 61 74 69 6f 6e  action(Isolation
1a4a0 4c 65 76 65 6c 20 69 73 6f 6c 61 74 69 6f 6e 4c  Level isolationL
1a4b0 65 76 65 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  evel)..    {..  
1a4c0 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
1a4d0 64 28 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75  d();..      retu
1a4e0 72 6e 20 28 53 51 4c 69 74 65 54 72 61 6e 73 61  rn (SQLiteTransa
1a4f0 63 74 69 6f 6e 29 42 65 67 69 6e 44 62 54 72 61  ction)BeginDbTra
1a500 6e 73 61 63 74 69 6f 6e 28 69 73 6f 6c 61 74 69  nsaction(isolati
1a510 6f 6e 4c 65 76 65 6c 29 3b 0d 0a 20 20 20 20 7d  onLevel);..    }
1a520 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
1a530 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1a540 72 65 61 74 65 73 20 61 20 6e 65 77 20 3c 73 65  reates a new <se
1a550 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 54 72  e cref="SQLiteTr
1a560 61 6e 73 61 63 74 69 6f 6e 22 20 2f 3e 20 69 66  ansaction" /> if
1a570 20 6f 6e 65 20 69 73 6e 27 74 20 61 6c 72 65 61   one isn't alrea
1a580 64 79 0d 0a 20 20 20 20 2f 2f 2f 20 61 63 74 69  dy..    /// acti
1a590 76 65 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63  ve on the connec
1a5a0 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
1a5b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1a5c0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75  // <returns>Retu
1a5d0 72 6e 73 20 74 68 65 20 6e 65 77 20 74 72 61 6e  rns the new tran
1a5e0 73 61 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c  saction object.<
1a5f0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
1a600 75 62 6c 69 63 20 6e 65 77 20 53 51 4c 69 74 65  ublic new SQLite
1a610 54 72 61 6e 73 61 63 74 69 6f 6e 20 42 65 67 69  Transaction Begi
1a620 6e 54 72 61 6e 73 61 63 74 69 6f 6e 28 29 0d 0a  nTransaction()..
1a630 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65      {..      Che
1a640 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
1a650 20 20 20 20 20 72 65 74 75 72 6e 20 28 53 51 4c       return (SQL
1a660 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 29 42  iteTransaction)B
1a670 65 67 69 6e 44 62 54 72 61 6e 73 61 63 74 69 6f  eginDbTransactio
1a680 6e 28 5f 64 65 66 61 75 6c 74 49 73 6f 6c 61 74  n(_defaultIsolat
1a690 69 6f 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ion);..    }....
1a6a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1a6b0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 77 61  >..    /// Forwa
1a6c0 72 64 73 20 74 6f 20 74 68 65 20 6c 6f 63 61 6c  rds to the local
1a6d0 20 3c 73 65 65 20 63 72 65 66 3d 22 42 65 67 69   <see cref="Begi
1a6e0 6e 54 72 61 6e 73 61 63 74 69 6f 6e 28 49 73 6f  nTransaction(Iso
1a6f0 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 22 20 2f 3e  lationLevel)" />
1a700 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f   function..    /
1a710 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a720 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1a730 6d 65 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c 65 76  me="isolationLev
1a740 65 6c 22 3e 53 75 70 70 6f 72 74 65 64 20 69 73  el">Supported is
1a750 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73 20 61  olation levels a
1a760 72 65 20 55 6e 73 70 65 63 69 66 69 65 64 2c 20  re Unspecified, 
1a770 53 65 72 69 61 6c 69 7a 61 62 6c 65 2c 20 61 6e  Serializable, an
1a780 64 20 52 65 61 64 43 6f 6d 6d 69 74 74 65 64 3c  d ReadCommitted<
1a790 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
1a7a0 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75   <returns></retu
1a7b0 72 6e 73 3e 0d 0a 20 20 20 20 70 72 6f 74 65 63  rns>..    protec
1a7c0 74 65 64 20 6f 76 65 72 72 69 64 65 20 44 62 54  ted override DbT
1a7d0 72 61 6e 73 61 63 74 69 6f 6e 20 42 65 67 69 6e  ransaction Begin
1a7e0 44 62 54 72 61 6e 73 61 63 74 69 6f 6e 28 49 73  DbTransaction(Is
1a7f0 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 69 73 6f  olationLevel iso
1a800 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 0d 0a 20 20  lationLevel)..  
1a810 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 5f    {..      if (_
1a820 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 20  connectionState 
1a830 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61  != ConnectionSta
1a840 74 65 2e 4f 70 65 6e 29 0d 0a 20 20 20 20 20 20  te.Open)..      
1a850 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
1a860 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
1a870 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
1a880 20 20 69 66 20 28 69 73 6f 6c 61 74 69 6f 6e 4c    if (isolationL
1a890 65 76 65 6c 20 3d 3d 20 49 73 6f 6c 61 74 69 6f  evel == Isolatio
1a8a0 6e 4c 65 76 65 6c 2e 55 6e 73 70 65 63 69 66 69  nLevel.Unspecifi
1a8b0 65 64 29 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76  ed) isolationLev
1a8c0 65 6c 20 3d 20 5f 64 65 66 61 75 6c 74 49 73 6f  el = _defaultIso
1a8d0 6c 61 74 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 69  lation;..      i
1a8e0 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 3d 20  solationLevel = 
1a8f0 47 65 74 45 66 66 65 63 74 69 76 65 49 73 6f 6c  GetEffectiveIsol
1a900 61 74 69 6f 6e 4c 65 76 65 6c 28 69 73 6f 6c 61  ationLevel(isola
1a910 74 69 6f 6e 4c 65 76 65 6c 29 3b 0d 0a 0d 0a 20  tionLevel);.... 
1a920 20 20 20 20 20 69 66 20 28 69 73 6f 6c 61 74 69       if (isolati
1a930 6f 6e 4c 65 76 65 6c 20 21 3d 20 49 6d 6d 65 64  onLevel != Immed
1a940 69 61 74 65 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  iateIsolationLev
1a950 65 6c 20 26 26 20 69 73 6f 6c 61 74 69 6f 6e 4c  el && isolationL
1a960 65 76 65 6c 20 21 3d 20 44 65 66 65 72 72 65 64  evel != Deferred
1a970 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 0d  IsolationLevel).
1a980 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e  .        throw n
1a990 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70  ew ArgumentExcep
1a9a0 74 69 6f 6e 28 22 69 73 6f 6c 61 74 69 6f 6e 4c  tion("isolationL
1a9b0 65 76 65 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  evel");....     
1a9c0 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69   SQLiteTransacti
1a9d0 6f 6e 20 74 72 61 6e 73 61 63 74 69 6f 6e 3b 0d  on transaction;.
1a9e0 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 28 5f 66  ...      if ((_f
1a9f0 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
1aa00 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 41 6c 6c  nectionFlags.All
1aa10 6f 77 4e 65 73 74 65 64 54 72 61 6e 73 61 63 74  owNestedTransact
1aa20 69 6f 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ions)..         
1aa30 20 20 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e     == SQLiteConn
1aa40 65 63 74 69 6f 6e 46 6c 61 67 73 2e 41 6c 6c 6f  ectionFlags.Allo
1aa50 77 4e 65 73 74 65 64 54 72 61 6e 73 61 63 74 69  wNestedTransacti
1aa60 6f 6e 73 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ons)..      {.. 
1aa70 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 61 63           transac
1aa80 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69 74  tion = new SQLit
1aa90 65 54 72 61 6e 73 61 63 74 69 6f 6e 32 28 0d 0a  eTransaction2(..
1aaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1aab0 69 73 2c 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76  is, isolationLev
1aac0 65 6c 20 21 3d 20 49 6d 6d 65 64 69 61 74 65 49  el != ImmediateI
1aad0 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 3b 0d  solationLevel);.
1aae0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
1aaf0 65 6c 73 65 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  else..      {.. 
1ab00 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 61 63           transac
1ab10 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69 74  tion = new SQLit
1ab20 65 54 72 61 6e 73 61 63 74 69 6f 6e 28 0d 0a 20  eTransaction(.. 
1ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1ab40 73 2c 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65  s, isolationLeve
1ab50 6c 20 21 3d 20 49 6d 6d 65 64 69 61 74 65 49 73  l != ImmediateIs
1ab60 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 3b 0d 0a  olationLevel);..
1ab70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ab80 20 4f 6e 43 68 61 6e 67 65 64 28 74 68 69 73 2c   OnChanged(this,
1ab90 20 6e 65 77 20 43 6f 6e 6e 65 63 74 69 6f 6e 45   new ConnectionE
1aba0 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20  ventArgs(..     
1abb0 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
1abc0 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 2e 4e  ctionEventType.N
1abd0 65 77 54 72 61 6e 73 61 63 74 69 6f 6e 2c 20 6e  ewTransaction, n
1abe0 75 6c 6c 2c 20 74 72 61 6e 73 61 63 74 69 6f 6e  ull, transaction
1abf0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 75 6c  ,..          nul
1ac00 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e  l, null, null, n
1ac10 75 6c 6c 2c 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a  ull, null));....
1ac20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 61        return tra
1ac30 6e 73 61 63 74 69 6f 6e 3b 0d 0a 20 20 20 20 7d  nsaction;..    }
1ac40 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
1ac50 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
1ac60 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 6e 6f  his method is no
1ac70 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 3b 20 68  t implemented; h
1ac80 6f 77 65 76 65 72 2c 20 74 68 65 20 3c 73 65 65  owever, the <see
1ac90 20 63 72 65 66 3d 22 43 68 61 6e 67 65 64 22 20   cref="Changed" 
1aca0 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 65 76 65 6e  />..    /// even
1acb0 74 20 77 69 6c 6c 20 73 74 69 6c 6c 20 62 65 20  t will still be 
1acc0 72 61 69 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  raised...    ///
1acd0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1ace0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1acf0 3d 22 64 61 74 61 62 61 73 65 4e 61 6d 65 22 3e  ="databaseName">
1ad00 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75  </param>..    pu
1ad10 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 76 6f  blic override vo
1ad20 69 64 20 43 68 61 6e 67 65 44 61 74 61 62 61 73  id ChangeDatabas
1ad30 65 28 73 74 72 69 6e 67 20 64 61 74 61 62 61 73  e(string databas
1ad40 65 4e 61 6d 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  eName)..    {.. 
1ad50 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
1ad60 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 4f  ed();....      O
1ad70 6e 43 68 61 6e 67 65 64 28 74 68 69 73 2c 20 6e  nChanged(this, n
1ad80 65 77 20 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  ew ConnectionEve
1ad90 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20 20 20  ntArgs(..       
1ada0 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
1adb0 69 6f 6e 45 76 65 6e 74 54 79 70 65 2e 43 68 61  ionEventType.Cha
1adc0 6e 67 65 44 61 74 61 62 61 73 65 2c 20 6e 75 6c  ngeDatabase, nul
1add0 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e  l, null, null, n
1ade0 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ull,..          
1adf0 6e 75 6c 6c 2c 20 64 61 74 61 62 61 73 65 4e 61  null, databaseNa
1ae00 6d 65 2c 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20  me, null));.... 
1ae10 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
1ae20 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63  otImplementedExc
1ae30 65 70 74 69 6f 6e 28 29 3b 20 2f 2f 20 4e 4f 54  eption(); // NOT
1ae40 45 3a 20 46 6f 72 20 6c 65 67 61 63 79 20 63 6f  E: For legacy co
1ae50 6d 70 61 74 69 62 69 6c 69 74 79 2e 0d 0a 20 20  mpatibility...  
1ae60 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
1ae70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1ae80 2f 20 57 68 65 6e 20 74 68 65 20 64 61 74 61 62  / When the datab
1ae90 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
1aea0 73 20 63 6c 6f 73 65 64 2c 20 61 6c 6c 20 63 6f  s closed, all co
1aeb0 6d 6d 61 6e 64 73 20 6c 69 6e 6b 65 64 20 74 6f  mmands linked to
1aec0 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1aed0 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
1aee0 6c 79 20 72 65 73 65 74 2e 0d 0a 20 20 20 20 2f  ly reset...    /
1aef0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1af00 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1af10 64 65 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d  de void Close().
1af20 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68  .    {..      Ch
1af30 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
1af40 0d 0a 20 20 20 20 20 20 4f 6e 43 68 61 6e 67 65  ..      OnChange
1af50 64 28 74 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e  d(this, new Conn
1af60 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 28  ectionEventArgs(
1af70 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69  ..          SQLi
1af80 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  teConnectionEven
1af90 74 54 79 70 65 2e 43 6c 6f 73 69 6e 67 2c 20 6e  tType.Closing, n
1afa0 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c  ull, null, null,
1afb0 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20 20   null, null,..  
1afc0 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20 6e 75          null, nu
1afd0 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69  ll));....      i
1afe0 66 20 28 5f 73 71 6c 20 21 3d 20 6e 75 6c 6c 29  f (_sql != null)
1aff0 0d 0a 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21  ..      {..#if !
1b000 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1b010 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
1b020 20 20 20 6c 6f 63 6b 20 28 5f 65 6e 6c 69 73 74     lock (_enlist
1b030 6d 65 6e 74 53 79 6e 63 52 6f 6f 74 29 20 2f 2a  mentSyncRoot) /*
1b040 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20 2a   TRANSACTIONAL *
1b050 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  /..        {..  
1b060 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 6e          SQLiteEn
1b070 6c 69 73 74 6d 65 6e 74 20 65 6e 6c 69 73 74 6d  listment enlistm
1b080 65 6e 74 20 3d 20 5f 65 6e 6c 69 73 74 6d 65 6e  ent = _enlistmen
1b090 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 5f 65  t;..          _e
1b0a0 6e 6c 69 73 74 6d 65 6e 74 20 3d 20 6e 75 6c 6c  nlistment = null
1b0b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
1b0c0 66 20 28 65 6e 6c 69 73 74 6d 65 6e 74 20 21 3d  f (enlistment !=
1b0d0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1b0e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1b0f0 20 2f 2f 20 49 66 20 74 68 65 20 63 6f 6e 6e 65   // If the conne
1b100 63 74 69 6f 6e 20 69 73 20 65 6e 6c 69 73 74 65  ction is enliste
1b110 64 20 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69  d in a transacti
1b120 6f 6e 20 73 63 6f 70 65 20 61 6e 64 20 74 68 65  on scope and the
1b130 20 73 63 6f 70 65 20 69 73 20 73 74 69 6c 6c 20   scope is still 
1b140 61 63 74 69 76 65 2c 0d 0a 20 20 20 20 20 20 20  active,..       
1b150 20 20 20 20 20 2f 2f 20 77 65 20 63 61 6e 6e 6f       // we canno
1b160 74 20 74 72 75 6c 79 20 73 68 75 74 20 64 6f 77  t truly shut dow
1b170 6e 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f  n this connectio
1b180 6e 20 75 6e 74 69 6c 20 74 68 65 20 73 63 6f 70  n until the scop
1b190 65 20 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e  e has completed.
1b1a0 20 20 54 68 65 72 65 66 6f 72 65 20 6d 61 6b 65    Therefore make
1b1b0 20 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   a..            
1b1c0 2f 2f 20 68 69 64 64 65 6e 20 63 6f 6e 6e 65 63  // hidden connec
1b1d0 74 69 6f 6e 20 74 65 6d 70 6f 72 61 72 69 6c 79  tion temporarily
1b1e0 20 74 6f 20 68 6f 6c 64 20 6f 70 65 6e 20 74 68   to hold open th
1b1f0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 6e 74  e connection unt
1b200 69 6c 20 74 68 65 20 73 63 6f 70 65 20 68 61 73  il the scope has
1b210 20 63 6f 6d 70 6c 65 74 65 64 2e 0d 0a 20 20 20   completed...   
1b220 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
1b230 6f 6e 6e 65 63 74 69 6f 6e 20 63 6e 6e 20 3d 20  onnection cnn = 
1b240 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  new SQLiteConnec
1b250 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 44  tion();....#if D
1b260 45 42 55 47 0d 0a 20 20 20 20 20 20 20 20 20 20  EBUG..          
1b270 20 20 63 6e 6e 2e 5f 64 65 62 75 67 53 74 72 69    cnn._debugStri
1b280 6e 67 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f  ng = HelperMetho
1b290 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
1b2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b2b0 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
1b2c0 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d  variantCulture,.
1b2d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b2e0 20 22 63 6c 6f 73 65 54 68 72 65 61 64 49 64 20   "closeThreadId 
1b2f0 3d 20 7b 30 7d 2c 20 7b 31 7d 7b 32 7d 7b 32 7d  = {0}, {1}{2}{2}
1b300 7b 33 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {3}",..         
1b310 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
1b320 68 6f 64 73 2e 47 65 74 54 68 72 65 61 64 49 64  hods.GetThreadId
1b330 28 29 2c 20 5f 73 71 6c 2c 0d 0a 20 20 20 20 20  (), _sql,..     
1b340 20 20 20 20 20 20 20 20 20 20 20 45 6e 76 69 72             Envir
1b350 6f 6e 6d 65 6e 74 2e 4e 65 77 4c 69 6e 65 2c 20  onment.NewLine, 
1b360 5f 64 65 62 75 67 53 74 72 69 6e 67 29 3b 0d 0a  _debugString);..
1b370 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
1b380 20 20 20 20 20 20 63 6e 6e 2e 5f 73 71 6c 20 3d        cnn._sql =
1b390 20 5f 73 71 6c 3b 0d 0a 20 20 20 20 20 20 20 20   _sql;..        
1b3a0 20 20 20 20 63 6e 6e 2e 5f 74 72 61 6e 73 61 63      cnn._transac
1b3b0 74 69 6f 6e 4c 65 76 65 6c 20 3d 20 5f 74 72 61  tionLevel = _tra
1b3c0 6e 73 61 63 74 69 6f 6e 4c 65 76 65 6c 3b 0d 0a  nsactionLevel;..
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 63 6e 6e 2e              cnn.
1b3e0 5f 74 72 61 6e 73 61 63 74 69 6f 6e 53 65 71 75  _transactionSequ
1b3f0 65 6e 63 65 20 3d 20 5f 74 72 61 6e 73 61 63 74  ence = _transact
1b400 69 6f 6e 53 65 71 75 65 6e 63 65 3b 0d 0a 20 20  ionSequence;..  
1b410 20 20 20 20 20 20 20 20 20 20 63 6e 6e 2e 5f 65            cnn._e
1b420 6e 6c 69 73 74 6d 65 6e 74 20 3d 20 65 6e 6c 69  nlistment = enli
1b430 73 74 6d 65 6e 74 3b 0d 0a 20 20 20 20 20 20 20  stment;..       
1b440 20 20 20 20 20 63 6e 6e 2e 5f 63 6f 6e 6e 65 63       cnn._connec
1b450 74 69 6f 6e 53 74 61 74 65 20 3d 20 5f 63 6f 6e  tionState = _con
1b460 6e 65 63 74 69 6f 6e 53 74 61 74 65 3b 0d 0a 20  nectionState;.. 
1b470 20 20 20 20 20 20 20 20 20 20 20 63 6e 6e 2e 5f             cnn._
1b480 76 65 72 73 69 6f 6e 20 3d 20 5f 76 65 72 73 69  version = _versi
1b490 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  on;....         
1b4a0 20 20 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63     SQLiteTransac
1b4b0 74 69 6f 6e 20 74 72 61 6e 73 61 63 74 69 6f 6e  tion transaction
1b4c0 20 3d 20 65 6e 6c 69 73 74 6d 65 6e 74 2e 5f 74   = enlistment._t
1b4d0 72 61 6e 73 61 63 74 69 6f 6e 3b 0d 0a 0d 0a 20  ransaction;.... 
1b4e0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
1b4f0 72 61 6e 73 61 63 74 69 6f 6e 20 21 3d 20 6e 75  ransaction != nu
1b500 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1b510 20 20 20 20 20 74 72 61 6e 73 61 63 74 69 6f 6e       transaction
1b520 2e 5f 63 6e 6e 20 3d 20 63 6e 6e 3b 0d 0a 0d 0a  ._cnn = cnn;....
1b530 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 6c 69              enli
1b540 73 74 6d 65 6e 74 2e 5f 64 69 73 70 6f 73 65 43  stment._disposeC
1b550 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 74 72 75 65  onnection = true
1b560 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b570 20 5f 73 71 6c 20 3d 20 6e 75 6c 6c 3b 0d 0a 20   _sql = null;.. 
1b580 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1b590 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
1b5a0 20 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20         if (_sql 
1b5b0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1b5c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 5f    {..          _
1b5d0 73 71 6c 2e 43 6c 6f 73 65 28 5f 64 69 73 70 6f  sql.Close(_dispo
1b5e0 73 69 6e 67 29 3b 0d 0a 20 20 20 20 20 20 20 20  sing);..        
1b5f0 20 20 5f 73 71 6c 20 3d 20 6e 75 6c 6c 3b 0d 0a    _sql = null;..
1b600 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1b610 20 20 20 5f 74 72 61 6e 73 61 63 74 69 6f 6e 4c     _transactionL
1b620 65 76 65 6c 20 3d 20 30 3b 0d 0a 20 20 20 20 20  evel = 0;..     
1b630 20 20 20 5f 74 72 61 6e 73 61 63 74 69 6f 6e 53     _transactionS
1b640 65 71 75 65 6e 63 65 20 3d 20 30 3b 0d 0a 20 20  equence = 0;..  
1b650 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 53      }....      S
1b660 74 61 74 65 43 68 61 6e 67 65 45 76 65 6e 74 41  tateChangeEventA
1b670 72 67 73 20 65 76 65 6e 74 41 72 67 73 20 3d 20  rgs eventArgs = 
1b680 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 4f 6e 53  null;..      OnS
1b690 74 61 74 65 43 68 61 6e 67 65 28 43 6f 6e 6e 65  tateChange(Conne
1b6a0 63 74 69 6f 6e 53 74 61 74 65 2e 43 6c 6f 73 65  ctionState.Close
1b6b0 64 2c 20 72 65 66 20 65 76 65 6e 74 41 72 67 73  d, ref eventArgs
1b6c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 4f 6e 43 68  );....      OnCh
1b6d0 61 6e 67 65 64 28 74 68 69 73 2c 20 6e 65 77 20  anged(this, new 
1b6e0 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41  ConnectionEventA
1b6f0 72 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rgs(..          
1b700 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1b710 45 76 65 6e 74 54 79 70 65 2e 43 6c 6f 73 65 64  EventType.Closed
1b720 2c 20 65 76 65 6e 74 41 72 67 73 2c 20 6e 75 6c  , eventArgs, nul
1b730 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a  l, null, null,..
1b740 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20            null, 
1b750 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 29 3b 0d 0a 20  null, null));.. 
1b760 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
1b770 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1b780 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e  // Returns the n
1b790 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c 20 65 6e  umber of pool en
1b7a0 74 72 69 65 73 20 66 6f 72 20 74 68 65 20 66 69  tries for the fi
1b7b0 6c 65 20 6e 61 6d 65 20 61 73 73 6f 63 69 61 74  le name associat
1b7c0 65 64 20 77 69 74 68 20 74 68 69 73 20 63 6f 6e  ed with this con
1b7d0 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
1b7e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1b7f0 20 20 70 75 62 6c 69 63 20 69 6e 74 20 50 6f 6f    public int Poo
1b800 6c 43 6f 75 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20  lCount..    {.. 
1b810 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
1b820 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1b830 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e     if (_sql == n
1b840 75 6c 6c 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a  ull) return 0;..
1b850 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1b860 72 6e 20 5f 73 71 6c 2e 43 6f 75 6e 74 50 6f 6f  rn _sql.CountPoo
1b870 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  l();..        }.
1b880 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1b890 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1b8a0 20 2f 2f 2f 20 43 6c 65 61 72 73 20 74 68 65 20   /// Clears the 
1b8b0 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 20  connection pool 
1b8c0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
1b8d0 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20  the connection. 
1b8e0 20 41 6e 79 20 6f 74 68 65 72 20 61 63 74 69 76   Any other activ
1b8f0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 75 73  e connections us
1b900 69 6e 67 20 74 68 65 20 73 61 6d 65 20 64 61 74  ing the same dat
1b910 61 62 61 73 65 20 66 69 6c 65 0d 0a 20 20 20 20  abase file..    
1b920 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 64 69 73 63  /// will be disc
1b930 61 72 64 65 64 20 69 6e 73 74 65 61 64 20 6f 66  arded instead of
1b940 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65   returned to the
1b950 20 70 6f 6f 6c 20 77 68 65 6e 20 74 68 65 79 20   pool when they 
1b960 61 72 65 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  are closed...   
1b970 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b980 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
1b990 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
1b9a0 22 3e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  "></param>..    
1b9b0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
1b9c0 69 64 20 43 6c 65 61 72 50 6f 6f 6c 28 53 51 4c  id ClearPool(SQL
1b9d0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
1b9e0 6e 6e 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 7b  nnection)..    {
1b9f0 0d 0a 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e  ..      if (conn
1ba00 65 63 74 69 6f 6e 2e 5f 73 71 6c 20 3d 3d 20 6e  ection._sql == n
1ba10 75 6c 6c 29 20 72 65 74 75 72 6e 3b 0d 0a 20 20  ull) return;..  
1ba20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f      connection._
1ba30 73 71 6c 2e 43 6c 65 61 72 50 6f 6f 6c 28 29 3b  sql.ClearPool();
1ba40 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1ba50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1ba60 20 20 2f 2f 2f 20 43 6c 65 61 72 73 20 61 6c 6c    /// Clears all
1ba70 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c   connection pool
1ba80 73 2e 20 20 41 6e 79 20 61 63 74 69 76 65 20 63  s.  Any active c
1ba90 6f 6e 6e 65 63 74 69 6f 6e 73 20 77 69 6c 6c 20  onnections will 
1baa0 62 65 20 64 69 73 63 61 72 64 65 64 20 69 6e 73  be discarded ins
1bab0 74 65 61 64 20 6f 66 20 73 65 6e 74 20 74 6f 20  tead of sent to 
1bac0 74 68 65 20 70 6f 6f 6c 20 77 68 65 6e 20 74 68  the pool when th
1bad0 65 79 20 61 72 65 20 63 6c 6f 73 65 64 2e 0d 0a  ey are closed...
1bae0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1baf0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
1bb00 74 61 74 69 63 20 76 6f 69 64 20 43 6c 65 61 72  tatic void Clear
1bb10 41 6c 6c 50 6f 6f 6c 73 28 29 0d 0a 20 20 20 20  AllPools()..    
1bb20 7b 0d 0a 20 20 20 20 20 20 53 51 4c 69 74 65 43  {..      SQLiteC
1bb30 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 2e 43 6c  onnectionPool.Cl
1bb40 65 61 72 41 6c 6c 50 6f 6f 6c 73 28 29 3b 0d 0a  earAllPools();..
1bb50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1bb60 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1bb70 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
1bb80 6f 6e 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  on string contai
1bb90 6e 69 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74  ning the paramet
1bba0 65 72 73 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ers for the conn
1bbb0 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20  ection..    /// 
1bbc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1bbd0 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20  /// <remarks>.. 
1bbe0 20 20 20 2f 2f 2f 20 46 6f 72 20 74 68 65 20 63     /// For the c
1bbf0 6f 6d 70 6c 65 74 65 20 6c 69 73 74 20 6f 66 20  omplete list of 
1bc00 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 6e 65 63  supported connec
1bc10 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f 70  tion string prop
1bc20 65 72 74 69 65 73 2c 0d 0a 20 20 20 20 2f 2f 2f  erties,..    ///
1bc30 20 70 6c 65 61 73 65 20 73 65 65 20 3c 73 65 65   please see <see
1bc40 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
1bc50 6e 65 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a 20 20  nection" />...  
1bc60 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e    /// </remarks>
1bc70 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1bc80 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1bc90 0d 0a 20 20 20 20 5b 52 65 66 72 65 73 68 50 72  ..    [RefreshPr
1bca0 6f 70 65 72 74 69 65 73 28 52 65 66 72 65 73 68  operties(Refresh
1bcb0 50 72 6f 70 65 72 74 69 65 73 2e 41 6c 6c 29 2c  Properties.All),
1bcc0 20 44 65 66 61 75 6c 74 56 61 6c 75 65 28 22 22   DefaultValue(""
1bcd0 29 5d 0d 0a 20 20 20 20 5b 45 64 69 74 6f 72 28  )]..    [Editor(
1bce0 22 53 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72  "SQLite.Designer
1bcf0 2e 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  .SQLiteConnectio
1bd00 6e 53 74 72 69 6e 67 45 64 69 74 6f 72 2c 20 53  nStringEditor, S
1bd10 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72 2c 20  QLite.Designer, 
1bd20 56 65 72 73 69 6f 6e 3d 22 20 2b 20 53 51 4c 69  Version=" + SQLi
1bd30 74 65 33 2e 44 65 73 69 67 6e 65 72 56 65 72 73  te3.DesignerVers
1bd40 69 6f 6e 20 2b 20 22 2c 20 43 75 6c 74 75 72 65  ion + ", Culture
1bd50 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63  =neutral, Public
1bd60 4b 65 79 54 6f 6b 65 6e 3d 64 62 39 33 37 62 63  KeyToken=db937bc
1bd70 32 64 34 34 66 66 31 33 39 22 2c 20 22 53 79 73  2d44ff139", "Sys
1bd80 74 65 6d 2e 44 72 61 77 69 6e 67 2e 44 65 73 69  tem.Drawing.Desi
1bd90 67 6e 2e 55 49 54 79 70 65 45 64 69 74 6f 72 2c  gn.UITypeEditor,
1bda0 20 53 79 73 74 65 6d 2e 44 72 61 77 69 6e 67 2c   System.Drawing,
1bdb0 20 56 65 72 73 69 6f 6e 3d 32 2e 30 2e 30 2e 30   Version=2.0.0.0
1bdc0 2c 20 43 75 6c 74 75 72 65 3d 6e 65 75 74 72 61  , Culture=neutra
1bdd0 6c 2c 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b 65  l, PublicKeyToke
1bde0 6e 3d 62 30 33 66 35 66 37 66 31 31 64 35 30 61  n=b03f5f7f11d50a
1bdf0 33 61 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20  3a")]..#endif.. 
1be00 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
1be10 64 65 20 73 74 72 69 6e 67 20 43 6f 6e 6e 65 63  de string Connec
1be20 74 69 6f 6e 53 74 72 69 6e 67 0d 0a 20 20 20 20  tionString..    
1be30 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
1be40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
1be50 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
1be60 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
1be70 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  _connectionStrin
1be80 67 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  g;..      }..   
1be90 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d     set..      {.
1bea0 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69  .        CheckDi
1beb0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
1bec0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1bed0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1bee0 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
1bef0 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
1bf00 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
1bf10 20 65 6c 73 65 20 69 66 20 28 5f 63 6f 6e 6e 65   else if (_conne
1bf20 63 74 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f  ctionState != Co
1bf30 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e 43 6c  nnectionState.Cl
1bf40 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
1bf50 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
1bf60 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1bf70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
1bf80 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74     _connectionSt
1bf90 72 69 6e 67 20 3d 20 76 61 6c 75 65 3b 0d 0a 20  ring = value;.. 
1bfa0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
1bfb0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1bfc0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65 61  y>..    /// Crea
1bfd0 74 65 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72  te a new <see cr
1bfe0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ef="SQLiteComman
1bff0 64 22 20 2f 3e 20 61 6e 64 20 61 73 73 6f 63 69  d" /> and associ
1c000 61 74 65 20 69 74 20 77 69 74 68 20 74 68 69 73  ate it with this
1c010 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
1c020 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1c030 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
1c040 6e 73 3e 52 65 74 75 72 6e 73 20 61 20 6e 65 77  ns>Returns a new
1c050 20 63 6f 6d 6d 61 6e 64 20 6f 62 6a 65 63 74 20   command object 
1c060 61 6c 72 65 61 64 79 20 61 73 73 69 67 6e 65 64  already assigned
1c070 20 74 6f 20 74 68 69 73 20 63 6f 6e 6e 65 63 74   to this connect
1c080 69 6f 6e 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ion.</returns>..
1c090 20 20 20 20 70 75 62 6c 69 63 20 6e 65 77 20 53      public new S
1c0a0 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 43 72 65  QLiteCommand Cre
1c0b0 61 74 65 43 6f 6d 6d 61 6e 64 28 29 0d 0a 20 20  ateCommand()..  
1c0c0 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b    {..      Check
1c0d0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
1c0e0 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51     return new SQ
1c0f0 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 74 68 69 73  LiteCommand(this
1c100 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
1c110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1c120 20 20 20 20 2f 2f 2f 20 46 6f 72 77 61 72 64 73      /// Forwards
1c130 20 74 6f 20 74 68 65 20 6c 6f 63 61 6c 20 3c 73   to the local <s
1c140 65 65 20 63 72 65 66 3d 22 43 72 65 61 74 65 43  ee cref="CreateC
1c150 6f 6d 6d 61 6e 64 22 20 2f 3e 20 66 75 6e 63 74  ommand" /> funct
1c160 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
1c170 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1c180 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  / <returns></ret
1c190 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 6f 74 65  urns>..    prote
1c1a0 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 44 62  cted override Db
1c1b0 43 6f 6d 6d 61 6e 64 20 43 72 65 61 74 65 44 62  Command CreateDb
1c1c0 43 6f 6d 6d 61 6e 64 28 29 0d 0a 20 20 20 20 7b  Command()..    {
1c1d0 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 43  ..      return C
1c1e0 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 29 3b 0d  reateCommand();.
1c1f0 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 49 4e  .    }....#if IN
1c200 54 45 52 4f 50 5f 53 45 53 53 49 4f 4e 5f 45 58  TEROP_SESSION_EX
1c210 54 45 4e 53 49 4f 4e 0d 0a 20 20 20 20 2f 2f 2f  TENSION..    ///
1c220 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1c230 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
1c240 63 72 65 61 74 65 20 61 20 6e 65 77 20 3c 73 65  create a new <se
1c250 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 53  e cref="ISQLiteS
1c260 65 73 73 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63  ession" /> objec
1c270 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20  t instance..    
1c280 2f 2f 2f 20 75 73 69 6e 67 20 74 68 69 73 20 63  /// using this c
1c290 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 20 74 68  onnection and th
1c2a0 65 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61  e specified data
1c2b0 62 61 73 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  base name...    
1c2c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c2d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1c2e0 61 6d 65 3d 22 64 61 74 61 62 61 73 65 4e 61 6d  ame="databaseNam
1c2f0 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
1c300 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
1c310 61 62 61 73 65 20 66 6f 72 20 74 68 65 20 6e 65  abase for the ne
1c320 77 6c 79 20 63 72 65 61 74 65 64 20 73 65 73 73  wly created sess
1c330 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
1c340 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1c350 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
1c360 2f 2f 20 54 68 65 20 6e 65 77 6c 79 20 63 72 65  // The newly cre
1c370 61 74 65 64 20 73 65 73 73 69 6f 6e 20 2d 4f 52  ated session -OR
1c380 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
1c390 6e 6f 74 20 62 65 20 63 72 65 61 74 65 64 2e 0d  not be created..
1c3a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
1c3b0 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
1c3c0 49 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 20 43  ISQLiteSession C
1c3d0 72 65 61 74 65 53 65 73 73 69 6f 6e 28 0d 0a 20  reateSession(.. 
1c3e0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 61         string da
1c3f0 74 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20 20  tabaseName..    
1c400 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
1c410 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
1c420 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
1c430 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c    return new SQL
1c440 69 74 65 53 65 73 73 69 6f 6e 28 47 65 74 4e 61  iteSession(GetNa
1c450 74 69 76 65 48 61 6e 64 6c 65 28 74 68 69 73 29  tiveHandle(this)
1c460 2c 20 5f 66 6c 61 67 73 2c 20 64 61 74 61 62 61  , _flags, databa
1c470 73 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 7d 0d  seName);..    }.
1c480 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
1c490 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74  ary>..    /// At
1c4a0 74 65 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65  tempts to create
1c4b0 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
1c4c0 3d 22 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  ="ISQLiteChangeS
1c4d0 65 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  et" /> object in
1c4e0 73 74 61 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20  stance..    /// 
1c4f0 75 73 69 6e 67 20 74 68 69 73 20 63 6f 6e 6e 65  using this conne
1c500 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 20 73 70  ction and the sp
1c510 65 63 69 66 69 65 64 20 72 61 77 20 64 61 74 61  ecified raw data
1c520 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1c530 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
1c540 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 61 77 44  param name="rawD
1c550 61 74 61 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ata">..    /// T
1c560 68 65 20 72 61 77 20 64 61 74 61 20 74 68 61 74  he raw data that
1c570 20 63 6f 6e 74 61 69 6e 73 20 61 20 63 68 61 6e   contains a chan
1c580 67 65 20 73 65 74 20 28 6f 72 20 70 61 74 63 68  ge set (or patch
1c590 20 73 65 74 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   set)...    /// 
1c5a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1c5b0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1c5c0 20 2f 2f 2f 20 54 68 65 20 6e 65 77 6c 79 20 63   /// The newly c
1c5d0 72 65 61 74 65 64 20 63 68 61 6e 67 65 20 73 65  reated change se
1c5e0 74 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  t -OR- null if i
1c5f0 74 20 63 61 6e 6e 6f 74 20 62 65 20 63 72 65 61  t cannot be crea
1c600 74 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ted...    /// </
1c610 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1c620 62 6c 69 63 20 49 53 51 4c 69 74 65 43 68 61 6e  blic ISQLiteChan
1c630 67 65 53 65 74 20 43 72 65 61 74 65 43 68 61 6e  geSet CreateChan
1c640 67 65 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20  geSet(..        
1c650 62 79 74 65 5b 5d 20 72 61 77 44 61 74 61 0d 0a  byte[] rawData..
1c660 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
1c670 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44  ..        CheckD
1c680 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
1c690 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
1c6a0 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61   SQLiteMemoryCha
1c6b0 6e 67 65 53 65 74 28 72 61 77 44 61 74 61 2c 20  ngeSet(rawData, 
1c6c0 47 65 74 4e 61 74 69 76 65 48 61 6e 64 6c 65 28  GetNativeHandle(
1c6d0 74 68 69 73 29 2c 20 5f 66 6c 61 67 73 29 3b 0d  this), _flags);.
1c6e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1c6f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1c700 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
1c710 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 3c 73   create a new <s
1c720 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1c730 43 68 61 6e 67 65 53 65 74 22 20 2f 3e 20 6f 62  ChangeSet" /> ob
1c740 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20  ject instance.. 
1c750 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 74 68 69     /// using thi
1c760 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64  s connection and
1c770 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73   the specified s
1c780 74 72 65 61 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tream...    /// 
1c790 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1c7a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c7b0 22 69 6e 70 75 74 53 74 72 65 61 6d 22 3e 0d 0a  "inputStream">..
1c7c0 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 65      /// The stre
1c7d0 61 6d 20 77 68 65 72 65 20 74 68 65 20 72 61 77  am where the raw
1c7e0 20 64 61 74 61 20 74 68 61 74 20 63 6f 6e 74 61   data that conta
1c7f0 69 6e 73 20 61 20 63 68 61 6e 67 65 20 73 65 74  ins a change set
1c800 20 28 6f 72 20 70 61 74 63 68 20 73 65 74 29 0d   (or patch set).
1c810 0a 20 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20  .    /// may be 
1c820 72 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  read...    /// <
1c830 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
1c840 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 75   <param name="ou
1c850 74 70 75 74 53 74 72 65 61 6d 22 3e 0d 0a 20 20  tputStream">..  
1c860 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 65 61 6d    /// The stream
1c870 20 77 68 65 72 65 20 74 68 65 20 72 61 77 20 64   where the raw d
1c880 61 74 61 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ata that contain
1c890 73 20 61 20 63 68 61 6e 67 65 20 73 65 74 20 28  s a change set (
1c8a0 6f 72 20 70 61 74 63 68 20 73 65 74 29 0d 0a 20  or patch set).. 
1c8b0 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20 77 72     /// may be wr
1c8c0 69 74 74 65 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  itten...    /// 
1c8d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1c8e0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1c8f0 20 2f 2f 2f 20 54 68 65 20 6e 65 77 6c 79 20 63   /// The newly c
1c900 72 65 61 74 65 64 20 63 68 61 6e 67 65 20 73 65  reated change se
1c910 74 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  t -OR- null if i
1c920 74 20 63 61 6e 6e 6f 74 20 62 65 20 63 72 65 61  t cannot be crea
1c930 74 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ted...    /// </
1c940 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1c950 62 6c 69 63 20 49 53 51 4c 69 74 65 43 68 61 6e  blic ISQLiteChan
1c960 67 65 53 65 74 20 43 72 65 61 74 65 43 68 61 6e  geSet CreateChan
1c970 67 65 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20  geSet(..        
1c980 53 74 72 65 61 6d 20 69 6e 70 75 74 53 74 72 65  Stream inputStre
1c990 61 6d 2c 0d 0a 20 20 20 20 20 20 20 20 53 74 72  am,..        Str
1c9a0 65 61 6d 20 6f 75 74 70 75 74 53 74 72 65 61 6d  eam outputStream
1c9b0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
1c9c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63   {..        Chec
1c9d0 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
1c9e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1c9f0 65 77 20 53 51 4c 69 74 65 53 74 72 65 61 6d 43  ew SQLiteStreamC
1ca00 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20 20 20  hangeSet(..     
1ca10 20 20 20 20 20 20 20 69 6e 70 75 74 53 74 72 65         inputStre
1ca20 61 6d 2c 20 6f 75 74 70 75 74 53 74 72 65 61 6d  am, outputStream
1ca30 2c 20 47 65 74 4e 61 74 69 76 65 48 61 6e 64 6c  , GetNativeHandl
1ca40 65 28 74 68 69 73 29 2c 20 5f 66 6c 61 67 73 29  e(this), _flags)
1ca50 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1ca60 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1ca70 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
1ca80 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20  to create a new 
1ca90 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1caa0 74 65 43 68 61 6e 67 65 47 72 6f 75 70 22 20 2f  teChangeGroup" /
1cab0 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f  > object..    //
1cac0 2f 20 69 6e 73 74 61 6e 63 65 20 75 73 69 6e 67  / instance using
1cad0 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1cae0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1caf0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
1cb00 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
1cb10 2f 20 54 68 65 20 6e 65 77 6c 79 20 63 72 65 61  / The newly crea
1cb20 74 65 64 20 63 68 61 6e 67 65 20 67 72 6f 75 70  ted change group
1cb30 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74   -OR- null if it
1cb40 20 63 61 6e 6e 6f 74 20 62 65 20 63 72 65 61 74   cannot be creat
1cb50 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ed...    /// </r
1cb60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
1cb70 6c 69 63 20 49 53 51 4c 69 74 65 43 68 61 6e 67  lic ISQLiteChang
1cb80 65 47 72 6f 75 70 20 43 72 65 61 74 65 43 68 61  eGroup CreateCha
1cb90 6e 67 65 47 72 6f 75 70 28 29 0d 0a 20 20 20 20  ngeGroup()..    
1cba0 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b  {..        Check
1cbb0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
1cbc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
1cbd0 77 20 53 51 4c 69 74 65 43 68 61 6e 67 65 47 72  w SQLiteChangeGr
1cbe0 6f 75 70 28 5f 66 6c 61 67 73 29 3b 0d 0a 20 20  oup(_flags);..  
1cbf0 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
1cc00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1cc10 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
1cc20 73 20 74 68 65 20 64 61 74 61 20 73 6f 75 72 63  s the data sourc
1cc30 65 20 66 69 6c 65 20 6e 61 6d 65 20 77 69 74 68  e file name with
1cc40 6f 75 74 20 65 78 74 65 6e 73 69 6f 6e 20 6f 72  out extension or
1cc50 20 70 61 74 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20   path...    /// 
1cc60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20  </summary>..#if 
1cc70 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
1cc80 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
1cc90 5b 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69  [DesignerSeriali
1cca0 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
1ccb0 28 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69  (DesignerSeriali
1ccc0 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
1ccd0 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69  .Hidden)]..#endi
1cce0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  f..    public ov
1ccf0 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 44 61  erride string Da
1cd00 74 61 53 6f 75 72 63 65 0d 0a 20 20 20 20 7b 0d  taSource..    {.
1cd10 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20  .      get..    
1cd20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
1cd30 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
1cd40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64         return _d
1cd50 61 74 61 53 6f 75 72 63 65 3b 0d 0a 20 20 20 20  ataSource;..    
1cd60 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
1cd70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1cd80 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
1cd90 20 74 68 65 20 66 75 6c 6c 79 20 71 75 61 6c 69   the fully quali
1cda0 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66 69  fied path and fi
1cdb0 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
1cdc0 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 0d 0a  currently open..
1cdd0 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65      /// database
1cde0 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f  , if any...    /
1cdf0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23  // </summary>..#
1ce00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
1ce10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
1ce20 20 20 20 5b 44 65 73 69 67 6e 65 72 53 65 72 69     [DesignerSeri
1ce30 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c  alizationVisibil
1ce40 69 74 79 28 44 65 73 69 67 6e 65 72 53 65 72 69  ity(DesignerSeri
1ce50 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c  alizationVisibil
1ce60 69 74 79 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65  ity.Hidden)]..#e
1ce70 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
1ce80 20 73 74 72 69 6e 67 20 46 69 6c 65 4e 61 6d 65   string FileName
1ce90 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1cea0 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   get..        {.
1ceb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
1cec0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
1ced0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1cee0 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
1cef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf00 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
1cf10 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
1cf20 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
1cf30 20 20 20 20 20 20 20 20 20 20 22 44 61 74 61 62            "Datab
1cf40 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e  ase connection n
1cf50 6f 74 20 76 61 6c 69 64 20 66 6f 72 20 67 65 74  ot valid for get
1cf60 74 69 6e 67 20 66 69 6c 65 20 6e 61 6d 65 2e 22  ting file name."
1cf70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1cf80 20 20 72 65 74 75 72 6e 20 5f 73 71 6c 2e 47 65    return _sql.Ge
1cf90 74 46 69 6c 65 4e 61 6d 65 28 47 65 74 44 65 66  tFileName(GetDef
1cfa0 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d 65 28  aultCatalogName(
1cfb0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ));..        }..
1cfc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1cfd0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1cfe0 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
1cff0 73 74 72 69 6e 67 20 22 6d 61 69 6e 22 2e 0d 0a  string "main"...
1d000 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1d010 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  y>..#if !PLATFOR
1d020 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1d030 52 4b 0d 0a 20 20 20 20 5b 44 65 73 69 67 6e 65  RK..    [Designe
1d040 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69  rSerializationVi
1d050 73 69 62 69 6c 69 74 79 28 44 65 73 69 67 6e 65  sibility(Designe
1d060 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69  rSerializationVi
1d070 73 69 62 69 6c 69 74 79 2e 48 69 64 64 65 6e 29  sibility.Hidden)
1d080 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70  ]..#endif..    p
1d090 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
1d0a0 74 72 69 6e 67 20 44 61 74 61 62 61 73 65 0d 0a  tring Database..
1d0b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
1d0c0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1d0d0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
1d0e0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ();..        ret
1d0f0 75 72 6e 20 47 65 74 44 65 66 61 75 6c 74 43 61  urn GetDefaultCa
1d100 74 61 6c 6f 67 4e 61 6d 65 28 29 3b 0d 0a 20 20  talogName();..  
1d110 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
1d120 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
1d130 74 69 63 20 73 74 72 69 6e 67 20 4d 61 70 55 72  tic string MapUr
1d140 69 50 61 74 68 28 73 74 72 69 6e 67 20 70 61 74  iPath(string pat
1d150 68 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  h)..    {..     
1d160 20 20 20 69 66 20 28 70 61 74 68 2e 53 74 61 72     if (path.Star
1d170 74 73 57 69 74 68 20 28 22 66 69 6c 65 3a 2f 2f  tsWith ("file://
1d180 22 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69  ", StringCompari
1d190 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
1d1a0 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
1d1b0 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74 68       return path
1d1c0 2e 53 75 62 73 74 72 69 6e 67 20 28 37 29 3b 0d  .Substring (7);.
1d1d0 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28  .      else if (
1d1e0 70 61 74 68 2e 53 74 61 72 74 73 57 69 74 68 20  path.StartsWith 
1d1f0 28 22 66 69 6c 65 3a 22 2c 20 53 74 72 69 6e 67  ("file:", String
1d200 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
1d210 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a  alIgnoreCase))..
1d220 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d230 72 6e 20 70 61 74 68 2e 53 75 62 73 74 72 69 6e  rn path.Substrin
1d240 67 20 28 35 29 3b 0d 0a 20 20 20 20 20 20 65 6c  g (5);..      el
1d250 73 65 20 69 66 20 28 70 61 74 68 2e 53 74 61 72  se if (path.Star
1d260 74 73 57 69 74 68 20 28 22 2f 22 2c 20 53 74 72  tsWith ("/", Str
1d270 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
1d280 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
1d290 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
1d2a0 65 74 75 72 6e 20 70 61 74 68 3b 0d 0a 20 20 20  eturn path;..   
1d2b0 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
1d2c0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
1d2d0 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
1d2e0 78 63 65 70 74 69 6f 6e 20 28 22 49 6e 76 61 6c  xception ("Inval
1d2f0 69 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  id connection st
1d300 72 69 6e 67 3a 20 69 6e 76 61 6c 69 64 20 55 52  ring: invalid UR
1d310 49 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  I");..    }.... 
1d320 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d330 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
1d340 69 6e 65 73 20 69 66 20 74 68 65 20 6c 65 67 61  ines if the lega
1d350 63 79 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  cy connection st
1d360 72 69 6e 67 20 70 61 72 73 65 72 20 73 68 6f 75  ring parser shou
1d370 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  ld be used...   
1d380 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1d390 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
1d3a0 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
1d3b0 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
1d3c0 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20  connection that 
1d3d0 77 69 6c 6c 20 62 65 20 75 73 69 6e 67 20 74 68  will be using th
1d3e0 65 20 70 61 72 73 65 64 20 63 6f 6e 6e 65 63 74  e parsed connect
1d3f0 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ion string...   
1d400 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1d410 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1d420 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
1d430 72 6f 20 69 66 20 74 68 65 20 6c 65 67 61 63 79  ro if the legacy
1d440 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
1d450 6e 67 20 70 61 72 73 65 72 20 73 68 6f 75 6c 64  ng parser should
1d460 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f   be used...    /
1d470 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1d480 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1d490 63 20 62 6f 6f 6c 20 53 68 6f 75 6c 64 55 73 65  c bool ShouldUse
1d4a0 4c 65 67 61 63 79 43 6f 6e 6e 65 63 74 69 6f 6e  LegacyConnection
1d4b0 53 74 72 69 6e 67 50 61 72 73 65 72 28 0d 0a 20  StringParser(.. 
1d4c0 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
1d4d0 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
1d4e0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  on..        ).. 
1d4f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 74     {..        st
1d500 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 4e 6f 5f  ring name = "No_
1d510 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1d520 4e 65 77 50 61 72 73 65 72 22 3b 0d 0a 20 20 20  NewParser";..   
1d530 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
1d540 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  e;....        if
1d550 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d   ((connection !=
1d560 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
1d570 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f         connectio
1d580 6e 2e 54 72 79 47 65 74 43 61 63 68 65 64 53 65  n.TryGetCachedSe
1d590 74 74 69 6e 67 28 6e 61 6d 65 2c 20 6e 75 6c 6c  tting(name, null
1d5a0 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
1d5b0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d5c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 76 61        return (va
1d5d0 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 3b 0d 0a 20  lue != null);.. 
1d5e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1d5f0 20 20 20 20 69 66 20 28 28 63 6f 6e 6e 65 63 74      if ((connect
1d600 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 20 26 26 0d  ion == null) &&.
1d610 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 79  .            Try
1d620 47 65 74 4c 61 73 74 43 61 63 68 65 64 53 65 74  GetLastCachedSet
1d630 74 69 6e 67 28 6e 61 6d 65 2c 20 6e 75 6c 6c 2c  ting(name, null,
1d640 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
1d650 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d660 20 20 20 20 20 72 65 74 75 72 6e 20 28 76 61 6c       return (val
1d670 75 65 20 21 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20  ue != null);..  
1d680 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1d690 20 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66     value = Unsaf
1d6a0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47  eNativeMethods.G
1d6b0 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 6e  etSettingValue(n
1d6c0 61 6d 65 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20  ame, null);.... 
1d6d0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
1d6e0 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ction != null)..
1d6f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e              conn
1d700 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64  ection.SetCached
1d710 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61  Setting(name, va
1d720 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 65  lue);..        e
1d730 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
1d740 20 53 65 74 4c 61 73 74 43 61 63 68 65 64 53 65   SetLastCachedSe
1d750 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75  tting(name, valu
1d760 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  e);....        r
1d770 65 74 75 72 6e 20 28 76 61 6c 75 65 20 21 3d 20  eturn (value != 
1d780 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  null);..    }...
1d790 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1d7a0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50 61 72 73  y>..    /// Pars
1d7b0 65 73 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  es a connection 
1d7c0 73 74 72 69 6e 67 20 69 6e 74 6f 20 63 6f 6d 70  string into comp
1d7d0 6f 6e 65 6e 74 20 70 61 72 74 73 20 75 73 69 6e  onent parts usin
1d7e0 67 20 74 68 65 20 63 75 73 74 6f 6d 0d 0a 20 20  g the custom..  
1d7f0 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e    /// connection
1d800 20 73 74 72 69 6e 67 20 70 61 72 73 65 72 2e 20   string parser. 
1d810 20 41 6e 20 65 78 63 65 70 74 69 6f 6e 20 6d 61   An exception ma
1d820 79 20 62 65 20 74 68 72 6f 77 6e 20 69 66 20 74  y be thrown if t
1d830 68 65 20 73 79 6e 74 61 78 0d 0a 20 20 20 20 2f  he syntax..    /
1d840 2f 2f 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63  // of the connec
1d850 74 69 6f 6e 20 73 74 72 69 6e 67 20 69 73 20 69  tion string is i
1d860 6e 63 6f 72 72 65 63 74 2e 0d 0a 20 20 20 20 2f  ncorrect...    /
1d870 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1d880 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1d890 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 53 74  me="connectionSt
1d8a0 72 69 6e 67 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ring">..    /// 
1d8b0 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  The connection s
1d8c0 74 72 69 6e 67 20 74 6f 20 70 61 72 73 65 2e 0d  tring to parse..
1d8d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
1d8e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1d8f0 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77 4e 61 6d  m name="allowNam
1d900 65 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f  eOnly">..    ///
1d910 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 6e 61 6d   Non-zero if nam
1d920 65 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 77  es are allowed w
1d930 69 74 68 6f 75 74 20 76 61 6c 75 65 73 2e 0d 0a  ithout values...
1d940 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1d950 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
1d960 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
1d970 20 6c 69 73 74 20 6f 66 20 6b 65 79 2f 76 61 6c   list of key/val
1d980 75 65 20 70 61 69 72 73 20 63 6f 72 72 65 73 70  ue pairs corresp
1d990 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 70 61  onding to the pa
1d9a0 72 61 6d 65 74 65 72 73 20 73 70 65 63 69 66 69  rameters specifi
1d9b0 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 74 68  ed..    /// with
1d9c0 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  in the connectio
1d9d0 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f  n string...    /
1d9e0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1d9f0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1da00 63 20 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72  c SortedList<str
1da10 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 50 61 72  ing, string> Par
1da20 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  seConnectionStri
1da30 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ng(..        str
1da40 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74  ing connectionSt
1da50 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 62  ring,..        b
1da60 6f 6f 6c 20 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c  ool allowNameOnl
1da70 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  y..        )..  
1da80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
1da90 75 72 6e 20 50 61 72 73 65 43 6f 6e 6e 65 63 74  urn ParseConnect
1daa0 69 6f 6e 53 74 72 69 6e 67 28 6e 75 6c 6c 2c 20  ionString(null, 
1dab0 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  connectionString
1dac0 2c 20 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 29  , allowNameOnly)
1dad0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1dae0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1daf0 20 20 20 2f 2f 2f 20 50 61 72 73 65 73 20 61 20     /// Parses a 
1db00 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
1db10 67 20 69 6e 74 6f 20 63 6f 6d 70 6f 6e 65 6e 74  g into component
1db20 20 70 61 72 74 73 20 75 73 69 6e 67 20 74 68 65   parts using the
1db30 20 63 75 73 74 6f 6d 0d 0a 20 20 20 20 2f 2f 2f   custom..    ///
1db40 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
1db50 6e 67 20 70 61 72 73 65 72 2e 20 20 41 6e 20 65  ng parser.  An e
1db60 78 63 65 70 74 69 6f 6e 20 6d 61 79 20 62 65 20  xception may be 
1db70 74 68 72 6f 77 6e 20 69 66 20 74 68 65 20 73 79  thrown if the sy
1db80 6e 74 61 78 0d 0a 20 20 20 20 2f 2f 2f 20 6f 66  ntax..    /// of
1db90 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
1dba0 73 74 72 69 6e 67 20 69 73 20 69 6e 63 6f 72 72  string is incorr
1dbb0 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
1dbc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1dbd0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
1dbe0 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20  onnection">..   
1dbf0 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
1dc00 69 6f 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65  ion that will be
1dc10 20 75 73 69 6e 67 20 74 68 65 20 70 61 72 73 65   using the parse
1dc20 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  d connection str
1dc30 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
1dc40 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1dc50 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
1dc60 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 22 3e 0d  nectionString">.
1dc70 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e  .    /// The con
1dc80 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 74  nection string t
1dc90 6f 20 70 61 72 73 65 2e 0d 0a 20 20 20 20 2f 2f  o parse...    //
1dca0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1dcb0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1dcc0 22 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 22 3e  "allowNameOnly">
1dcd0 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
1dce0 72 6f 20 69 66 20 6e 61 6d 65 73 20 61 72 65 20  ro if names are 
1dcf0 61 6c 6c 6f 77 65 64 20 77 69 74 68 6f 75 74 20  allowed without 
1dd00 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  values...    ///
1dd10 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
1dd20 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1dd30 20 20 2f 2f 2f 20 54 68 65 20 6c 69 73 74 20 6f    /// The list o
1dd40 66 20 6b 65 79 2f 76 61 6c 75 65 20 70 61 69 72  f key/value pair
1dd50 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  s corresponding 
1dd60 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  to the parameter
1dd70 73 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  s specified..   
1dd80 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65 20   /// within the 
1dd90 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
1dda0 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  g...    /// </re
1ddb0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76  turns>..    priv
1ddc0 61 74 65 20 73 74 61 74 69 63 20 53 6f 72 74 65  ate static Sorte
1ddd0 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20 73 74  dList<string, st
1dde0 72 69 6e 67 3e 20 50 61 72 73 65 43 6f 6e 6e 65  ring> ParseConne
1ddf0 63 74 69 6f 6e 53 74 72 69 6e 67 28 0d 0a 20 20  ctionString(..  
1de00 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
1de10 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
1de20 6e 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  n,..        stri
1de30 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  ng connectionStr
1de40 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f  ing,..        bo
1de50 6f 6c 20 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79  ol allowNameOnly
1de60 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
1de70 20 7b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67   {..      string
1de80 20 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 53   s = connectionS
1de90 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 69 6e  tring;..      in
1dea0 74 20 6e 3b 0d 0a 20 20 20 20 20 20 53 6f 72 74  t n;..      Sort
1deb0 65 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20 73  edList<string, s
1dec0 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e 65 77 20  tring> ls = new 
1ded0 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72 69 6e  SortedList<strin
1dee0 67 2c 20 73 74 72 69 6e 67 3e 28 53 74 72 69 6e  g, string>(Strin
1def0 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61  gComparer.Ordina
1df00 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d  lIgnoreCase);...
1df10 0a 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 20  .      // First 
1df20 73 70 6c 69 74 20 69 6e 74 6f 20 73 65 6d 69 2d  split into semi-
1df30 63 6f 6c 6f 6e 20 64 65 6c 69 6d 69 74 65 64 20  colon delimited 
1df40 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 73  values...      s
1df50 74 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75  tring error = nu
1df60 6c 6c 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  ll;..      strin
1df70 67 5b 5d 20 61 72 50 61 72 74 73 3b 0d 0a 0d 0a  g[] arParts;....
1df80 20 20 20 20 20 20 69 66 20 28 53 68 6f 75 6c 64        if (Should
1df90 55 73 65 4c 65 67 61 63 79 43 6f 6e 6e 65 63 74  UseLegacyConnect
1dfa0 69 6f 6e 53 74 72 69 6e 67 50 61 72 73 65 72 28  ionStringParser(
1dfb0 63 6f 6e 6e 65 63 74 69 6f 6e 29 29 0d 0a 20 20  connection))..  
1dfc0 20 20 20 20 20 20 20 20 61 72 50 61 72 74 73 20          arParts 
1dfd0 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  = SQLiteConvert.
1dfe0 53 70 6c 69 74 28 73 2c 20 27 3b 27 29 3b 0d 0a  Split(s, ';');..
1dff0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1e000 20 20 20 20 20 20 61 72 50 61 72 74 73 20 3d 20        arParts = 
1e010 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 4e 65  SQLiteConvert.Ne
1e020 77 53 70 6c 69 74 28 73 2c 20 27 3b 27 2c 20 74  wSplit(s, ';', t
1e030 72 75 65 2c 20 72 65 66 20 65 72 72 6f 72 29 3b  rue, ref error);
1e040 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 61 72  ....      if (ar
1e050 50 61 72 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  Parts == null)..
1e060 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e070 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
1e080 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 48  umentException(H
1e090 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
1e0a0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1e0b0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1e0c0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1e0d0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1e0e0 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 43 6f       "Invalid Co
1e0f0 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 66  nnectionString f
1e100 6f 72 6d 61 74 2c 20 63 61 6e 6e 6f 74 20 70 61  ormat, cannot pa
1e110 72 73 65 3a 20 7b 30 7d 22 2c 20 28 65 72 72 6f  rse: {0}", (erro
1e120 72 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20  r != null) ?..  
1e130 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
1e140 72 20 3a 20 22 63 6f 75 6c 64 20 6e 6f 74 20 73  r : "could not s
1e150 70 6c 69 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  plit connection 
1e160 73 74 72 69 6e 67 20 69 6e 74 6f 20 70 72 6f 70  string into prop
1e170 65 72 74 69 65 73 22 29 29 3b 0d 0a 20 20 20 20  erties"));..    
1e180 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 6e 74    }....      int
1e190 20 78 20 3d 20 28 61 72 50 61 72 74 73 20 21 3d   x = (arParts !=
1e1a0 20 6e 75 6c 6c 29 20 3f 20 61 72 50 61 72 74 73   null) ? arParts
1e1b0 2e 4c 65 6e 67 74 68 20 3a 20 30 3b 0d 0a 20 20  .Length : 0;..  
1e1c0 20 20 20 20 2f 2f 20 46 6f 72 20 65 61 63 68 20      // For each 
1e1d0 73 65 6d 69 2d 63 6f 6c 6f 6e 20 70 69 65 63 65  semi-colon piece
1e1e0 2c 20 73 70 6c 69 74 20 69 6e 74 6f 20 6b 65 79  , split into key
1e1f0 20 61 6e 64 20 76 61 6c 75 65 20 70 61 69 72 73   and value pairs
1e200 20 62 79 20 74 68 65 20 70 72 65 73 65 6e 63 65   by the presence
1e210 20 6f 66 20 74 68 65 20 3d 20 73 69 67 6e 0d 0a   of the = sign..
1e220 20 20 20 20 20 20 66 6f 72 20 28 6e 20 3d 20 30        for (n = 0
1e230 3b 20 6e 20 3c 20 78 3b 20 6e 2b 2b 29 0d 0a 20  ; n < x; n++).. 
1e240 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e250 69 66 20 28 61 72 50 61 72 74 73 5b 6e 5d 20 3d  if (arParts[n] =
1e260 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1e270 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
1e280 20 20 20 20 20 20 20 20 61 72 50 61 72 74 73 5b          arParts[
1e290 6e 5d 20 3d 20 61 72 50 61 72 74 73 5b 6e 5d 2e  n] = arParts[n].
1e2a0 54 72 69 6d 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Trim();....     
1e2b0 20 20 20 69 66 20 28 61 72 50 61 72 74 73 5b 6e     if (arParts[n
1e2c0 5d 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a  ].Length == 0)..
1e2d0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
1e2e0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
1e2f0 6e 74 20 69 6e 64 65 78 4f 66 20 3d 20 61 72 50  nt indexOf = arP
1e300 61 72 74 73 5b 6e 5d 2e 49 6e 64 65 78 4f 66 28  arts[n].IndexOf(
1e310 27 3d 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  '=');....       
1e320 20 69 66 20 28 69 6e 64 65 78 4f 66 20 21 3d 20   if (indexOf != 
1e330 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20 6c  -1)..          l
1e340 73 2e 41 64 64 28 55 6e 77 72 61 70 53 74 72 69  s.Add(UnwrapStri
1e350 6e 67 28 61 72 50 61 72 74 73 5b 6e 5d 2e 53 75  ng(arParts[n].Su
1e360 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78  bstring(0, index
1e370 4f 66 29 2e 54 72 69 6d 28 29 29 2c 20 55 6e 77  Of).Trim()), Unw
1e380 72 61 70 53 74 72 69 6e 67 28 61 72 50 61 72 74  rapString(arPart
1e390 73 5b 6e 5d 2e 53 75 62 73 74 72 69 6e 67 28 69  s[n].Substring(i
1e3a0 6e 64 65 78 4f 66 20 2b 20 31 29 2e 54 72 69 6d  ndexOf + 1).Trim
1e3b0 28 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 65  ()));..        e
1e3c0 6c 73 65 20 69 66 20 28 61 6c 6c 6f 77 4e 61 6d  lse if (allowNam
1e3d0 65 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20  eOnly)..        
1e3e0 20 20 6c 73 2e 41 64 64 28 55 6e 77 72 61 70 53    ls.Add(UnwrapS
1e3f0 74 72 69 6e 67 28 61 72 50 61 72 74 73 5b 6e 5d  tring(arParts[n]
1e400 2e 54 72 69 6d 28 29 29 2c 20 53 74 72 69 6e 67  .Trim()), String
1e410 2e 45 6d 70 74 79 29 3b 0d 0a 20 20 20 20 20 20  .Empty);..      
1e420 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
1e430 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
1e440 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 48 65  mentException(He
1e450 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1e460 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
1e470 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
1e480 75 72 65 2c 20 22 49 6e 76 61 6c 69 64 20 43 6f  ure, "Invalid Co
1e490 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 66  nnectionString f
1e4a0 6f 72 6d 61 74 20 66 6f 72 20 70 61 72 74 20 5c  ormat for part \
1e4b0 22 7b 30 7d 5c 22 2c 20 6e 6f 20 65 71 75 61 6c  "{0}\", no equal
1e4c0 20 73 69 67 6e 20 66 6f 75 6e 64 22 2c 20 61 72   sign found", ar
1e4d0 50 61 72 74 73 5b 6e 5d 29 29 3b 0d 0a 20 20 20  Parts[n]));..   
1e4e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74 75     }..      retu
1e4f0 72 6e 20 6c 73 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rn ls;..    }...
1e500 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1e510 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50 61 72 73  y>..    /// Pars
1e520 65 73 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  es a connection 
1e530 73 74 72 69 6e 67 20 75 73 69 6e 67 20 74 68 65  string using the
1e540 20 62 75 69 6c 74 2d 69 6e 20 28 69 2e 65 2e 20   built-in (i.e. 
1e550 66 72 61 6d 65 77 6f 72 6b 20 70 72 6f 76 69 64  framework provid
1e560 65 64 29 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e  ed)..    /// con
1e570 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70  nection string p
1e580 61 72 73 65 72 20 63 6c 61 73 73 20 61 6e 64 20  arser class and 
1e590 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2f  returns the key/
1e5a0 76 61 6c 75 65 20 70 61 69 72 73 2e 20 20 41 6e  value pairs.  An
1e5b0 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 63 65 70 74  ..    /// except
1e5c0 69 6f 6e 20 6d 61 79 20 62 65 20 74 68 72 6f 77  ion may be throw
1e5d0 6e 20 69 66 20 74 68 65 20 63 6f 6e 6e 65 63 74  n if the connect
1e5e0 69 6f 6e 20 73 74 72 69 6e 67 20 69 73 20 69 6e  ion string is in
1e5f0 76 61 6c 69 64 20 6f 72 20 63 61 6e 6e 6f 74 20  valid or cannot 
1e600 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 70 61 72 73  be..    /// pars
1e610 65 64 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c  ed.  When compil
1e620 65 64 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20  ed for the .NET 
1e630 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
1e640 6b 2c 20 74 68 65 20 63 75 73 74 6f 6d 0d 0a 20  k, the custom.. 
1e650 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f     /// connectio
1e660 6e 20 73 74 72 69 6e 67 20 70 61 72 73 65 72 20  n string parser 
1e670 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 69  is always used i
1e680 6e 73 74 65 61 64 20 62 65 63 61 75 73 65 20 74  nstead because t
1e690 68 65 20 66 72 61 6d 65 77 6f 72 6b 0d 0a 20 20  he framework..  
1e6a0 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 64 20 6f    /// provided o
1e6b0 6e 65 20 69 73 20 75 6e 61 76 61 69 6c 61 62 6c  ne is unavailabl
1e6c0 65 20 74 68 65 72 65 2e 0d 0a 20 20 20 20 2f 2f  e there...    //
1e6d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1e6e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1e6f0 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d  e="connection">.
1e700 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e  .    /// The con
1e710 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 77 69 6c  nection that wil
1e720 6c 20 62 65 20 75 73 69 6e 67 20 74 68 65 20 70  l be using the p
1e730 61 72 73 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e  arsed connection
1e740 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
1e750 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1e760 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1e770 22 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  "connectionStrin
1e780 67 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  g">..    /// The
1e790 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
1e7a0 6e 67 20 74 6f 20 70 61 72 73 65 2e 0d 0a 20 20  ng to parse...  
1e7b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1e7c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1e7d0 61 6d 65 3d 22 73 74 72 69 63 74 22 3e 0d 0a 20  ame="strict">.. 
1e7e0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
1e7f0 74 6f 20 74 68 72 6f 77 20 61 6e 20 65 78 63 65  to throw an exce
1e800 70 74 69 6f 6e 20 69 66 20 61 6e 79 20 63 6f 6e  ption if any con
1e810 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 76  nection string v
1e820 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 6f 66  alues are not of
1e830 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73  ..    /// the <s
1e840 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
1e850 20 2f 3e 20 74 79 70 65 2e 20 20 54 68 69 73 20   /> type.  This 
1e860 69 73 20 6e 6f 74 20 61 70 70 6c 69 63 61 62 6c  is not applicabl
1e870 65 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 6f  e when running o
1e880 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 2e  n..    /// the .
1e890 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
1e8a0 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ework...    /// 
1e8b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1e8c0 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 6c  / <returns>The l
1e8d0 69 73 74 20 6f 66 20 6b 65 79 2f 76 61 6c 75 65  ist of key/value
1e8e0 20 70 61 69 72 73 2e 3c 2f 72 65 74 75 72 6e 73   pairs.</returns
1e8f0 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
1e900 74 61 74 69 63 20 53 6f 72 74 65 64 4c 69 73 74  tatic SortedList
1e910 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
1e920 20 50 61 72 73 65 43 6f 6e 6e 65 63 74 69 6f 6e   ParseConnection
1e930 53 74 72 69 6e 67 56 69 61 46 72 61 6d 65 77 6f  StringViaFramewo
1e940 72 6b 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  rk(..        SQL
1e950 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
1e960 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  nnection,..     
1e970 20 20 20 73 74 72 69 6e 67 20 63 6f 6e 6e 65 63     string connec
1e980 74 69 6f 6e 53 74 72 69 6e 67 2c 0d 0a 20 20 20  tionString,..   
1e990 20 20 20 20 20 62 6f 6f 6c 20 73 74 72 69 63 74       bool strict
1e9a0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
1e9b0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
1e9c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1e9d0 52 4b 0d 0a 20 20 20 20 20 20 20 20 44 62 43 6f  RK..        DbCo
1e9e0 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 42 75  nnectionStringBu
1e9f0 69 6c 64 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e  ilder connection
1ea00 53 74 72 69 6e 67 42 75 69 6c 64 65 72 0d 0a 20  StringBuilder.. 
1ea10 20 20 20 20 20 20 20 20 20 20 20 3d 20 6e 65 77             = new
1ea20 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72   DbConnectionStr
1ea30 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
1ea40 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74  .        connect
1ea50 69 6f 6e 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ionStringBuilder
1ea60 2e 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  .ConnectionStrin
1ea70 67 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74  g = connectionSt
1ea80 72 69 6e 67 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ring; /* throw *
1ea90 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 53 6f 72  /....        Sor
1eaa0 74 65 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20  tedList<string, 
1eab0 73 74 72 69 6e 67 3e 20 72 65 73 75 6c 74 20 3d  string> result =
1eac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
1ead0 77 20 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72  w SortedList<str
1eae0 69 6e 67 2c 20 73 74 72 69 6e 67 3e 28 53 74 72  ing, string>(Str
1eaf0 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69  ingComparer.Ordi
1eb00 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
1eb10 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61  ...        forea
1eb20 63 68 20 28 73 74 72 69 6e 67 20 6b 65 79 4e 61  ch (string keyNa
1eb30 6d 65 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  me in connection
1eb40 53 74 72 69 6e 67 42 75 69 6c 64 65 72 2e 4b 65  StringBuilder.Ke
1eb50 79 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ys)..        {..
1eb60 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
1eb70 63 74 20 76 61 6c 75 65 20 3d 20 63 6f 6e 6e 65  ct value = conne
1eb80 63 74 69 6f 6e 53 74 72 69 6e 67 42 75 69 6c 64  ctionStringBuild
1eb90 65 72 5b 6b 65 79 4e 61 6d 65 5d 3b 0d 0a 20 20  er[keyName];..  
1eba0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1ebb0 20 6b 65 79 56 61 6c 75 65 20 3d 20 6e 75 6c 6c   keyValue = null
1ebc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ebd0 20 69 66 20 28 76 61 6c 75 65 20 69 73 20 73 74   if (value is st
1ebe0 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  ring)..         
1ebf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ec00 20 20 20 20 20 20 6b 65 79 56 61 6c 75 65 20 3d        keyValue =
1ec10 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d   (string)value;.
1ec20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1ec30 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1ec40 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
1ec50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
1ec70 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45  ow new ArgumentE
1ec80 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
1ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1eca0 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 6f 70 65  connection prope
1ecb0 72 74 79 20 76 61 6c 75 65 20 69 73 20 6e 6f 74  rty value is not
1ecc0 20 61 20 73 74 72 69 6e 67 22 2c 0d 0a 20 20 20   a string",..   
1ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ece0 20 6b 65 79 4e 61 6d 65 29 3b 0d 0a 20 20 20 20   keyName);..    
1ecf0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ed00 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1ed10 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
1ed20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1ed30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
1ed40 65 79 56 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e  eyValue = value.
1ed50 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
1ed60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1ed70 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
1ed80 2e 41 64 64 28 6b 65 79 4e 61 6d 65 2c 20 6b 65  .Add(keyName, ke
1ed90 79 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  yValue);..      
1eda0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72    }....        r
1edb0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 23  eturn result;..#
1edc0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  else..        //
1edd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54  ..        // NOT
1ede0 45 3a 20 4f 6e 20 74 68 65 20 2e 4e 45 54 20 43  E: On the .NET C
1edf0 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b  ompact Framework
1ee00 2c 20 61 6c 77 61 79 73 20 75 73 65 20 6f 75 72  , always use our
1ee10 20 63 75 73 74 6f 6d 20 63 6f 6e 6e 65 63 74 69   custom connecti
1ee20 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  on..        //  
1ee30 20 20 20 20 20 73 74 72 69 6e 67 20 70 61 72 73       string pars
1ee40 65 72 20 61 73 20 74 68 65 20 62 75 69 6c 74 2d  er as the built-
1ee50 69 6e 20 28 69 2e 65 2e 20 66 72 61 6d 65 77 6f  in (i.e. framewo
1ee60 72 6b 20 70 72 6f 76 69 64 65 64 29 20 6f 6e 65  rk provided) one
1ee70 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20   is..        // 
1ee80 20 20 20 20 20 20 75 6e 61 76 61 69 6c 61 62 6c        unavailabl
1ee90 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  e...        //..
1eea0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50          return P
1eeb0 61 72 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  arseConnectionSt
1eec0 72 69 6e 67 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c  ring(connection,
1eed0 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e   connectionStrin
1eee0 67 2c 20 66 61 6c 73 65 29 3b 0d 0a 23 65 6e 64  g, false);..#end
1eef0 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69 66  if..    }....#if
1ef00 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1ef10 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1ef20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1ef30 20 20 20 20 2f 2f 2f 20 4d 61 6e 75 61 6c 20 64      /// Manual d
1ef40 69 73 74 72 69 62 75 74 65 64 20 74 72 61 6e 73  istributed trans
1ef50 61 63 74 69 6f 6e 20 65 6e 6c 69 73 74 6d 65 6e  action enlistmen
1ef60 74 20 73 75 70 70 6f 72 74 0d 0a 20 20 20 20 2f  t support..    /
1ef70 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1ef80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1ef90 6d 65 3d 22 74 72 61 6e 73 61 63 74 69 6f 6e 22  me="transaction"
1efa0 3e 54 68 65 20 64 69 73 74 72 69 62 75 74 65 64  >The distributed
1efb0 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20   transaction to 
1efc0 65 6e 6c 69 73 74 20 69 6e 3c 2f 70 61 72 61 6d  enlist in</param
1efd0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  >..    public ov
1efe0 65 72 72 69 64 65 20 76 6f 69 64 20 45 6e 6c 69  erride void Enli
1eff0 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 28 53 79  stTransaction(Sy
1f000 73 74 65 6d 2e 54 72 61 6e 73 61 63 74 69 6f 6e  stem.Transaction
1f010 73 2e 54 72 61 6e 73 61 63 74 69 6f 6e 20 74 72  s.Transaction tr
1f020 61 6e 73 61 63 74 69 6f 6e 29 0d 0a 20 20 20 20  ansaction)..    
1f030 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b  {..        Check
1f040 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
1f050 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 61 69 74         bool wait
1f060 46 6f 72 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73  ForEnlistmentRes
1f070 65 74 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  et;..        int
1f080 20 77 61 69 74 54 69 6d 65 6f 75 74 3b 0d 0a 0d   waitTimeout;...
1f090 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f  .        lock (_
1f0a0 65 6e 6c 69 73 74 6d 65 6e 74 53 79 6e 63 52 6f  enlistmentSyncRo
1f0b0 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49  ot) /* TRANSACTI
1f0c0 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ONAL */..       
1f0d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f0e0 77 61 69 74 46 6f 72 45 6e 6c 69 73 74 6d 65 6e  waitForEnlistmen
1f0f0 74 52 65 73 65 74 20 3d 20 28 28 5f 66 6c 61 67  tReset = ((_flag
1f100 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
1f110 74 69 6f 6e 46 6c 61 67 73 2e 57 61 69 74 46 6f  tionFlags.WaitFo
1f120 72 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73 65 74  rEnlistmentReset
1f130 29 20 3d 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ==..          
1f140 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
1f150 65 63 74 69 6f 6e 46 6c 61 67 73 2e 57 61 69 74  ectionFlags.Wait
1f160 46 6f 72 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73  ForEnlistmentRes
1f170 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
1f180 20 20 20 20 77 61 69 74 54 69 6d 65 6f 75 74 20      waitTimeout 
1f190 3d 20 5f 77 61 69 74 54 69 6d 65 6f 75 74 3b 0d  = _waitTimeout;.
1f1a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f1b0 20 20 20 20 20 20 69 66 20 28 77 61 69 74 46 6f        if (waitFo
1f1c0 72 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73 65 74  rEnlistmentReset
1f1d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  )..            /
1f1e0 2a 20 49 47 4e 4f 52 45 44 20 2a 2f 0d 0a 20 20  * IGNORED */..  
1f1f0 20 20 20 20 20 20 20 20 20 20 57 61 69 74 46 6f            WaitFo
1f200 72 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73 65 74  rEnlistmentReset
1f210 28 77 61 69 74 54 69 6d 65 6f 75 74 2c 20 6e 75  (waitTimeout, nu
1f220 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
1f230 6c 6f 63 6b 20 28 5f 65 6e 6c 69 73 74 6d 65 6e  lock (_enlistmen
1f240 74 53 79 6e 63 52 6f 6f 74 29 20 2f 2a 20 54 52  tSyncRoot) /* TR
1f250 41 4e 53 41 43 54 49 4f 4e 41 4c 20 2a 2f 0d 0a  ANSACTIONAL */..
1f260 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1f270 20 20 20 20 20 20 20 69 66 20 28 5f 65 6e 6c 69         if (_enli
1f280 73 74 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 20 26  stment != null &
1f290 26 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 3d 3d  & transaction ==
1f2a0 20 5f 65 6e 6c 69 73 74 6d 65 6e 74 2e 5f 73 63   _enlistment._sc
1f2b0 6f 70 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ope)..          
1f2c0 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 20        return;.. 
1f2d0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1f2e0 69 66 20 28 5f 65 6e 6c 69 73 74 6d 65 6e 74 20  if (_enlistment 
1f2f0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1f300 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1f310 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65  new ArgumentExce
1f320 70 74 69 6f 6e 28 22 41 6c 72 65 61 64 79 20 65  ption("Already e
1f330 6e 6c 69 73 74 65 64 20 69 6e 20 61 20 74 72 61  nlisted in a tra
1f340 6e 73 61 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a 20  nsaction");.... 
1f350 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f             if (_
1f360 74 72 61 6e 73 61 63 74 69 6f 6e 4c 65 76 65 6c  transactionLevel
1f370 20 3e 20 30 20 26 26 20 74 72 61 6e 73 61 63 74   > 0 && transact
1f380 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion != null)..  
1f390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1f3a0 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
1f3b0 45 78 63 65 70 74 69 6f 6e 28 22 55 6e 61 62 6c  Exception("Unabl
1f3c0 65 20 74 6f 20 65 6e 6c 69 73 74 20 69 6e 20 74  e to enlist in t
1f3d0 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 20 6c 6f  ransaction, a lo
1f3e0 63 61 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  cal transaction 
1f3f0 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 22 29  already exists")
1f400 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  ;..            e
1f410 6c 73 65 20 69 66 20 28 74 72 61 6e 73 61 63 74  lse if (transact
1f420 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion == null)..  
1f430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1f440 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
1f450 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 55  NullException("U
1f460 6e 61 62 6c 65 20 74 6f 20 65 6e 6c 69 73 74 20  nable to enlist 
1f470 69 6e 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20  in transaction, 
1f480 69 74 20 69 73 20 6e 75 6c 6c 22 29 3b 0d 0a 0d  it is null");...
1f490 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
1f4a0 6c 20 73 74 72 69 63 74 45 6e 6c 69 73 74 6d 65  l strictEnlistme
1f4b0 6e 74 20 3d 20 28 28 5f 66 6c 61 67 73 20 26 20  nt = ((_flags & 
1f4c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1f4d0 46 6c 61 67 73 2e 53 74 72 69 63 74 45 6e 6c 69  Flags.StrictEnli
1f4e0 73 74 6d 65 6e 74 29 20 3d 3d 0d 0a 20 20 20 20  stment) ==..    
1f4f0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1f500 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
1f510 73 2e 53 74 72 69 63 74 45 6e 6c 69 73 74 6d 65  s.StrictEnlistme
1f520 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
1f530 20 20 20 20 5f 65 6e 6c 69 73 74 6d 65 6e 74 20      _enlistment 
1f540 3d 20 6e 65 77 20 53 51 4c 69 74 65 45 6e 6c 69  = new SQLiteEnli
1f550 73 74 6d 65 6e 74 28 74 68 69 73 2c 20 74 72 61  stment(this, tra
1f560 6e 73 61 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  nsaction,..     
1f570 20 20 20 20 20 20 20 20 20 20 20 47 65 74 46 61             GetFa
1f580 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 49 73 6f  llbackDefaultIso
1f590 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 29 2c 20 73  lationLevel(), s
1f5a0 74 72 69 63 74 45 6e 6c 69 73 74 6d 65 6e 74 2c  trictEnlistment,
1f5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f5c0 20 20 73 74 72 69 63 74 45 6e 6c 69 73 74 6d 65    strictEnlistme
1f5d0 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
1f5e0 20 20 20 20 4f 6e 43 68 61 6e 67 65 64 28 74 68      OnChanged(th
1f5f0 69 73 2c 20 6e 65 77 20 43 6f 6e 6e 65 63 74 69  is, new Connecti
1f600 6f 6e 45 76 65 6e 74 41 72 67 73 28 0d 0a 20 20  onEventArgs(..  
1f610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
1f620 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76  LiteConnectionEv
1f630 65 6e 74 54 79 70 65 2e 45 6e 6c 69 73 74 54 72  entType.EnlistTr
1f640 61 6e 73 61 63 74 69 6f 6e 2c 20 6e 75 6c 6c 2c  ansaction, null,
1f650 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c   null, null, nul
1f660 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
1f670 20 20 20 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20      null, null, 
1f680 6e 65 77 20 6f 62 6a 65 63 74 5b 5d 20 7b 20 5f  new object[] { _
1f690 65 6e 6c 69 73 74 6d 65 6e 74 20 7d 29 29 3b 0d  enlistment }));.
1f6a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
1f6b0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23 69 66  }..#endif....#if
1f6c0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
1f6d0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
1f6e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f6f0 20 20 20 20 2f 2f 2f 20 3c 62 3e 45 58 50 45 52      /// <b>EXPER
1f700 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20 2d 2d 0d 0a  IMENTAL</b> --..
1f710 20 20 20 20 2f 2f 2f 20 57 61 69 74 73 20 66 6f      /// Waits fo
1f720 72 20 74 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74  r the enlistment
1f730 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1f740 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1f750 20 74 6f 20 62 65 20 72 65 73 65 74 2e 0d 0a 20   to be reset... 
1f760 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1f770 6f 64 20 61 6c 77 61 79 73 20 74 68 72 6f 77 73  od always throws
1f780 20 3c 73 65 65 20 63 72 65 66 3d 22 4e 6f 74 49   <see cref="NotI
1f790 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74  mplementedExcept
1f7a0 69 6f 6e 22 20 2f 3e 20 77 68 65 6e 0d 0a 20 20  ion" /> when..  
1f7b0 20 20 2f 2f 2f 20 72 75 6e 6e 69 6e 67 20 6f 6e    /// running on
1f7c0 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
1f7d0 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20  t Framework...  
1f7e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1f7f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1f800 20 6e 61 6d 65 3d 22 74 69 6d 65 6f 75 74 4d 69   name="timeoutMi
1f810 6c 6c 69 73 65 63 6f 6e 64 73 22 3e 0d 0a 20 20  lliseconds">..  
1f820 20 20 2f 2f 2f 20 54 68 65 20 61 70 70 72 6f 78    /// The approx
1f830 69 6d 61 74 65 20 6d 61 78 69 6d 75 6d 20 6e 75  imate maximum nu
1f840 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63  mber of millisec
1f850 6f 6e 64 73 20 74 6f 20 77 61 69 74 20 62 65 66  onds to wait bef
1f860 6f 72 65 20 74 69 6d 69 6e 67 0d 0a 20 20 20 20  ore timing..    
1f870 2f 2f 2f 20 6f 75 74 20 74 68 65 20 77 61 69 74  /// out the wait
1f880 20 6f 70 65 72 61 74 69 6f 6e 2e 0d 0a 20 20 20   operation...   
1f890 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1f8a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1f8b0 6d 65 3d 22 72 65 74 75 72 6e 4f 6e 44 69 73 70  me="returnOnDisp
1f8c0 6f 73 65 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  osed">..    /// 
1f8d0 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65  The return value
1f8e0 20 74 6f 20 75 73 65 20 69 66 20 74 68 65 20 63   to use if the c
1f8f0 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20 62 65  onnection has be
1f900 65 6e 20 64 69 73 70 6f 73 65 64 3b 20 69 66 20  en disposed; if 
1f910 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 76 61  this..    /// va
1f920 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 3c 73 65  lue is null, <se
1f930 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 44 69  e cref="ObjectDi
1f940 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22  sposedException"
1f950 20 2f 3e 20 77 69 6c 6c 20 62 65 20 72 61 69 73   /> will be rais
1f960 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 69 66 20 74  ed..    /// if t
1f970 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  he connection ha
1f980 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 2e  s been disposed.
1f990 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
1f9a0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
1f9b0 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
1f9c0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 65  on-zero if the e
1f9d0 6e 6c 69 73 74 6d 65 6e 74 20 61 73 73 63 69 61  nlistment asscia
1f9e0 74 65 64 20 77 69 74 68 20 74 68 69 73 20 63 6f  ted with this co
1f9f0 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 72 65 73  nnection was res
1fa00 65 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 6f 74 68  et;..    /// oth
1fa10 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 20 20 49  erwise, zero.  I
1fa20 74 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f 74 65  t should be note
1fa30 64 20 74 68 61 74 20 74 68 69 73 20 6d 65 74 68  d that this meth
1fa40 6f 64 20 72 65 74 75 72 6e 69 6e 67 20 61 0d 0a  od returning a..
1fa50 20 20 20 20 2f 2f 2f 20 6e 6f 6e 2d 7a 65 72 6f      /// non-zero
1fa60 20 76 61 6c 75 65 20 64 6f 65 73 20 6e 6f 74 20   value does not 
1fa70 6e 65 63 65 73 73 61 72 69 6c 79 20 67 75 61 72  necessarily guar
1fa80 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 20 63  antee that the c
1fa90 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f  onnection..    /
1faa0 2f 2f 20 63 61 6e 20 65 6e 6c 69 73 74 20 69 6e  // can enlist in
1fab0 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69   a new transacti
1fac0 6f 6e 20 28 69 2e 65 2e 20 64 75 65 20 74 6f 20  on (i.e. due to 
1fad0 70 6f 74 65 6e 74 69 63 61 6c 20 72 61 63 65 20  potentical race 
1fae0 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f 20 6f 74  with..    /// ot
1faf0 68 65 72 20 74 68 72 65 61 64 73 29 3b 20 74 68  her threads); th
1fb00 65 72 65 66 6f 72 65 2c 20 63 61 6c 6c 65 72 73  erefore, callers
1fb10 20 73 68 6f 75 6c 64 20 67 65 6e 65 72 61 6c 6c   should generall
1fb20 79 20 75 73 65 20 74 72 79 2f 63 61 74 63 68 0d  y use try/catch.
1fb30 0a 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63 61  .    /// when ca
1fb40 6c 6c 69 6e 67 20 74 68 65 20 3c 73 65 65 20 63  lling the <see c
1fb50 72 65 66 3d 22 45 6e 6c 69 73 74 54 72 61 6e 73  ref="EnlistTrans
1fb60 61 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f  action" /> metho
1fb70 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  d...    /// </re
1fb80 74 75 72 6e 73 3e 0d 0a 23 65 6c 73 65 0d 0a 20  turns>..#else.. 
1fb90 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1fba0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 3e 45 58 50  ..    /// <b>EXP
1fbb0 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20 2d 2d  ERIMENTAL</b> --
1fbc0 0d 0a 20 20 20 20 2f 2f 2f 20 57 61 69 74 73 20  ..    /// Waits 
1fbd0 66 6f 72 20 74 68 65 20 65 6e 6c 69 73 74 6d 65  for the enlistme
1fbe0 6e 74 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  nt associated wi
1fbf0 74 68 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69  th this connecti
1fc00 6f 6e 20 74 6f 20 62 65 20 72 65 73 65 74 2e 0d  on to be reset..
1fc10 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
1fc20 74 68 6f 64 20 61 6c 77 61 79 73 20 74 68 72 6f  thod always thro
1fc30 77 73 20 3c 73 65 65 20 63 72 65 66 3d 22 4e 6f  ws <see cref="No
1fc40 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
1fc50 70 74 69 6f 6e 22 20 2f 3e 20 77 68 65 6e 0d 0a  ption" /> when..
1fc60 20 20 20 20 2f 2f 2f 20 72 75 6e 6e 69 6e 67 20      /// running 
1fc70 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
1fc80 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
1fc90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1fca0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
1fcb0 61 6d 20 6e 61 6d 65 3d 22 74 69 6d 65 6f 75 74  am name="timeout
1fcc0 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 22 3e 0d 0a  Milliseconds">..
1fcd0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 70 70 72      /// The appr
1fce0 6f 78 69 6d 61 74 65 20 6d 61 78 69 6d 75 6d 20  oximate maximum 
1fcf0 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73  number of millis
1fd00 65 63 6f 6e 64 73 20 74 6f 20 77 61 69 74 20 62  econds to wait b
1fd10 65 66 6f 72 65 20 74 69 6d 69 6e 67 0d 0a 20 20  efore timing..  
1fd20 20 20 2f 2f 2f 20 6f 75 74 20 74 68 65 20 77 61    /// out the wa
1fd30 69 74 20 6f 70 65 72 61 74 69 6f 6e 2e 0d 0a 20  it operation... 
1fd40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1fd50 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
1fd60 6e 61 6d 65 3d 22 72 65 74 75 72 6e 4f 6e 44 69  name="returnOnDi
1fd70 73 70 6f 73 65 64 22 3e 0d 0a 20 20 20 20 2f 2f  sposed">..    //
1fd80 2f 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  / The return val
1fd90 75 65 20 74 6f 20 75 73 65 20 69 66 20 74 68 65  ue to use if the
1fda0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20   connection has 
1fdb0 62 65 65 6e 20 64 69 73 70 6f 73 65 64 3b 20 69  been disposed; i
1fdc0 66 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20  f this..    /// 
1fdd0 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 3c  value is null, <
1fde0 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74  see cref="Object
1fdf0 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
1fe00 6e 22 20 2f 3e 20 77 69 6c 6c 20 62 65 20 72 61  n" /> will be ra
1fe10 69 73 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 69 66  ised..    /// if
1fe20 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
1fe30 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
1fe40 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
1fe50 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1fe60 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
1fe70 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
1fe80 20 65 6e 6c 69 73 74 6d 65 6e 74 20 61 73 73 63   enlistment assc
1fe90 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
1fea0 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 72  connection was r
1feb0 65 73 65 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 6f  eset;..    /// o
1fec0 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 20  therwise, zero. 
1fed0 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f   It should be no
1fee0 74 65 64 20 74 68 61 74 20 74 68 69 73 20 6d 65  ted that this me
1fef0 74 68 6f 64 20 72 65 74 75 72 6e 69 6e 67 20 61  thod returning a
1ff00 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 6e 2d 7a 65  ..    /// non-ze
1ff10 72 6f 20 76 61 6c 75 65 20 64 6f 65 73 20 6e 6f  ro value does no
1ff20 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 67 75  t necessarily gu
1ff30 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65  arantee that the
1ff40 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
1ff50 20 2f 2f 2f 20 63 61 6e 20 65 6e 6c 69 73 74 20   /// can enlist 
1ff60 69 6e 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63  in a new transac
1ff70 74 69 6f 6e 20 28 69 2e 65 2e 20 64 75 65 20 74  tion (i.e. due t
1ff80 6f 20 70 6f 74 65 6e 74 69 63 61 6c 20 72 61 63  o potentical rac
1ff90 65 20 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f 20  e with..    /// 
1ffa0 6f 74 68 65 72 20 74 68 72 65 61 64 73 29 3b 20  other threads); 
1ffb0 74 68 65 72 65 66 6f 72 65 2c 20 63 61 6c 6c 65  therefore, calle
1ffc0 72 73 20 73 68 6f 75 6c 64 20 67 65 6e 65 72 61  rs should genera
1ffd0 6c 6c 79 20 75 73 65 20 74 72 79 2f 63 61 74 63  lly use try/catc
1ffe0 68 0d 0a 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20  h..    /// when 
1fff0 63 61 6c 6c 69 6e 67 20 74 68 65 20 45 6e 6c 69  calling the Enli
20000 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 20 6d 65  stTransaction me
20010 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  thod...    /// <
20020 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 65 6e 64 69  /returns>..#endi
20030 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  f..    public bo
20040 6f 6c 20 57 61 69 74 46 6f 72 45 6e 6c 69 73 74  ol WaitForEnlist
20050 6d 65 6e 74 52 65 73 65 74 28 0d 0a 20 20 20 20  mentReset(..    
20060 20 20 20 20 69 6e 74 20 74 69 6d 65 6f 75 74 4d      int timeoutM
20070 69 6c 6c 69 73 65 63 6f 6e 64 73 2c 0d 0a 20 20  illiseconds,..  
20080 20 20 20 20 20 20 62 6f 6f 6c 3f 20 72 65 74 75        bool? retu
20090 72 6e 4f 6e 44 69 73 70 6f 73 65 64 0d 0a 20 20  rnOnDisposed..  
200a0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
200b0 20 20 20 20 20 20 20 20 69 66 20 28 72 65 74 75          if (retu
200c0 72 6e 4f 6e 44 69 73 70 6f 73 65 64 20 3d 3d 20  rnOnDisposed == 
200d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
200e0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
200f0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c 73  ();..        els
20100 65 20 69 66 28 64 69 73 70 6f 73 65 64 29 0d 0a  e if(disposed)..
20110 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20120 72 6e 20 28 62 6f 6f 6c 29 72 65 74 75 72 6e 4f  rn (bool)returnO
20130 6e 44 69 73 70 6f 73 65 64 3b 0d 0a 0d 0a 23 69  nDisposed;....#i
20140 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
20150 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
20160 20 20 20 20 20 20 69 66 20 28 74 69 6d 65 6f 75        if (timeou
20170 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 3c 20  tMilliseconds < 
20180 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
20190 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
201a0 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 74 69 6d  ntException("tim
201b0 65 6f 75 74 20 63 61 6e 6e 6f 74 20 62 65 20 6e  eout cannot be n
201c0 65 67 61 74 69 76 65 22 29 3b 0d 0a 0d 0a 20 20  egative");....  
201d0 20 20 20 20 20 20 63 6f 6e 73 74 20 69 6e 74 20        const int 
201e0 64 65 66 61 75 6c 74 4d 69 6c 6c 69 73 65 63 6f  defaultMilliseco
201f0 6e 64 73 20 3d 20 31 30 30 3b 0d 0a 20 20 20 20  nds = 100;..    
20200 20 20 20 20 69 6e 74 20 73 6c 65 65 70 4d 69 6c      int sleepMil
20210 6c 69 73 65 63 6f 6e 64 73 3b 0d 0a 0d 0a 20 20  liseconds;....  
20220 20 20 20 20 20 20 69 66 20 28 74 69 6d 65 6f 75        if (timeou
20230 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 3d 3d  tMilliseconds ==
20240 20 30 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   0)..        {..
20250 20 20 20 20 20 20 20 20 20 20 20 20 73 6c 65 65              slee
20260 70 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 3d 20  pMilliseconds = 
20270 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  0;..        }.. 
20280 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
20290 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
202a0 20 20 20 20 73 6c 65 65 70 4d 69 6c 6c 69 73 65      sleepMillise
202b0 63 6f 6e 64 73 20 3d 20 4d 61 74 68 2e 4d 69 6e  conds = Math.Min
202c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
202d0 20 20 20 74 69 6d 65 6f 75 74 4d 69 6c 6c 69 73     timeoutMillis
202e0 65 63 6f 6e 64 73 20 2f 20 31 30 2c 20 64 65 66  econds / 10, def
202f0 61 75 6c 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73  aultMilliseconds
20300 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
20310 20 20 69 66 20 28 73 6c 65 65 70 4d 69 6c 6c 69    if (sleepMilli
20320 73 65 63 6f 6e 64 73 20 3d 3d 20 30 29 0d 0a 20  seconds == 0).. 
20330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
20340 6c 65 65 70 4d 69 6c 6c 69 73 65 63 6f 6e 64 73  leepMilliseconds
20350 20 3d 20 64 65 66 61 75 6c 74 4d 69 6c 6c 69 73   = defaultMillis
20360 65 63 6f 6e 64 73 3b 0d 0a 20 20 20 20 20 20 20  econds;..       
20370 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 44 61   }....        Da
20380 74 65 54 69 6d 65 20 73 74 61 72 74 20 3d 20 44  teTime start = D
20390 61 74 65 54 69 6d 65 2e 55 74 63 4e 6f 77 3b 0d  ateTime.UtcNow;.
203a0 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65  ...        while
203b0 20 28 74 72 75 65 29 0d 0a 20 20 20 20 20 20 20   (true)..       
203c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
203d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
203e0 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74  // NOTE: Attempt
203f0 20 74 6f 20 61 63 71 75 69 72 65 20 74 68 65 20   to acquire the 
20400 6e 65 63 65 73 73 61 72 79 20 6c 6f 63 6b 20 77  necessary lock w
20410 69 74 68 6f 75 74 20 62 6c 6f 63 6b 69 6e 67 2e  ithout blocking.
20420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
20430 20 20 20 20 20 20 20 54 68 69 73 20 6d 65 74 68         This meth
20440 6f 64 20 77 69 6c 6c 20 74 72 65 61 74 20 61 20  od will treat a 
20450 66 61 69 6c 75 72 65 20 74 6f 20 6f 62 74 61 69  failure to obtai
20460 6e 20 74 68 65 20 6c 6f 63 6b 20 74 68 65 0d 0a  n the lock the..
20470 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
20480 20 20 20 20 20 73 61 6d 65 20 61 73 20 74 68 65       same as the
20490 20 65 6e 6c 69 73 74 6d 65 6e 74 20 6e 6f 74 20   enlistment not 
204a0 62 65 69 6e 67 20 72 65 73 65 74 20 79 65 74 2e  being reset yet.
204b0 20 20 42 6f 74 68 20 77 69 6c 6c 0d 0a 20 20 20    Both will..   
204c0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
204d0 20 20 61 64 76 61 6e 63 65 20 74 6f 77 61 72 64    advance toward
204e0 20 74 68 65 20 74 69 6d 65 6f 75 74 2e 0d 0a 20   the timeout... 
204f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
20500 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
20510 6c 6f 63 6b 65 64 20 3d 20 4d 6f 6e 69 74 6f 72  locked = Monitor
20520 2e 54 72 79 45 6e 74 65 72 28 5f 65 6e 6c 69 73  .TryEnter(_enlis
20530 74 6d 65 6e 74 53 79 6e 63 52 6f 6f 74 29 3b 0d  tmentSyncRoot);.
20540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
20550 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
20560 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20570 20 20 20 69 66 20 28 6c 6f 63 6b 65 64 29 0d 0a     if (locked)..
20580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20590 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
205a0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
205b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
205c0 2f 20 4e 4f 54 45 3a 20 49 73 20 74 68 65 72 65  / NOTE: Is there
205d0 20 73 74 69 6c 6c 20 61 6e 20 65 6e 6c 69 73 74   still an enlist
205e0 6d 65 6e 74 3f 20 20 49 66 20 6e 6f 74 2c 20 77  ment?  If not, w
205f0 65 20 61 72 65 0d 0a 20 20 20 20 20 20 20 20 20  e are..         
20600 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
20610 20 20 20 20 64 6f 6e 65 2e 20 20 54 68 65 72 65      done.  There
20620 20 69 73 20 61 20 70 6f 74 65 6e 74 69 61 6c 20   is a potential 
20630 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 69  race condition i
20640 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
20650 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
20660 74 68 65 20 63 61 6c 6c 65 72 20 69 66 20 61 6e  the caller if an
20670 6f 74 68 65 72 20 74 68 72 65 61 64 20 69 73 20  other thread is 
20680 61 62 6c 65 20 74 6f 20 73 65 74 75 70 0d 0a 20  able to setup.. 
20690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206a0 20 20 20 2f 2f 20 20 20 20 20 20 20 61 20 6e 65     //       a ne
206b0 77 20 65 6e 6c 69 73 74 6d 65 6e 74 20 61 74 20  w enlistment at 
206c0 61 6e 79 20 70 6f 69 6e 74 20 70 72 69 6f 72 20  any point prior 
206d0 74 6f 20 6f 75 72 0d 0a 20 20 20 20 20 20 20 20  to our..        
206e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
206f0 20 20 20 20 20 63 61 6c 6c 65 72 20 66 75 6c 6c       caller full
20700 79 20 64 65 61 6c 69 6e 67 20 77 69 74 68 20 74  y dealing with t
20710 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 69  he result of thi
20720 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
20730 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
20740 6d 65 74 68 6f 64 2e 20 20 48 6f 77 65 76 65 72  method.  However
20750 2c 20 74 68 61 74 20 73 68 6f 75 6c 64 20 67 65  , that should ge
20760 6e 65 72 61 6c 6c 79 20 6e 65 76 65 72 0d 0a 20  nerally never.. 
20770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20780 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 70 70     //       happ
20790 65 6e 20 62 65 63 61 75 73 65 20 74 68 69 73 20  en because this 
207a0 63 6c 61 73 73 20 69 73 20 6e 6f 74 20 69 6e 74  class is not int
207b0 65 6e 64 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  ended to..      
207c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
207d0 20 20 20 20 20 20 20 62 65 20 75 73 65 64 20 62         be used b
207e0 79 20 6d 75 6c 74 69 70 6c 65 20 63 6f 6e 63 75  y multiple concu
207f0 72 72 65 6e 74 20 74 68 72 65 61 64 73 2c 20 77  rrent threads, w
20800 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ith..           
20810 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
20820 20 20 74 68 65 20 6e 6f 74 61 62 6c 65 20 65 78    the notable ex
20830 63 65 70 74 69 6f 6e 20 6f 66 20 61 6e 20 61 63  ception of an ac
20840 74 69 76 65 20 65 6e 6c 69 73 74 6d 65 6e 74 0d  tive enlistment.
20850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20860 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65       //       be
20870 69 6e 67 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73  ing asynchronous
20880 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 72 20  ly committed or 
20890 72 6f 6c 6c 65 64 20 62 61 63 6b 0d 0a 20 20 20  rolled back..   
208a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208b0 20 2f 2f 20 20 20 20 20 20 20 62 79 20 74 68 65   //       by the
208c0 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 2e   .NET Framework.
208d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
208e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
208f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
20900 20 28 5f 65 6e 6c 69 73 74 6d 65 6e 74 20 3d 3d   (_enlistment ==
20910 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
20920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20930 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
20940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
20950 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
20960 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
20970 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
20980 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20990 20 20 20 20 69 66 20 28 6c 6f 63 6b 65 64 29 0d      if (locked).
209a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
209b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
209c0 20 20 20 20 20 20 20 20 4d 6f 6e 69 74 6f 72 2e          Monitor.
209d0 45 78 69 74 28 5f 65 6e 6c 69 73 74 6d 65 6e 74  Exit(_enlistment
209e0 53 79 6e 63 52 6f 6f 74 29 3b 0d 0a 20 20 20 20  SyncRoot);..    
209f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a00 6c 6f 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0d  locked = false;.
20a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20a20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
20a30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
20a40 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
20a50 20 2f 2f 20 4e 4f 54 45 3a 20 41 20 74 69 6d 65   // NOTE: A time
20a60 6f 75 74 20 76 61 6c 75 65 20 6f 66 20 7a 65 72  out value of zer
20a70 6f 20 69 73 20 73 70 65 63 69 61 6c 2e 20 20 49  o is special.  I
20a80 74 20 6d 65 61 6e 73 20 6e 65 76 65 72 0d 0a 20  t means never.. 
20a90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
20aa0 20 20 20 20 73 6c 65 65 70 2e 0d 0a 20 20 20 20      sleep...    
20ab0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
20ac0 20 20 20 20 20 20 20 20 69 66 20 28 73 6c 65 65          if (slee
20ad0 70 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 3d 3d  pMilliseconds ==
20ae0 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
20af0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
20b00 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
20b10 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
20b20 20 20 2f 2f 20 4e 4f 54 45 3a 20 48 6f 77 20 6d    // NOTE: How m
20b30 75 63 68 20 74 69 6d 65 20 68 61 73 20 65 6c 61  uch time has ela
20b40 70 73 65 64 20 73 69 6e 63 65 20 77 65 20 66 69  psed since we fi
20b50 72 73 74 20 73 74 61 72 74 69 6e 67 0d 0a 20 20  rst starting..  
20b60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
20b70 20 20 20 77 61 69 74 69 6e 67 3f 0d 0a 20 20 20     waiting?..   
20b80 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
20b90 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
20ba0 65 20 6e 6f 77 20 3d 20 44 61 74 65 54 69 6d 65  e now = DateTime
20bb0 2e 55 74 63 4e 6f 77 3b 0d 0a 20 20 20 20 20 20  .UtcNow;..      
20bc0 20 20 20 20 20 20 54 69 6d 65 53 70 61 6e 20 65        TimeSpan e
20bd0 6c 61 70 73 65 64 20 3d 20 6e 6f 77 2e 53 75 62  lapsed = now.Sub
20be0 74 72 61 63 74 28 73 74 61 72 74 29 3b 0d 0a 0d  tract(start);...
20bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
20c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
20c10 4e 4f 54 45 3a 20 41 72 65 20 77 65 20 64 6f 6e  NOTE: Are we don
20c20 65 20 77 61 69 74 3f 0d 0a 20 20 20 20 20 20 20  e wait?..       
20c30 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
20c40 20 20 20 20 20 64 6f 75 62 6c 65 20 74 6f 74 61       double tota
20c50 6c 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 3d 20  lMilliseconds = 
20c60 65 6c 61 70 73 65 64 2e 54 6f 74 61 6c 4d 69 6c  elapsed.TotalMil
20c70 6c 69 73 65 63 6f 6e 64 73 3b 0d 0a 0d 0a 20 20  liseconds;....  
20c80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74            if ((t
20c90 6f 74 61 6c 4d 69 6c 6c 69 73 65 63 6f 6e 64 73  otalMilliseconds
20ca0 20 3c 20 30 29 20 7c 7c 20 2f 2a 20 54 69 6d 65   < 0) || /* Time
20cb0 20 77 65 6e 74 20 62 61 63 6b 77 61 72 64 3f 20   went backward? 
20cc0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
20cd0 20 20 20 20 28 74 6f 74 61 6c 4d 69 6c 6c 69 73      (totalMillis
20ce0 65 63 6f 6e 64 73 20 3e 3d 20 28 64 6f 75 62 6c  econds >= (doubl
20cf0 65 29 74 69 6d 65 6f 75 74 4d 69 6c 6c 69 73 65  e)timeoutMillise
20d00 63 6f 6e 64 73 29 29 0d 0a 20 20 20 20 20 20 20  conds))..       
20d10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20d20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
20d30 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
20d40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
20d50 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
20d60 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 6c 65      // NOTE: Sle
20d70 65 70 20 66 6f 72 20 61 20 62 69 74 20 61 6e 64  ep for a bit and
20d80 20 74 68 65 6e 20 74 72 79 20 61 67 61 69 6e 2e   then try again.
20d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
20da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 68  ..            Th
20db0 72 65 61 64 2e 53 6c 65 65 70 28 73 6c 65 65 70  read.Sleep(sleep
20dc0 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 29 3b 0d 0a  Milliseconds);..
20dd0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
20de0 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77 20  ..        throw 
20df0 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
20e00 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
20e10 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d  #endif..    }...
20e20 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
20e30 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4c 6f 6f 6b  y>..    /// Look
20e40 73 20 66 6f 72 20 61 20 6b 65 79 20 69 6e 20 74  s for a key in t
20e50 68 65 20 61 72 72 61 79 20 6f 66 20 6b 65 79 2f  he array of key/
20e60 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 70 61  values of the pa
20e70 72 61 6d 65 74 65 72 20 73 74 72 69 6e 67 2e 20  rameter string. 
20e80 20 49 66 20 6e 6f 74 20 66 6f 75 6e 64 2c 20 72   If not found, r
20e90 65 74 75 72 6e 20 74 68 65 20 73 70 65 63 69 66  eturn the specif
20ea0 69 65 64 20 64 65 66 61 75 6c 74 20 76 61 6c 75  ied default valu
20eb0 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
20ec0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
20ed0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 74 65 6d  param name="item
20ee0 73 22 3e 54 68 65 20 6c 69 73 74 20 74 6f 20 6c  s">The list to l
20ef0 6f 6f 6b 20 69 6e 3c 2f 70 61 72 61 6d 3e 0d 0a  ook in</param>..
20f00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20f10 61 6d 65 3d 22 6b 65 79 22 3e 54 68 65 20 6b 65  ame="key">The ke
20f20 79 20 74 6f 20 66 69 6e 64 3c 2f 70 61 72 61 6d  y to find</param
20f30 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
20f40 6d 20 6e 61 6d 65 3d 22 64 65 66 56 61 6c 75 65  m name="defValue
20f50 22 3e 54 68 65 20 64 65 66 61 75 6c 74 20 76 61  ">The default va
20f60 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20 69 66  lue to return if
20f70 20 74 68 65 20 6b 65 79 20 69 73 20 6e 6f 74 20   the key is not 
20f80 66 6f 75 6e 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20  found</param>.. 
20f90 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
20fa0 54 68 65 20 76 61 6c 75 65 20 63 6f 72 72 65 73  The value corres
20fb0 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 73  ponding to the s
20fc0 70 65 63 69 66 69 65 64 20 6b 65 79 2c 20 6f 72  pecified key, or
20fd0 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
20fe0 75 65 20 69 66 20 6e 6f 74 20 66 6f 75 6e 64 2e  ue if not found.
20ff0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
21000 73 74 61 74 69 63 20 69 6e 74 65 72 6e 61 6c 20  static internal 
21010 73 74 72 69 6e 67 20 46 69 6e 64 4b 65 79 28 53  string FindKey(S
21020 6f 72 74 65 64 4c 69 73 74 3c 73 74 72 69 6e 67  ortedList<string
21030 2c 20 73 74 72 69 6e 67 3e 20 69 74 65 6d 73 2c  , string> items,
21040 20 73 74 72 69 6e 67 20 6b 65 79 2c 20 73 74 72   string key, str
21050 69 6e 67 20 64 65 66 56 61 6c 75 65 29 0d 0a 20  ing defValue).. 
21060 20 20 20 7b 0d 0a 20 20 20 20 20 20 73 74 72 69     {..      stri
21070 6e 67 20 72 65 74 3b 0d 0a 0d 0a 20 20 20 20 20  ng ret;....     
21080 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
21090 6c 6c 4f 72 45 6d 70 74 79 28 6b 65 79 29 29 20  llOrEmpty(key)) 
210a0 72 65 74 75 72 6e 20 64 65 66 56 61 6c 75 65 3b  return defValue;
210b0 0d 0a 20 20 20 20 20 20 69 66 20 28 69 74 65 6d  ..      if (item
210c0 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6b 65  s.TryGetValue(ke
210d0 79 2c 20 6f 75 74 20 72 65 74 29 29 20 72 65 74  y, out ret)) ret
210e0 75 72 6e 20 72 65 74 3b 0d 0a 20 20 20 20 20 20  urn ret;..      
210f0 69 66 20 28 69 74 65 6d 73 2e 54 72 79 47 65 74  if (items.TryGet
21100 56 61 6c 75 65 28 6b 65 79 2e 52 65 70 6c 61 63  Value(key.Replac
21110 65 28 22 20 22 2c 20 53 74 72 69 6e 67 2e 45 6d  e(" ", String.Em
21120 70 74 79 29 2c 20 6f 75 74 20 72 65 74 29 29 20  pty), out ret)) 
21130 72 65 74 75 72 6e 20 72 65 74 3b 0d 0a 20 20 20  return ret;..   
21140 20 20 20 69 66 20 28 69 74 65 6d 73 2e 54 72 79     if (items.Try
21150 47 65 74 56 61 6c 75 65 28 6b 65 79 2e 52 65 70  GetValue(key.Rep
21160 6c 61 63 65 28 22 20 22 2c 20 22 5f 22 29 2c 20  lace(" ", "_"), 
21170 6f 75 74 20 72 65 74 29 29 20 72 65 74 75 72 6e  out ret)) return
21180 20 72 65 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 72   ret;....      r
21190 65 74 75 72 6e 20 64 65 66 56 61 6c 75 65 3b 0d  eturn defValue;.
211a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
211b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
211c0 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f   /// Attempts to
211d0 20 63 6f 6e 76 65 72 74 20 74 68 65 20 73 74 72   convert the str
211e0 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 61 6e 20  ing value to an 
211f0 65 6e 75 6d 65 72 61 74 65 64 20 76 61 6c 75 65  enumerated value
21200 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
21210 64 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  d type...    ///
21220 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
21230 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
21240 3d 22 74 79 70 65 22 3e 54 68 65 20 65 6e 75 6d  ="type">The enum
21250 65 72 61 74 65 64 20 74 79 70 65 20 74 6f 20 63  erated type to c
21260 6f 6e 76 65 72 74 20 74 68 65 20 73 74 72 69 6e  onvert the strin
21270 67 20 76 61 6c 75 65 20 74 6f 2e 3c 2f 70 61 72  g value to.</par
21280 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
21290 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
212a0 3e 54 68 65 20 73 74 72 69 6e 67 20 76 61 6c 75  >The string valu
212b0 65 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74 65  e to be converte
212c0 64 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  d.</param>..    
212d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
212e0 22 69 67 6e 6f 72 65 43 61 73 65 22 3e 4e 6f 6e  "ignoreCase">Non
212f0 2d 7a 65 72 6f 20 74 6f 20 6d 61 6b 65 20 74 68  -zero to make th
21300 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 63 61 73  e conversion cas
21310 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 2e 3c 2f  e-insensitive.</
21320 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
21330 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 65 6e 75  <returns>The enu
21340 6d 65 72 61 74 65 64 20 76 61 6c 75 65 20 75 70  merated value up
21350 6f 6e 20 73 75 63 63 65 73 73 20 6f 72 20 6e 75  on success or nu
21360 6c 6c 20 75 70 6f 6e 20 65 72 72 6f 72 2e 3c 2f  ll upon error.</
21370 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
21380 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f 62  ternal static ob
21390 6a 65 63 74 20 54 72 79 50 61 72 73 65 45 6e 75  ject TryParseEnu
213a0 6d 28 0d 0a 20 20 20 20 20 20 20 20 54 79 70 65  m(..        Type
213b0 20 74 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20   type,..        
213c0 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20  string value,.. 
213d0 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 67 6e 6f         bool igno
213e0 72 65 43 61 73 65 0d 0a 20 20 20 20 20 20 20 20  reCase..        
213f0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
21400 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
21410 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61 6c 75  NullOrEmpty(valu
21420 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e))..        {..
21430 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
21440 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
21450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21460 72 65 74 75 72 6e 20 45 6e 75 6d 2e 50 61 72 73  return Enum.Pars
21470 65 28 74 79 70 65 2c 20 76 61 6c 75 65 2c 20 69  e(type, value, i
21480 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20  gnoreCase);..   
21490 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
214a0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
214b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
214c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
214d0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
214e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
214f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
21500 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
21510 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
21520 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
21530 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
21540 63 6f 6e 76 65 72 74 20 61 6e 20 69 6e 70 75 74  convert an input
21550 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 62   string into a b
21560 79 74 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  yte value...    
21570 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
21580 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
21590 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
215a0 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67    /// The string
215b0 20 76 61 6c 75 65 20 74 6f 20 62 65 20 63 6f 6e   value to be con
215c0 76 65 72 74 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  verted...    ///
215d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
215e0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
215f0 73 74 79 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  style">..    ///
21600 20 54 68 65 20 6e 75 6d 62 65 72 20 73 74 79 6c   The number styl
21610 65 73 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68  es to use for th
21620 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 20  e conversion... 
21630 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21640 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
21650 6e 61 6d 65 3d 22 72 65 73 75 6c 74 22 3e 0d 0a  name="result">..
21660 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63      /// Upon suc
21670 65 73 73 2c 20 74 68 69 73 20 77 69 6c 6c 20 63  ess, this will c
21680 6f 6e 74 61 69 6e 20 74 68 65 20 70 61 72 73 65  ontain the parse
21690 64 20 62 79 74 65 20 76 61 6c 75 65 2e 0d 0a 20  d byte value... 
216a0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
216b0 75 72 65 2c 20 74 68 65 20 76 61 6c 75 65 20 6f  ure, the value o
216c0 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  f this parameter
216d0 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0d 0a   is undefined...
216e0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
216f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
21700 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e  ns>..    /// Non
21710 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63 63 65  -zero upon succe
21720 73 73 3b 20 7a 65 72 6f 20 6f 6e 20 66 61 69 6c  ss; zero on fail
21730 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ure...    /// </
21740 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
21750 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
21760 6c 20 54 72 79 50 61 72 73 65 42 79 74 65 28 0d  l TryParseByte(.
21770 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
21780 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  value,..        
21790 4e 75 6d 62 65 72 53 74 79 6c 65 73 20 73 74 79  NumberStyles sty
217a0 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 6f 75 74  le,..        out
217b0 20 62 79 74 65 20 72 65 73 75 6c 74 0d 0a 20 20   byte result..  
217c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
217d0 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
217e0 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
217f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62          return b
21800 79 74 65 2e 54 72 79 50 61 72 73 65 28 76 61 6c  yte.TryParse(val
21810 75 65 2c 20 73 74 79 6c 65 2c 20 6e 75 6c 6c 2c  ue, style, null,
21820 20 6f 75 74 20 72 65 73 75 6c 74 29 3b 0d 0a 23   out result);..#
21830 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74 72  else..        tr
21840 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
21850 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
21860 20 3d 20 62 79 74 65 2e 50 61 72 73 65 28 76 61   = byte.Parse(va
21870 6c 75 65 2c 20 73 74 79 6c 65 29 3b 0d 0a 20 20  lue, style);..  
21880 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
21890 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
218a0 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
218b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
218c0 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
218d0 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
218e0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
218f0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
21900 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  if..    }....   
21910 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
21920 20 20 20 20 2f 2f 2f 20 43 68 61 6e 67 65 20 61      /// Change a
21930 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
21940 70 74 69 6f 6e 20 76 61 6c 75 65 20 66 6f 72 20  ption value for 
21950 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20  the database... 
21960 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
21970 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
21980 6d 20 6e 61 6d 65 3d 22 6f 70 74 69 6f 6e 22 3e  m name="option">
21990 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61  ..    /// The da
219a0 74 61 62 61 73 65 20 63 6f 6e 66 69 67 75 72 61  tabase configura
219b0 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 74 6f 20 63  tion option to c
219c0 68 61 6e 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  hange...    /// 
219d0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
219e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
219f0 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
21a00 54 68 65 20 6e 65 77 20 76 61 6c 75 65 20 66 6f  The new value fo
21a10 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
21a20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
21a30 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
21a40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62  /param>..    pub
21a50 6c 69 63 20 76 6f 69 64 20 53 65 74 43 6f 6e 66  lic void SetConf
21a60 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f 6e 28  igurationOption(
21a70 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
21a80 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75 6d 20  ConfigDbOpsEnum 
21a90 6f 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  option,..       
21aa0 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
21ab0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
21ac0 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69  .        CheckDi
21ad0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
21ae0 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d       if (_sql ==
21af0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
21b00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
21b10 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
21b20 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
21b30 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
21b40 20 20 20 20 20 22 44 61 74 61 62 61 73 65 20 63       "Database c
21b50 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61  onnection not va
21b60 6c 69 64 20 66 6f 72 20 63 68 61 6e 67 69 6e 67  lid for changing
21b70 20 61 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   a configuration
21b80 20 6f 70 74 69 6f 6e 2e 22 29 3b 0d 0a 20 20 20   option.");..   
21b90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
21ba0 20 20 69 66 20 28 28 6f 70 74 69 6f 6e 20 3d 3d    if ((option ==
21bb0 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62 4f   SQLiteConfigDbO
21bc0 70 73 45 6e 75 6d 2e 53 51 4c 49 54 45 5f 44 42  psEnum.SQLITE_DB
21bd0 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f  CONFIG_ENABLE_LO
21be0 41 44 5f 45 58 54 45 4e 53 49 4f 4e 29 20 26 26  AD_EXTENSION) &&
21bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28  ..            ((
21c00 5f 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  _flags & SQLiteC
21c10 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
21c20 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 29 20  oLoadExtension) 
21c30 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
21c40 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 61 64 45  ionFlags.NoLoadE
21c50 78 74 65 6e 73 69 6f 6e 29 29 0d 0a 20 20 20 20  xtension))..    
21c60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
21c70 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c     throw new SQL
21c80 69 74 65 45 78 63 65 70 74 69 6f 6e 28 22 4c 6f  iteException("Lo
21c90 61 64 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73  ading extensions
21ca0 20 69 73 20 64 69 73 61 62 6c 65 64 20 66 6f 72   is disabled for
21cb0 20 74 68 69 73 20 64 61 74 61 62 61 73 65 20 63   this database c
21cc0 6f 6e 6e 65 63 74 69 6f 6e 2e 22 29 3b 0d 0a 20  onnection.");.. 
21cd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21ce0 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
21cf0 6f 64 65 20 72 63 20 3d 20 5f 73 71 6c 2e 53 65  ode rc = _sql.Se
21d00 74 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 4f 70  tConfigurationOp
21d10 74 69 6f 6e 28 6f 70 74 69 6f 6e 2c 20 76 61 6c  tion(option, val
21d20 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
21d30 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65  if (rc != SQLite
21d40 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20  ErrorCode.Ok).. 
21d50 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
21d60 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
21d70 74 69 6f 6e 28 72 63 2c 20 6e 75 6c 6c 29 3b 0d  tion(rc, null);.
21d80 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
21d90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
21da0 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20   /// Enables or 
21db0 64 69 73 61 62 6c 65 64 20 65 78 74 65 6e 73 69  disabled extensi
21dc0 6f 6e 20 6c 6f 61 64 69 6e 67 2e 0d 0a 20 20 20  on loading...   
21dd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21de0 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
21df0 6e 61 6d 65 3d 22 65 6e 61 62 6c 65 22 3e 0d 0a  name="enable">..
21e00 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 74 6f 20      /// True to 
21e10 65 6e 61 62 6c 65 20 6c 6f 61 64 69 6e 67 20 6f  enable loading o
21e20 66 20 65 78 74 65 6e 73 69 6f 6e 73 2c 20 66 61  f extensions, fa
21e30 6c 73 65 20 74 6f 20 64 69 73 61 62 6c 65 2e 0d  lse to disable..
21e40 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
21e50 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f  >..    public vo
21e60 69 64 20 45 6e 61 62 6c 65 45 78 74 65 6e 73 69  id EnableExtensi
21e70 6f 6e 73 28 0d 0a 20 20 20 20 20 20 20 20 62 6f  ons(..        bo
21e80 6f 6c 20 65 6e 61 62 6c 65 0d 0a 20 20 20 20 20  ol enable..     
21e90 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
21ea0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
21eb0 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
21ec0 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c   if (_sql == nul
21ed0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
21ee0 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
21ef0 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
21f00 69 6f 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  ion(HelperMethod
21f10 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d  s.StringFormat(.
21f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21f30 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
21f40 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
21f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
21f60 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
21f70 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72  on not valid for
21f80 20 7b 30 7d 20 65 78 74 65 6e 73 69 6f 6e 73 2e   {0} extensions.
21f90 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
21fa0 20 20 20 20 65 6e 61 62 6c 65 20 3f 20 22 65 6e      enable ? "en
21fb0 61 62 6c 69 6e 67 22 20 3a 20 22 64 69 73 61 62  abling" : "disab
21fc0 6c 69 6e 67 22 29 29 3b 0d 0a 0d 0a 20 20 20 20  ling"));....    
21fd0 20 20 20 20 69 66 20 28 28 5f 66 6c 61 67 73 20      if ((_flags 
21fe0 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
21ff0 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 61 64 45 78  onFlags.NoLoadEx
22000 74 65 6e 73 69 6f 6e 29 20 3d 3d 20 53 51 4c 69  tension) == SQLi
22010 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
22020 73 2e 4e 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f  s.NoLoadExtensio
22030 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n)..            
22040 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
22050 45 78 63 65 70 74 69 6f 6e 28 22 4c 6f 61 64 69  Exception("Loadi
22060 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73 20 69 73  ng extensions is
22070 20 64 69 73 61 62 6c 65 64 20 66 6f 72 20 74 68   disabled for th
22080 69 73 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  is database conn
22090 65 63 74 69 6f 6e 2e 22 29 3b 0d 0a 0d 0a 20 20  ection.");....  
220a0 20 20 20 20 20 20 5f 73 71 6c 2e 53 65 74 4c 6f        _sql.SetLo
220b0 61 64 45 78 74 65 6e 73 69 6f 6e 28 65 6e 61 62  adExtension(enab
220c0 6c 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  le);..    }.... 
220d0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
220e0 0d 0a 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 73 20  ..    /// Loads 
220f0 61 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69  a SQLite extensi
22100 6f 6e 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20  on library from 
22110 74 68 65 20 6e 61 6d 65 64 20 64 79 6e 61 6d 69  the named dynami
22120 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20 66  c link library f
22130 69 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ile...    /// </
22140 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
22150 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
22160 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f  ileName">..    /
22170 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
22180 68 65 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20  he dynamic link 
22190 6c 69 62 72 61 72 79 20 66 69 6c 65 20 63 6f 6e  library file con
221a0 74 61 69 6e 69 6e 67 20 74 68 65 20 65 78 74 65  taining the exte
221b0 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nsion...    /// 
221c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75  </param>..    pu
221d0 62 6c 69 63 20 76 6f 69 64 20 4c 6f 61 64 45 78  blic void LoadEx
221e0 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
221f0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
22200 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  e..        )..  
22210 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
22220 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
22230 0a 20 20 20 20 20 20 20 20 4c 6f 61 64 45 78 74  .        LoadExt
22240 65 6e 73 69 6f 6e 28 66 69 6c 65 4e 61 6d 65 2c  ension(fileName,
22250 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a   null);..    }..
22260 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
22270 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4c 6f 61  ry>..    /// Loa
22280 64 73 20 61 20 53 51 4c 69 74 65 20 65 78 74 65  ds a SQLite exte
22290 6e 73 69 6f 6e 20 6c 69 62 72 61 72 79 20 66 72  nsion library fr
222a0 6f 6d 20 74 68 65 20 6e 61 6d 65 64 20 64 79 6e  om the named dyn
222b0 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
222c0 79 20 66 69 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  y file...    ///
222d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
222e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
222f0 3d 22 66 69 6c 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="fileName">..  
22300 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
22310 66 20 74 68 65 20 64 79 6e 61 6d 69 63 20 6c 69  f the dynamic li
22320 6e 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20  nk library file 
22330 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 65  containing the e
22340 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  xtension...    /
22350 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22360 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22370 3d 22 70 72 6f 63 4e 61 6d 65 22 3e 0d 0a 20 20  ="procName">..  
22380 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
22390 66 20 74 68 65 20 65 78 70 6f 72 74 65 64 20 66  f the exported f
223a0 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 74 6f 20  unction used to 
223b0 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 65  initialize the e
223c0 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20 20 2f  xtension...    /
223d0 2f 2f 20 49 66 20 6e 75 6c 6c 2c 20 74 68 65 20  // If null, the 
223e0 64 65 66 61 75 6c 74 20 22 73 71 6c 69 74 65 33  default "sqlite3
223f0 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 22  _extension_init"
22400 20 77 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a   will be used...
22410 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22420 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
22430 64 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28  d LoadExtension(
22440 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
22450 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20   fileName,..    
22460 20 20 20 20 73 74 72 69 6e 67 20 70 72 6f 63 4e      string procN
22470 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ame..        )..
22480 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
22490 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
224a0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f  ...        if (_
224b0 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  sql == null)..  
224c0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
224d0 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
224e0 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a  tionException(..
224f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22500 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  "Database connec
22510 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66  tion not valid f
22520 6f 72 20 6c 6f 61 64 69 6e 67 20 65 78 74 65 6e  or loading exten
22530 73 69 6f 6e 73 2e 22 29 3b 0d 0a 0d 0a 20 20 20  sions.");....   
22540 20 20 20 20 20 69 66 20 28 28 5f 66 6c 61 67 73       if ((_flags
22550 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
22560 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 61 64 45  ionFlags.NoLoadE
22570 78 74 65 6e 73 69 6f 6e 29 20 3d 3d 20 53 51 4c  xtension) == SQL
22580 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
22590 67 73 2e 4e 6f 4c 6f 61 64 45 78 74 65 6e 73 69  gs.NoLoadExtensi
225a0 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on)..           
225b0 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
225c0 65 45 78 63 65 70 74 69 6f 6e 28 22 4c 6f 61 64  eException("Load
225d0 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73 20 69  ing extensions i
225e0 73 20 64 69 73 61 62 6c 65 64 20 66 6f 72 20 74  s disabled for t
225f0 68 69 73 20 64 61 74 61 62 61 73 65 20 63 6f 6e  his database con
22600 6e 65 63 74 69 6f 6e 2e 22 29 3b 0d 0a 0d 0a 20  nection.");.... 
22610 20 20 20 20 20 20 20 5f 73 71 6c 2e 4c 6f 61 64         _sql.Load
22620 45 78 74 65 6e 73 69 6f 6e 28 66 69 6c 65 4e 61  Extension(fileNa
22630 6d 65 2c 20 70 72 6f 63 4e 61 6d 65 29 3b 0d 0a  me, procName);..
22640 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 49 4e 54      }....#if INT
22650 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
22660 4c 45 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  LE..    /// <sum
22670 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
22680 72 65 61 74 65 73 20 61 20 64 69 73 70 6f 73 61  reates a disposa
22690 62 6c 65 20 6d 6f 64 75 6c 65 20 63 6f 6e 74 61  ble module conta
226a0 69 6e 69 6e 67 20 74 68 65 20 69 6d 70 6c 65 6d  ining the implem
226b0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 76 69  entation of a vi
226c0 72 74 75 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 74  rtual..    /// t
226d0 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
226e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
226f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
22700 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f  module">..    //
22710 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6f 62 6a  / The module obj
22720 65 63 74 20 74 6f 20 62 65 20 75 73 65 64 20 77  ect to be used w
22730 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65  hen creating the
22740 20 64 69 73 70 6f 73 61 62 6c 65 20 6d 6f 64 75   disposable modu
22750 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  le...    /// </p
22760 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69  aram>..    publi
22770 63 20 76 6f 69 64 20 43 72 65 61 74 65 4d 6f 64  c void CreateMod
22780 75 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ule(..        SQ
22790 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c  LiteModule modul
227a0 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  e..        )..  
227b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
227c0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
227d0 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 73 71  .        if (_sq
227e0 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  l == null)..    
227f0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
22800 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69  w InvalidOperati
22810 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  onException(..  
22820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
22830 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
22840 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72  on not valid for
22850 20 63 72 65 61 74 69 6e 67 20 6d 6f 64 75 6c 65   creating module
22860 73 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s.");....       
22870 20 69 66 20 28 28 5f 66 6c 61 67 73 20 26 20 53   if ((_flags & S
22880 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
22890 6c 61 67 73 2e 4e 6f 43 72 65 61 74 65 4d 6f 64  lags.NoCreateMod
228a0 75 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  ule) == SQLiteCo
228b0 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
228c0 43 72 65 61 74 65 4d 6f 64 75 6c 65 29 0d 0a 20  CreateModule).. 
228d0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
228e0 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70   new SQLiteExcep
228f0 74 69 6f 6e 28 22 43 72 65 61 74 69 6e 67 20 6d  tion("Creating m
22900 6f 64 75 6c 65 73 20 69 73 20 64 69 73 61 62 6c  odules is disabl
22910 65 64 20 66 6f 72 20 74 68 69 73 20 64 61 74 61  ed for this data
22920 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
22930 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5f  ");....        _
22940 73 71 6c 2e 43 72 65 61 74 65 4d 6f 64 75 6c 65  sql.CreateModule
22950 28 6d 6f 64 75 6c 65 2c 20 5f 66 6c 61 67 73 29  (module, _flags)
22960 3b 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  ;..    }..#endif
22970 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
22980 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50  mary>..    /// P
22990 61 72 73 65 73 20 61 20 73 74 72 69 6e 67 20 63  arses a string c
229a0 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 65 71 75  ontaining a sequ
229b0 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20  ence of zero or 
229c0 6d 6f 72 65 20 68 65 78 61 64 65 63 69 6d 61 6c  more hexadecimal
229d0 0d 0a 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64 65  ..    /// encode
229e0 64 20 62 79 74 65 20 76 61 6c 75 65 73 20 61 6e  d byte values an
229f0 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65  d returns the re
22a00 73 75 6c 74 69 6e 67 20 62 79 74 65 20 61 72 72  sulting byte arr
22a10 61 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 2f 2f  ay.  The..    //
22a20 2f 20 22 30 78 22 20 70 72 65 66 69 78 20 69 73  / "0x" prefix is
22a30 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e 20   not allowed on 
22a40 74 68 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67  the input string
22a50 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
22a60 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
22a70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74  param name="text
22a80 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
22a90 69 6e 70 75 74 20 73 74 72 69 6e 67 20 63 6f 6e  input string con
22aa0 74 61 69 6e 69 6e 67 20 7a 65 72 6f 20 6f 72 20  taining zero or 
22ab0 6d 6f 72 65 20 68 65 78 61 64 65 63 69 6d 61 6c  more hexadecimal
22ac0 20 65 6e 63 6f 64 65 64 20 62 79 74 65 0d 0a 20   encoded byte.. 
22ad0 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d 0a     /// values...
22ae0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
22af0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
22b00 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 62  ns>..    /// A b
22b10 79 74 65 20 61 72 72 61 79 20 63 6f 6e 74 61 69  yte array contai
22b20 6e 69 6e 67 20 74 68 65 20 70 61 72 73 65 64 20  ning the parsed 
22b30 62 79 74 65 20 76 61 6c 75 65 73 20 6f 72 20 6e  byte values or n
22b40 75 6c 6c 20 69 66 20 61 6e 20 65 72 72 6f 72 0d  ull if an error.
22b50 0a 20 20 20 20 2f 2f 2f 20 77 61 73 20 65 6e 63  .    /// was enc
22b60 6f 75 6e 74 65 72 65 64 2e 0d 0a 20 20 20 20 2f  ountered...    /
22b70 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
22b80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
22b90 69 63 20 62 79 74 65 5b 5d 20 46 72 6f 6d 48 65  ic byte[] FromHe
22ba0 78 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  xString(..      
22bb0 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20    string text.. 
22bc0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
22bd0 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
22be0 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  error = null;...
22bf0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
22c00 46 72 6f 6d 48 65 78 53 74 72 69 6e 67 28 74 65  FromHexString(te
22c10 78 74 2c 20 72 65 66 20 65 72 72 6f 72 29 3b 0d  xt, ref error);.
22c20 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
22c30 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
22c40 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64   /// Creates and
22c50 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e   returns a strin
22c60 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  g containing the
22c70 20 68 65 78 61 64 65 63 69 6d 61 6c 20 65 6e 63   hexadecimal enc
22c80 6f 64 65 64 20 62 79 74 65 0d 0a 20 20 20 20 2f  oded byte..    /
22c90 2f 2f 20 76 61 6c 75 65 73 20 66 72 6f 6d 20 74  // values from t
22ca0 68 65 20 69 6e 70 75 74 20 61 72 72 61 79 2e 0d  he input array..
22cb0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
22cc0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
22cd0 72 61 6d 20 6e 61 6d 65 3d 22 61 72 72 61 79 22  ram name="array"
22ce0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 69  >..    /// The i
22cf0 6e 70 75 74 20 61 72 72 61 79 20 6f 66 20 62 79  nput array of by
22d00 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tes...    /// </
22d10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
22d20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
22d30 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67  // The resulting
22d40 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c 20   string or null 
22d50 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20  upon failure... 
22d60 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
22d70 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
22d80 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f  static string To
22d90 48 65 78 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  HexString(..    
22da0 20 20 20 20 62 79 74 65 5b 5d 20 61 72 72 61 79      byte[] array
22db0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
22dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
22dd0 61 72 72 61 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  array == null)..
22de0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
22df0 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
22e00 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
22e10 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  r result = new S
22e20 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
22e30 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6c  ...        int l
22e40 65 6e 67 74 68 20 3d 20 61 72 72 61 79 2e 4c 65  ength = array.Le
22e50 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ngth;....       
22e60 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20   for (int index 
22e70 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 6c 65 6e  = 0; index < len
22e80 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 23  gth; index++)..#
22e90 69 66 20 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  if NET_COMPACT_2
22ea0 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  0..            r
22eb0 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 48 65 6c  esult.Append(Hel
22ec0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
22ed0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
22ee0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
22ef0 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
22f00 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
22f10 20 20 20 20 20 20 20 20 20 22 7b 30 3a 78 32 7d           "{0:x2}
22f20 22 2c 20 61 72 72 61 79 5b 69 6e 64 65 78 5d 29  ", array[index])
22f30 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
22f40 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41 70         result.Ap
22f50 70 65 6e 64 46 6f 72 6d 61 74 28 22 7b 30 3a 78  pendFormat("{0:x
22f60 32 7d 22 2c 20 61 72 72 61 79 5b 69 6e 64 65 78  2}", array[index
22f70 5d 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ]);..#endif.... 
22f80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
22f90 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29 3b  sult.ToString();
22fa0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
22fb0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22fc0 20 20 2f 2f 2f 20 50 61 72 73 65 73 20 61 20 73    /// Parses a s
22fd0 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
22fe0 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 7a   a sequence of z
22ff0 65 72 6f 20 6f 72 20 6d 6f 72 65 20 68 65 78 61  ero or more hexa
23000 64 65 63 69 6d 61 6c 0d 0a 20 20 20 20 2f 2f 2f  decimal..    ///
23010 20 65 6e 63 6f 64 65 64 20 62 79 74 65 20 76 61   encoded byte va
23020 6c 75 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  lues and returns
23030 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 62   the resulting b
23040 79 74 65 20 61 72 72 61 79 2e 20 20 54 68 65 0d  yte array.  The.
23050 0a 20 20 20 20 2f 2f 2f 20 22 30 78 22 20 70 72  .    /// "0x" pr
23060 65 66 69 78 20 69 73 20 6e 6f 74 20 61 6c 6c 6f  efix is not allo
23070 77 65 64 20 6f 6e 20 74 68 65 20 69 6e 70 75 74  wed on the input
23080 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
23090 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
230a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
230b0 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
230c0 2f 2f 20 54 68 65 20 69 6e 70 75 74 20 73 74 72  // The input str
230d0 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 7a  ing containing z
230e0 65 72 6f 20 6f 72 20 6d 6f 72 65 20 68 65 78 61  ero or more hexa
230f0 64 65 63 69 6d 61 6c 20 65 6e 63 6f 64 65 64 20  decimal encoded 
23100 62 79 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 76 61  byte..    /// va
23110 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  lues...    /// <
23120 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
23130 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
23140 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  ror">..    /// U
23150 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69  pon failure, thi
23160 73 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20 61  s will contain a
23170 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 65 72  n appropriate er
23180 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
23190 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
231a0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
231b0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 62 79 74  >..    /// A byt
231c0 65 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69  e array containi
231d0 6e 67 20 74 68 65 20 70 61 72 73 65 64 20 62 79  ng the parsed by
231e0 74 65 20 76 61 6c 75 65 73 20 6f 72 20 6e 75 6c  te values or nul
231f0 6c 20 69 66 20 61 6e 20 65 72 72 6f 72 0d 0a 20  l if an error.. 
23200 20 20 20 2f 2f 2f 20 77 61 73 20 65 6e 63 6f 75     /// was encou
23210 6e 74 65 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  ntered...    ///
23220 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
23230 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
23240 62 79 74 65 5b 5d 20 46 72 6f 6d 48 65 78 53 74  byte[] FromHexSt
23250 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73  ring(..        s
23260 74 72 69 6e 67 20 74 65 78 74 2c 0d 0a 20 20 20  tring text,..   
23270 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
23280 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 29  error..        )
23290 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
232a0 20 69 66 20 28 74 65 78 74 20 3d 3d 20 6e 75 6c   if (text == nul
232b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  l)..        {.. 
232c0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
232d0 20 3d 20 22 73 74 72 69 6e 67 20 69 73 20 6e 75   = "string is nu
232e0 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll";..          
232f0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
23300 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23310 20 20 20 20 20 69 66 20 28 74 65 78 74 2e 4c 65       if (text.Le
23320 6e 67 74 68 20 25 20 32 20 21 3d 20 30 29 0d 0a  ngth % 2 != 0)..
23330 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23340 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22         error = "
23350 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20  string contains 
23360 61 6e 20 6f 64 64 20 6e 75 6d 62 65 72 20 6f 66  an odd number of
23370 20 63 68 61 72 61 63 74 65 72 73 22 3b 0d 0a 20   characters";.. 
23380 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23390 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
233a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62 79   }....        by
233b0 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65  te[] result = ne
233c0 77 20 62 79 74 65 5b 74 65 78 74 2e 4c 65 6e 67  w byte[text.Leng
233d0 74 68 20 2f 20 32 5d 3b 0d 0a 0d 0a 20 20 20 20  th / 2];....    
233e0 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
233f0 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20  ex = 0; index < 
23400 74 65 78 74 2e 4c 65 6e 67 74 68 3b 20 69 6e 64  text.Length; ind
23410 65 78 20 2b 3d 20 32 29 0d 0a 20 20 20 20 20 20  ex += 2)..      
23420 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23430 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20   string value = 
23440 74 65 78 74 2e 53 75 62 73 74 72 69 6e 67 28 69  text.Substring(i
23450 6e 64 65 78 2c 20 32 29 3b 0d 0a 0d 0a 20 20 20  ndex, 2);....   
23460 20 20 20 20 20 20 20 20 20 69 66 20 28 21 54 72           if (!Tr
23470 79 50 61 72 73 65 42 79 74 65 28 76 61 6c 75 65  yParseByte(value
23480 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23490 20 20 20 20 20 20 20 4e 75 6d 62 65 72 53 74 79         NumberSty
234a0 6c 65 73 2e 48 65 78 4e 75 6d 62 65 72 2c 20 6f  les.HexNumber, o
234b0 75 74 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 20  ut result[index 
234c0 2f 20 32 5d 29 29 0d 0a 20 20 20 20 20 20 20 20  / 2]))..        
234d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
234e0 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 48         error = H
234f0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
23500 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
23510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23520 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
23530 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
23540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23550 20 22 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e   "string contain
23560 73 20 5c 22 7b 30 7d 5c 22 2c 20 77 68 69 63 68  s \"{0}\", which
23570 20 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65   cannot be conve
23580 72 74 65 64 20 74 6f 20 61 20 62 79 74 65 20 76  rted to a byte v
23590 61 6c 75 65 22 2c 0d 0a 20 20 20 20 20 20 20 20  alue",..        
235a0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
235b0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
235c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
235d0 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
235e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
235f0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
23600 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 7d 0d 0a  result;..    }..
23610 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
23620 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
23630 73 20 6d 65 74 68 6f 64 20 66 69 67 75 72 65 73  s method figures
23640 20 6f 75 74 20 77 68 61 74 20 74 68 65 20 64 65   out what the de
23650 66 61 75 6c 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  fault connection
23660 20 70 6f 6f 6c 20 73 65 74 74 69 6e 67 20 73 68   pool setting sh
23670 6f 75 6c 64 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  ould..    /// be
23680 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63 6f   based on the co
23690 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73 2e 20  nnection flags. 
236a0 20 57 68 65 6e 20 70 72 65 73 65 6e 74 2c 20 74   When present, t
236b0 68 65 20 22 50 6f 6f 6c 69 6e 67 22 20 63 6f 6e  he "Pooling" con
236c0 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  nection..    ///
236d0 20 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79   string property
236e0 20 76 61 6c 75 65 20 61 6c 77 61 79 73 20 6f 76   value always ov
236f0 65 72 72 69 64 65 73 20 74 68 65 20 76 61 6c 75  errides the valu
23700 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
23710 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  is method...    
23720 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
23730 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
23740 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
23750 65 72 6f 20 69 66 20 74 68 65 20 63 6f 6e 6e 65  ero if the conne
23760 63 74 69 6f 6e 20 70 6f 6f 6c 20 73 68 6f 75 6c  ction pool shoul
23770 64 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79 20  d be enabled by 
23780 64 65 66 61 75 6c 74 3b 20 6f 74 68 65 72 77 69  default; otherwi
23790 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72  se,..    /// zer
237a0 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  o...    /// </re
237b0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76  turns>..    priv
237c0 61 74 65 20 62 6f 6f 6c 20 47 65 74 44 65 66 61  ate bool GetDefa
237d0 75 6c 74 50 6f 6f 6c 69 6e 67 28 29 0d 0a 20 20  ultPooling()..  
237e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f    {..        boo
237f0 6c 20 72 65 73 75 6c 74 20 3d 20 44 65 66 61 75  l result = Defau
23800 6c 74 50 6f 6f 6c 69 6e 67 3b 0d 0a 0d 0a 20 20  ltPooling;....  
23810 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
23820 29 20 2f 2a 20 4e 4f 54 45 3a 20 54 72 75 65 20  ) /* NOTE: True 
23830 62 72 61 6e 63 68 20 6e 6f 74 20 72 65 61 63 68  branch not reach
23840 65 64 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  ed in the defaul
23850 74 20 62 75 69 6c 64 2e 20 2a 2f 0d 0a 20 20 20  t build. */..   
23860 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23870 20 20 20 20 69 66 20 28 28 5f 66 6c 61 67 73 20      if ((_flags 
23880 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
23890 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 6e 65 63  onFlags.NoConnec
238a0 74 69 6f 6e 50 6f 6f 6c 29 20 3d 3d 20 53 51 4c  tionPool) == SQL
238b0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
238c0 67 73 2e 4e 6f 43 6f 6e 6e 65 63 74 69 6f 6e 50  gs.NoConnectionP
238d0 6f 6f 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ool)..          
238e0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 66        result = f
238f0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
23900 20 20 20 20 20 69 66 20 28 28 5f 66 6c 61 67 73       if ((_flags
23910 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
23920 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e  ionFlags.UseConn
23930 65 63 74 69 6f 6e 50 6f 6f 6c 29 20 3d 3d 20 53  ectionPool) == S
23940 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
23950 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69  lags.UseConnecti
23960 6f 6e 50 6f 6f 6c 29 0d 0a 20 20 20 20 20 20 20  onPool)..       
23970 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
23980 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
23990 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65   }..        else
239a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
239b0 20 20 20 20 20 20 20 20 20 69 66 20 28 28 5f 66           if ((_f
239c0 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
239d0 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65  nectionFlags.Use
239e0 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 29 20  ConnectionPool) 
239f0 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
23a00 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e  ionFlags.UseConn
23a10 65 63 74 69 6f 6e 50 6f 6f 6c 29 0d 0a 20 20 20  ectionPool)..   
23a20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
23a30 75 6c 74 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ult = true;.... 
23a40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
23a50 5f 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  _flags & SQLiteC
23a60 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
23a70 6f 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 29  oConnectionPool)
23a80 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
23a90 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 6e  tionFlags.NoConn
23aa0 65 63 74 69 6f 6e 50 6f 6f 6c 29 0d 0a 20 20 20  ectionPool)..   
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
23ac0 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  ult = false;..  
23ad0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23ae0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
23af0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
23b00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
23b10 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
23b20 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  s the transactio
23b30 6e 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65  n isolation leve
23b40 6c 20 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65  l that should be
23b50 20 75 73 65 64 20 62 79 0d 0a 20 20 20 20 2f 2f   used by..    //
23b60 2f 20 74 68 65 20 63 61 6c 6c 65 72 2c 20 70 72  / the caller, pr
23b70 69 6d 61 72 69 6c 79 20 62 61 73 65 64 20 75 70  imarily based up
23b80 6f 6e 20 74 68 65 20 6f 6e 65 20 73 70 65 63 69  on the one speci
23b90 66 69 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c  fied by the call
23ba0 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  er...    /// If 
23bb0 6d 61 70 70 69 6e 67 20 6f 66 20 74 72 61 6e 73  mapping of trans
23bc0 61 63 74 69 6f 6e 20 69 73 6f 6c 61 74 69 6f 6e  action isolation
23bd0 20 6c 65 76 65 6c 73 20 69 73 20 65 6e 61 62 6c   levels is enabl
23be0 65 64 2c 20 74 68 65 20 72 65 74 75 72 6e 65 64  ed, the returned
23bf0 0d 0a 20 20 20 20 2f 2f 2f 20 74 72 61 6e 73 61  ..    /// transa
23c00 63 74 69 6f 6e 20 69 73 6f 6c 61 74 69 6f 6e 20  ction isolation 
23c10 6c 65 76 65 6c 20 6d 61 79 20 62 65 20 73 69 67  level may be sig
23c20 6e 69 66 69 63 61 6e 74 6c 79 20 64 69 66 66 65  nificantly diffe
23c30 72 65 6e 74 20 74 68 61 6e 20 74 68 65 0d 0a 20  rent than the.. 
23c40 20 20 20 2f 2f 2f 20 6f 72 69 67 69 6e 61 6c 6c     /// originall
23c50 79 20 73 70 65 63 69 66 69 65 64 20 6f 6e 65 2e  y specified one.
23c60 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
23c70 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
23c80 61 72 61 6d 20 6e 61 6d 65 3d 22 69 73 6f 6c 61  aram name="isola
23c90 74 69 6f 6e 4c 65 76 65 6c 22 3e 0d 0a 20 20 20  tionLevel">..   
23ca0 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61   /// The origina
23cb0 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 74 72  lly specified tr
23cc0 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c 61 74  ansaction isolat
23cd0 69 6f 6e 20 6c 65 76 65 6c 2e 0d 0a 20 20 20 20  ion level...    
23ce0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
23cf0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
23d00 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 72 61  .    /// The tra
23d10 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c 61 74 69  nsaction isolati
23d20 6f 6e 20 6c 65 76 65 6c 20 74 68 61 74 20 73 68  on level that sh
23d30 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0d 0a 20  ould be used... 
23d40 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
23d50 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 49  >..    private I
23d60 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 47 65  solationLevel Ge
23d70 74 45 66 66 65 63 74 69 76 65 49 73 6f 6c 61 74  tEffectiveIsolat
23d80 69 6f 6e 4c 65 76 65 6c 28 0d 0a 20 20 20 20 20  ionLevel(..     
23d90 20 20 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65     IsolationLeve
23da0 6c 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  l isolationLevel
23db0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
23dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
23dd0 28 5f 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  (_flags & SQLite
23de0 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
23df0 4d 61 70 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65  MapIsolationLeve
23e00 6c 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls)..           
23e10 20 20 20 20 20 21 3d 20 53 51 4c 69 74 65 43 6f       != SQLiteCo
23e20 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4d 61  nnectionFlags.Ma
23e30 70 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 73  pIsolationLevels
23e40 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
23e50 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
23e60 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 3b   isolationLevel;
23e70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
23e80 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 69         switch (i
23e90 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 0d 0a  solationLevel)..
23ea0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23eb0 20 20 20 20 20 20 20 63 61 73 65 20 49 73 6f 6c         case Isol
23ec0 61 74 69 6f 6e 4c 65 76 65 6c 2e 55 6e 73 70 65  ationLevel.Unspe
23ed0 63 69 66 69 65 64 3a 0d 0a 20 20 20 20 20 20 20  cified:..       
23ee0 20 20 20 20 20 63 61 73 65 20 49 73 6f 6c 61 74       case Isolat
23ef0 69 6f 6e 4c 65 76 65 6c 2e 43 68 61 6f 73 3a 0d  ionLevel.Chaos:.
23f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
23f10 65 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  e IsolationLevel
23f20 2e 52 65 61 64 55 6e 63 6f 6d 6d 69 74 74 65 64  .ReadUncommitted
23f30 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  :..            c
23f40 61 73 65 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  ase IsolationLev
23f50 65 6c 2e 52 65 61 64 43 6f 6d 6d 69 74 74 65 64  el.ReadCommitted
23f60 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
23f70 20 20 20 72 65 74 75 72 6e 20 44 65 66 65 72 72     return Deferr
23f80 65 64 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  edIsolationLevel
23f90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
23fa0 61 73 65 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  ase IsolationLev
23fb0 65 6c 2e 52 65 70 65 61 74 61 62 6c 65 52 65 61  el.RepeatableRea
23fc0 64 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d:..            
23fd0 63 61 73 65 20 49 73 6f 6c 61 74 69 6f 6e 4c 65  case IsolationLe
23fe0 76 65 6c 2e 53 65 72 69 61 6c 69 7a 61 62 6c 65  vel.Serializable
23ff0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  :..            c
24000 61 73 65 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  ase IsolationLev
24010 65 6c 2e 53 6e 61 70 73 68 6f 74 3a 0d 0a 20 20  el.Snapshot:..  
24020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24030 74 75 72 6e 20 49 6d 6d 65 64 69 61 74 65 49 73  turn ImmediateIs
24040 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 3b 0d 0a 20  olationLevel;.. 
24050 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
24060 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lt:..           
24070 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 46       return GetF
24080 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 49 73  allbackDefaultIs
24090 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 29 3b 0d  olationLevel();.
240a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
240b0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
240c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
240d0 4f 70 65 6e 73 20 74 68 65 20 63 6f 6e 6e 65 63  Opens the connec
240e0 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 70  tion using the p
240f0 61 72 61 6d 65 74 65 72 73 20 66 6f 75 6e 64 20  arameters found 
24100 69 6e 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  in the <see cref
24110 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  ="ConnectionStri
24120 6e 67 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f  ng" />...    ///
24130 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
24140 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
24150 20 76 6f 69 64 20 4f 70 65 6e 28 29 0d 0a 20 20   void Open()..  
24160 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b    {..      Check
24170 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
24180 20 20 20 20 20 5f 6c 61 73 74 43 6f 6e 6e 65 63       _lastConnec
24190 74 69 6f 6e 49 6e 4f 70 65 6e 20 3d 20 74 68 69  tionInOpen = thi
241a0 73 3b 20 2f 2a 20 54 48 52 45 41 44 2d 53 41 46  s; /* THREAD-SAF
241b0 45 3a 20 70 65 72 2d 74 68 72 65 61 64 20 64 61  E: per-thread da
241c0 74 75 6d 2e 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20  tum. */....     
241d0 20 4f 6e 43 68 61 6e 67 65 64 28 74 68 69 73 2c   OnChanged(this,
241e0 20 6e 65 77 20 43 6f 6e 6e 65 63 74 69 6f 6e 45   new ConnectionE
241f0 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20  ventArgs(..     
24200 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
24210 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 2e 4f  ctionEventType.O
24220 70 65 6e 69 6e 67 2c 20 6e 75 6c 6c 2c 20 6e 75  pening, null, nu
24230 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20  ll, null, null, 
24240 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20  null,..         
24250 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 29 3b 0d 0a   null, null));..
24260 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 63 6f 6e  ..      if (_con
24270 6e 65 63 74 69 6f 6e 53 74 61 74 65 20 21 3d 20  nectionState != 
24280 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e  ConnectionState.
24290 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  Closed)..       
242a0 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
242b0 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
242c0 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  tion();....     
242d0 20 43 6c 6f 73 65 28 29 3b 0d 0a 0d 0a 20 20 20   Close();....   
242e0 20 20 20 53 6f 72 74 65 64 4c 69 73 74 3c 73 74     SortedList<st
242f0 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 6f 70  ring, string> op
24300 74 73 20 3d 20 50 61 72 73 65 43 6f 6e 6e 65 63  ts = ParseConnec
24310 74 69 6f 6e 53 74 72 69 6e 67 28 0d 0a 20 20 20  tionString(..   
24320 20 20 20 20 20 20 20 74 68 69 73 2c 20 5f 63 6f         this, _co
24330 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c 20  nnectionString, 
24340 5f 70 61 72 73 65 56 69 61 46 72 61 6d 65 77 6f  _parseViaFramewo
24350 72 6b 2c 20 66 61 6c 73 65 29 3b 0d 0a 0d 0a 20  rk, false);.... 
24360 20 20 20 20 20 4f 6e 43 68 61 6e 67 65 64 28 74       OnChanged(t
24370 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e 65 63 74  his, new Connect
24380 69 6f 6e 45 76 65 6e 74 41 72 67 73 28 0d 0a 20  ionEventArgs(.. 
24390 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
243a0 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79  onnectionEventTy
243b0 70 65 2e 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  pe.ConnectionStr
243c0 69 6e 67 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c  ing, null, null,
243d0 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20 20   null, null,..  
243e0 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20 5f 63          null, _c
243f0 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c  onnectionString,
24400 20 6e 65 77 20 6f 62 6a 65 63 74 5b 5d 20 7b 20   new object[] { 
24410 6f 70 74 73 20 7d 29 29 3b 0d 0a 0d 0a 20 20 20  opts }));....   
24420 20 20 20 6f 62 6a 65 63 74 20 65 6e 75 6d 56 61     object enumVa
24430 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 65 6e  lue;....      en
24440 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50 61 72  umValue = TryPar
24450 73 65 45 6e 75 6d 28 74 79 70 65 6f 66 28 53 51  seEnum(typeof(SQ
24460 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
24470 61 67 73 29 2c 20 46 69 6e 64 4b 65 79 28 6f 70  ags), FindKey(op
24480 74 73 2c 20 22 46 6c 61 67 73 22 2c 20 6e 75 6c  ts, "Flags", nul
24490 6c 29 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20  l), true);....  
244a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
244b0 20 42 55 47 46 49 58 3a 20 41 6c 77 61 79 73 20   BUGFIX: Always 
244c0 70 72 65 73 65 72 76 65 20 74 68 65 20 70 72 65  preserve the pre
244d0 2d 65 78 69 73 74 69 6e 67 20 69 6e 73 74 61 6e  -existing instan
244e0 63 65 20 66 6c 61 67 73 2e 20 20 54 68 69 73 20  ce flags.  This 
244f0 69 73 20 4f 4b 0d 0a 20 20 20 20 20 20 2f 2f 20  is OK..      // 
24500 20 20 20 20 20 20 20 20 62 65 63 61 75 73 65 20          because 
24510 77 68 65 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  when the connect
24520 69 6f 6e 20 6f 62 6a 65 63 74 20 69 73 20 69 6e  ion object is in
24530 69 74 69 61 6c 6c 79 20 63 72 65 61 74 65 64 2c  itially created,
24540 20 74 68 65 79 0d 0a 20 20 20 20 20 20 2f 2f 20   they..      // 
24550 20 20 20 20 20 20 20 20 61 72 65 20 22 4e 6f 6e          are "Non
24560 65 22 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 4f  e"; therefore, O
24570 52 2d 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  R-ing the connec
24580 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f 70  tion string prop
24590 65 72 74 79 0d 0a 20 20 20 20 20 20 2f 2f 20 20  erty..      //  
245a0 20 20 20 20 20 20 20 66 6c 61 67 73 20 77 69 74         flags wit
245b0 68 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 66  h the instance f
245c0 6c 61 67 73 20 77 6f 75 6c 64 20 70 72 6f 64 75  lags would produ
245d0 63 65 20 65 78 61 63 74 6c 79 20 74 68 65 20 73  ce exactly the s
245e0 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  ame..      //   
245f0 20 20 20 20 20 20 72 65 73 75 6c 74 2e 20 20 49        result.  I
24600 66 20 74 68 65 20 22 46 6c 61 67 73 22 20 63 6f  f the "Flags" co
24610 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
24620 70 72 6f 70 65 72 74 79 20 69 73 20 61 62 73 65  property is abse
24630 6e 74 2c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  nt,..      //   
24640 20 20 20 20 20 20 4f 52 2d 69 6e 67 20 74 68 65        OR-ing the
24650 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 66 6c   the instance fl
24660 61 67 73 20 77 69 74 68 20 74 68 65 20 73 74 61  ags with the sta
24670 74 69 63 20 44 65 66 61 75 6c 74 46 6c 61 67 73  tic DefaultFlags
24680 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20   is..      //   
24690 20 20 20 20 20 20 64 6f 6e 65 20 69 6e 73 74 65        done inste
246a0 61 64 2e 20 20 54 68 69 73 20 69 73 20 4f 4b 20  ad.  This is OK 
246b0 66 6f 72 20 74 68 65 20 73 61 6d 65 20 72 65 61  for the same rea
246c0 73 6f 6e 20 61 73 20 62 65 66 6f 72 65 3a 20 77  son as before: w
246d0 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  hen..      //   
246e0 20 20 20 20 20 20 74 68 65 20 63 6f 6e 6e 65 63        the connec
246f0 74 69 6f 6e 20 6f 62 6a 65 63 74 20 69 73 20 69  tion object is i
24700 6e 69 74 69 61 6c 6c 79 20 63 72 65 61 74 65 64  nitially created
24710 2c 20 74 68 65 79 20 61 72 65 20 22 4e 6f 6e 65  , they are "None
24720 22 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  "..      //     
24730 20 20 20 20 62 79 20 64 65 66 61 75 6c 74 2e 20      by default. 
24740 20 49 66 20 74 68 65 79 20 61 72 65 20 64 69 66   If they are dif
24750 66 65 72 65 6e 74 20 6e 6f 77 2c 20 74 68 65 79  ferent now, they
24760 20 6d 75 73 74 20 68 61 76 65 20 62 65 65 6e 0d   must have been.
24770 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
24780 20 20 6d 61 6e 75 61 6c 6c 79 20 73 65 74 20 62    manually set b
24790 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
247a0 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  n...      //..  
247b0 20 20 20 20 62 6f 6f 6c 20 6e 6f 44 65 66 61 75      bool noDefau
247c0 6c 74 46 6c 61 67 73 20 3d 20 53 51 4c 69 74 65  ltFlags = SQLite
247d0 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61  Convert.ToBoolea
247e0 6e 28 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20  n(FindKey(opts, 
247f0 22 4e 6f 44 65 66 61 75 6c 74 46 6c 61 67 73 22  "NoDefaultFlags"
24800 2c 20 44 65 66 61 75 6c 74 4e 6f 44 65 66 61 75  , DefaultNoDefau
24810 6c 74 46 6c 61 67 73 2e 54 6f 53 74 72 69 6e 67  ltFlags.ToString
24820 28 29 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69  ()));....      i
24830 66 20 28 65 6e 75 6d 56 61 6c 75 65 20 69 73 20  f (enumValue is 
24840 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
24850 46 6c 61 67 73 29 0d 0a 20 20 20 20 20 20 20 20  Flags)..        
24860 20 20 5f 66 6c 61 67 73 20 7c 3d 20 28 53 51 4c    _flags |= (SQL
24870 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
24880 67 73 29 65 6e 75 6d 56 61 6c 75 65 3b 0d 0a 20  gs)enumValue;.. 
24890 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 6e       else if (!n
248a0 6f 44 65 66 61 75 6c 74 46 6c 61 67 73 29 0d 0a  oDefaultFlags)..
248b0 20 20 20 20 20 20 20 20 20 20 5f 66 6c 61 67 73            _flags
248c0 20 7c 3d 20 44 65 66 61 75 6c 74 46 6c 61 67 73   |= DefaultFlags
248d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20  ;....      bool 
248e0 6e 6f 53 68 61 72 65 64 46 6c 61 67 73 20 3d 20  noSharedFlags = 
248f0 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f  SQLiteConvert.To
24900 42 6f 6f 6c 65 61 6e 28 46 69 6e 64 4b 65 79 28  Boolean(FindKey(
24910 6f 70 74 73 2c 20 22 4e 6f 53 68 61 72 65 64 46  opts, "NoSharedF
24920 6c 61 67 73 22 2c 20 44 65 66 61 75 6c 74 4e 6f  lags", DefaultNo
24930 53 68 61 72 65 64 46 6c 61 67 73 2e 54 6f 53 74  SharedFlags.ToSt
24940 72 69 6e 67 28 29 29 29 3b 0d 0a 20 20 20 20 20  ring()));..     
24950 20 69 66 20 28 21 6e 6f 53 68 61 72 65 64 46 6c   if (!noSharedFl
24960 61 67 73 29 20 7b 20 6c 6f 63 6b 20 28 5f 73 79  ags) { lock (_sy
24970 6e 63 52 6f 6f 74 29 20 7b 20 5f 66 6c 61 67 73  ncRoot) { _flags
24980 20 7c 3d 20 5f 73 68 61 72 65 64 46 6c 61 67 73   |= _sharedFlags
24990 3b 20 7d 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 65  ; } }....      e
249a0 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50 61  numValue = TryPa
249b0 72 73 65 45 6e 75 6d 28 74 79 70 65 6f 66 28 44  rseEnum(typeof(D
249c0 62 54 79 70 65 29 2c 20 46 69 6e 64 4b 65 79 28  bType), FindKey(
249d0 6f 70 74 73 2c 20 22 44 65 66 61 75 6c 74 44 62  opts, "DefaultDb
249e0 54 79 70 65 22 2c 20 6e 75 6c 6c 29 2c 20 74 72  Type", null), tr
249f0 75 65 29 3b 0d 0a 20 20 20 20 20 20 5f 64 65 66  ue);..      _def
24a00 61 75 6c 74 44 62 54 79 70 65 20 3d 20 28 65 6e  aultDbType = (en
24a10 75 6d 56 61 6c 75 65 20 69 73 20 44 62 54 79 70  umValue is DbTyp
24a20 65 29 20 3f 20 28 44 62 54 79 70 65 29 65 6e 75  e) ? (DbType)enu
24a30 6d 56 61 6c 75 65 20 3a 20 28 44 62 54 79 70 65  mValue : (DbType
24a40 3f 29 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  ?)null;....     
24a50 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
24a60 54 45 3a 20 4e 75 6c 6c 61 62 6c 65 20 76 61 6c  TE: Nullable val
24a70 75 65 73 20 74 79 70 65 73 20 61 72 65 20 6e 6f  ues types are no
24a80 74 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  t supported by t
24a90 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
24aa0 6b 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  k..      //     
24ab0 20 20 41 44 4f 2e 4e 45 54 20 73 75 70 70 6f 72    ADO.NET suppor
24ac0 74 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 74 68 61  t components tha
24ad0 74 20 77 6f 72 6b 20 77 69 74 68 20 74 68 65 20  t work with the 
24ae0 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
24af0 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  g..      //     
24b00 20 20 62 75 69 6c 64 65 72 3b 20 74 68 65 72 65    builder; there
24b10 66 6f 72 65 2c 20 74 72 61 6e 73 6c 61 74 65 20  fore, translate 
24b20 74 68 65 20 22 69 6e 76 61 6c 69 64 20 76 61 6c  the "invalid val
24b30 75 65 22 20 75 73 65 64 20 62 79 20 74 68 65 0d  ue" used by the.
24b40 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
24b50 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
24b60 53 74 72 69 6e 67 42 75 69 6c 64 65 72 2e 44 65  StringBuilder.De
24b70 66 61 75 6c 74 44 62 54 79 70 65 20 70 72 6f 70  faultDbType prop
24b80 65 72 74 79 20 74 6f 20 6e 75 6c 6c 0d 0a 20 20  erty to null..  
24b90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 65 72      //       her
24ba0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  e...      //..  
24bb0 20 20 20 20 69 66 20 28 28 5f 64 65 66 61 75 6c      if ((_defaul
24bc0 74 44 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c 29  tDbType != null)
24bd0 20 26 26 20 28 28 44 62 54 79 70 65 29 5f 64 65   && ((DbType)_de
24be0 66 61 75 6c 74 44 62 54 79 70 65 20 3d 3d 20 42  faultDbType == B
24bf0 61 64 44 62 54 79 70 65 29 29 0d 0a 20 20 20 20  adDbType))..    
24c00 20 20 20 20 5f 64 65 66 61 75 6c 74 44 62 54 79      _defaultDbTy
24c10 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  pe = null;....  
24c20 20 20 20 20 5f 64 65 66 61 75 6c 74 54 79 70 65      _defaultType
24c30 4e 61 6d 65 20 3d 20 46 69 6e 64 4b 65 79 28 6f  Name = FindKey(o
24c40 70 74 73 2c 20 22 44 65 66 61 75 6c 74 54 79 70  pts, "DefaultTyp
24c50 65 4e 61 6d 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a  eName", null);..
24c60 20 20 20 20 20 20 5f 76 66 73 4e 61 6d 65 20 3d        _vfsName =
24c70 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22   FindKey(opts, "
24c80 56 66 73 4e 61 6d 65 22 2c 20 44 65 66 61 75 6c  VfsName", Defaul
24c90 74 56 66 73 4e 61 6d 65 29 3b 0d 0a 0d 0a 23 69  tVfsName);....#i
24ca0 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
24cb0 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49  0 && TRACE_WARNI
24cc0 4e 47 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20 75  NG..      bool u
24cd0 72 69 20 3d 20 66 61 6c 73 65 3b 0d 0a 23 65 6e  ri = false;..#en
24ce0 64 69 66 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20  dif..      bool 
24cf0 66 75 6c 6c 55 72 69 20 3d 20 66 61 6c 73 65 3b  fullUri = false;
24d00 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 66  ..      string f
24d10 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ileName;....    
24d20 20 20 69 66 20 28 43 6f 6e 76 65 72 74 2e 54 6f    if (Convert.To
24d30 49 6e 74 33 32 28 46 69 6e 64 4b 65 79 28 6f 70  Int32(FindKey(op
24d40 74 73 2c 20 22 56 65 72 73 69 6f 6e 22 2c 20 53  ts, "Version", S
24d50 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 53  QLiteConvert.ToS
24d60 74 72 69 6e 67 28 44 65 66 61 75 6c 74 56 65 72  tring(DefaultVer
24d70 73 69 6f 6e 29 29 2c 20 43 75 6c 74 75 72 65 49  sion)), CultureI
24d80 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
24d90 74 75 72 65 29 20 21 3d 20 44 65 66 61 75 6c 74  ture) != Default
24da0 56 65 72 73 69 6f 6e 29 0d 0a 20 20 20 20 20 20  Version)..      
24db0 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 53    throw new NotS
24dc0 75 70 70 6f 72 74 65 64 45 78 63 65 70 74 69 6f  upportedExceptio
24dd0 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  n(HelperMethods.
24de0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
24df0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
24e00 43 75 6c 74 75 72 65 2c 20 22 4f 6e 6c 79 20 53  Culture, "Only S
24e10 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 7b 30  QLite Version {0
24e20 7d 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 61  } is supported a
24e30 74 20 74 68 69 73 20 74 69 6d 65 22 2c 20 44 65  t this time", De
24e40 66 61 75 6c 74 56 65 72 73 69 6f 6e 29 29 3b 0d  faultVersion));.
24e50 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 49  ...#if INTEROP_I
24e60 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a 20  NCLUDE_ZIPVFS.. 
24e70 20 20 20 20 20 62 6f 6f 6c 20 75 73 65 5a 69 70       bool useZip
24e80 56 66 73 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  Vfs = false;..  
24e90 20 20 20 20 73 74 72 69 6e 67 20 7a 69 70 56 66      string zipVf
24ea0 73 56 65 72 73 69 6f 6e 20 3d 20 46 69 6e 64 4b  sVersion = FindK
24eb0 65 79 28 6f 70 74 73 2c 20 22 5a 69 70 56 66 73  ey(opts, "ZipVfs
24ec0 56 65 72 73 69 6f 6e 22 2c 20 44 65 66 61 75 6c  Version", Defaul
24ed0 74 5a 69 70 56 66 73 56 65 72 73 69 6f 6e 29 3b  tZipVfsVersion);
24ee0 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 7a 69  ....      if (zi
24ef0 70 56 66 73 56 65 72 73 69 6f 6e 20 21 3d 20 6e  pVfsVersion != n
24f00 75 6c 6c 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ull)..      {.. 
24f10 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
24f20 69 6e 67 2e 43 6f 6d 70 61 72 65 28 7a 69 70 56  ing.Compare(zipV
24f30 66 73 56 65 72 73 69 6f 6e 2c 20 5a 69 70 56 66  fsVersion, ZipVf
24f40 73 5f 41 75 74 6f 6d 61 74 69 63 29 20 3d 3d 20  s_Automatic) == 
24f50 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  0)..          {.
24f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75  .              u
24f70 73 65 5a 69 70 56 66 73 20 3d 20 74 72 75 65 3b  seZipVfs = true;
24f80 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
24f90 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
24fa0 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65   (String.Compare
24fb0 28 7a 69 70 56 66 73 56 65 72 73 69 6f 6e 2c 20  (zipVfsVersion, 
24fc0 5a 69 70 56 66 73 5f 56 32 29 20 3d 3d 20 30 29  ZipVfs_V2) == 0)
24fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
24fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
24ff0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
25000 2e 7a 69 70 76 66 73 49 6e 69 74 5f 76 32 28 29  .zipvfsInit_v2()
25010 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
25020 20 75 73 65 5a 69 70 56 66 73 20 3d 20 74 72 75   useZipVfs = tru
25030 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
25040 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20  .          else 
25050 69 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61  if (String.Compa
25060 72 65 28 7a 69 70 56 66 73 56 65 72 73 69 6f 6e  re(zipVfsVersion
25070 2c 20 5a 69 70 56 66 73 5f 56 33 29 20 3d 3d 20  , ZipVfs_V3) == 
25080 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  0)..          {.
25090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55  .              U
250a0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
250b0 64 73 2e 7a 69 70 76 66 73 49 6e 69 74 5f 76 33  ds.zipvfsInit_v3
250c0 28 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (0);..          
250d0 20 20 20 20 75 73 65 5a 69 70 56 66 73 20 3d 20      useZipVfs = 
250e0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
250f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c   }..          el
25100 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  se..          {.
25110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
25120 68 72 6f 77 20 6e 65 77 20 4e 6f 74 53 75 70 70  hrow new NotSupp
25130 6f 72 74 65 64 45 78 63 65 70 74 69 6f 6e 28 48  ortedException(H
25140 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
25150 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
25170 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
25180 74 43 75 6c 74 75 72 65 2c 20 22 4f 6e 6c 79 20  tCulture, "Only 
25190 5a 69 70 56 46 53 20 76 65 72 73 69 6f 6e 73 20  ZipVFS versions 
251a0 7b 30 7d 2c 20 7b 31 7d 2c 20 61 6e 64 20 7b 32  {0}, {1}, and {2
251b0 7d 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20  } are supported 
251c0 61 74 20 74 68 69 73 20 74 69 6d 65 22 2c 0d 0a  at this time",..
251d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251e0 20 20 5a 69 70 56 66 73 5f 41 75 74 6f 6d 61 74    ZipVfs_Automat
251f0 69 63 2c 20 5a 69 70 56 66 73 5f 56 32 2c 20 5a  ic, ZipVfs_V2, Z
25200 69 70 56 66 73 5f 56 33 29 29 3b 0d 0a 20 20 20  ipVfs_V3));..   
25210 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
25220 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
25230 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46 69     fileName = Fi
25240 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 61 74  ndKey(opts, "Dat
25250 61 20 53 6f 75 72 63 65 22 2c 20 44 65 66 61 75  a Source", Defau
25260 6c 74 44 61 74 61 53 6f 75 72 63 65 29 3b 0d 0a  ltDataSource);..
25270 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72 69  ..      if (Stri
25280 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
25290 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  (fileName))..   
252a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 66 69     {..        fi
252b0 6c 65 4e 61 6d 65 20 3d 20 46 69 6e 64 4b 65 79  leName = FindKey
252c0 28 6f 70 74 73 2c 20 22 55 72 69 22 2c 20 44 65  (opts, "Uri", De
252d0 66 61 75 6c 74 55 72 69 29 3b 0d 0a 20 20 20 20  faultUri);..    
252e0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
252f0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
25300 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
25310 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69   {..          fi
25320 6c 65 4e 61 6d 65 20 3d 20 46 69 6e 64 4b 65 79  leName = FindKey
25330 28 6f 70 74 73 2c 20 22 46 75 6c 6c 55 72 69 22  (opts, "FullUri"
25340 2c 20 44 65 66 61 75 6c 74 46 75 6c 6c 55 72 69  , DefaultFullUri
25350 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  );..          if
25360 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
25370 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
25380 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  )..            t
25390 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
253a0 74 45 78 63 65 70 74 69 6f 6e 28 48 65 6c 70 65  tException(Helpe
253b0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
253c0 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
253d0 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
253e0 2c 20 22 44 61 74 61 20 53 6f 75 72 63 65 20 63  , "Data Source c
253f0 61 6e 6e 6f 74 20 62 65 20 65 6d 70 74 79 2e 20  annot be empty. 
25400 20 55 73 65 20 7b 30 7d 20 74 6f 20 6f 70 65 6e   Use {0} to open
25410 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61   an in-memory da
25420 74 61 62 61 73 65 22 2c 20 4d 65 6d 6f 72 79 46  tabase", MemoryF
25430 69 6c 65 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20  ileName));..    
25440 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
25450 20 20 20 20 20 20 20 20 66 75 6c 6c 55 72 69 20          fullUri 
25460 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
25470 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65   }..        else
25480 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
25490 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 20         fileName 
254a0 3d 20 4d 61 70 55 72 69 50 61 74 68 28 66 69 6c  = MapUriPath(fil
254b0 65 4e 61 6d 65 29 3b 0d 0a 23 69 66 20 21 4e 45  eName);..#if !NE
254c0 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
254d0 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20  TRACE_WARNING.. 
254e0 20 20 20 20 20 20 20 20 20 75 72 69 20 3d 20 74           uri = t
254f0 72 75 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  rue;..#endif..  
25500 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
25510 0d 0a 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20 69  ....      bool i
25520 73 4d 65 6d 6f 72 79 20 3d 20 28 53 74 72 69 6e  sMemory = (Strin
25530 67 2e 43 6f 6d 70 61 72 65 28 66 69 6c 65 4e 61  g.Compare(fileNa
25540 6d 65 2c 20 4d 65 6d 6f 72 79 46 69 6c 65 4e 61  me, MemoryFileNa
25550 6d 65 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  me, StringCompar
25560 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
25570 72 65 43 61 73 65 29 20 3d 3d 20 30 29 3b 0d 0a  reCase) == 0);..
25580 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
25590 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57  CT_20 && TRACE_W
255a0 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 69 66  ARNING..      if
255b0 20 28 28 5f 66 6c 61 67 73 20 26 20 53 51 4c 69   ((_flags & SQLi
255c0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
255d0 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29 20  s.TraceWarning) 
255e0 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
255f0 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
25600 72 6e 69 6e 67 29 0d 0a 20 20 20 20 20 20 7b 0d  rning)..      {.
25610 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21  .          if (!
25620 75 72 69 20 26 26 20 21 66 75 6c 6c 55 72 69 20  uri && !fullUri 
25630 26 26 20 21 69 73 4d 65 6d 6f 72 79 20 26 26 20  && !isMemory && 
25640 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
25650 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 20  Empty(fileName) 
25660 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
25670 20 20 66 69 6c 65 4e 61 6d 65 2e 53 74 61 72 74    fileName.Start
25680 73 57 69 74 68 28 22 5c 5c 22 2c 20 53 74 72 69  sWith("\\", Stri
25690 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
256a0 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 20  inalIgnoreCase) 
256b0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
256c0 20 20 21 66 69 6c 65 4e 61 6d 65 2e 53 74 61 72    !fileName.Star
256d0 74 73 57 69 74 68 28 22 5c 5c 5c 5c 22 2c 20 53  tsWith("\\\\", S
256e0 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
256f0 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
25700 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  e))..          {
25710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25720 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69  System.Diagnosti
25730 63 73 2e 54 72 61 63 65 2e 57 72 69 74 65 4c 69  cs.Trace.WriteLi
25740 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
25750 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
25760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25770 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
25780 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
25790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257a0 20 22 57 41 52 4e 49 4e 47 3a 20 44 65 74 65 63   "WARNING: Detec
257b0 74 65 64 20 61 20 70 6f 73 73 69 62 6c 79 20 6d  ted a possibly m
257c0 61 6c 66 6f 72 6d 65 64 20 55 4e 43 20 64 61 74  alformed UNC dat
257d0 61 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20  abase file name 
257e0 5c 22 7b 30 7d 5c 22 20 74 68 61 74 20 22 20 2b  \"{0}\" that " +
257f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25800 20 20 20 20 22 6d 61 79 20 68 61 76 65 20 6f 72      "may have or
25810 69 67 69 6e 61 6c 6c 79 20 73 74 61 72 74 65 64  iginally started
25820 20 77 69 74 68 20 74 77 6f 20 62 61 63 6b 73 6c   with two backsl
25830 61 73 68 65 73 3b 20 68 6f 77 65 76 65 72 2c 20  ashes; however, 
25840 66 6f 75 72 20 6c 65 61 64 69 6e 67 20 22 20 2b  four leading " +
25850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25860 20 20 20 20 22 62 61 63 6b 73 6c 61 73 68 65 73      "backslashes
25870 20 6d 61 79 20 62 65 20 72 65 71 75 69 72 65 64   may be required
25880 2c 20 65 2e 67 2e 3a 20 5c 22 44 61 74 61 20 53  , e.g.: \"Data S
25890 6f 75 72 63 65 3d 5c 5c 5c 5c 5c 5c 7b 30 7d 3b  ource=\\\\\\{0};
258a0 5c 22 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  \"",..          
258b0 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65          fileName
258c0 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ));..          }
258d0 0d 0a 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69  ..      }..#endi
258e0 66 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 21  f....      if (!
258f0 66 75 6c 6c 55 72 69 29 0d 0a 20 20 20 20 20 20  fullUri)..      
25900 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69  {..        if (i
25910 73 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20  sMemory)..      
25920 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 4d      fileName = M
25930 65 6d 6f 72 79 46 69 6c 65 4e 61 6d 65 3b 0d 0a  emoryFileName;..
25940 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
25950 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41        {..#if PLA
25960 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
25970 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
25980 20 20 69 66 20 28 66 69 6c 65 4e 61 6d 65 2e 53    if (fileName.S
25990 74 61 72 74 73 57 69 74 68 28 22 2e 2f 22 29 20  tartsWith("./") 
259a0 7c 7c 20 66 69 6c 65 4e 61 6d 65 2e 53 74 61 72  || fileName.Star
259b0 74 73 57 69 74 68 28 22 2e 5c 5c 22 29 29 0d 0a  tsWith(".\\"))..
259c0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
259d0 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 44  Name = Path.GetD
259e0 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 41 73 73  irectoryName(Ass
259f0 65 6d 62 6c 79 2e 47 65 74 43 61 6c 6c 69 6e 67  embly.GetCalling
25a00 41 73 73 65 6d 62 6c 79 28 29 2e 47 65 74 4e 61  Assembly().GetNa
25a10 6d 65 28 29 2e 43 6f 64 65 42 61 73 65 29 20 2b  me().CodeBase) +
25a20 20 66 69 6c 65 4e 61 6d 65 2e 53 75 62 73 74 72   fileName.Substr
25a30 69 6e 67 28 31 29 3b 0d 0a 23 65 6e 64 69 66 0d  ing(1);..#endif.
25a40 0a 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  .          bool 
25a50 74 6f 46 75 6c 6c 50 61 74 68 20 3d 20 53 51 4c  toFullPath = SQL
25a60 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f  iteConvert.ToBoo
25a70 6c 65 61 6e 28 46 69 6e 64 4b 65 79 28 6f 70 74  lean(FindKey(opt
25a80 73 2c 20 22 54 6f 46 75 6c 6c 50 61 74 68 22 2c  s, "ToFullPath",
25a90 20 44 65 66 61 75 6c 74 54 6f 46 75 6c 6c 50 61   DefaultToFullPa
25aa0 74 68 2e 54 6f 53 74 72 69 6e 67 28 29 29 29 3b  th.ToString()));
25ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65  ..          file
25ac0 4e 61 6d 65 20 3d 20 45 78 70 61 6e 64 46 69 6c  Name = ExpandFil
25ad0 65 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 2c 20  eName(fileName, 
25ae0 74 6f 46 75 6c 6c 50 61 74 68 29 3b 0d 0a 20 20  toFullPath);..  
25af0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
25b00 0d 0a 0d 0a 20 20 20 20 20 20 74 72 79 0d 0a 20  ....      try.. 
25b10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25b20 62 6f 6f 6c 20 75 73 65 50 6f 6f 6c 69 6e 67 20  bool usePooling 
25b30 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  = SQLiteConvert.
25b40 54 6f 42 6f 6f 6c 65 61 6e 28 46 69 6e 64 4b 65  ToBoolean(FindKe
25b50 79 28 6f 70 74 73 2c 20 22 50 6f 6f 6c 69 6e 67  y(opts, "Pooling
25b60 22 2c 20 47 65 74 44 65 66 61 75 6c 74 50 6f 6f  ", GetDefaultPoo
25b70 6c 69 6e 67 28 29 2e 54 6f 53 74 72 69 6e 67 28  ling().ToString(
25b80 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e  )));..        in
25b90 74 20 6d 61 78 50 6f 6f 6c 53 69 7a 65 20 3d 20  t maxPoolSize = 
25ba0 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28  Convert.ToInt32(
25bb0 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 4d  FindKey(opts, "M
25bc0 61 78 20 50 6f 6f 6c 20 53 69 7a 65 22 2c 20 53  ax Pool Size", S
25bd0 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 53  QLiteConvert.ToS
25be0 74 72 69 6e 67 28 44 65 66 61 75 6c 74 4d 61 78  tring(DefaultMax
25bf0 50 6f 6f 6c 53 69 7a 65 29 29 2c 20 43 75 6c 74  PoolSize)), Cult
25c00 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
25c10 74 43 75 6c 74 75 72 65 29 3b 0d 0a 0d 0a 20 20  tCulture);....  
25c20 20 20 20 20 20 20 5f 64 65 66 61 75 6c 74 54 69        _defaultTi
25c30 6d 65 6f 75 74 20 3d 20 43 6f 6e 76 65 72 74 2e  meout = Convert.
25c40 54 6f 49 6e 74 33 32 28 46 69 6e 64 4b 65 79 28  ToInt32(FindKey(
25c50 6f 70 74 73 2c 20 22 44 65 66 61 75 6c 74 20 54  opts, "Default T
25c60 69 6d 65 6f 75 74 22 2c 20 53 51 4c 69 74 65 43  imeout", SQLiteC
25c70 6f 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28  onvert.ToString(
25c80 44 65 66 61 75 6c 74 43 6f 6e 6e 65 63 74 69 6f  DefaultConnectio
25c90 6e 54 69 6d 65 6f 75 74 29 29 2c 20 43 75 6c 74  nTimeout)), Cult
25ca0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
25cb0 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20  tCulture);..    
25cc0 20 20 20 20 5f 62 75 73 79 54 69 6d 65 6f 75 74      _busyTimeout
25cd0 20 3d 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74   = Convert.ToInt
25ce0 33 32 28 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c  32(FindKey(opts,
25cf0 20 22 42 75 73 79 54 69 6d 65 6f 75 74 22 2c 20   "BusyTimeout", 
25d00 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f  SQLiteConvert.To
25d10 53 74 72 69 6e 67 28 44 65 66 61 75 6c 74 42 75  String(DefaultBu
25d20 73 79 54 69 6d 65 6f 75 74 29 29 2c 20 43 75 6c  syTimeout)), Cul
25d30 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
25d40 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 0d 0a 23  ntCulture);....#
25d50 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
25d60 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
25d70 20 20 20 20 20 20 20 5f 77 61 69 74 54 69 6d 65         _waitTime
25d80 6f 75 74 20 3d 20 43 6f 6e 76 65 72 74 2e 54 6f  out = Convert.To
25d90 49 6e 74 33 32 28 46 69 6e 64 4b 65 79 28 6f 70  Int32(FindKey(op
25da0 74 73 2c 20 22 57 61 69 74 54 69 6d 65 6f 75 74  ts, "WaitTimeout
25db0 22 2c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  ", SQLiteConvert
25dc0 2e 54 6f 53 74 72 69 6e 67 28 44 65 66 61 75 6c  .ToString(Defaul
25dd0 74 57 61 69 74 54 69 6d 65 6f 75 74 29 29 2c 20  tWaitTimeout)), 
25de0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
25df0 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
25e00 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
25e10 20 20 5f 70 72 65 70 61 72 65 52 65 74 72 69 65    _prepareRetrie
25e20 73 20 3d 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e  s = Convert.ToIn
25e30 74 33 32 28 46 69 6e 64 4b 65 79 28 6f 70 74 73  t32(FindKey(opts
25e40 2c 20 22 50 72 65 70 61 72 65 52 65 74 72 69 65  , "PrepareRetrie
25e50 73 22 2c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  s", SQLiteConver
25e60 74 2e 54 6f 53 74 72 69 6e 67 28 44 65 66 61 75  t.ToString(Defau
25e70 6c 74 50 72 65 70 61 72 65 52 65 74 72 69 65 73  ltPrepareRetries
25e80 29 29 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  )), CultureInfo.
25e90 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
25ea0 29 3b 0d 0a 20 20 20 20 20 20 20 20 5f 70 72 6f  );..        _pro
25eb0 67 72 65 73 73 4f 70 73 20 3d 20 43 6f 6e 76 65  gressOps = Conve
25ec0 72 74 2e 54 6f 49 6e 74 33 32 28 46 69 6e 64 4b  rt.ToInt32(FindK
25ed0 65 79 28 6f 70 74 73 2c 20 22 50 72 6f 67 72 65  ey(opts, "Progre
25ee0 73 73 4f 70 73 22 2c 20 53 51 4c 69 74 65 43 6f  ssOps", SQLiteCo
25ef0 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28 44  nvert.ToString(D
25f00 65 66 61 75 6c 74 50 72 6f 67 72 65 73 73 4f 70  efaultProgressOp
25f10 73 29 29 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  s)), CultureInfo
25f20 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
25f30 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 65  e);....        e
25f40 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50 61  numValue = TryPa
25f50 72 73 65 45 6e 75 6d 28 74 79 70 65 6f 66 28 49  rseEnum(typeof(I
25f60 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 2c 20  solationLevel), 
25f70 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 44  FindKey(opts, "D
25f80 65 66 61 75 6c 74 20 49 73 6f 6c 61 74 69 6f 6e  efault Isolation
25f90 4c 65 76 65 6c 22 2c 20 44 65 66 61 75 6c 74 49  Level", DefaultI
25fa0 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 2e 54 6f  solationLevel.To
25fb0 53 74 72 69 6e 67 28 29 29 2c 20 74 72 75 65 29  String()), true)
25fc0 3b 0d 0a 20 20 20 20 20 20 20 20 5f 64 65 66 61  ;..        _defa
25fd0 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 20 3d 20 28  ultIsolation = (
25fe0 65 6e 75 6d 56 61 6c 75 65 20 69 73 20 49 73 6f  enumValue is Iso
25ff0 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 20 3f 20 28  lationLevel) ? (
26000 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 65  IsolationLevel)e
26010 6e 75 6d 56 61 6c 75 65 20 3a 20 44 65 66 61 75  numValue : Defau
26020 6c 74 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  ltIsolationLevel
26030 3b 0d 0a 20 20 20 20 20 20 20 20 5f 64 65 66 61  ;..        _defa
26040 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 20 3d 20 47  ultIsolation = G
26050 65 74 45 66 66 65 63 74 69 76 65 49 73 6f 6c 61  etEffectiveIsola
26060 74 69 6f 6e 4c 65 76 65 6c 28 5f 64 65 66 61 75  tionLevel(_defau
26070 6c 74 49 73 6f 6c 61 74 69 6f 6e 29 3b 0d 0a 0d  ltIsolation);...
26080 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 64 65  .        if (_de
26090 66 61 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 20 21  faultIsolation !
260a0 3d 20 49 6d 6d 65 64 69 61 74 65 49 73 6f 6c 61  = ImmediateIsola
260b0 74 69 6f 6e 4c 65 76 65 6c 20 26 26 20 5f 64 65  tionLevel && _de
260c0 66 61 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 20 21  faultIsolation !
260d0 3d 20 44 65 66 65 72 72 65 64 49 73 6f 6c 61 74  = DeferredIsolat
260e0 69 6f 6e 4c 65 76 65 6c 29 0d 0a 20 20 20 20 20  ionLevel)..     
260f0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
26100 6f 74 53 75 70 70 6f 72 74 65 64 45 78 63 65 70  otSupportedExcep
26110 74 69 6f 6e 28 22 49 6e 76 61 6c 69 64 20 44 65  tion("Invalid De
26120 66 61 75 6c 74 20 49 73 6f 6c 61 74 69 6f 6e 4c  fault IsolationL
26130 65 76 65 6c 20 73 70 65 63 69 66 69 65 64 22 29  evel specified")
26140 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5f 62 61  ;....        _ba
26150 73 65 53 63 68 65 6d 61 4e 61 6d 65 20 3d 20 46  seSchemaName = F
26160 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 42 61  indKey(opts, "Ba
26170 73 65 53 63 68 65 6d 61 4e 61 6d 65 22 2c 20 44  seSchemaName", D
26180 65 66 61 75 6c 74 42 61 73 65 53 63 68 65 6d 61  efaultBaseSchema
26190 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
261a0 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75    if (_sql == nu
261b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
261c0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 75              Setu
261d0 70 53 51 4c 69 74 65 42 61 73 65 28 6f 70 74 73  pSQLiteBase(opts
261e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
261f0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4f  .        SQLiteO
26200 70 65 6e 46 6c 61 67 73 45 6e 75 6d 20 66 6c 61  penFlagsEnum fla
26210 67 73 20 3d 20 53 51 4c 69 74 65 4f 70 65 6e 46  gs = SQLiteOpenF
26220 6c 61 67 73 45 6e 75 6d 2e 4e 6f 6e 65 3b 0d 0a  lagsEnum.None;..
26230 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 53  ..        if (!S
26240 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42  QLiteConvert.ToB
26250 6f 6f 6c 65 61 6e 28 46 69 6e 64 4b 65 79 28 6f  oolean(FindKey(o
26260 70 74 73 2c 20 22 46 61 69 6c 49 66 4d 69 73 73  pts, "FailIfMiss
26270 69 6e 67 22 2c 20 44 65 66 61 75 6c 74 46 61 69  ing", DefaultFai
26280 6c 49 66 4d 69 73 73 69 6e 67 2e 54 6f 53 74 72  lIfMissing.ToStr
26290 69 6e 67 28 29 29 29 29 0d 0a 20 20 20 20 20 20  ing())))..      
262a0 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 53 51 4c      flags |= SQL
262b0 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
262c0 2e 43 72 65 61 74 65 3b 0d 0a 0d 0a 20 20 20 20  .Create;....    
262d0 20 20 20 20 69 66 20 28 53 51 4c 69 74 65 43 6f      if (SQLiteCo
262e0 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28  nvert.ToBoolean(
262f0 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 52  FindKey(opts, "R
26300 65 61 64 20 4f 6e 6c 79 22 2c 20 44 65 66 61 75  ead Only", Defau
26310 6c 74 52 65 61 64 4f 6e 6c 79 2e 54 6f 53 74 72  ltReadOnly.ToStr
26320 69 6e 67 28 29 29 29 29 0d 0a 20 20 20 20 20 20  ing())))..      
26330 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66    {..          f
26340 6c 61 67 73 20 7c 3d 20 53 51 4c 69 74 65 4f 70  lags |= SQLiteOp
26350 65 6e 46 6c 61 67 73 45 6e 75 6d 2e 52 65 61 64  enFlagsEnum.Read
26360 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  Only;..         
26370 20 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20   // SQLite will 
26380 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4d 49  return SQLITE_MI
26390 53 55 53 45 20 6f 6e 20 52 65 61 64 4f 6e 6c 79  SUSE on ReadOnly
263a0 20 61 6e 64 20 43 72 65 61 74 65 0d 0a 20 20 20   and Create..   
263b0 20 20 20 20 20 20 20 66 6c 61 67 73 20 26 3d 20         flags &= 
263c0 7e 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73  ~SQLiteOpenFlags
263d0 45 6e 75 6d 2e 43 72 65 61 74 65 3b 0d 0a 20 20  Enum.Create;..  
263e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
263f0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
26400 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
26410 73 20 7c 3d 20 53 51 4c 69 74 65 4f 70 65 6e 46  s |= SQLiteOpenF
26420 6c 61 67 73 45 6e 75 6d 2e 52 65 61 64 57 72 69  lagsEnum.ReadWri
26430 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  te;..        }..
26440 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 75  ..        if (fu
26450 6c 6c 55 72 69 29 0d 0a 20 20 20 20 20 20 20 20  llUri)..        
26460 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 53 51 4c      flags |= SQL
26470 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
26480 2e 55 72 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  .Uri;....       
26490 20 5f 73 71 6c 2e 4f 70 65 6e 28 66 69 6c 65 4e   _sql.Open(fileN
264a0 61 6d 65 2c 20 5f 76 66 73 4e 61 6d 65 2c 20 5f  ame, _vfsName, _
264b0 66 6c 61 67 73 2c 20 66 6c 61 67 73 2c 20 6d 61  flags, flags, ma
264c0 78 50 6f 6f 6c 53 69 7a 65 2c 20 75 73 65 50 6f  xPoolSize, usePo
264d0 6f 6c 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20  oling);....     
264e0 20 20 20 5f 62 69 6e 61 72 79 47 75 69 64 20 3d     _binaryGuid =
264f0 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54   SQLiteConvert.T
26500 6f 42 6f 6f 6c 65 61 6e 28 46 69 6e 64 4b 65 79  oBoolean(FindKey
26510 28 6f 70 74 73 2c 20 22 42 69 6e 61 72 79 47 55  (opts, "BinaryGU
26520 49 44 22 2c 20 44 65 66 61 75 6c 74 42 69 6e 61  ID", DefaultBina
26530 72 79 47 55 49 44 2e 54 6f 53 74 72 69 6e 67 28  ryGUID.ToString(
26540 29 29 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45  )));....#if INTE
26550 52 4f 50 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54  ROP_CODEC || INT
26560 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45  EROP_INCLUDE_SEE
26570 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
26580 20 68 65 78 50 61 73 73 77 6f 72 64 20 3d 20 46   hexPassword = F
26590 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 48 65  indKey(opts, "He
265a0 78 50 61 73 73 77 6f 72 64 22 2c 20 44 65 66 61  xPassword", Defa
265b0 75 6c 74 48 65 78 50 61 73 73 77 6f 72 64 29 3b  ultHexPassword);
265c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
265d0 68 65 78 50 61 73 73 77 6f 72 64 20 21 3d 20 6e  hexPassword != n
265e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ull)..        {.
265f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
26600 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c 6c  ing error = null
26610 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ;..            b
26620 79 74 65 5b 5d 20 68 65 78 50 61 73 73 77 6f 72  yte[] hexPasswor
26630 64 42 79 74 65 73 20 3d 20 46 72 6f 6d 48 65 78  dBytes = FromHex
26640 53 74 72 69 6e 67 28 68 65 78 50 61 73 73 77 6f  String(hexPasswo
26650 72 64 2c 20 72 65 66 20 65 72 72 6f 72 29 3b 0d  rd, ref error);.
26660 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
26670 66 20 28 68 65 78 50 61 73 73 77 6f 72 64 42 79  f (hexPasswordBy
26680 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
26690 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
266a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
266b0 6f 77 20 6e 65 77 20 46 6f 72 6d 61 74 45 78 63  ow new FormatExc
266c0 65 70 74 69 6f 6e 28 48 65 6c 70 65 72 4d 65 74  eption(HelperMet
266d0 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
266e0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
266f0 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
26700 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
26710 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
26720 20 20 20 20 20 20 20 20 20 22 43 61 6e 6e 6f 74           "Cannot
26730 20 70 61 72 73 65 20 27 48 65 78 50 61 73 73 77   parse 'HexPassw
26740 6f 72 64 27 20 70 72 6f 70 65 72 74 79 20 76 61  ord' property va
26750 6c 75 65 20 69 6e 74 6f 20 62 79 74 65 20 76 61  lue into byte va
26760 6c 75 65 73 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20  lues: {0}",..   
26770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26780 20 65 72 72 6f 72 29 29 3b 0d 0a 20 20 20 20 20   error));..     
26790 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
267a0 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 53 65 74          _sql.Set
267b0 50 61 73 73 77 6f 72 64 28 68 65 78 50 61 73 73  Password(hexPass
267c0 77 6f 72 64 42 79 74 65 73 29 3b 0d 0a 20 20 20  wordBytes);..   
267d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
267e0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  else..        {.
267f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
26800 69 6e 67 20 70 61 73 73 77 6f 72 64 20 3d 20 46  ing password = F
26810 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 50 61  indKey(opts, "Pa
26820 73 73 77 6f 72 64 22 2c 20 44 65 66 61 75 6c 74  ssword", Default
26830 50 61 73 73 77 6f 72 64 29 3b 0d 0a 0d 0a 20 20  Password);....  
26840 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61            if (pa
26850 73 73 77 6f 72 64 20 21 3d 20 6e 75 6c 6c 29 0d  ssword != null).
26860 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26870 20 5f 73 71 6c 2e 53 65 74 50 61 73 73 77 6f 72   _sql.SetPasswor
26880 64 28 55 54 46 38 45 6e 63 6f 64 69 6e 67 2e 55  d(UTF8Encoding.U
26890 54 46 38 2e 47 65 74 42 79 74 65 73 28 70 61 73  TF8.GetBytes(pas
268a0 73 77 6f 72 64 29 29 3b 0d 0a 20 20 20 20 20 20  sword));..      
268b0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 5f        else if (_
268c0 70 61 73 73 77 6f 72 64 20 21 3d 20 6e 75 6c 6c  password != null
268d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
268e0 20 20 20 5f 73 71 6c 2e 53 65 74 50 61 73 73 77     _sql.SetPassw
268f0 6f 72 64 28 5f 70 61 73 73 77 6f 72 64 29 3b 0d  ord(_password);.
26900 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
26910 20 20 20 20 5f 70 61 73 73 77 6f 72 64 20 3d 20      _password = 
26920 6e 75 6c 6c 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  null;..#else..  
26930 20 20 20 20 20 20 69 66 20 28 46 69 6e 64 4b 65        if (FindKe
26940 79 28 6f 70 74 73 2c 20 22 48 65 78 50 61 73 73  y(opts, "HexPass
26950 77 6f 72 64 22 2c 20 44 65 66 61 75 6c 74 48 65  word", DefaultHe
26960 78 50 61 73 73 77 6f 72 64 29 20 21 3d 20 6e 75  xPassword) != nu
26970 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
26980 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
26990 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
269a0 70 74 69 6f 6e 28 53 51 4c 69 74 65 45 72 72 6f  ption(SQLiteErro
269b0 72 43 6f 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20  rCode.Error,..  
269c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
269d0 61 6e 6e 6f 74 20 75 73 65 20 5c 22 48 65 78 50  annot use \"HexP
269e0 61 73 73 77 6f 72 64 5c 22 20 63 6f 6e 6e 65 63  assword\" connec
269f0 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f 70  tion string prop
26a00 65 72 74 79 3a 20 22 20 2b 0d 0a 20 20 20 20 20  erty: " +..     
26a10 20 20 20 20 20 20 20 20 20 20 20 22 6c 69 62 72             "libr
26a20 61 72 79 20 77 61 73 20 6e 6f 74 20 62 75 69 6c  ary was not buil
26a30 74 20 77 69 74 68 20 65 6e 63 72 79 70 74 69 6f  t with encryptio
26a40 6e 20 73 75 70 70 6f 72 74 2c 20 70 6c 65 61 73  n support, pleas
26a50 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  e " +..         
26a60 20 20 20 20 20 20 20 22 73 65 65 20 5c 22 68 74         "see \"ht
26a70 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69 74 65  tps://www.sqlite
26a80 2e 6f 72 67 2f 73 65 65 5c 22 20 66 6f 72 20 6d  .org/see\" for m
26a90 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 22  ore information"
26aa0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
26ab0 0a 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6e  .        if (Fin
26ac0 64 4b 65 79 28 6f 70 74 73 2c 20 22 50 61 73 73  dKey(opts, "Pass
26ad0 77 6f 72 64 22 2c 20 44 65 66 61 75 6c 74 50 61  word", DefaultPa
26ae0 73 73 77 6f 72 64 29 20 21 3d 20 6e 75 6c 6c 29  ssword) != null)
26af0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
26b00 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
26b10 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
26b20 6f 6e 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  on(SQLiteErrorCo
26b30 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20 20 20 20  de.Error,..     
26b40 20 20 20 20 20 20 20 20 20 20 20 22 43 61 6e 6e             "Cann
26b50 6f 74 20 75 73 65 20 5c 22 50 61 73 73 77 6f 72  ot use \"Passwor
26b60 64 5c 22 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  d\" connection s
26b70 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79 3a 20  tring property: 
26b80 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
26b90 20 20 20 20 20 22 6c 69 62 72 61 72 79 20 77 61       "library wa
26ba0 73 20 6e 6f 74 20 62 75 69 6c 74 20 77 69 74 68  s not built with
26bb0 20 65 6e 63 72 79 70 74 69 6f 6e 20 73 75 70 70   encryption supp
26bc0 6f 72 74 2c 20 70 6c 65 61 73 65 20 22 20 2b 0d  ort, please " +.
26bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26be0 20 22 73 65 65 20 5c 22 68 74 74 70 73 3a 2f 2f   "see \"https://
26bf0 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73  www.sqlite.org/s
26c00 65 65 5c 22 20 66 6f 72 20 6d 6f 72 65 20 69 6e  ee\" for more in
26c10 66 6f 72 6d 61 74 69 6f 6e 22 29 3b 0d 0a 20 20  formation");..  
26c20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
26c30 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  ...        if (!
26c40 66 75 6c 6c 55 72 69 29 0d 0a 20 20 20 20 20 20  fullUri)..      
26c50 20 20 20 20 5f 64 61 74 61 53 6f 75 72 63 65 20      _dataSource 
26c60 3d 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61  = Path.GetFileNa
26c70 6d 65 57 69 74 68 6f 75 74 45 78 74 65 6e 73 69  meWithoutExtensi
26c80 6f 6e 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20  on(fileName);.. 
26c90 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
26ca0 20 20 20 20 20 20 20 5f 64 61 74 61 53 6f 75 72         _dataSour
26cb0 63 65 20 3d 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  ce = fileName;..
26cc0 0d 0a 20 20 20 20 20 20 20 20 5f 76 65 72 73 69  ..        _versi
26cd0 6f 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on++;....       
26ce0 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65   ConnectionState
26cf0 20 6f 6c 64 73 74 61 74 65 20 3d 20 5f 63 6f 6e   oldstate = _con
26d00 6e 65 63 74 69 6f 6e 53 74 61 74 65 3b 0d 0a 20  nectionState;.. 
26d10 20 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69         _connecti
26d20 6f 6e 53 74 61 74 65 20 3d 20 43 6f 6e 6e 65 63  onState = Connec
26d30 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e 3b 0d  tionState.Open;.
26d40 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
26d50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26d60 20 20 20 20 20 73 74 72 69 6e 67 20 73 74 72 56       string strV
26d70 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
26d80 20 62 6f 6f 6c 20 62 6f 6f 6c 56 61 6c 75 65 3b   bool boolValue;
26d90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74  ....          st
26da0 72 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b 65 79  rValue = FindKey
26db0 28 6f 70 74 73 2c 20 22 53 65 74 44 65 66 61 75  (opts, "SetDefau
26dc0 6c 74 73 22 2c 20 44 65 66 61 75 6c 74 53 65 74  lts", DefaultSet
26dd0 44 65 66 61 75 6c 74 73 2e 54 6f 53 74 72 69 6e  Defaults.ToStrin
26de0 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  g());..         
26df0 20 62 6f 6f 6c 56 61 6c 75 65 20 3d 20 53 51 4c   boolValue = SQL
26e00 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f  iteConvert.ToBoo
26e10 6c 65 61 6e 28 73 74 72 56 61 6c 75 65 29 3b 0d  lean(strValue);.
26e20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
26e30 28 62 6f 6f 6c 56 61 6c 75 65 29 0d 0a 20 20 20  (boolValue)..   
26e40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26e50 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53          using (S
26e60 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6d 64  QLiteCommand cmd
26e70 20 3d 20 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64   = CreateCommand
26e80 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
26e90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26ea0 20 20 20 20 20 20 20 20 69 66 20 28 5f 62 75 73          if (_bus
26eb0 79 54 69 6d 65 6f 75 74 20 21 3d 20 44 65 66 61  yTimeout != Defa
26ec0 75 6c 74 42 75 73 79 54 69 6d 65 6f 75 74 29 0d  ultBusyTimeout).
26ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26ee0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
26ef0 20 20 20 20 20 20 20 20 20 20 20 20 63 6d 64 2e              cmd.
26f00 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 20 48 65  CommandText = He
26f10 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
26f20 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
26f30 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
26f40 6c 74 75 72 65 2c 20 22 50 52 41 47 4d 41 20 62  lture, "PRAGMA b
26f50 75 73 79 5f 74 69 6d 65 6f 75 74 3d 7b 30 7d 22  usy_timeout={0}"
26f60 2c 20 5f 62 75 73 79 54 69 6d 65 6f 75 74 29 3b  , _busyTimeout);
26f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26f80 20 20 20 20 20 20 20 20 63 6d 64 2e 45 78 65 63          cmd.Exec
26f90 75 74 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0d 0a  uteNonQuery();..
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
26fc0 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 74           int int
26fd0 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  Value;....      
26fe0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26ff0 21 66 75 6c 6c 55 72 69 20 26 26 20 21 69 73 4d  !fullUri && !isM
27000 65 6d 6f 72 79 29 0d 0a 20 20 20 20 20 20 20 20  emory)..        
27010 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27030 20 20 20 73 74 72 56 61 6c 75 65 20 3d 20 46 69     strValue = Fi
27040 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 50 61 67  ndKey(opts, "Pag
27050 65 20 53 69 7a 65 22 2c 20 53 51 4c 69 74 65 43  e Size", SQLiteC
27060 6f 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28  onvert.ToString(
27070 44 65 66 61 75 6c 74 50 61 67 65 53 69 7a 65 29  DefaultPageSize)
27080 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
27090 20 20 20 20 20 20 20 20 20 20 69 6e 74 56 61 6c            intVal
270a0 75 65 20 3d 20 43 6f 6e 76 65 72 74 2e 54 6f 49  ue = Convert.ToI
270b0 6e 74 33 32 28 73 74 72 56 61 6c 75 65 2c 20 43  nt32(strValue, C
270c0 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
270d0 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20  iantCulture);.. 
270e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270f0 20 20 20 20 20 69 66 20 28 69 6e 74 56 61 6c 75       if (intValu
27100 65 20 21 3d 20 44 65 66 61 75 6c 74 50 61 67 65  e != DefaultPage
27110 53 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20  Size)..         
27120 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
27130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27140 20 20 20 20 20 20 20 20 20 20 63 6d 64 2e 43 6f            cmd.Co
27150 6d 6d 61 6e 64 54 65 78 74 20 3d 20 48 65 6c 70  mmandText = Help
27160 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
27170 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
27180 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
27190 75 72 65 2c 20 22 50 52 41 47 4d 41 20 70 61 67  ure, "PRAGMA pag
271a0 65 5f 73 69 7a 65 3d 7b 30 7d 22 2c 20 69 6e 74  e_size={0}", int
271b0 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
271c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271d0 20 20 20 63 6d 64 2e 45 78 65 63 75 74 65 4e 6f     cmd.ExecuteNo
271e0 6e 51 75 65 72 79 28 29 3b 0d 0a 20 20 20 20 20  nQuery();..     
271f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27200 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
27210 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
27220 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
27230 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b 65 79 28  Value = FindKey(
27240 6f 70 74 73 2c 20 22 4d 61 78 20 50 61 67 65 20  opts, "Max Page 
27250 43 6f 75 6e 74 22 2c 20 53 51 4c 69 74 65 43 6f  Count", SQLiteCo
27260 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28 44  nvert.ToString(D
27270 65 66 61 75 6c 74 4d 61 78 50 61 67 65 43 6f 75  efaultMaxPageCou
27280 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  nt));..         
27290 20 20 20 20 20 20 20 20 20 69 6e 74 56 61 6c 75           intValu
272a0 65 20 3d 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e  e = Convert.ToIn
272b0 74 33 32 28 73 74 72 56 61 6c 75 65 2c 20 43 75  t32(strValue, Cu
272c0 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
272d0 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20  antCulture);..  
272e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272f0 69 66 20 28 69 6e 74 56 61 6c 75 65 20 21 3d 20  if (intValue != 
27300 44 65 66 61 75 6c 74 4d 61 78 50 61 67 65 43 6f  DefaultMaxPageCo
27310 75 6e 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  unt)..          
27320 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27340 20 63 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74   cmd.CommandText
27350 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73   = HelperMethods
27360 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
27370 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
27380 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 50 52 41  antCulture, "PRA
27390 47 4d 41 20 6d 61 78 5f 70 61 67 65 5f 63 6f 75  GMA max_page_cou
273a0 6e 74 3d 7b 30 7d 22 2c 20 69 6e 74 56 61 6c 75  nt={0}", intValu
273b0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
273c0 20 20 20 20 20 20 20 20 20 20 20 63 6d 64 2e 45             cmd.E
273d0 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29  xecuteNonQuery()
273e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
273f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27400 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 56              strV
27410 61 6c 75 65 20 3d 20 46 69 6e 64 4b 65 79 28 6f  alue = FindKey(o
27420 70 74 73 2c 20 22 4c 65 67 61 63 79 20 46 6f 72  pts, "Legacy For
27430 6d 61 74 22 2c 20 44 65 66 61 75 6c 74 4c 65 67  mat", DefaultLeg
27440 61 63 79 46 6f 72 6d 61 74 2e 54 6f 53 74 72 69  acyFormat.ToStri
27450 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
27460 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 56 61            boolVa
27470 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76  lue = SQLiteConv
27480 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 73 74  ert.ToBoolean(st
27490 72 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  rValue);..      
274a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
274b0 62 6f 6f 6c 56 61 6c 75 65 20 21 3d 20 44 65 66  boolValue != Def
274c0 61 75 6c 74 4c 65 67 61 63 79 46 6f 72 6d 61 74  aultLegacyFormat
274d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
274e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
274f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6d                cm
27500 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 20  d.CommandText = 
27510 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
27520 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75  ringFormat(Cultu
27530 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
27540 43 75 6c 74 75 72 65 2c 20 22 50 52 41 47 4d 41  Culture, "PRAGMA
27550 20 6c 65 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72   legacy_file_for
27560 6d 61 74 3d 7b 30 7d 22 2c 20 62 6f 6f 6c 56 61  mat={0}", boolVa
27570 6c 75 65 20 3f 20 22 4f 4e 22 20 3a 20 22 4f 46  lue ? "ON" : "OF
27580 46 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  F");..          
27590 20 20 20 20 20 20 20 20 20 20 20 20 63 6d 64 2e              cmd.
275a0 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28  ExecuteNonQuery(
275b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
275c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
275d0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
275e0 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b 65 79 28  Value = FindKey(
275f0 6f 70 74 73 2c 20 22 53 79 6e 63 68 72 6f 6e 6f  opts, "Synchrono
27600 75 73 22 2c 20 44 65 66 61 75 6c 74 53 79 6e 63  us", DefaultSync
27610 68 72 6f 6e 6f 75 73 2e 54 6f 53 74 72 69 6e 67  hronous.ToString
27620 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
27630 20 20 20 20 20 20 20 20 65 6e 75 6d 56 61 6c 75          enumValu
27640 65 20 3d 20 54 72 79 50 61 72 73 65 45 6e 75 6d  e = TryParseEnum
27650 28 74 79 70 65 6f 66 28 53 51 4c 69 74 65 53 79  (typeof(SQLiteSy
27660 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 29 2c 20  nchronousEnum), 
27670 73 74 72 56 61 6c 75 65 2c 20 74 72 75 65 29 3b  strValue, true);
27680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27690 20 20 20 20 69 66 20 28 21 28 65 6e 75 6d 56 61      if (!(enumVa
276a0 6c 75 65 20 69 73 20 53 51 4c 69 74 65 53 79 6e  lue is SQLiteSyn
276b0 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 29 20 7c 7c  chronousEnum) ||
276c0 20 28 28 53 51 4c 69 74 65 53 79 6e 63 68 72 6f   ((SQLiteSynchro
276d0 6e 6f 75 73 45 6e 75 6d 29 65 6e 75 6d 56 61 6c  nousEnum)enumVal
276e0 75 65 20 21 3d 20 44 65 66 61 75 6c 74 53 79 6e  ue != DefaultSyn
276f0 63 68 72 6f 6e 6f 75 73 29 29 0d 0a 20 20 20 20  chronous))..    
27700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
27710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27720 20 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d 6d 61         cmd.Comma
27730 6e 64 54 65 78 74 20 3d 20 48 65 6c 70 65 72 4d  ndText = HelperM
27740 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
27750 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
27760 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
27770 2c 20 22 50 52 41 47 4d 41 20 73 79 6e 63 68 72  , "PRAGMA synchr
27780 6f 6e 6f 75 73 3d 7b 30 7d 22 2c 20 73 74 72 56  onous={0}", strV
27790 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
277a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6d                cm
277b0 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72  d.ExecuteNonQuer
277c0 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  y();..          
277d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
277e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
277f0 74 72 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b 65  trValue = FindKe
27800 79 28 6f 70 74 73 2c 20 22 43 61 63 68 65 20 53  y(opts, "Cache S
27810 69 7a 65 22 2c 20 53 51 4c 69 74 65 43 6f 6e 76  ize", SQLiteConv
27820 65 72 74 2e 54 6f 53 74 72 69 6e 67 28 44 65 66  ert.ToString(Def
27830 61 75 6c 74 43 61 63 68 65 53 69 7a 65 29 29 3b  aultCacheSize));
27840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27850 20 20 20 20 69 6e 74 56 61 6c 75 65 20 3d 20 43      intValue = C
27860 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28 73  onvert.ToInt32(s
27870 74 72 56 61 6c 75 65 2c 20 43 75 6c 74 75 72 65  trValue, Culture
27880 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
27890 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
278a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
278b0 6e 74 56 61 6c 75 65 20 21 3d 20 44 65 66 61 75  ntValue != Defau
278c0 6c 74 43 61 63 68 65 53 69 7a 65 29 0d 0a 20 20  ltCacheSize)..  
278d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
278f0 20 20 20 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d           cmd.Com
27900 6d 61 6e 64 54 65 78 74 20 3d 20 48 65 6c 70 65  mandText = Helpe
27910 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
27920 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
27930 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
27940 72 65 2c 20 22 50 52 41 47 4d 41 20 63 61 63 68  re, "PRAGMA cach
27950 65 5f 73 69 7a 65 3d 7b 30 7d 22 2c 20 69 6e 74  e_size={0}", int
27960 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
27970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
27980 6d 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  md.ExecuteNonQue
27990 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
279a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
279b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279c0 73 74 72 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b  strValue = FindK
279d0 65 79 28 6f 70 74 73 2c 20 22 4a 6f 75 72 6e 61  ey(opts, "Journa
279e0 6c 20 4d 6f 64 65 22 2c 20 44 65 66 61 75 6c 74  l Mode", Default
279f0 4a 6f 75 72 6e 61 6c 4d 6f 64 65 2e 54 6f 53 74  JournalMode.ToSt
27a00 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20  ring());..      
27a10 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 75 6d              enum
27a20 56 61 6c 75 65 20 3d 20 54 72 79 50 61 72 73 65  Value = TryParse
27a30 45 6e 75 6d 28 74 79 70 65 6f 66 28 53 51 4c 69  Enum(typeof(SQLi
27a40 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75  teJournalModeEnu
27a50 6d 29 2c 20 73 74 72 56 61 6c 75 65 2c 20 74 72  m), strValue, tr
27a60 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
27a70 20 20 20 20 20 20 20 20 69 66 20 28 21 28 65 6e          if (!(en
27a80 75 6d 56 61 6c 75 65 20 69 73 20 53 51 4c 69 74  umValue is SQLit
27a90 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d  eJournalModeEnum
27aa0 29 20 7c 7c 20 28 28 53 51 4c 69 74 65 4a 6f 75  ) || ((SQLiteJou
27ab0 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 29 65 6e 75  rnalModeEnum)enu
27ac0 6d 56 61 6c 75 65 20 21 3d 20 44 65 66 61 75 6c  mValue != Defaul
27ad0 74 4a 6f 75 72 6e 61 6c 4d 6f 64 65 29 29 0d 0a  tJournalMode))..
27ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27af0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27b00 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
27b10 67 20 70 72 61 67 6d 61 53 74 72 20 3d 20 22 50  g pragmaStr = "P
27b20 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  RAGMA journal_mo
27b30 64 65 3d 7b 30 7d 22 3b 0d 0a 0d 0a 23 69 66 20  de={0}";....#if 
27b40 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f  INTEROP_INCLUDE_
27b50 5a 49 50 56 46 53 0d 0a 20 20 20 20 20 20 20 20  ZIPVFS..        
27b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27b70 20 28 75 73 65 5a 69 70 56 66 73 29 0d 0a 20 20   (useZipVfs)..  
27b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b90 20 20 20 20 20 20 20 20 70 72 61 67 6d 61 53 74          pragmaSt
27ba0 72 20 3d 20 22 50 52 41 47 4d 41 20 7a 69 70 76  r = "PRAGMA zipv
27bb0 66 73 5f 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3d  fs_journal_mode=
27bc0 7b 30 7d 22 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  {0}";..#endif...
27bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27be0 20 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d 6d 61         cmd.Comma
27bf0 6e 64 54 65 78 74 20 3d 20 48 65 6c 70 65 72 4d  ndText = HelperM
27c00 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
27c10 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
27c20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
27c30 2c 20 70 72 61 67 6d 61 53 74 72 2c 20 73 74 72  , pragmaStr, str
27c40 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
27c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
27c60 6d 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  md.ExecuteNonQue
27c70 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
27c80 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ca0 73 74 72 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b  strValue = FindK
27cb0 65 79 28 6f 70 74 73 2c 20 22 46 6f 72 65 69 67  ey(opts, "Foreig
27cc0 6e 20 4b 65 79 73 22 2c 20 44 65 66 61 75 6c 74  n Keys", Default
27cd0 46 6f 72 65 69 67 6e 4b 65 79 73 2e 54 6f 53 74  ForeignKeys.ToSt
27ce0 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20  ring());..      
27cf0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
27d00 56 61 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f  Value = SQLiteCo
27d10 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28  nvert.ToBoolean(
27d20 73 74 72 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20  strValue);..    
27d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27d40 20 28 62 6f 6f 6c 56 61 6c 75 65 20 21 3d 20 44   (boolValue != D
27d50 65 66 61 75 6c 74 46 6f 72 65 69 67 6e 4b 65 79  efaultForeignKey
27d60 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
27d70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
27d90 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d  md.CommandText =
27da0 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
27db0 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
27dc0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
27dd0 74 43 75 6c 74 75 72 65 2c 20 22 50 52 41 47 4d  tCulture, "PRAGM
27de0 41 20 66 6f 72 65 69 67 6e 5f 6b 65 79 73 3d 7b  A foreign_keys={
27df0 30 7d 22 2c 20 62 6f 6f 6c 56 61 6c 75 65 20 3f  0}", boolValue ?
27e00 20 22 4f 4e 22 20 3a 20 22 4f 46 46 22 29 3b 0d   "ON" : "OFF");.
27e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e20 20 20 20 20 20 20 20 63 6d 64 2e 45 78 65 63 75         cmd.Execu
27e30 74 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0d 0a 20  teNonQuery();.. 
27e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27e60 20 20 20 20 20 20 20 20 73 74 72 56 61 6c 75 65          strValue
27e70 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c   = FindKey(opts,
27e80 20 22 52 65 63 75 72 73 69 76 65 20 54 72 69 67   "Recursive Trig
27e90 67 65 72 73 22 2c 20 44 65 66 61 75 6c 74 52 65  gers", DefaultRe
27ea0 63 75 72 73 69 76 65 54 72 69 67 67 65 72 73 2e  cursiveTriggers.
27eb0 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
27ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ed0 62 6f 6f 6c 56 61 6c 75 65 20 3d 20 53 51 4c 69  boolValue = SQLi
27ee0 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c  teConvert.ToBool
27ef0 65 61 6e 28 73 74 72 56 61 6c 75 65 29 3b 0d 0a  ean(strValue);..
27f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f10 20 20 69 66 20 28 62 6f 6f 6c 56 61 6c 75 65 20    if (boolValue 
27f20 21 3d 20 44 65 66 61 75 6c 74 52 65 63 75 72 73  != DefaultRecurs
27f30 69 76 65 54 72 69 67 67 65 72 73 29 0d 0a 20 20  iveTriggers)..  
27f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27f60 20 20 20 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d           cmd.Com
27f70 6d 61 6e 64 54 65 78 74 20 3d 20 48 65 6c 70 65  mandText = Helpe
27f80 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
27f90 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
27fa0 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
27fb0 72 65 2c 20 22 50 52 41 47 4d 41 20 72 65 63 75  re, "PRAGMA recu
27fc0 72 73 69 76 65 5f 74 72 69 67 67 65 72 73 3d 7b  rsive_triggers={
27fd0 30 7d 22 2c 20 62 6f 6f 6c 56 61 6c 75 65 20 3f  0}", boolValue ?
27fe0 20 22 4f 4e 22 20 3a 20 22 4f 46 46 22 29 3b 0d   "ON" : "OFF");.
27ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28000 20 20 20 20 20 20 20 63 6d 64 2e 45 78 65 63 75         cmd.Execu
28010 74 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0d 0a 20  teNonQuery();.. 
28020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28030 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
28040 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
28050 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
28060 20 28 5f 70 72 6f 67 72 65 73 73 48 61 6e 64 6c   (_progressHandl
28070 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  er != null)..   
28080 20 20 20 20 20 20 20 20 20 20 20 5f 73 71 6c 2e             _sql.
28090 53 65 74 50 72 6f 67 72 65 73 73 48 6f 6f 6b 28  SetProgressHook(
280a0 5f 70 72 6f 67 72 65 73 73 4f 70 73 2c 20 5f 70  _progressOps, _p
280b0 72 6f 67 72 65 73 73 43 61 6c 6c 62 61 63 6b 29  rogressCallback)
280c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
280d0 66 20 28 5f 61 75 74 68 6f 72 69 7a 65 72 48 61  f (_authorizerHa
280e0 6e 64 6c 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ndler != null)..
280f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 73                _s
28100 71 6c 2e 53 65 74 41 75 74 68 6f 72 69 7a 65 72  ql.SetAuthorizer
28110 48 6f 6f 6b 28 5f 61 75 74 68 6f 72 69 7a 65 72  Hook(_authorizer
28120 43 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20  Callback);....  
28130 20 20 20 20 20 20 20 20 69 66 20 28 5f 63 6f 6d          if (_com
28140 6d 69 74 48 61 6e 64 6c 65 72 20 21 3d 20 6e 75  mitHandler != nu
28150 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
28160 20 5f 73 71 6c 2e 53 65 74 43 6f 6d 6d 69 74 48   _sql.SetCommitH
28170 6f 6f 6b 28 5f 63 6f 6d 6d 69 74 43 61 6c 6c 62  ook(_commitCallb
28180 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ack);....       
28190 20 20 20 69 66 20 28 5f 75 70 64 61 74 65 48 61     if (_updateHa
281a0 6e 64 6c 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ndler != null)..
281b0 20 20 20 20 20 20 20 20 20 20 20 20 5f 73 71 6c              _sql
281c0 2e 53 65 74 55 70 64 61 74 65 48 6f 6f 6b 28 5f  .SetUpdateHook(_
281d0 75 70 64 61 74 65 43 61 6c 6c 62 61 63 6b 29 3b  updateCallback);
281e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
281f0 20 28 5f 72 6f 6c 6c 62 61 63 6b 48 61 6e 64 6c   (_rollbackHandl
28200 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  er != null)..   
28210 20 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 53 65           _sql.Se
28220 74 52 6f 6c 6c 62 61 63 6b 48 6f 6f 6b 28 5f 72  tRollbackHook(_r
28230 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b 29  ollbackCallback)
28240 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
28250 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
28260 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 53  ORK..          S
28270 79 73 74 65 6d 2e 54 72 61 6e 73 61 63 74 69 6f  ystem.Transactio
28280 6e 73 2e 54 72 61 6e 73 61 63 74 69 6f 6e 20 74  ns.Transaction t
28290 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 54 72 61  ransaction = Tra
282a0 6e 73 61 63 74 69 6f 6e 73 2e 54 72 61 6e 73 61  nsactions.Transa
282b0 63 74 69 6f 6e 2e 43 75 72 72 65 6e 74 3b 0d 0a  ction.Current;..
282c0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
282d0 74 72 61 6e 73 61 63 74 69 6f 6e 20 21 3d 20 6e  transaction != n
282e0 75 6c 6c 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ull &&..        
282f0 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 76        SQLiteConv
28300 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 46 69  ert.ToBoolean(Fi
28310 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 45 6e 6c  ndKey(opts, "Enl
28320 69 73 74 22 2c 20 44 65 66 61 75 6c 74 45 6e 6c  ist", DefaultEnl
28330 69 73 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 29  ist.ToString()))
28340 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
28350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 6e                En
28360 6c 69 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 28  listTransaction(
28370 74 72 61 6e 73 61 63 74 69 6f 6e 29 3b 0d 0a 20  transaction);.. 
28380 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64           }..#end
28390 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
283a0 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65  _connectionState
283b0 20 3d 20 6f 6c 64 73 74 61 74 65 3b 0d 0a 0d 0a   = oldstate;....
283c0 20 20 20 20 20 20 20 20 20 20 53 74 61 74 65 43            StateC
283d0 68 61 6e 67 65 45 76 65 6e 74 41 72 67 73 20 65  hangeEventArgs e
283e0 76 65 6e 74 41 72 67 73 20 3d 20 6e 75 6c 6c 3b  ventArgs = null;
283f0 0d 0a 20 20 20 20 20 20 20 20 20 20 4f 6e 53 74  ..          OnSt
28400 61 74 65 43 68 61 6e 67 65 28 43 6f 6e 6e 65 63  ateChange(Connec
28410 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e 2c 20  tionState.Open, 
28420 72 65 66 20 65 76 65 6e 74 41 72 67 73 29 3b 0d  ref eventArgs);.
28430 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 4f 6e 43  ...          OnC
28440 68 61 6e 67 65 64 28 74 68 69 73 2c 20 6e 65 77  hanged(this, new
28450 20 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74   ConnectionEvent
28460 41 72 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20  Args(..         
28470 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
28480 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 2e 4f  ctionEventType.O
28490 70 65 6e 65 64 2c 20 65 76 65 6e 74 41 72 67 73  pened, eventArgs
284a0 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75  , null, null, nu
284b0 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll,..           
284c0 20 20 20 6e 75 6c 6c 2c 20 5f 63 6f 6e 6e 65 63     null, _connec
284d0 74 69 6f 6e 53 74 72 69 6e 67 2c 20 6e 65 77 20  tionString, new 
284e0 6f 62 6a 65 63 74 5b 5d 20 7b 20 6f 70 74 73 20  object[] { opts 
284f0 7d 29 29 3b 0d 0a 0d 0a 23 69 66 20 44 45 42 55  }));....#if DEBU
28500 47 0d 0a 20 20 20 20 20 20 20 20 20 20 5f 64 65  G..          _de
28510 62 75 67 53 74 72 69 6e 67 20 3d 20 48 65 6c 70  bugString = Help
28520 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
28530 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
28540 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
28550 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
28560 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
28570 20 20 20 20 22 6f 70 65 6e 54 68 72 65 61 64 49      "openThreadI
28580 64 20 3d 20 7b 30 7d 2c 20 63 6f 6e 6e 65 63 74  d = {0}, connect
28590 69 6f 6e 53 74 72 69 6e 67 20 3d 20 7b 31 7d 22  ionString = {1}"
285a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
285b0 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 47   HelperMethods.G
285c0 65 74 54 68 72 65 61 64 49 64 28 29 2c 20 5f 63  etThreadId(), _c
285d0 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 29  onnectionString)
285e0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
285f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61     }..        ca
28600 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  tch..        {..
28610 20 20 20 20 20 20 20 20 20 20 5f 63 6f 6e 6e 65            _conne
28620 63 74 69 6f 6e 53 74 61 74 65 20 3d 20 6f 6c 64  ctionState = old
28630 73 74 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  state;..        
28640 20 20 74 68 72 6f 77 3b 0d 0a 20 20 20 20 20 20    throw;..      
28650 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
28660 20 20 20 20 63 61 74 63 68 20 28 53 51 4c 69 74      catch (SQLit
28670 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20  eException)..   
28680 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 6c     {..        Cl
28690 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ose();..        
286a0 74 68 72 6f 77 3b 0d 0a 20 20 20 20 20 20 7d 0d  throw;..      }.
286b0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
286c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
286d0 20 2f 2f 2f 20 4f 70 65 6e 73 20 74 68 65 20 63   /// Opens the c
286e0 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 20  onnection using 
286f0 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66  the parameters f
28700 6f 75 6e 64 20 69 6e 20 74 68 65 20 3c 73 65 65  ound in the <see
28710 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69 6f   cref="Connectio
28720 6e 53 74 72 69 6e 67 22 20 2f 3e 20 61 6e 64 20  nString" /> and 
28730 74 68 65 6e 20 72 65 74 75 72 6e 73 20 69 74 2e  then returns it.
28740 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
28750 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
28760 65 74 75 72 6e 73 3e 54 68 65 20 63 75 72 72 65  eturns>The curre
28770 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
28780 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  ject.</returns>.
28790 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69  .    public SQLi
287a0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 4f 70 65  teConnection Ope
287b0 6e 41 6e 64 52 65 74 75 72 6e 28 29 0d 0a 20 20  nAndReturn()..  
287c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
287d0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 4f 70  ckDisposed(); Op
287e0 65 6e 28 29 3b 20 72 65 74 75 72 6e 20 74 68 69  en(); return thi
287f0 73 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  s;..    }....   
28800 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28810 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65 74      /// Gets/set
28820 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 6f  s the default co
28830 6d 6d 61 6e 64 20 74 69 6d 65 6f 75 74 20 66 6f  mmand timeout fo
28840 72 20 6e 65 77 6c 79 2d 63 72 65 61 74 65 64 20  r newly-created 
28850 63 6f 6d 6d 61 6e 64 73 2e 20 20 54 68 69 73 20  commands.  This 
28860 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73  is especially us
28870 65 66 75 6c 20 66 6f 72 0d 0a 20 20 20 20 2f 2f  eful for..    //
28880 2f 20 63 6f 6d 6d 61 6e 64 73 20 75 73 65 64 20  / commands used 
28890 69 6e 74 65 72 6e 61 6c 6c 79 20 73 75 63 68 20  internally such 
288a0 61 73 20 69 6e 73 69 64 65 20 61 20 53 51 4c 69  as inside a SQLi
288b0 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 2c 20 77  teTransaction, w
288c0 68 65 72 65 20 73 65 74 74 69 6e 67 20 74 68 65  here setting the
288d0 20 74 69 6d 65 6f 75 74 20 69 73 20 6e 6f 74 20   timeout is not 
288e0 70 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20 2f  possible...    /
288f0 2f 2f 20 54 68 69 73 20 63 61 6e 20 61 6c 73 6f  // This can also
28900 20 62 65 20 73 65 74 20 69 6e 20 74 68 65 20 43   be set in the C
28910 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20  onnectionString 
28920 77 69 74 68 20 22 44 65 66 61 75 6c 74 20 54 69  with "Default Ti
28930 6d 65 6f 75 74 22 0d 0a 20 20 20 20 2f 2f 2f 20  meout"..    /// 
28940 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
28950 70 75 62 6c 69 63 20 69 6e 74 20 44 65 66 61 75  public int Defau
28960 6c 74 54 69 6d 65 6f 75 74 0d 0a 20 20 20 20 7b  ltTimeout..    {
28970 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 43 68  ..      get { Ch
28980 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
28990 65 74 75 72 6e 20 5f 64 65 66 61 75 6c 74 54 69  eturn _defaultTi
289a0 6d 65 6f 75 74 3b 20 7d 0d 0a 20 20 20 20 20 20  meout; }..      
289b0 73 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  set { CheckDispo
289c0 73 65 64 28 29 3b 20 5f 64 65 66 61 75 6c 74 54  sed(); _defaultT
289d0 69 6d 65 6f 75 74 20 3d 20 76 61 6c 75 65 3b 20  imeout = value; 
289e0 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
289f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
28a00 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65 74 73     /// Gets/sets
28a10 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 75 73   the default bus
28a20 79 20 74 69 6d 65 6f 75 74 20 74 6f 20 75 73 65  y timeout to use
28a30 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65   with the SQLite
28a40 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20   core library.  
28a50 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 75 73 65  This is only use
28a60 64 20 77 68 65 6e 0d 0a 20 20 20 20 2f 2f 2f 20  d when..    /// 
28a70 6f 70 65 6e 69 6e 67 20 61 20 63 6f 6e 6e 65 63  opening a connec
28a80 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
28a90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
28aa0 75 62 6c 69 63 20 69 6e 74 20 42 75 73 79 54 69  ublic int BusyTi
28ab0 6d 65 6f 75 74 0d 0a 20 20 20 20 7b 0d 0a 20 20  meout..    {..  
28ac0 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
28ad0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
28ae0 75 72 6e 20 5f 62 75 73 79 54 69 6d 65 6f 75 74  urn _busyTimeout
28af0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74  ; }..        set
28b00 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
28b10 28 29 3b 20 5f 62 75 73 79 54 69 6d 65 6f 75 74  (); _busyTimeout
28b20 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
28b30 20 7d 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46   }....#if !PLATF
28b40 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
28b50 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  WORK..    /// <s
28b60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
28b70 20 3c 62 3e 45 58 50 45 52 49 4d 45 4e 54 41 4c   <b>EXPERIMENTAL
28b80 3c 2f 62 3e 20 2d 2d 0d 0a 20 20 20 20 2f 2f 2f  </b> --..    ///
28b90 20 54 68 65 20 77 61 69 74 20 74 69 6d 65 6f 75   The wait timeou
28ba0 74 20 74 6f 20 75 73 65 20 77 69 74 68 20 3c 73  t to use with <s
28bb0 65 65 20 63 72 65 66 3d 22 57 61 69 74 46 6f 72  ee cref="WaitFor
28bc0 45 6e 6c 69 73 74 6d 65 6e 74 52 65 73 65 74 22  EnlistmentReset"
28bd0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28be0 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 6f 6e 6c   /// This is onl
28bf0 79 20 75 73 65 64 20 77 68 65 6e 20 77 61 69 74  y used when wait
28c00 69 6e 67 20 66 6f 72 20 74 68 65 20 65 6e 6c 69  ing for the enli
28c10 73 74 6d 65 6e 74 20 74 6f 20 62 65 20 72 65 73  stment to be res
28c20 65 74 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  et prior to..   
28c30 20 2f 2f 2f 20 65 6e 6c 69 73 74 69 6e 67 20 69   /// enlisting i
28c40 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  n a transaction,
28c50 20 61 6e 64 20 74 68 65 6e 20 6f 6e 6c 79 20 77   and then only w
28c60 68 65 6e 20 74 68 65 20 61 70 70 72 6f 70 72 69  hen the appropri
28c70 61 74 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a  ate connection..
28c80 20 20 20 20 2f 2f 2f 20 66 6c 61 67 20 69 73 20      /// flag is 
28c90 73 65 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  set...    /// </
28ca0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
28cb0 62 6c 69 63 20 69 6e 74 20 57 61 69 74 54 69 6d  blic int WaitTim
28cc0 65 6f 75 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  eout..    {..   
28cd0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
28ce0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
28cf0 72 6e 20 5f 77 61 69 74 54 69 6d 65 6f 75 74 3b  rn _waitTimeout;
28d00 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20   }..        set 
28d10 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
28d20 29 3b 20 5f 77 61 69 74 54 69 6d 65 6f 75 74 20  ); _waitTimeout 
28d30 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
28d40 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
28d50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
28d60 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 78 69      /// The maxi
28d70 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 72 65  mum number of re
28d80 74 72 69 65 73 20 77 68 65 6e 20 70 72 65 70 61  tries when prepa
28d90 72 69 6e 67 20 53 51 4c 20 74 6f 20 62 65 20 65  ring SQL to be e
28da0 78 65 63 75 74 65 64 2e 20 20 54 68 69 73 0d 0a  xecuted.  This..
28db0 20 20 20 20 2f 2f 2f 20 6e 6f 72 6d 61 6c 6c 79      /// normally
28dc0 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 6f   only applies to
28dd0 20 70 72 65 70 61 72 61 74 69 6f 6e 20 65 72 72   preparation err
28de0 6f 72 73 20 72 65 73 75 6c 74 69 6e 67 20 66 72  ors resulting fr
28df0 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 0d  om the database.
28e00 0a 20 20 20 20 2f 2f 2f 20 73 63 68 65 6d 61 20  .    /// schema 
28e10 62 65 69 6e 67 20 63 68 61 6e 67 65 64 2e 0d 0a  being changed...
28e20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
28e30 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  y>..    public i
28e40 6e 74 20 50 72 65 70 61 72 65 52 65 74 72 69 65  nt PrepareRetrie
28e50 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
28e60 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
28e70 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
28e80 5f 70 72 65 70 61 72 65 52 65 74 72 69 65 73 3b  _prepareRetries;
28e90 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20   }..        set 
28ea0 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
28eb0 29 3b 20 5f 70 72 65 70 61 72 65 52 65 74 72 69  ); _prepareRetri
28ec0 65 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  es = value; }.. 
28ed0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
28ee0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
28ef0 2f 2f 20 54 68 65 20 61 70 70 72 6f 78 69 6d 61  // The approxima
28f00 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 69 72  te number of vir
28f10 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73  tual machine ins
28f20 74 72 75 63 74 69 6f 6e 73 20 62 65 74 77 65 65  tructions betwee
28f30 6e 20 70 72 6f 67 72 65 73 73 0d 0a 20 20 20 20  n progress..    
28f40 2f 2f 2f 20 65 76 65 6e 74 73 2e 20 20 49 6e 20  /// events.  In 
28f50 6f 72 64 65 72 20 66 6f 72 20 70 72 6f 67 72 65  order for progre
28f60 73 73 20 65 76 65 6e 74 73 20 74 6f 20 61 63 74  ss events to act
28f70 75 61 6c 6c 79 20 66 69 72 65 2c 20 74 68 65 20  ually fire, the 
28f80 65 76 65 6e 74 20 68 61 6e 64 6c 65 72 0d 0a 20  event handler.. 
28f90 20 20 20 2f 2f 2f 20 6d 75 73 74 20 62 65 20 61     /// must be a
28fa0 64 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65 65  dded to the <see
28fb0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
28fc0 6e 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65 73 73  nection.Progress
28fd0 22 20 2f 3e 20 65 76 65 6e 74 20 61 73 0d 0a 20  " /> event as.. 
28fe0 20 20 20 2f 2f 2f 20 77 65 6c 6c 2e 20 20 54 68     /// well.  Th
28ff0 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 6f 6e  is value will on
29000 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e 20  ly be used when 
29010 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e  the underlying n
29020 61 74 69 76 65 20 70 72 6f 67 72 65 73 73 0d 0a  ative progress..
29030 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 62 61 63 6b      /// callback
29040 20 6e 65 65 64 73 20 74 6f 20 62 65 20 63 68 61   needs to be cha
29050 6e 67 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  nged...    /// <
29060 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
29070 75 62 6c 69 63 20 69 6e 74 20 50 72 6f 67 72 65  ublic int Progre
29080 73 73 4f 70 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  ssOps..    {..  
29090 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
290a0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
290b0 75 72 6e 20 5f 70 72 6f 67 72 65 73 73 4f 70 73  urn _progressOps
290c0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74  ; }..        set
290d0 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
290e0 28 29 3b 20 5f 70 72 6f 67 72 65 73 73 4f 70 73  (); _progressOps
290f0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
29100 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
29110 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
29120 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
29130 20 62 75 69 6c 74 2d 69 6e 20 28 69 2e 65 2e 20   built-in (i.e. 
29140 66 72 61 6d 65 77 6f 72 6b 20 70 72 6f 76 69 64  framework provid
29150 65 64 29 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  ed) connection s
29160 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 70  tring..    /// p
29170 61 72 73 65 72 20 73 68 6f 75 6c 64 20 62 65 20  arser should be 
29180 75 73 65 64 20 77 68 65 6e 20 6f 70 65 6e 69 6e  used when openin
29190 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  g the connection
291a0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
291b0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
291c0 63 20 62 6f 6f 6c 20 50 61 72 73 65 56 69 61 46  c bool ParseViaF
291d0 72 61 6d 65 77 6f 72 6b 0d 0a 20 20 20 20 7b 0d  ramework..    {.
291e0 0a 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43  .        get { C
291f0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
29200 72 65 74 75 72 6e 20 5f 70 61 72 73 65 56 69 61  return _parseVia
29210 46 72 61 6d 65 77 6f 72 6b 3b 20 7d 0d 0a 20 20  Framework; }..  
29220 20 20 20 20 20 20 73 65 74 20 7b 20 43 68 65 63        set { Chec
29230 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 5f 70 61  kDisposed(); _pa
29240 72 73 65 56 69 61 46 72 61 6d 65 77 6f 72 6b 20  rseViaFramework 
29250 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
29260 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
29270 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
29280 47 65 74 73 2f 73 65 74 73 20 74 68 65 20 65 78  Gets/sets the ex
29290 74 72 61 20 62 65 68 61 76 69 6f 72 61 6c 20 66  tra behavioral f
292a0 6c 61 67 73 20 66 6f 72 20 74 68 69 73 20 63 6f  lags for this co
292b0 6e 6e 65 63 74 69 6f 6e 2e 20 20 53 65 65 20 74  nnection.  See t
292c0 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  he..    /// <see
292d0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
292e0 6e 65 63 74 69 6f 6e 46 6c 61 67 73 22 20 2f 3e  nectionFlags" />
292f0 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 66 6f 72   enumeration for
29300 20 61 20 6c 69 73 74 20 6f 66 0d 0a 20 20 20 20   a list of..    
29310 2f 2f 2f 20 70 6f 73 73 69 62 6c 65 20 76 61 6c  /// possible val
29320 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ues...    /// </
29330 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
29340 62 6c 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65  blic SQLiteConne
29350 63 74 69 6f 6e 46 6c 61 67 73 20 46 6c 61 67 73  ctionFlags Flags
29360 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
29370 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
29380 65 64 28 29 3b 20 72 65 74 75 72 6e 20 5f 66 6c  ed(); return _fl
29390 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65  ags; }..      se
293a0 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
293b0 64 28 29 3b 20 5f 66 6c 61 67 73 20 3d 20 76 61  d(); _flags = va
293c0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  lue; }..    }...
293d0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
293e0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73  y>..    /// Gets
293f0 2f 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c  /sets the defaul
29400 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
29410 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65 63 74  for this connect
29420 69 6f 6e 2e 20 20 54 68 69 73 20 76 61 6c 75 65  ion.  This value
29430 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 6f  ..    /// will o
29440 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68 65 6e  nly be used when
29450 20 6e 6f 74 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20   not null...    
29460 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
29470 20 20 20 20 70 75 62 6c 69 63 20 44 62 54 79 70      public DbTyp
29480 65 3f 20 44 65 66 61 75 6c 74 44 62 54 79 70 65  e? DefaultDbType
29490 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
294a0 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
294b0 65 64 28 29 3b 20 72 65 74 75 72 6e 20 5f 64 65  ed(); return _de
294c0 66 61 75 6c 74 44 62 54 79 70 65 3b 20 7d 0d 0a  faultDbType; }..
294d0 20 20 20 20 20 20 73 65 74 20 7b 20 43 68 65 63        set { Chec
294e0 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 5f 64 65  kDisposed(); _de
294f0 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 76 61  faultDbType = va
29500 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  lue; }..    }...
29510 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
29520 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73  y>..    /// Gets
29530 2f 73 65 74 73 20 74 68 65 20 64 65 66 61 75 6c  /sets the defaul
29540 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
29550 6e 61 6d 65 20 66 6f 72 20 74 68 69 73 20 63 6f  name for this co
29560 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 69 73 0d  nnection.  This.
29570 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77  .    /// value w
29580 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  ill only be used
29590 20 77 68 65 6e 20 6e 6f 74 20 6e 75 6c 6c 2e 0d   when not null..
295a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
295b0 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
295c0 73 74 72 69 6e 67 20 44 65 66 61 75 6c 74 54 79  string DefaultTy
295d0 70 65 4e 61 6d 65 0d 0a 20 20 20 20 7b 0d 0a 20  peName..    {.. 
295e0 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
295f0 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
29600 72 6e 20 5f 64 65 66 61 75 6c 74 54 79 70 65 4e  rn _defaultTypeN
29610 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65  ame; }..      se
29620 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
29630 64 28 29 3b 20 5f 64 65 66 61 75 6c 74 54 79 70  d(); _defaultTyp
29640 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
29650 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
29660 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29670 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65 74 73 20    /// Gets/sets 
29680 74 68 65 20 56 46 53 20 6e 61 6d 65 20 66 6f 72  the VFS name for
29690 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
296a0 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69  .  This value wi
296b0 6c 6c 20 6f 6e 6c 79 20 62 65 0d 0a 20 20 20 20  ll only be..    
296c0 2f 2f 2f 20 75 73 65 64 20 77 68 65 6e 20 6f 70  /// used when op
296d0 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ening the databa
296e0 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
296f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
29700 6c 69 63 20 73 74 72 69 6e 67 20 56 66 73 4e 61  lic string VfsNa
29710 6d 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  me..    {..     
29720 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
29730 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 5f  osed(); return _
29740 76 66 73 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20  vfsName; }..    
29750 20 20 73 65 74 20 7b 20 43 68 65 63 6b 44 69 73    set { CheckDis
29760 70 6f 73 65 64 28 29 3b 20 5f 76 66 73 4e 61 6d  posed(); _vfsNam
29770 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
29780 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
29790 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
297a0 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65  / Returns non-ze
297b0 72 6f 20 69 66 20 74 68 65 20 75 6e 64 65 72 6c  ro if the underl
297c0 79 69 6e 67 20 6e 61 74 69 76 65 20 63 6f 6e 6e  ying native conn
297d0 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73  ection handle is
297e0 0d 0a 20 20 20 20 2f 2f 2f 20 6f 77 6e 65 64 20  ..    /// owned 
297f0 62 79 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  by this instance
29800 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
29810 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
29820 63 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  c bool OwnHandle
29830 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
29840 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   get..        {.
29850 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
29860 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
29870 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
29880 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
29890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298a0 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
298b0 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
298c0 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20 63 6f  ion("Database co
298d0 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c  nnection not val
298e0 69 64 20 66 6f 72 20 63 68 65 63 6b 69 6e 67 20  id for checking 
298f0 68 61 6e 64 6c 65 2e 22 29 3b 0d 0a 0d 0a 20 20  handle.");....  
29900 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
29910 20 5f 73 71 6c 2e 4f 77 6e 48 61 6e 64 6c 65 3b   _sql.OwnHandle;
29920 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
29930 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
29940 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
29950 20 52 65 74 75 72 6e 73 20 74 68 65 20 76 65 72   Returns the ver
29960 73 69 6f 6e 20 6f 66 20 74 68 65 20 75 6e 64 65  sion of the unde
29970 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 64 61  rlying SQLite da
29980 74 61 62 61 73 65 20 65 6e 67 69 6e 65 0d 0a 20  tabase engine.. 
29990 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
299a0 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  >..#if !PLATFORM
299b0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
299c0 4b 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c  K..    [Browsabl
299d0 65 28 66 61 6c 73 65 29 2c 20 44 65 73 69 67 6e  e(false), Design
299e0 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56  erSerializationV
299f0 69 73 69 62 69 6c 69 74 79 28 44 65 73 69 67 6e  isibility(Design
29a00 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56  erSerializationV
29a10 69 73 69 62 69 6c 69 74 79 2e 48 69 64 64 65 6e  isibility.Hidden
29a20 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  )]..#endif..    
29a30 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20  public override 
29a40 73 74 72 69 6e 67 20 53 65 72 76 65 72 56 65 72  string ServerVer
29a50 73 69 6f 6e 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  sion..    {..   
29a60 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d     get..      {.
29a70 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69  .        CheckDi
29a80 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
29a90 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
29aa0 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
29ab0 20 20 2f 2f 69 66 20 28 5f 63 6f 6e 6e 65 63 74    //if (_connect
29ac0 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e  ionState != Conn
29ad0 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e  ectionState.Open
29ae0 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 74  )..        //  t
29af0 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
29b00 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
29b10 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on();....       
29b20 20 2f 2f 72 65 74 75 72 6e 20 5f 73 71 6c 2e 56   //return _sql.V
29b30 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 7d  ersion;..      }
29b40 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
29b50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29b60 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
29b70 65 20 72 6f 77 69 64 20 6f 66 20 74 68 65 20 6d  e rowid of the m
29b80 6f 73 74 20 72 65 63 65 6e 74 20 73 75 63 63 65  ost recent succe
29b90 73 73 66 75 6c 20 49 4e 53 45 52 54 20 69 6e 74  ssful INSERT int
29ba0 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  o the database f
29bb0 72 6f 6d 20 74 68 69 73 20 63 6f 6e 6e 65 63 74  rom this connect
29bc0 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
29bd0 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50  summary>..#if !P
29be0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
29bf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42  RAMEWORK..    [B
29c00 72 6f 77 73 61 62 6c 65 28 66 61 6c 73 65 29 2c  rowsable(false),
29c10 20 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69   DesignerSeriali
29c20 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
29c30 28 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69  (DesignerSeriali
29c40 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
29c50 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69  .Hidden)]..#endi
29c60 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6c 6f  f..    public lo
29c70 6e 67 20 4c 61 73 74 49 6e 73 65 72 74 52 6f 77  ng LastInsertRow
29c80 49 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  Id..    {..     
29c90 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
29ca0 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
29cb0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
29cc0 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e     if (_sql == n
29cd0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
29ce0 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
29cf0 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
29d00 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20 63 6f  ion("Database co
29d10 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c  nnection not val
29d20 69 64 20 66 6f 72 20 67 65 74 74 69 6e 67 20 6c  id for getting l
29d30 61 73 74 20 69 6e 73 65 72 74 20 72 6f 77 69 64  ast insert rowid
29d40 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  .");....        
29d50 72 65 74 75 72 6e 20 5f 73 71 6c 2e 4c 61 73 74  return _sql.Last
29d60 49 6e 73 65 72 74 52 6f 77 49 64 3b 0d 0a 20 20  InsertRowId;..  
29d70 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
29d80 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
29d90 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
29da0 6d 65 74 68 6f 64 20 63 61 75 73 65 73 20 61 6e  method causes an
29db0 79 20 70 65 6e 64 69 6e 67 20 64 61 74 61 62 61  y pending databa
29dc0 73 65 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20  se operation to 
29dd0 61 62 6f 72 74 20 61 6e 64 20 72 65 74 75 72 6e  abort and return
29de0 20 61 74 0d 0a 20 20 20 20 2f 2f 2f 20 69 74 73   at..    /// its
29df0 20 65 61 72 6c 69 65 73 74 20 6f 70 70 6f 72 74   earliest opport
29e00 75 6e 69 74 79 2e 20 20 54 68 69 73 20 72 6f 75  unity.  This rou
29e10 74 69 6e 65 20 69 73 20 74 79 70 69 63 61 6c 6c  tine is typicall
29e20 79 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  y called in resp
29e30 6f 6e 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f  onse..    /// to
29e40 20 61 20 75 73 65 72 20 61 63 74 69 6f 6e 20 73   a user action s
29e50 75 63 68 20 61 73 20 70 72 65 73 73 69 6e 67 20  uch as pressing 
29e60 22 43 61 6e 63 65 6c 22 20 6f 72 20 43 74 72 6c  "Cancel" or Ctrl
29e70 2d 43 20 77 68 65 72 65 20 74 68 65 20 75 73 65  -C where the use
29e80 72 20 77 61 6e 74 73 0d 0a 20 20 20 20 2f 2f 2f  r wants..    ///
29e90 20 61 20 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70   a long query op
29ea0 65 72 61 74 69 6f 6e 20 74 6f 20 68 61 6c 74 20  eration to halt 
29eb0 69 6d 6d 65 64 69 61 74 65 6c 79 2e 20 20 49 74  immediately.  It
29ec0 20 69 73 20 73 61 66 65 20 74 6f 20 63 61 6c 6c   is safe to call
29ed0 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 72   this..    /// r
29ee0 6f 75 74 69 6e 65 20 66 72 6f 6d 20 61 6e 79 20  outine from any 
29ef0 74 68 72 65 61 64 2e 20 20 48 6f 77 65 76 65 72  thread.  However
29f00 2c 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65  , it is not safe
29f10 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 72 6f   to call this ro
29f20 75 74 69 6e 65 0d 0a 20 20 20 20 2f 2f 2f 20 77  utine..    /// w
29f30 69 74 68 20 61 20 64 61 74 61 62 61 73 65 20 63  ith a database c
29f40 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69  onnection that i
29f50 73 20 63 6c 6f 73 65 64 20 6f 72 20 6d 69 67 68  s closed or migh
29f60 74 20 63 6c 6f 73 65 20 62 65 66 6f 72 65 20 74  t close before t
29f70 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20  his method..    
29f80 2f 2f 2f 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20  /// returns...  
29f90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29fa0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
29fb0 64 20 43 61 6e 63 65 6c 28 29 0d 0a 20 20 20 20  d Cancel()..    
29fc0 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b  {..        Check
29fd0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
29fe0 20 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20         if (_sql 
29ff0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2a000 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2a010 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2a020 45 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62  Exception("Datab
2a030 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e  ase connection n
2a040 6f 74 20 76 61 6c 69 64 20 66 6f 72 20 71 75 65  ot valid for que
2a050 72 79 20 63 61 6e 63 65 6c 6c 61 74 69 6f 6e 2e  ry cancellation.
2a060 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5f  ");....        _
2a070 73 71 6c 2e 43 61 6e 63 65 6c 28 29 3b 20 2f 2a  sql.Cancel(); /*
2a080 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 7d   throw */..    }
2a090 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2a0a0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
2a0b0 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
2a0c0 72 20 6f 66 20 72 6f 77 73 20 63 68 61 6e 67 65  r of rows change
2a0d0 64 20 62 79 20 74 68 65 20 6c 61 73 74 20 49 4e  d by the last IN
2a0e0 53 45 52 54 2c 20 55 50 44 41 54 45 2c 20 6f 72  SERT, UPDATE, or
2a0f0 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
2a100 74 20 65 78 65 63 75 74 65 64 20 6f 6e 0d 0a 20  t executed on.. 
2a110 20 20 20 2f 2f 2f 20 74 68 69 73 20 63 6f 6e 6e     /// this conn
2a120 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  ection...    ///
2a130 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66   </summary>..#if
2a140 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2a150 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a160 20 5b 42 72 6f 77 73 61 62 6c 65 28 66 61 6c 73   [Browsable(fals
2a170 65 29 2c 20 44 65 73 69 67 6e 65 72 53 65 72 69  e), DesignerSeri
2a180 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c  alizationVisibil
2a190 69 74 79 28 44 65 73 69 67 6e 65 72 53 65 72 69  ity(DesignerSeri
2a1a0 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c  alizationVisibil
2a1b0 69 74 79 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65  ity.Hidden)]..#e
2a1c0 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63  ndif..    public
2a1d0 20 69 6e 74 20 43 68 61 6e 67 65 73 0d 0a 20 20   int Changes..  
2a1e0 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a    {..      get..
2a1f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a200 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2a210 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
2a220 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
2a230 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2a240 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
2a250 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 44  tionException("D
2a260 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2a270 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72  on not valid for
2a280 20 67 65 74 74 69 6e 67 20 6e 75 6d 62 65 72 20   getting number 
2a290 6f 66 20 63 68 61 6e 67 65 73 2e 22 29 3b 0d 0a  of changes.");..
2a2a0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2a2b0 20 5f 73 71 6c 2e 43 68 61 6e 67 65 73 3b 0d 0a   _sql.Changes;..
2a2c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
2a2d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
2a2e0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 68 65  ry>..    /// Che
2a2f0 63 6b 73 20 69 66 20 74 68 69 73 20 63 6f 6e 6e  cks if this conn
2a300 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 73 70  ection to the sp
2a310 65 63 69 66 69 65 64 20 64 61 74 61 62 61 73 65  ecified database
2a320 20 73 68 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69   should be consi
2a330 64 65 72 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72  dered..    /// r
2a340 65 61 64 2d 6f 6e 6c 79 2e 20 20 41 6e 20 65 78  ead-only.  An ex
2a350 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20  ception will be 
2a360 74 68 72 6f 77 6e 20 69 66 20 74 68 65 20 64 61  thrown if the da
2a370 74 61 62 61 73 65 20 6e 61 6d 65 20 73 70 65 63  tabase name spec
2a380 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76  ified..    /// v
2a390 69 61 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  ia <paramref nam
2a3a0 65 3d 22 6e 61 6d 65 22 20 2f 3e 20 63 61 6e 6e  e="name" /> cann
2a3b0 6f 74 20 62 65 20 66 6f 75 6e 64 2e 0d 0a 20 20  ot be found...  
2a3c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2a3d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2a3e0 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20   name="name">.. 
2a3f0 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
2a400 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 61 73  of a database as
2a410 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
2a420 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 2d 4f  is connection -O
2a430 52 2d 20 6e 75 6c 6c 20 66 6f 72 20 74 68 65 0d  R- null for the.
2a440 0a 20 20 20 20 2f 2f 2f 20 6d 61 69 6e 20 64 61  .    /// main da
2a450 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  tabase...    ///
2a460 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2a470 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2a480 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
2a490 66 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f  f this connectio
2a4a0 6e 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  n to the specifi
2a4b0 65 64 20 64 61 74 61 62 61 73 65 20 73 68 6f 75  ed database shou
2a4c0 6c 64 20 62 65 20 63 6f 6e 73 69 64 65 72 65 64  ld be considered
2a4d0 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 61 64 2d 6f  ..    /// read-o
2a4e0 6e 6c 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  nly...    /// </
2a4f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
2a500 62 6c 69 63 20 62 6f 6f 6c 20 49 73 52 65 61 64  blic bool IsRead
2a510 4f 6e 6c 79 28 0d 0a 20 20 20 20 20 20 20 20 73  Only(..        s
2a520 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
2a530 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
2a540 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
2a550 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2a560 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75    if (_sql == nu
2a570 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a580 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
2a590 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
2a5a0 74 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20 63  tion("Database c
2a5b0 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61  onnection not va
2a5c0 6c 69 64 20 66 6f 72 20 63 68 65 63 6b 69 6e 67  lid for checking
2a5d0 20 72 65 61 64 2d 6f 6e 6c 79 20 73 74 61 74 75   read-only statu
2a5e0 73 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  s.");....       
2a5f0 20 72 65 74 75 72 6e 20 5f 73 71 6c 2e 49 73 52   return _sql.IsR
2a600 65 61 64 4f 6e 6c 79 28 6e 61 6d 65 29 3b 0d 0a  eadOnly(name);..
2a610 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2a620 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a630 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d  /// Returns non-
2a640 7a 65 72 6f 20 69 66 20 74 68 65 20 67 69 76 65  zero if the give
2a650 6e 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  n database conne
2a660 63 74 69 6f 6e 20 69 73 20 69 6e 20 61 75 74 6f  ction is in auto
2a670 63 6f 6d 6d 69 74 20 6d 6f 64 65 2e 0d 0a 20 20  commit mode...  
2a680 20 20 2f 2f 2f 20 41 75 74 6f 63 6f 6d 6d 69 74    /// Autocommit
2a690 20 6d 6f 64 65 20 69 73 20 6f 6e 20 62 79 20 64   mode is on by d
2a6a0 65 66 61 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6d  efault.  Autocom
2a6b0 6d 69 74 20 6d 6f 64 65 20 69 73 20 64 69 73 61  mit mode is disa
2a6c0 62 6c 65 64 20 62 79 20 61 20 42 45 47 49 4e 0d  bled by a BEGIN.
2a6d0 0a 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65  .    /// stateme
2a6e0 6e 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20  nt.  Autocommit 
2a6f0 6d 6f 64 65 20 69 73 20 72 65 2d 65 6e 61 62 6c  mode is re-enabl
2a700 65 64 20 62 79 20 61 20 43 4f 4d 4d 49 54 20 6f  ed by a COMMIT o
2a710 72 20 52 4f 4c 4c 42 41 43 4b 2e 0d 0a 20 20 20  r ROLLBACK...   
2a720 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2a730 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
2a740 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
2a750 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28  .    [Browsable(
2a760 66 61 6c 73 65 29 2c 20 44 65 73 69 67 6e 65 72  false), Designer
2a770 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73  SerializationVis
2a780 69 62 69 6c 69 74 79 28 44 65 73 69 67 6e 65 72  ibility(Designer
2a790 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73  SerializationVis
2a7a0 69 62 69 6c 69 74 79 2e 48 69 64 64 65 6e 29 5d  ibility.Hidden)]
2a7b0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75  ..#endif..    pu
2a7c0 62 6c 69 63 20 62 6f 6f 6c 20 41 75 74 6f 43 6f  blic bool AutoCo
2a7d0 6d 6d 69 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  mmit..    {..   
2a7e0 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2a7f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a800 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2a810 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2a820 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c   if (_sql == nul
2a830 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2a840 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
2a850 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
2a860 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62 61 73  ception("Databas
2a870 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74  e connection not
2a880 20 76 61 6c 69 64 20 66 6f 72 20 67 65 74 74 69   valid for getti
2a890 6e 67 20 61 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f  ng autocommit mo
2a8a0 64 65 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  de.");....      
2a8b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 73 71        return _sq
2a8c0 6c 2e 41 75 74 6f 43 6f 6d 6d 69 74 3b 0d 0a 20  l.AutoCommit;.. 
2a8d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
2a8e0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2a8f0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
2a900 74 75 72 6e 73 20 74 68 65 20 61 6d 6f 75 6e 74  turns the amount
2a910 20 6f 66 20 6d 65 6d 6f 72 79 20 28 69 6e 20 62   of memory (in b
2a920 79 74 65 73 29 20 63 75 72 72 65 6e 74 6c 79 20  ytes) currently 
2a930 69 6e 20 75 73 65 20 62 79 20 74 68 65 20 53 51  in use by the SQ
2a940 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2a950 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
2a960 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41  mmary>..#if !PLA
2a970 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2a980 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42 72 6f  MEWORK..    [Bro
2a990 77 73 61 62 6c 65 28 66 61 6c 73 65 29 2c 20 44  wsable(false), D
2a9a0 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61  esignerSerializa
2a9b0 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 28 44  tionVisibility(D
2a9c0 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61  esignerSerializa
2a9d0 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 2e 48  tionVisibility.H
2a9e0 69 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d  idden)]..#endif.
2a9f0 0a 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67  .    public long
2aa00 20 4d 65 6d 6f 72 79 55 73 65 64 0d 0a 20 20 20   MemoryUsed..   
2aa10 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20   {..      get.. 
2aa20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2aa30 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2aa40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
2aa50 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  _sql == null).. 
2aa60 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2aa70 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  ew InvalidOperat
2aa80 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 44 61  ionException("Da
2aa90 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2aaa0 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72 20  n not valid for 
2aab0 67 65 74 74 69 6e 67 20 6d 65 6d 6f 72 79 20 75  getting memory u
2aac0 73 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  sed.");....     
2aad0 20 20 20 72 65 74 75 72 6e 20 5f 73 71 6c 2e 4d     return _sql.M
2aae0 65 6d 6f 72 79 55 73 65 64 3b 0d 0a 20 20 20 20  emoryUsed;..    
2aaf0 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
2ab00 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2ab10 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
2ab20 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 61 6d 6f   the maximum amo
2ab30 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 28 69  unt of memory (i
2ab40 6e 20 62 79 74 65 73 29 20 75 73 65 64 20 62 79  n bytes) used by
2ab50 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
2ab60 20 6c 69 62 72 61 72 79 20 73 69 6e 63 65 20 74   library since t
2ab70 68 65 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61  he high-water ma
2ab80 72 6b 20 77 61 73 20 6c 61 73 74 20 72 65 73 65  rk was last rese
2ab90 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  t...    /// </su
2aba0 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41  mmary>..#if !PLA
2abb0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
2abc0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42 72 6f  MEWORK..    [Bro
2abd0 77 73 61 62 6c 65 28 66 61 6c 73 65 29 2c 20 44  wsable(false), D
2abe0 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61  esignerSerializa
2abf0 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 28 44  tionVisibility(D
2ac00 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61  esignerSerializa
2ac10 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 2e 48  tionVisibility.H
2ac20 69 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d  idden)]..#endif.
2ac30 0a 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67  .    public long
2ac40 20 4d 65 6d 6f 72 79 48 69 67 68 77 61 74 65 72   MemoryHighwater
2ac50 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
2ac60 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  et..      {..   
2ac70 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
2ac80 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
2ac90 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c   if (_sql == nul
2aca0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68  l)..          th
2acb0 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
2acc0 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
2acd0 6e 28 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e  n("Database conn
2ace0 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64  ection not valid
2acf0 20 66 6f 72 20 67 65 74 74 69 6e 67 20 6d 61 78   for getting max
2ad00 69 6d 75 6d 20 6d 65 6d 6f 72 79 20 75 73 65 64  imum memory used
2ad10 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  .");....        
2ad20 20 20 72 65 74 75 72 6e 20 5f 73 71 6c 2e 4d 65    return _sql.Me
2ad30 6d 6f 72 79 48 69 67 68 77 61 74 65 72 3b 0d 0a  moryHighwater;..
2ad40 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
2ad50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
2ad60 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
2ad70 75 72 6e 73 20 76 61 72 69 6f 75 73 20 67 6c 6f  urns various glo
2ad80 62 61 6c 20 6d 65 6d 6f 72 79 20 73 74 61 74 69  bal memory stati
2ad90 73 74 69 63 73 20 66 6f 72 20 74 68 65 20 53 51  stics for the SQ
2ada0 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2adb0 79 20 76 69 61 0d 0a 20 20 20 20 2f 2f 2f 20 61  y via..    /// a
2adc0 20 64 69 63 74 69 6f 6e 61 72 79 20 6f 66 20 6b   dictionary of k
2add0 65 79 2f 76 61 6c 75 65 20 70 61 69 72 73 2e 20  ey/value pairs. 
2ade0 20 43 75 72 72 65 6e 74 6c 79 2c 20 6f 6e 6c 79   Currently, only
2adf0 20 74 68 65 20 22 4d 65 6d 6f 72 79 55 73 65 64   the "MemoryUsed
2ae00 22 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 22  " and..    /// "
2ae10 4d 65 6d 6f 72 79 48 69 67 68 77 61 74 65 72 22  MemoryHighwater"
2ae20 20 6b 65 79 73 20 61 72 65 20 72 65 74 75 72 6e   keys are return
2ae30 65 64 20 61 6e 64 20 74 68 65 79 20 68 61 76 65  ed and they have
2ae40 20 76 61 6c 75 65 73 20 74 68 61 74 20 63 6f 72   values that cor
2ae50 72 65 73 70 6f 6e 64 0d 0a 20 20 20 20 2f 2f 2f  respond..    ///
2ae60 20 74 6f 20 74 68 65 20 76 61 6c 75 65 73 20 74   to the values t
2ae70 68 61 74 20 63 6f 75 6c 64 20 62 65 20 6f 62 74  hat could be obt
2ae80 61 69 6e 65 64 20 76 69 61 20 74 68 65 20 3c 73  ained via the <s
2ae90 65 65 20 63 72 65 66 3d 22 4d 65 6d 6f 72 79 55  ee cref="MemoryU
2aea0 73 65 64 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  sed" />..    ///
2aeb0 20 61 6e 64 20 3c 73 65 65 20 63 72 65 66 3d 22   and <see cref="
2aec0 4d 65 6d 6f 72 79 48 69 67 68 77 61 74 65 72 22  MemoryHighwater"
2aed0 20 2f 3e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70   /> connection p
2aee0 72 6f 70 65 72 74 69 65 73 2e 0d 0a 20 20 20 20  roperties...    
2aef0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2af00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2af10 61 6d 65 3d 22 73 74 61 74 69 73 74 69 63 73 22  ame="statistics"
2af20 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
2af30 64 69 63 74 69 6f 6e 61 72 79 20 77 69 6c 6c 20  dictionary will 
2af40 62 65 20 70 6f 70 75 6c 61 74 65 64 20 77 69 74  be populated wit
2af50 68 20 74 68 65 20 67 6c 6f 62 61 6c 20 6d 65 6d  h the global mem
2af60 6f 72 79 20 73 74 61 74 69 73 74 69 63 73 2e 20  ory statistics. 
2af70 20 49 74 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 6c   It..    /// wil
2af80 6c 20 62 65 20 63 72 65 61 74 65 64 20 69 66 20  l be created if 
2af90 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
2afa0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2afb0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2afc0 76 6f 69 64 20 47 65 74 4d 65 6d 6f 72 79 53 74  void GetMemorySt
2afd0 61 74 69 73 74 69 63 73 28 0d 0a 20 20 20 20 20  atistics(..     
2afe0 20 20 20 72 65 66 20 49 44 69 63 74 69 6f 6e 61     ref IDictiona
2aff0 72 79 3c 73 74 72 69 6e 67 2c 20 6c 6f 6e 67 3e  ry<string, long>
2b000 20 73 74 61 74 69 73 74 69 63 73 0d 0a 20 20 20   statistics..   
2b010 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
2b020 20 20 20 20 20 20 20 69 66 20 28 73 74 61 74 69         if (stati
2b030 73 74 69 63 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  stics == null)..
2b040 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74              stat
2b050 69 73 74 69 63 73 20 3d 20 6e 65 77 20 44 69 63  istics = new Dic
2b060 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
2b070 6c 6f 6e 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  long>();....    
2b080 20 20 20 20 73 74 61 74 69 73 74 69 63 73 5b 22      statistics["
2b090 4d 65 6d 6f 72 79 55 73 65 64 22 5d 20 3d 20 53  MemoryUsed"] = S
2b0a0 51 4c 69 74 65 33 2e 53 74 61 74 69 63 4d 65 6d  QLite3.StaticMem
2b0b0 6f 72 79 55 73 65 64 3b 0d 0a 20 20 20 20 20 20  oryUsed;..      
2b0c0 20 20 73 74 61 74 69 73 74 69 63 73 5b 22 4d 65    statistics["Me
2b0d0 6d 6f 72 79 48 69 67 68 77 61 74 65 72 22 5d 20  moryHighwater"] 
2b0e0 3d 20 53 51 4c 69 74 65 33 2e 53 74 61 74 69 63  = SQLite3.Static
2b0f0 4d 65 6d 6f 72 79 48 69 67 68 77 61 74 65 72 3b  MemoryHighwater;
2b100 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2b110 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b120 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
2b130 6f 20 66 72 65 65 20 61 73 20 6d 75 63 68 20 68  o free as much h
2b140 65 61 70 20 6d 65 6d 6f 72 79 20 61 73 20 70 6f  eap memory as po
2b150 73 73 69 62 6c 65 20 66 6f 72 20 74 68 69 73 20  ssible for this 
2b160 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2b170 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
2b180 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
2b190 62 6c 69 63 20 76 6f 69 64 20 52 65 6c 65 61 73  blic void Releas
2b1a0 65 4d 65 6d 6f 72 79 28 29 0d 0a 20 20 20 20 7b  eMemory()..    {
2b1b0 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44  ..        CheckD
2b1c0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
2b1d0 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20 3d        if (_sql =
2b1e0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2b1f0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
2b200 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
2b210 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62 61  xception("Databa
2b220 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f  se connection no
2b230 74 20 76 61 6c 69 64 20 66 6f 72 20 72 65 6c 65  t valid for rele
2b240 61 73 69 6e 67 20 6d 65 6d 6f 72 79 2e 22 29 3b  asing memory.");
2b250 0d 0a 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  ....        SQLi
2b260 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d  teErrorCode rc =
2b270 20 5f 73 71 6c 2e 52 65 6c 65 61 73 65 4d 65 6d   _sql.ReleaseMem
2b280 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ory();....      
2b290 20 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69    if (rc != SQLi
2b2a0 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d  teErrorCode.Ok).
2b2b0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2b2c0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
2b2d0 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
2b2e0 6e 28 72 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  n(rc,..         
2b2f0 20 20 20 20 20 20 20 5f 73 71 6c 2e 47 65 74 4c         _sql.GetL
2b300 61 73 74 45 72 72 6f 72 28 22 43 6f 75 6c 64 20  astError("Could 
2b310 6e 6f 74 20 72 65 6c 65 61 73 65 20 63 6f 6e 6e  not release conn
2b320 65 63 74 69 6f 6e 20 6d 65 6d 6f 72 79 2e 22 29  ection memory.")
2b330 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
2b340 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
2b350 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2b360 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 66  // Attempts to f
2b370 72 65 65 20 4e 20 62 79 74 65 73 20 6f 66 20 68  ree N bytes of h
2b380 65 61 70 20 6d 65 6d 6f 72 79 20 62 79 20 64 65  eap memory by de
2b390 61 6c 6c 6f 63 61 74 69 6e 67 20 6e 6f 6e 2d 65  allocating non-e
2b3a0 73 73 65 6e 74 69 61 6c 20 6d 65 6d 6f 72 79 0d  ssential memory.
2b3b0 0a 20 20 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74  .    /// allocat
2b3c0 69 6f 6e 73 20 68 65 6c 64 20 62 79 20 74 68 65  ions held by the
2b3d0 20 64 61 74 61 62 61 73 65 20 6c 69 62 72 61 72   database librar
2b3e0 79 2e 20 4d 65 6d 6f 72 79 20 75 73 65 64 20 74  y. Memory used t
2b3f0 6f 20 63 61 63 68 65 20 64 61 74 61 62 61 73 65  o cache database
2b400 20 70 61 67 65 73 0d 0a 20 20 20 20 2f 2f 2f 20   pages..    /// 
2b410 74 6f 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f  to improve perfo
2b420 72 6d 61 6e 63 65 20 69 73 20 61 6e 20 65 78 61  rmance is an exa
2b430 6d 70 6c 65 20 6f 66 20 6e 6f 6e 2d 65 73 73 65  mple of non-esse
2b440 6e 74 69 61 6c 20 6d 65 6d 6f 72 79 2e 20 20 54  ntial memory.  T
2b450 68 69 73 20 69 73 20 61 20 6e 6f 2d 6f 70 0d 0a  his is a no-op..
2b460 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 69 6e      /// returnin
2b470 67 20 7a 65 72 6f 20 69 66 20 74 68 65 20 53 51  g zero if the SQ
2b480 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2b490 79 20 77 61 73 20 6e 6f 74 20 63 6f 6d 70 69 6c  y was not compil
2b4a0 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6d 70  ed with the comp
2b4b0 69 6c 65 2d 74 69 6d 65 0d 0a 20 20 20 20 2f 2f  ile-time..    //
2b4c0 2f 20 6f 70 74 69 6f 6e 20 53 51 4c 49 54 45 5f  / option SQLITE_
2b4d0 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41  ENABLE_MEMORY_MA
2b4e0 4e 41 47 45 4d 45 4e 54 2e 20 20 4f 70 74 69 6f  NAGEMENT.  Optio
2b4f0 6e 61 6c 6c 79 2c 20 61 74 74 65 6d 70 74 73 20  nally, attempts 
2b500 74 6f 20 72 65 73 65 74 20 61 6e 64 2f 6f 72 0d  to reset and/or.
2b510 0a 20 20 20 20 2f 2f 2f 20 63 6f 6d 70 61 63 74  .    /// compact
2b520 20 74 68 65 20 57 69 6e 33 32 20 6e 61 74 69 76   the Win32 nativ
2b530 65 20 68 65 61 70 2c 20 69 66 20 61 70 70 6c 69  e heap, if appli
2b540 63 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  cable...    /// 
2b550 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2b560 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2b570 22 6e 42 79 74 65 73 22 3e 0d 0a 20 20 20 20 2f  "nBytes">..    /
2b580 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
2b590 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
2b5a0 20 74 6f 20 66 72 65 65 2e 0d 0a 20 20 20 20 2f   to free...    /
2b5b0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2b5c0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2b5d0 3d 22 72 65 73 65 74 22 3e 0d 0a 20 20 20 20 2f  ="reset">..    /
2b5e0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 61  // Non-zero to a
2b5f0 74 74 65 6d 70 74 20 61 20 68 65 61 70 20 72 65  ttempt a heap re
2b600 73 65 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  set...    /// </
2b610 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
2b620 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d  <param name="com
2b630 70 61 63 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  pact">..    /// 
2b640 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 61 74 74 65  Non-zero to atte
2b650 6d 70 74 20 68 65 61 70 20 63 6f 6d 70 61 63 74  mpt heap compact
2b660 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
2b670 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
2b680 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 46 72  <param name="nFr
2b690 65 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ee">..    /// Th
2b6a0 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
2b6b0 73 20 61 63 74 75 61 6c 6c 79 20 66 72 65 65 64  s actually freed
2b6c0 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61  .  This value ma
2b6d0 79 20 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20  y be zero...    
2b6e0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2b6f0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2b700 65 3d 22 72 65 73 65 74 4f 6b 22 3e 0d 0a 20 20  e="resetOk">..  
2b710 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65    /// This value
2b720 20 77 69 6c 6c 20 62 65 20 6e 6f 6e 2d 7a 65 72   will be non-zer
2b730 6f 20 69 66 20 74 68 65 20 68 65 61 70 20 72 65  o if the heap re
2b740 73 65 74 20 77 61 73 20 73 75 63 63 65 73 73 66  set was successf
2b750 75 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ul...    /// </p
2b760 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
2b770 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4c 61 72  param name="nLar
2b780 67 65 73 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  gest">..    /// 
2b790 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  The size of the 
2b7a0 6c 61 72 67 65 73 74 20 63 6f 6d 6d 69 74 74 65  largest committe
2b7b0 64 20 66 72 65 65 20 62 6c 6f 63 6b 20 69 6e 20  d free block in 
2b7c0 74 68 65 20 68 65 61 70 2c 20 69 6e 20 62 79 74  the heap, in byt
2b7d0 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  es...    /// Thi
2b7e0 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
2b7f0 7a 65 72 6f 20 75 6e 6c 65 73 73 20 68 65 61 70  zero unless heap
2b800 20 63 6f 6d 70 61 63 74 69 6f 6e 20 69 73 20 65   compaction is e
2b810 6e 61 62 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  nabled...    ///
2b820 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2b830 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2b840 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
2b850 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
2b860 6f 64 65 20 28 69 2e 65 2e 20 7a 65 72 6f 20 66  ode (i.e. zero f
2b870 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64 20 6e  or success and n
2b880 6f 6e 2d 7a 65 72 6f 0d 0a 20 20 20 20 2f 2f 2f  on-zero..    ///
2b890 20 66 6f 72 20 66 61 69 6c 75 72 65 29 2e 0d 0a   for failure)...
2b8a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2b8b0 73 3e 0d 0a 20 20 20 20 23 70 72 61 67 6d 61 20  s>..    #pragma 
2b8c0 77 61 72 6e 69 6e 67 20 64 69 73 61 62 6c 65 20  warning disable 
2b8d0 33 30 30 31 0d 0a 20 20 20 20 70 75 62 6c 69 63  3001..    public
2b8e0 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45 72   static SQLiteEr
2b8f0 72 6f 72 43 6f 64 65 20 52 65 6c 65 61 73 65 4d  rorCode ReleaseM
2b900 65 6d 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20  emory(..        
2b910 69 6e 74 20 6e 42 79 74 65 73 2c 0d 0a 20 20 20  int nBytes,..   
2b920 20 20 20 20 20 62 6f 6f 6c 20 72 65 73 65 74 2c       bool reset,
2b930 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 63  ..        bool c
2b940 6f 6d 70 61 63 74 2c 0d 0a 20 20 20 20 20 20 20  ompact,..       
2b950 20 72 65 66 20 69 6e 74 20 6e 46 72 65 65 2c 0d   ref int nFree,.
2b960 0a 20 20 20 20 20 20 20 20 72 65 66 20 62 6f 6f  .        ref boo
2b970 6c 20 72 65 73 65 74 4f 6b 2c 0d 0a 20 20 20 20  l resetOk,..    
2b980 20 20 20 20 72 65 66 20 75 69 6e 74 20 6e 4c 61      ref uint nLa
2b990 72 67 65 73 74 0d 0a 20 20 20 20 20 20 20 20 29  rgest..        )
2b9a0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2b9b0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 33 2e   return SQLite3.
2b9c0 53 74 61 74 69 63 52 65 6c 65 61 73 65 4d 65 6d  StaticReleaseMem
2b9d0 6f 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ory(..          
2b9e0 20 20 6e 42 79 74 65 73 2c 20 72 65 73 65 74 2c    nBytes, reset,
2b9f0 20 63 6f 6d 70 61 63 74 2c 20 72 65 66 20 6e 46   compact, ref nF
2ba00 72 65 65 2c 20 72 65 66 20 72 65 73 65 74 4f 6b  ree, ref resetOk
2ba10 2c 20 72 65 66 20 6e 4c 61 72 67 65 73 74 29 3b  , ref nLargest);
2ba20 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 70 72  ..    }..    #pr
2ba30 61 67 6d 61 20 77 61 72 6e 69 6e 67 20 72 65 73  agma warning res
2ba40 74 6f 72 65 20 33 30 30 31 0d 0a 0d 0a 20 20 20  tore 3001....   
2ba50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2ba60 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
2ba70 20 73 74 61 74 75 73 20 6f 66 20 74 68 65 20 6d   status of the m
2ba80 65 6d 6f 72 79 20 75 73 61 67 65 20 74 72 61 63  emory usage trac
2ba90 6b 69 6e 67 20 73 75 62 73 79 73 74 65 6d 20 69  king subsystem i
2baa0 6e 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  n the SQLite cor
2bab0 65 20 6c 69 62 72 61 72 79 2e 20 20 42 79 20 64  e library.  By d
2bac0 65 66 61 75 6c 74 2c 20 74 68 69 73 20 69 73 20  efault, this is 
2bad0 65 6e 61 62 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f  enabled...    //
2bae0 2f 20 49 66 20 74 68 69 73 20 69 73 20 64 69 73  / If this is dis
2baf0 61 62 6c 65 64 2c 20 6d 65 6d 6f 72 79 20 75 73  abled, memory us
2bb00 61 67 65 20 74 72 61 63 6b 69 6e 67 20 77 69 6c  age tracking wil
2bb10 6c 20 6e 6f 74 20 62 65 20 70 65 72 66 6f 72 6d  l not be perform
2bb20 65 64 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74  ed.  This is not
2bb30 20 72 65 61 6c 6c 79 20 61 20 70 65 72 2d 63 6f   really a per-co
2bb40 6e 6e 65 63 74 69 6f 6e 20 76 61 6c 75 65 2c 20  nnection value, 
2bb50 69 74 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 67  it is..    /// g
2bb60 6c 6f 62 61 6c 20 74 6f 20 74 68 65 20 70 72 6f  lobal to the pro
2bb70 63 65 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  cess...    /// <
2bb80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
2bb90 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2bba0 76 61 6c 75 65 22 3e 4e 6f 6e 2d 7a 65 72 6f 20  value">Non-zero 
2bbb0 74 6f 20 65 6e 61 62 6c 65 20 6d 65 6d 6f 72 79  to enable memory
2bbc0 20 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67 2c   usage tracking,
2bbd0 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
2bbe0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2bbf0 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 61  / <returns>A sta
2bc00 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
2bc10 75 72 6e 20 63 6f 64 65 20 28 69 2e 65 2e 20 7a  urn code (i.e. z
2bc20 65 72 6f 20 66 6f 72 20 73 75 63 63 65 73 73 20  ero for success 
2bc30 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f 20 66 6f 72  and non-zero for
2bc40 20 66 61 69 6c 75 72 65 29 2e 3c 2f 72 65 74 75   failure).</retu
2bc50 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
2bc60 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45 72   static SQLiteEr
2bc70 72 6f 72 43 6f 64 65 20 53 65 74 4d 65 6d 6f 72  rorCode SetMemor
2bc80 79 53 74 61 74 75 73 28 62 6f 6f 6c 20 76 61 6c  yStatus(bool val
2bc90 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
2bca0 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
2bcb0 65 33 2e 53 74 61 74 69 63 53 65 74 4d 65 6d 6f  e3.StaticSetMemo
2bcc0 72 79 53 74 61 74 75 73 28 76 61 6c 75 65 29 3b  ryStatus(value);
2bcd0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2bce0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2bcf0 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20    /// Returns a 
2bd00 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e  string containin
2bd10 67 20 74 68 65 20 64 65 66 69 6e 65 20 63 6f 6e  g the define con
2bd20 73 74 61 6e 74 73 20 28 69 2e 65 2e 20 63 6f 6d  stants (i.e. com
2bd30 70 69 6c 65 2d 74 69 6d 65 0d 0a 20 20 20 20 2f  pile-time..    /
2bd40 2f 2f 20 6f 70 74 69 6f 6e 73 29 20 75 73 65 64  // options) used
2bd50 20 74 6f 20 63 6f 6d 70 69 6c 65 20 74 68 65 20   to compile the 
2bd60 63 6f 72 65 20 6d 61 6e 61 67 65 64 20 61 73 73  core managed ass
2bd70 65 6d 62 6c 79 2c 20 64 65 6c 69 6d 69 74 65 64  embly, delimited
2bd80 20 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f 20 73   with..    /// s
2bd90 70 61 63 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  paces...    /// 
2bda0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2bdb0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
2bdc0 72 69 6e 67 20 44 65 66 69 6e 65 43 6f 6e 73 74  ring DefineConst
2bdd0 61 6e 74 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ants..    {..   
2bde0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
2bdf0 6e 20 53 51 4c 69 74 65 33 2e 44 65 66 69 6e 65  n SQLite3.Define
2be00 43 6f 6e 73 74 61 6e 74 73 3b 20 7d 0d 0a 20 20  Constants; }..  
2be10 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
2be20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2be30 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 76 65  / Returns the ve
2be40 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 75 6e 64  rsion of the und
2be50 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 63  erlying SQLite c
2be60 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
2be70 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2be80 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
2be90 74 69 63 20 73 74 72 69 6e 67 20 53 51 4c 69 74  tic string SQLit
2bea0 65 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20 7b 0d  eVersion..    {.
2beb0 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74  .      get { ret
2bec0 75 72 6e 20 53 51 4c 69 74 65 33 2e 53 51 4c 69  urn SQLite3.SQLi
2bed0 74 65 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20  teVersion; }..  
2bee0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
2bef0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2bf00 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65  / This method re
2bf10 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e 67  turns the string
2bf20 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20   whose value is 
2bf30 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 0d  the same as the.
2bf40 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 49 54 45 5f  .    /// SQLITE_
2bf50 53 4f 55 52 43 45 5f 49 44 20 43 20 70 72 65 70  SOURCE_ID C prep
2bf60 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 75  rocessor macro u
2bf70 73 65 64 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69  sed when compili
2bf80 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  ng the..    /// 
2bf90 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
2bfa0 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
2bfb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
2bfc0 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
2bfd0 6e 67 20 53 51 4c 69 74 65 53 6f 75 72 63 65 49  ng SQLiteSourceI
2bfe0 64 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  d..    {..      
2bff0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 53 51 4c  get { return SQL
2c000 69 74 65 33 2e 53 51 4c 69 74 65 53 6f 75 72 63  ite3.SQLiteSourc
2c010 65 49 64 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d  eId; }..    }...
2c020 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2c030 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
2c040 72 6e 73 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  rns a string con
2c050 74 61 69 6e 69 6e 67 20 74 68 65 20 63 6f 6d 70  taining the comp
2c060 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
2c070 20 75 73 65 64 20 74 6f 0d 0a 20 20 20 20 2f 2f   used to..    //
2c080 2f 20 63 6f 6d 70 69 6c 65 20 74 68 65 20 53 51  / compile the SQ
2c090 4c 69 74 65 20 63 6f 72 65 20 6e 61 74 69 76 65  Lite core native
2c0a0 20 6c 69 62 72 61 72 79 2c 20 64 65 6c 69 6d 69   library, delimi
2c0b0 74 65 64 20 77 69 74 68 20 73 70 61 63 65 73 2e  ted with spaces.
2c0c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2c0d0 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
2c0e0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53   static string S
2c0f0 51 4c 69 74 65 43 6f 6d 70 69 6c 65 4f 70 74 69  QLiteCompileOpti
2c100 6f 6e 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ons..    {..    
2c110 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
2c120 20 53 51 4c 69 74 65 33 2e 53 51 4c 69 74 65 43   SQLite3.SQLiteC
2c130 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 3b 20 7d  ompileOptions; }
2c140 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2c150 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c160 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
2c170 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 65  d returns the ve
2c180 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74  rsion of the int
2c190 65 72 6f 70 20 53 51 4c 69 74 65 20 61 73 73 65  erop SQLite asse
2c1a0 6d 62 6c 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73  mbly..    /// us
2c1b0 65 64 2e 20 20 49 66 20 74 68 65 20 53 51 4c 69  ed.  If the SQLi
2c1c0 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d  te interop assem
2c1d0 62 6c 79 20 69 73 20 6e 6f 74 20 69 6e 20 75 73  bly is not in us
2c1e0 65 20 6f 72 20 74 68 65 0d 0a 20 20 20 20 2f 2f  e or the..    //
2c1f0 2f 20 6e 65 63 65 73 73 61 72 79 20 69 6e 66 6f  / necessary info
2c200 72 6d 61 74 69 6f 6e 20 63 61 6e 6e 6f 74 20 62  rmation cannot b
2c210 65 20 6f 62 74 61 69 6e 65 64 20 66 6f 72 20 61  e obtained for a
2c220 6e 79 20 72 65 61 73 6f 6e 2c 20 61 20 6e 75 6c  ny reason, a nul
2c230 6c 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65  l..    /// value
2c240 20 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 64   may be returned
2c250 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2c260 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
2c270 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
2c280 49 6e 74 65 72 6f 70 56 65 72 73 69 6f 6e 0d 0a  InteropVersion..
2c290 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
2c2a0 20 7b 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65   { return SQLite
2c2b0 33 2e 49 6e 74 65 72 6f 70 56 65 72 73 69 6f 6e  3.InteropVersion
2c2c0 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
2c2d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2c2e0 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
2c2f0 74 68 6f 64 20 72 65 74 75 72 6e 73 20 74 68 65  thod returns the
2c300 20 73 74 72 69 6e 67 20 77 68 6f 73 65 20 76 61   string whose va
2c310 6c 75 65 20 63 6f 6e 74 61 69 6e 73 20 74 68 65  lue contains the
2c320 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 2f 2f 2f   unique..    ///
2c330 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
2c340 74 68 65 20 73 6f 75 72 63 65 20 63 68 65 63 6b  the source check
2c350 6f 75 74 20 75 73 65 64 20 74 6f 20 62 75 69 6c  out used to buil
2c360 64 20 74 68 65 20 69 6e 74 65 72 6f 70 0d 0a 20  d the interop.. 
2c370 20 20 20 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e     /// assembly.
2c380 20 20 49 66 20 74 68 65 20 53 51 4c 69 74 65 20    If the SQLite 
2c390 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
2c3a0 20 69 73 20 6e 6f 74 20 69 6e 20 75 73 65 20 6f   is not in use o
2c3b0 72 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 6e  r the..    /// n
2c3c0 65 63 65 73 73 61 72 79 20 69 6e 66 6f 72 6d 61  ecessary informa
2c3d0 74 69 6f 6e 20 63 61 6e 6e 6f 74 20 62 65 20 6f  tion cannot be o
2c3e0 62 74 61 69 6e 65 64 20 66 6f 72 20 61 6e 79 20  btained for any 
2c3f0 72 65 61 73 6f 6e 2c 20 61 20 6e 75 6c 6c 0d 0a  reason, a null..
2c400 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 6d 61      /// value ma
2c410 79 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a  y be returned...
2c420 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2c430 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2c440 74 61 74 69 63 20 73 74 72 69 6e 67 20 49 6e 74  tatic string Int
2c450 65 72 6f 70 53 6f 75 72 63 65 49 64 0d 0a 20 20  eropSourceId..  
2c460 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b    {..      get {
2c470 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 33 2e   return SQLite3.
2c480 49 6e 74 65 72 6f 70 53 6f 75 72 63 65 49 64 3b  InteropSourceId;
2c490 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2c4a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2c4b0 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
2c4c0 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  a string contain
2c4d0 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d  ing the compile-
2c4e0 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 75 73 65  time options use
2c4f0 64 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f  d to..    /// co
2c500 6d 70 69 6c 65 20 74 68 65 20 53 51 4c 69 74 65  mpile the SQLite
2c510 20 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c   interop assembl
2c520 79 2c 20 64 65 6c 69 6d 69 74 65 64 20 77 69 74  y, delimited wit
2c530 68 20 73 70 61 63 65 73 2e 0d 0a 20 20 20 20 2f  h spaces...    /
2c540 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2c550 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
2c560 20 73 74 72 69 6e 67 20 49 6e 74 65 72 6f 70 43   string InteropC
2c570 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 0d 0a 20  ompileOptions.. 
2c580 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65     {..        ge
2c590 74 20 7b 20 72 65 74 75 72 6e 20 53 51 4c 69 74  t { return SQLit
2c5a0 65 33 2e 49 6e 74 65 72 6f 70 43 6f 6d 70 69 6c  e3.InteropCompil
2c5b0 65 4f 70 74 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20  eOptions; }..   
2c5c0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
2c5d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2c5e0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74   This method ret
2c5f0 75 72 6e 73 20 74 68 65 20 76 65 72 73 69 6f 6e  urns the version
2c600 20 6f 66 20 74 68 65 20 6d 61 6e 61 67 65 64 20   of the managed 
2c610 63 6f 6d 70 6f 6e 65 6e 74 73 20 75 73 65 64 0d  components used.
2c620 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 69 6e 74 65  .    /// to inte
2c630 72 61 63 74 20 77 69 74 68 20 74 68 65 20 53 51  ract with the SQ
2c640 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2c650 79 2e 20 20 49 66 20 74 68 65 20 6e 65 63 65 73  y.  If the neces
2c660 73 61 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e  sary..    /// in
2c670 66 6f 72 6d 61 74 69 6f 6e 20 63 61 6e 6e 6f 74  formation cannot
2c680 20 62 65 20 6f 62 74 61 69 6e 65 64 20 66 6f 72   be obtained for
2c690 20 61 6e 79 20 72 65 61 73 6f 6e 2c 20 61 20 6e   any reason, a n
2c6a0 75 6c 6c 20 76 61 6c 75 65 20 6d 61 79 0d 0a 20  ull value may.. 
2c6b0 20 20 20 2f 2f 2f 20 62 65 20 72 65 74 75 72 6e     /// be return
2c6c0 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ed...    /// </s
2c6d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
2c6e0 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
2c6f0 67 20 50 72 6f 76 69 64 65 72 56 65 72 73 69 6f  g ProviderVersio
2c700 6e 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  n..    {..      
2c710 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    get..        {
2c720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2c730 74 75 72 6e 20 28 5f 61 73 73 65 6d 62 6c 79 20  turn (_assembly 
2c740 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
2c750 20 20 20 20 20 20 20 20 20 20 20 20 5f 61 73 73              _ass
2c760 65 6d 62 6c 79 2e 47 65 74 4e 61 6d 65 28 29 2e  embly.GetName().
2c770 56 65 72 73 69 6f 6e 2e 54 6f 53 74 72 69 6e 67  Version.ToString
2c780 28 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  () : null;..    
2c790 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
2c7a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2c7b0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
2c7c0 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 74  method returns t
2c7d0 68 65 20 73 74 72 69 6e 67 20 77 68 6f 73 65 20  he string whose 
2c7e0 76 61 6c 75 65 20 63 6f 6e 74 61 69 6e 73 20 74  value contains t
2c7f0 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 2f  he unique..    /
2c800 2f 2f 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  // identifier fo
2c810 72 20 74 68 65 20 73 6f 75 72 63 65 20 63 68 65  r the source che
2c820 63 6b 6f 75 74 20 75 73 65 64 20 74 6f 20 62 75  ckout used to bu
2c830 69 6c 64 20 74 68 65 20 6d 61 6e 61 67 65 64 0d  ild the managed.
2c840 0a 20 20 20 20 2f 2f 2f 20 63 6f 6d 70 6f 6e 65  .    /// compone
2c850 6e 74 73 20 63 75 72 72 65 6e 74 6c 79 20 65 78  nts currently ex
2c860 65 63 75 74 69 6e 67 2e 20 20 49 66 20 74 68 65  ecuting.  If the
2c870 20 6e 65 63 65 73 73 61 72 79 20 69 6e 66 6f 72   necessary infor
2c880 6d 61 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20  mation..    /// 
2c890 63 61 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e  cannot be obtain
2c8a0 65 64 20 66 6f 72 20 61 6e 79 20 72 65 61 73 6f  ed for any reaso
2c8b0 6e 2c 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20  n, a null value 
2c8c0 6d 61 79 20 62 65 20 72 65 74 75 72 6e 65 64 2e  may be returned.
2c8d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2c8e0 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
2c8f0 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 50   static string P
2c900 72 6f 76 69 64 65 72 53 6f 75 72 63 65 49 64 0d  roviderSourceId.
2c910 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
2c920 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  get..        {..
2c930 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2c940 5f 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c  _assembly == nul
2c950 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2c960 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
2c970 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c980 73 74 72 69 6e 67 20 73 6f 75 72 63 65 49 64 20  string sourceId 
2c990 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
2c9a0 20 20 20 20 20 20 20 69 66 20 28 5f 61 73 73 65         if (_asse
2c9b0 6d 62 6c 79 2e 49 73 44 65 66 69 6e 65 64 28 74  mbly.IsDefined(t
2c9c0 79 70 65 6f 66 28 41 73 73 65 6d 62 6c 79 53 6f  ypeof(AssemblySo
2c9d0 75 72 63 65 49 64 41 74 74 72 69 62 75 74 65 29  urceIdAttribute)
2c9e0 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20  , false))..     
2c9f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ca00 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
2ca10 6c 79 53 6f 75 72 63 65 49 64 41 74 74 72 69 62  lySourceIdAttrib
2ca20 75 74 65 20 61 74 74 72 69 62 75 74 65 20 3d 0d  ute attribute =.
2ca30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ca40 20 20 20 20 20 28 41 73 73 65 6d 62 6c 79 53 6f       (AssemblySo
2ca50 75 72 63 65 49 64 41 74 74 72 69 62 75 74 65 29  urceIdAttribute)
2ca60 5f 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73  _assembly.GetCus
2ca70 74 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a  tomAttributes(..
2ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca90 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 41          typeof(A
2caa0 73 73 65 6d 62 6c 79 53 6f 75 72 63 65 49 64 41  ssemblySourceIdA
2cab0 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65  ttribute), false
2cac0 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  )[0];....       
2cad0 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 49           sourceI
2cae0 64 20 3d 20 61 74 74 72 69 62 75 74 65 2e 53 6f  d = attribute.So
2caf0 75 72 63 65 49 64 3b 0d 0a 20 20 20 20 20 20 20  urceId;..       
2cb00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2cb10 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 6f 75        string sou
2cb20 72 63 65 54 69 6d 65 53 74 61 6d 70 20 3d 20 6e  rceTimeStamp = n
2cb30 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
2cb40 20 20 20 20 69 66 20 28 5f 61 73 73 65 6d 62 6c      if (_assembl
2cb50 79 2e 49 73 44 65 66 69 6e 65 64 28 74 79 70 65  y.IsDefined(type
2cb60 6f 66 28 41 73 73 65 6d 62 6c 79 53 6f 75 72 63  of(AssemblySourc
2cb70 65 54 69 6d 65 53 74 61 6d 70 41 74 74 72 69 62  eTimeStampAttrib
2cb80 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
2cb90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
2cbb0 73 65 6d 62 6c 79 53 6f 75 72 63 65 54 69 6d 65  semblySourceTime
2cbc0 53 74 61 6d 70 41 74 74 72 69 62 75 74 65 20 61  StampAttribute a
2cbd0 74 74 72 69 62 75 74 65 20 3d 0d 0a 20 20 20 20  ttribute =..    
2cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbf0 28 41 73 73 65 6d 62 6c 79 53 6f 75 72 63 65 54  (AssemblySourceT
2cc00 69 6d 65 53 74 61 6d 70 41 74 74 72 69 62 75 74  imeStampAttribut
2cc10 65 29 5f 61 73 73 65 6d 62 6c 79 2e 47 65 74 43  e)_assembly.GetC
2cc20 75 73 74 6f 6d 41 74 74 72 69 62 75 74 65 73 28  ustomAttributes(
2cc30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc40 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
2cc50 28 41 73 73 65 6d 62 6c 79 53 6f 75 72 63 65 54  (AssemblySourceT
2cc60 69 6d 65 53 74 61 6d 70 41 74 74 72 69 62 75 74  imeStampAttribut
2cc70 65 29 2c 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a  e), false)[0];..
2cc80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc90 20 20 73 6f 75 72 63 65 54 69 6d 65 53 74 61 6d    sourceTimeStam
2cca0 70 20 3d 20 61 74 74 72 69 62 75 74 65 2e 53 6f  p = attribute.So
2ccb0 75 72 63 65 54 69 6d 65 53 74 61 6d 70 3b 0d 0a  urceTimeStamp;..
2ccc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2ccd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2cce0 28 28 73 6f 75 72 63 65 49 64 20 21 3d 20 6e 75  ((sourceId != nu
2ccf0 6c 6c 29 20 7c 7c 20 28 73 6f 75 72 63 65 54 69  ll) || (sourceTi
2cd00 6d 65 53 74 61 6d 70 20 21 3d 20 6e 75 6c 6c 29  meStamp != null)
2cd10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2cd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cd30 20 20 69 66 20 28 73 6f 75 72 63 65 49 64 20 3d    if (sourceId =
2cd40 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 75               sou
2cd60 72 63 65 49 64 20 3d 20 22 30 30 30 30 30 30 30  rceId = "0000000
2cd70 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
2cd80 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
2cd90 30 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  0";....         
2cda0 20 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63         if (sourc
2cdb0 65 54 69 6d 65 53 74 61 6d 70 20 3d 3d 20 6e 75  eTimeStamp == nu
2cdc0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2cdd0 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 54           sourceT
2cde0 69 6d 65 53 74 61 6d 70 20 3d 20 22 30 30 30 30  imeStamp = "0000
2cdf0 2d 30 30 2d 30 30 20 30 30 3a 30 30 3a 30 30 20  -00-00 00:00:00 
2ce00 55 54 43 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  UTC";....       
2ce10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ce20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
2ce30 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
2ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce50 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
2ce60 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  ariantCulture,..
2ce70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce80 20 20 20 20 22 7b 30 7d 20 7b 31 7d 22 2c 20 73      "{0} {1}", s
2ce90 6f 75 72 63 65 49 64 2c 20 73 6f 75 72 63 65 54  ourceId, sourceT
2cea0 69 6d 65 53 74 61 6d 70 29 3b 0d 0a 20 20 20 20  imeStamp);..    
2ceb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2cec0 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
2ced0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2cee0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2cef0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
2cf00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2cf10 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2cf20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2cf30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf80 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2cf90 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 51  mary>..    /// Q
2cfa0 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72  ueries and retur
2cfb0 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ns the value of 
2cfc0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65  the specified se
2cfd0 74 74 69 6e 67 2c 20 75 73 69 6e 67 20 74 68 65  tting, using the
2cfe0 0d 0a 20 20 20 20 2f 2f 2f 20 63 61 63 68 65 64  ..    /// cached
2cff0 20 73 65 74 74 69 6e 67 20 6e 61 6d 65 73 20 61   setting names a
2d000 6e 64 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  nd values for th
2d010 65 20 6c 61 73 74 20 63 6f 6e 6e 65 63 74 69 6f  e last connectio
2d020 6e 20 74 68 61 74 20 75 73 65 64 0d 0a 20 20 20  n that used..   
2d030 20 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63 72   /// the <see cr
2d040 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
2d050 74 69 6f 6e 2e 4f 70 65 6e 22 20 2f 3e 20 6d 65  tion.Open" /> me
2d060 74 68 6f 64 2c 20 77 68 65 6e 20 61 76 61 69 6c  thod, when avail
2d070 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
2d080 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
2d090 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2d0a0 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  name">..    /// 
2d0b0 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
2d0c0 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f  setting...    //
2d0d0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2d0e0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2d0f0 22 64 65 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20  "default">..    
2d100 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f  /// The value to
2d110 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20   be returned if 
2d120 74 68 65 20 73 65 74 74 69 6e 67 20 68 61 73 20  the setting has 
2d130 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 65 78 70  not been set exp
2d140 6c 69 63 69 74 6c 79 0d 0a 20 20 20 20 2f 2f 2f  licitly..    ///
2d150 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   or cannot be de
2d160 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f  termined...    /
2d170 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2d180 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2d190 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f  ="value">..    /
2d1a0 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  // The value of 
2d1b0 74 68 65 20 63 61 63 68 65 64 20 73 65 74 74 69  the cached setti
2d1c0 6e 67 20 69 73 20 73 74 6f 72 65 64 20 68 65 72  ng is stored her
2d1d0 65 20 69 66 20 66 6f 75 6e 64 3b 20 6f 74 68 65  e if found; othe
2d1e0 72 77 69 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20  rwise,..    /// 
2d1f0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 70 61  the value of <pa
2d200 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 64 65 66  ramref name="def
2d210 61 75 6c 74 22 20 2f 3e 20 69 73 20 73 74 6f 72  ault" /> is stor
2d220 65 64 20 68 65 72 65 2e 0d 0a 20 20 20 20 2f 2f  ed here...    //
2d230 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2d240 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
2d250 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
2d260 69 66 20 74 68 65 20 63 61 63 68 65 64 20 73 65  if the cached se
2d270 74 74 69 6e 67 20 77 61 73 20 66 6f 75 6e 64 3b  tting was found;
2d280 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f   otherwise, zero
2d290 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
2d2a0 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
2d2b0 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 54  te static bool T
2d2c0 72 79 47 65 74 4c 61 73 74 43 61 63 68 65 64 53  ryGetLastCachedS
2d2d0 65 74 74 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  etting(..       
2d2e0 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20   string name,.. 
2d2f0 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 40 64         object @d
2d300 65 66 61 75 6c 74 2c 0d 0a 20 20 20 20 20 20 20  efault,..       
2d310 20 6f 75 74 20 6f 62 6a 65 63 74 20 76 61 6c 75   out object valu
2d320 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  e..        )..  
2d330 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
2d340 28 5f 6c 61 73 74 43 6f 6e 6e 65 63 74 69 6f 6e  (_lastConnection
2d350 49 6e 4f 70 65 6e 20 3d 3d 20 6e 75 6c 6c 29 0d  InOpen == null).
2d360 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2d370 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
2d380 40 64 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20  @default;..     
2d390 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2d3a0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
2d3b0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
2d3c0 6e 20 5f 6c 61 73 74 43 6f 6e 6e 65 63 74 69 6f  n _lastConnectio
2d3d0 6e 49 6e 4f 70 65 6e 2e 54 72 79 47 65 74 43 61  nInOpen.TryGetCa
2d3e0 63 68 65 64 53 65 74 74 69 6e 67 28 0d 0a 20 20  chedSetting(..  
2d3f0 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20            name, 
2d400 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76 61  @default, out va
2d410 6c 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lue);..    }....
2d420 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d480 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
2d490 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2d4a0 2f 20 41 64 64 73 20 6f 72 20 73 65 74 73 20 74  / Adds or sets t
2d4b0 68 65 20 63 61 63 68 65 64 20 73 65 74 74 69 6e  he cached settin
2d4c0 67 20 73 70 65 63 69 66 69 65 64 20 62 79 20 3c  g specified by <
2d4d0 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e  paramref name="n
2d4e0 61 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ame" />..    ///
2d4f0 20 74 6f 20 74 68 65 20 76 61 6c 75 65 20 73 70   to the value sp
2d500 65 63 69 66 69 65 64 20 62 79 20 3c 70 61 72 61  ecified by <para
2d510 6d 72 65 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65  mref name="value
2d520 22 20 2f 3e 20 75 73 69 6e 67 20 74 68 65 20 63  " /> using the c
2d530 61 63 68 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 73  ached..    /// s
2d540 65 74 74 69 6e 67 20 6e 61 6d 65 73 20 61 6e 64  etting names and
2d550 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
2d560 6c 61 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  last connection 
2d570 74 68 61 74 20 75 73 65 64 20 74 68 65 0d 0a 20  that used the.. 
2d580 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
2d590 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
2d5a0 6f 6e 2e 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68  on.Open" /> meth
2d5b0 6f 64 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62  od, when availab
2d5c0 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  le...    /// </s
2d5d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2d5e0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
2d5f0 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  me">..    /// Th
2d600 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 61  e name of the ca
2d610 63 68 65 64 20 73 65 74 74 69 6e 67 20 74 6f 20  ched setting to 
2d620 61 64 64 20 6f 72 20 72 65 70 6c 61 63 65 2e 0d  add or replace..
2d630 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2d640 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2d650 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
2d660 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77  .    /// The new
2d670 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 63 61   value of the ca
2d680 63 68 65 64 20 73 65 74 74 69 6e 67 2e 0d 0a 20  ched setting... 
2d690 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2d6a0 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
2d6b0 74 69 63 20 76 6f 69 64 20 53 65 74 4c 61 73 74  tic void SetLast
2d6c0 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 0d 0a  CachedSetting(..
2d6d0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
2d6e0 61 6d 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  ame, /* in */.. 
2d6f0 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
2d700 6c 75 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  lue /* in */..  
2d710 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
2d720 20 20 20 20 20 20 20 20 69 66 20 28 5f 6c 61 73          if (_las
2d730 74 43 6f 6e 6e 65 63 74 69 6f 6e 49 6e 4f 70 65  tConnectionInOpe
2d740 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n == null)..    
2d750 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
2d760 0a 0d 0a 20 20 20 20 20 20 20 20 5f 6c 61 73 74  ...        _last
2d770 43 6f 6e 6e 65 63 74 69 6f 6e 49 6e 4f 70 65 6e  ConnectionInOpen
2d780 2e 53 65 74 43 61 63 68 65 64 53 65 74 74 69 6e  .SetCachedSettin
2d790 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  g(name, value);.
2d7a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2d810 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2d820 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
2d830 64 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63 74 69  default connecti
2d840 6f 6e 20 66 6c 61 67 73 20 74 6f 20 62 65 20 75  on flags to be u
2d850 73 65 64 20 66 6f 72 20 61 6c 6c 20 6f 70 65 6e  sed for all open
2d860 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0d 0a  ed connections..
2d870 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20 74 68 65      /// when the
2d880 79 20 61 72 65 20 6e 6f 74 20 70 72 65 73 65 6e  y are not presen
2d890 74 20 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  t in the connect
2d8a0 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ion string...   
2d8b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2d8c0 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
2d8d0 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  ic SQLiteConnect
2d8e0 69 6f 6e 46 6c 61 67 73 20 44 65 66 61 75 6c 74  ionFlags Default
2d8f0 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  Flags..    {..  
2d900 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
2d910 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2d920 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20    string name = 
2d930 22 44 65 66 61 75 6c 74 46 6c 61 67 73 5f 53 51  "DefaultFlags_SQ
2d940 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 3b  LiteConnection";
2d950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62  ..            ob
2d960 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  ject value;.... 
2d970 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
2d980 54 72 79 47 65 74 4c 61 73 74 43 61 63 68 65 64  TryGetLastCached
2d990 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 6e 75  Setting(name, nu
2d9a0 6c 6c 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  ll, out value)).
2d9b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2d9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9d0 76 61 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e 61  value = UnsafeNa
2d9e0 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53  tiveMethods.GetS
2d9f0 65 74 74 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65  ettingValue(name
2da00 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
2da10 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61 73            SetLas
2da20 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e  tCachedSetting(n
2da30 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
2da40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2da50 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
2da60 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
2da70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2da80 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65  eturn FallbackDe
2da90 66 61 75 6c 74 46 6c 61 67 73 3b 0d 0a 0d 0a 20  faultFlags;.... 
2daa0 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
2dab0 74 20 65 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72  t enumValue = Tr
2dac0 79 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20  yParseEnum(..   
2dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
2dae0 65 6f 66 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  eof(SQLiteConnec
2daf0 74 69 6f 6e 46 6c 61 67 73 29 2c 20 76 61 6c 75  tionFlags), valu
2db00 65 2e 54 6f 53 74 72 69 6e 67 28 29 2c 20 74 72  e.ToString(), tr
2db10 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
2db20 20 20 20 20 69 66 20 28 65 6e 75 6d 56 61 6c 75      if (enumValu
2db30 65 20 69 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65  e is SQLiteConne
2db40 63 74 69 6f 6e 46 6c 61 67 73 29 0d 0a 20 20 20  ctionFlags)..   
2db50 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2db60 75 72 6e 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65  urn (SQLiteConne
2db70 63 74 69 6f 6e 46 6c 61 67 73 29 65 6e 75 6d 56  ctionFlags)enumV
2db80 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
2db90 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 6c       return Fall
2dba0 62 61 63 6b 44 65 66 61 75 6c 74 46 6c 61 67 73  backDefaultFlags
2dbb0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2dbc0 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f    }......    ///
2dbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2dc30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2dc40 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 65  >..    /// The e
2dc50 78 74 72 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  xtra connection 
2dc60 66 6c 61 67 73 20 74 6f 20 62 65 20 75 73 65 64  flags to be used
2dc70 20 66 6f 72 20 61 6c 6c 20 6f 70 65 6e 65 64 20   for all opened 
2dc80 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0d 0a 20 20  connections...  
2dc90 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2dca0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
2dcb0 74 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  tic SQLiteConnec
2dcc0 74 69 6f 6e 46 6c 61 67 73 20 53 68 61 72 65 64  tionFlags Shared
2dcd0 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20  Flags..    {..  
2dce0 20 20 20 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b        get { lock
2dcf0 20 28 5f 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72   (_syncRoot) { r
2dd00 65 74 75 72 6e 20 5f 73 68 61 72 65 64 46 6c 61  eturn _sharedFla
2dd10 67 73 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20  gs; } }..       
2dd20 20 73 65 74 20 7b 20 6c 6f 63 6b 20 28 5f 73 79   set { lock (_sy
2dd30 6e 63 52 6f 6f 74 29 20 7b 20 5f 73 68 61 72 65  ncRoot) { _share
2dd40 64 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20  dFlags = value; 
2dd50 7d 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  } }..    }....  
2dd60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2dd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dda0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ddc0 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  /....    /// <su
2ddd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2dde0 52 65 74 75 72 6e 73 20 74 68 65 20 73 74 61 74  Returns the stat
2ddf0 65 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74  e of the connect
2de00 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
2de10 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50  summary>..#if !P
2de20 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2de30 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42  RAMEWORK..    [B
2de40 72 6f 77 73 61 62 6c 65 28 66 61 6c 73 65 29 2c  rowsable(false),
2de50 20 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69   DesignerSeriali
2de60 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
2de70 28 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69  (DesignerSeriali
2de80 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
2de90 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69  .Hidden)]..#endi
2dea0 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  f..    public ov
2deb0 65 72 72 69 64 65 20 43 6f 6e 6e 65 63 74 69 6f  erride Connectio
2dec0 6e 53 74 61 74 65 20 53 74 61 74 65 0d 0a 20 20  nState State..  
2ded0 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a    {..      get..
2dee0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2def0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2df00 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
2df10 6e 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61  n _connectionSta
2df20 74 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  te;..      }..  
2df30 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
2df40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2df50 2f 20 50 61 73 73 65 73 20 61 20 73 68 75 74 64  / Passes a shutd
2df60 6f 77 6e 20 72 65 71 75 65 73 74 20 74 6f 20 74  own request to t
2df70 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
2df80 69 62 72 61 72 79 2e 20 20 44 6f 65 73 20 6e 6f  ibrary.  Does no
2df90 74 20 74 68 72 6f 77 0d 0a 20 20 20 20 2f 2f 2f  t throw..    ///
2dfa0 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66   an exception if
2dfb0 20 74 68 65 20 73 68 75 74 64 6f 77 6e 20 72 65   the shutdown re
2dfc0 71 75 65 73 74 20 66 61 69 6c 73 2e 0d 0a 20 20  quest fails...  
2dfd0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2dfe0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
2dff0 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 73  ns>..    /// A s
2e000 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
2e010 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e 65 2e  eturn code (i.e.
2e020 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63 65 73   zero for succes
2e030 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f 20 66  s and non-zero f
2e040 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 66 61 69 6c  or..    /// fail
2e050 75 72 65 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ure)...    /// <
2e060 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2e070 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f  ublic SQLiteErro
2e080 72 43 6f 64 65 20 53 68 75 74 64 6f 77 6e 28 29  rCode Shutdown()
2e090 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2e0a0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2e0b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
2e0c0 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
2e0d0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
2e0e0 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
2e0f0 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
2e100 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  "Database connec
2e110 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66  tion not valid f
2e120 6f 72 20 73 68 75 74 64 6f 77 6e 2e 22 29 3b 0d  or shutdown.");.
2e130 0a 0d 0a 20 20 20 20 20 20 20 20 5f 73 71 6c 2e  ...        _sql.
2e140 43 6c 6f 73 65 28 66 61 6c 73 65 29 3b 20 2f 2a  Close(false); /*
2e150 20 4e 4f 54 45 3a 20 4d 55 53 54 20 62 65 20 63   NOTE: MUST be c
2e160 6c 6f 73 65 64 20 62 65 66 6f 72 65 20 73 68 75  losed before shu
2e170 74 64 6f 77 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20  tdown. */..     
2e180 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
2e190 64 65 20 72 63 20 3d 20 5f 73 71 6c 2e 53 68 75  de rc = _sql.Shu
2e1a0 74 64 6f 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20  tdown();....#if 
2e1b0 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
2e1c0 26 26 20 54 52 41 43 45 5f 43 4f 4e 4e 45 43 54  && TRACE_CONNECT
2e1d0 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ION..        if 
2e1e0 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
2e1f0 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
2e200 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44          System.D
2e210 69 61 67 6e 6f 73 74 69 63 73 2e 54 72 61 63 65  iagnostics.Trace
2e220 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
2e230 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
2e240 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
2e250 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
2e260 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
2e270 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
2e280 20 20 20 20 20 22 53 68 75 74 64 6f 77 6e 20 28       "Shutdown (
2e290 49 6e 73 74 61 6e 63 65 29 20 46 61 69 6c 65 64  Instance) Failed
2e2a0 3a 20 7b 30 7d 22 2c 20 72 63 29 29 3b 0d 0a 23  : {0}", rc));..#
2e2b0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
2e2c0 20 72 65 74 75 72 6e 20 72 63 3b 0d 0a 20 20 20   return rc;..   
2e2d0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
2e2e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2e2f0 20 50 61 73 73 65 73 20 61 20 73 68 75 74 64 6f   Passes a shutdo
2e300 77 6e 20 72 65 71 75 65 73 74 20 74 6f 20 74 68  wn request to th
2e310 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
2e320 62 72 61 72 79 2e 20 20 54 68 72 6f 77 73 20 61  brary.  Throws a
2e330 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 63 65 70  n..    /// excep
2e340 74 69 6f 6e 20 69 66 20 74 68 65 20 73 68 75 74  tion if the shut
2e350 64 6f 77 6e 20 72 65 71 75 65 73 74 20 66 61 69  down request fai
2e360 6c 73 20 61 6e 64 20 74 68 65 20 6e 6f 2d 74 68  ls and the no-th
2e370 72 6f 77 20 70 61 72 61 6d 65 74 65 72 0d 0a 20  row parameter.. 
2e380 20 20 20 2f 2f 2f 20 69 73 20 6e 6f 6e 2d 7a 65     /// is non-ze
2e390 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ro...    /// </s
2e3a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2e3b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69   <param name="di
2e3c0 72 65 63 74 6f 72 69 65 73 22 3e 0d 0a 20 20 20  rectories">..   
2e3d0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
2e3e0 20 72 65 73 65 74 20 74 68 65 20 64 61 74 61 62   reset the datab
2e3f0 61 73 65 20 61 6e 64 20 74 65 6d 70 6f 72 61 72  ase and temporar
2e400 79 20 64 69 72 65 63 74 6f 72 69 65 73 20 74 6f  y directories to
2e410 20 74 68 65 69 72 0d 0a 20 20 20 20 2f 2f 2f 20   their..    /// 
2e420 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73 2c 20  default values, 
2e430 77 68 69 63 68 20 73 68 6f 75 6c 64 20 62 65 20  which should be 
2e440 6e 75 6c 6c 20 66 6f 72 20 62 6f 74 68 2e 0d 0a  null for both...
2e450 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2e460 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2e470 20 6e 61 6d 65 3d 22 6e 6f 54 68 72 6f 77 22 3e   name="noThrow">
2e480 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 6e  ..    /// When n
2e490 6f 6e 2d 7a 65 72 6f 2c 20 74 68 72 6f 77 20 61  on-zero, throw a
2e4a0 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74  n exception if t
2e4b0 68 65 20 73 68 75 74 64 6f 77 6e 20 72 65 71 75  he shutdown requ
2e4c0 65 73 74 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20  est fails...    
2e4d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2e4e0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2e4f0 76 6f 69 64 20 53 68 75 74 64 6f 77 6e 28 0d 0a  void Shutdown(..
2e500 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 64 69 72          bool dir
2e510 65 63 74 6f 72 69 65 73 2c 0d 0a 20 20 20 20 20  ectories,..     
2e520 20 20 20 62 6f 6f 6c 20 6e 6f 54 68 72 6f 77 0d     bool noThrow.
2e530 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
2e540 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  {..        SQLit
2e550 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20  eErrorCode rc = 
2e560 53 51 4c 69 74 65 33 2e 53 74 61 74 69 63 53 68  SQLite3.StaticSh
2e570 75 74 64 6f 77 6e 28 64 69 72 65 63 74 6f 72 69  utdown(directori
2e580 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  es);....        
2e590 69 66 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65  if (rc != SQLite
2e5a0 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20  ErrorCode.Ok).. 
2e5b0 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e         {..#if !N
2e5c0 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
2e5d0 20 54 52 41 43 45 5f 43 4f 4e 4e 45 43 54 49 4f   TRACE_CONNECTIO
2e5e0 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  N..            S
2e5f0 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63  ystem.Diagnostic
2e600 73 2e 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e  s.Trace.WriteLin
2e610 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  e(HelperMethods.
2e620 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
2e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
2e640 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2e650 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
2e660 20 20 20 20 20 20 20 20 20 20 20 20 22 53 68 75              "Shu
2e670 74 64 6f 77 6e 20 28 53 74 61 74 69 63 29 20 46  tdown (Static) F
2e680 61 69 6c 65 64 3a 20 7b 30 7d 22 2c 20 72 63 29  ailed: {0}", rc)
2e690 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
2e6a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6e            if (!n
2e6b0 6f 54 68 72 6f 77 29 0d 0a 20 20 20 20 20 20 20  oThrow)..       
2e6c0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2e6d0 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
2e6e0 6f 6e 28 72 63 2c 20 6e 75 6c 6c 29 3b 0d 0a 20  on(rc, null);.. 
2e6f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
2e700 0a 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  ...    /// Enabl
2e710 65 73 20 6f 72 20 64 69 73 61 62 6c 65 64 20 65  es or disabled e
2e720 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
2e730 6f 64 65 73 20 72 65 74 75 72 6e 65 64 20 62 79  odes returned by
2e740 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 70 75 62   SQLite..    pub
2e750 6c 69 63 20 76 6f 69 64 20 53 65 74 45 78 74 65  lic void SetExte
2e760 6e 64 65 64 52 65 73 75 6c 74 43 6f 64 65 73 28  ndedResultCodes(
2e770 62 6f 6f 6c 20 62 4f 6e 4f 66 66 29 0d 0a 20 20  bool bOnOff)..  
2e780 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b    {..      Check
2e790 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
2e7a0 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20 21 3d       if (_sql !=
2e7b0 20 6e 75 6c 6c 29 20 5f 73 71 6c 2e 53 65 74 45   null) _sql.SetE
2e7c0 78 74 65 6e 64 65 64 52 65 73 75 6c 74 43 6f 64  xtendedResultCod
2e7d0 65 73 28 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20 20  es(bOnOff);..   
2e7e0 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62   }..    /// Enab
2e7f0 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 64 20  les or disabled 
2e800 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
2e810 63 6f 64 65 73 20 72 65 74 75 72 6e 65 64 20 62  codes returned b
2e820 79 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 70 75  y SQLite..    pu
2e830 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  blic SQLiteError
2e840 43 6f 64 65 20 52 65 73 75 6c 74 43 6f 64 65 28  Code ResultCode(
2e850 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2e860 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2e870 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 73  ....      if (_s
2e880 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ql == null)..   
2e890 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
2e8a0 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
2e8b0 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62 61  xception("Databa
2e8c0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f  se connection no
2e8d0 74 20 76 61 6c 69 64 20 66 6f 72 20 67 65 74 74  t valid for gett
2e8e0 69 6e 67 20 72 65 73 75 6c 74 20 63 6f 64 65 2e  ing result code.
2e8f0 22 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ");..      retur
2e900 6e 20 5f 73 71 6c 2e 52 65 73 75 6c 74 43 6f 64  n _sql.ResultCod
2e910 65 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  e();..    }..   
2e920 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20   /// Enables or 
2e930 64 69 73 61 62 6c 65 64 20 65 78 74 65 6e 64 65  disabled extende
2e940 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 72  d result codes r
2e950 65 74 75 72 6e 65 64 20 62 79 20 53 51 4c 69 74  eturned by SQLit
2e960 65 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51  e..    public SQ
2e970 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 45 78  LiteErrorCode Ex
2e980 74 65 6e 64 65 64 52 65 73 75 6c 74 43 6f 64 65  tendedResultCode
2e990 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
2e9a0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2e9b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 5f  ;....      if (_
2e9c0 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  sql == null)..  
2e9d0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2e9e0 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2e9f0 45 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62  Exception("Datab
2ea00 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e  ase connection n
2ea10 6f 74 20 76 61 6c 69 64 20 66 6f 72 20 67 65 74  ot valid for get
2ea20 74 69 6e 67 20 65 78 74 65 6e 64 65 64 20 72 65  ting extended re
2ea30 73 75 6c 74 20 63 6f 64 65 2e 22 29 3b 0d 0a 20  sult code.");.. 
2ea40 20 20 20 20 20 72 65 74 75 72 6e 20 5f 73 71 6c       return _sql
2ea50 2e 45 78 74 65 6e 64 65 64 52 65 73 75 6c 74 43  .ExtendedResultC
2ea60 6f 64 65 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ode();..    }...
2ea70 0a 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 6c  .    /// Add a l
2ea80 6f 67 20 6d 65 73 73 61 67 65 20 76 69 61 20 74  og message via t
2ea90 68 65 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65  he SQLite sqlite
2eaa0 33 5f 6c 6f 67 20 69 6e 74 65 72 66 61 63 65 2e  3_log interface.
2eab0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
2eac0 64 20 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c  d LogMessage(SQL
2ead0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 69 45 72  iteErrorCode iEr
2eae0 72 43 6f 64 65 2c 20 73 74 72 69 6e 67 20 7a 4d  rCode, string zM
2eaf0 65 73 73 61 67 65 29 0d 0a 20 20 20 20 7b 0d 0a  essage)..    {..
2eb00 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
2eb10 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
2eb20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c  if (_sql == null
2eb30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 72  )..          thr
2eb40 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
2eb50 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
2eb60 28 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  ("Database conne
2eb70 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20  ction not valid 
2eb80 66 6f 72 20 6c 6f 67 67 69 6e 67 20 6d 65 73 73  for logging mess
2eb90 61 67 65 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  age.");....     
2eba0 20 5f 73 71 6c 2e 4c 6f 67 4d 65 73 73 61 67 65   _sql.LogMessage
2ebb0 28 69 45 72 72 43 6f 64 65 2c 20 7a 4d 65 73 73  (iErrCode, zMess
2ebc0 61 67 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  age);..    }....
2ebd0 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 6c 6f      /// Add a lo
2ebe0 67 20 6d 65 73 73 61 67 65 20 76 69 61 20 74 68  g message via th
2ebf0 65 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65 33  e SQLite sqlite3
2ec00 5f 6c 6f 67 20 69 6e 74 65 72 66 61 63 65 2e 0d  _log interface..
2ec10 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
2ec20 20 4c 6f 67 4d 65 73 73 61 67 65 28 69 6e 74 20   LogMessage(int 
2ec30 69 45 72 72 43 6f 64 65 2c 20 73 74 72 69 6e 67  iErrCode, string
2ec40 20 7a 4d 65 73 73 61 67 65 29 0d 0a 20 20 20 20   zMessage)..    
2ec50 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69  {..      CheckDi
2ec60 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2ec70 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e     if (_sql == n
2ec80 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2ec90 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
2eca0 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
2ecb0 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20 63 6f  ion("Database co
2ecc0 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c  nnection not val
2ecd0 69 64 20 66 6f 72 20 6c 6f 67 67 69 6e 67 20 6d  id for logging m
2ece0 65 73 73 61 67 65 2e 22 29 3b 0d 0a 0d 0a 20 20  essage.");....  
2ecf0 20 20 20 20 5f 73 71 6c 2e 4c 6f 67 4d 65 73 73      _sql.LogMess
2ed00 61 67 65 28 28 53 51 4c 69 74 65 45 72 72 6f 72  age((SQLiteError
2ed10 43 6f 64 65 29 69 45 72 72 43 6f 64 65 2c 20 7a  Code)iErrCode, z
2ed20 4d 65 73 73 61 67 65 29 3b 0d 0a 20 20 20 20 7d  Message);..    }
2ed30 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
2ed40 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50  CODEC || INTEROP
2ed50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 20 20  _INCLUDE_SEE..  
2ed60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2ed70 0a 20 20 20 20 2f 2f 2f 20 43 68 61 6e 67 65 20  .    /// Change 
2ed80 74 68 65 20 70 61 73 73 77 6f 72 64 20 28 6f 72  the password (or
2ed90 20 61 73 73 69 67 6e 20 61 20 70 61 73 73 77 6f   assign a passwo
2eda0 72 64 29 20 74 6f 20 61 6e 20 6f 70 65 6e 20 64  rd) to an open d
2edb0 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f  atabase...    //
2edc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2edd0 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
2ede0 0a 20 20 20 20 2f 2f 2f 20 4e 6f 20 72 65 61 64  .    /// No read
2edf0 65 72 73 20 6f 72 20 77 72 69 74 65 72 73 20 6d  ers or writers m
2ee00 61 79 20 62 65 20 61 63 74 69 76 65 20 66 6f 72  ay be active for
2ee10 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e 20 20   this process.  
2ee20 54 68 65 20 64 61 74 61 62 61 73 65 20 6d 75 73  The database mus
2ee30 74 20 61 6c 72 65 61 64 79 20 62 65 20 6f 70 65  t already be ope
2ee40 6e 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 69  n..    /// and i
2ee50 66 20 69 74 20 61 6c 72 65 61 64 79 20 77 61 73  f it already was
2ee60 20 70 61 73 73 77 6f 72 64 20 70 72 6f 74 65 63   password protec
2ee70 74 65 64 2c 20 74 68 65 20 65 78 69 73 74 69 6e  ted, the existin
2ee80 67 20 70 61 73 73 77 6f 72 64 20 6d 75 73 74 20  g password must 
2ee90 61 6c 72 65 61 64 79 20 68 61 76 65 20 62 65 65  already have bee
2eea0 6e 20 73 75 70 70 6c 69 65 64 2e 0d 0a 20 20 20  n supplied...   
2eeb0 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d   /// </remarks>.
2eec0 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
2eed0 6e 61 6d 65 3d 22 6e 65 77 50 61 73 73 77 6f 72  name="newPasswor
2eee0 64 22 3e 54 68 65 20 6e 65 77 20 70 61 73 73 77  d">The new passw
2eef0 6f 72 64 20 74 6f 20 61 73 73 69 67 6e 20 74 6f  ord to assign to
2ef00 20 74 68 65 20 64 61 74 61 62 61 73 65 3c 2f 70   the database</p
2ef10 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69  aram>..    publi
2ef20 63 20 76 6f 69 64 20 43 68 61 6e 67 65 50 61 73  c void ChangePas
2ef30 73 77 6f 72 64 28 73 74 72 69 6e 67 20 6e 65 77  sword(string new
2ef40 50 61 73 73 77 6f 72 64 29 0d 0a 20 20 20 20 7b  Password)..    {
2ef50 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69 73  ..      CheckDis
2ef60 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
2ef70 20 20 43 68 61 6e 67 65 50 61 73 73 77 6f 72 64    ChangePassword
2ef80 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
2ef90 45 6d 70 74 79 28 6e 65 77 50 61 73 73 77 6f 72  Empty(newPasswor
2efa0 64 29 20 3f 20 6e 75 6c 6c 20 3a 20 55 54 46 38  d) ? null : UTF8
2efb0 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65  Encoding.UTF8.Ge
2efc0 74 42 79 74 65 73 28 6e 65 77 50 61 73 73 77 6f  tBytes(newPasswo
2efd0 72 64 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rd));..    }....
2efe0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2eff0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 68 61 6e 67  >..    /// Chang
2f000 65 20 74 68 65 20 70 61 73 73 77 6f 72 64 20 28  e the password (
2f010 6f 72 20 61 73 73 69 67 6e 20 61 20 70 61 73 73  or assign a pass
2f020 77 6f 72 64 29 20 74 6f 20 61 6e 20 6f 70 65 6e  word) to an open
2f030 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
2f040 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2f050 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
2f060 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 20 72 65  >..    /// No re
2f070 61 64 65 72 73 20 6f 72 20 77 72 69 74 65 72 73  aders or writers
2f080 20 6d 61 79 20 62 65 20 61 63 74 69 76 65 20 66   may be active f
2f090 6f 72 20 74 68 69 73 20 70 72 6f 63 65 73 73 2e  or this process.
2f0a0 20 20 54 68 65 20 64 61 74 61 62 61 73 65 20 6d    The database m
2f0b0 75 73 74 20 61 6c 72 65 61 64 79 20 62 65 20 6f  ust already be o
2f0c0 70 65 6e 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64  pen..    /// and
2f0d0 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20 77   if it already w
2f0e0 61 73 20 70 61 73 73 77 6f 72 64 20 70 72 6f 74  as password prot
2f0f0 65 63 74 65 64 2c 20 74 68 65 20 65 78 69 73 74  ected, the exist
2f100 69 6e 67 20 70 61 73 73 77 6f 72 64 20 6d 75 73  ing password mus
2f110 74 20 61 6c 72 65 61 64 79 20 68 61 76 65 20 62  t already have b
2f120 65 65 6e 20 73 75 70 70 6c 69 65 64 2e 0d 0a 20  een supplied... 
2f130 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73     /// </remarks
2f140 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2f150 6d 20 6e 61 6d 65 3d 22 6e 65 77 50 61 73 73 77  m name="newPassw
2f160 6f 72 64 22 3e 54 68 65 20 6e 65 77 20 70 61 73  ord">The new pas
2f170 73 77 6f 72 64 20 74 6f 20 61 73 73 69 67 6e 20  sword to assign 
2f180 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 3c  to the database<
2f190 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62  /param>..    pub
2f1a0 6c 69 63 20 76 6f 69 64 20 43 68 61 6e 67 65 50  lic void ChangeP
2f1b0 61 73 73 77 6f 72 64 28 62 79 74 65 5b 5d 20 6e  assword(byte[] n
2f1c0 65 77 50 61 73 73 77 6f 72 64 29 0d 0a 20 20 20  ewPassword)..   
2f1d0 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44   {..      CheckD
2f1e0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
2f1f0 20 20 20 20 69 66 20 28 5f 63 6f 6e 6e 65 63 74      if (_connect
2f200 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e  ionState != Conn
2f210 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e  ectionState.Open
2f220 29 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77  )..        throw
2f230 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2f240 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22  ationException("
2f250 44 61 74 61 62 61 73 65 20 6d 75 73 74 20 62 65  Database must be
2f260 20 6f 70 65 6e 65 64 20 62 65 66 6f 72 65 20 63   opened before c
2f270 68 61 6e 67 69 6e 67 20 74 68 65 20 70 61 73 73  hanging the pass
2f280 77 6f 72 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20  word.");....    
2f290 20 20 5f 73 71 6c 2e 43 68 61 6e 67 65 50 61 73    _sql.ChangePas
2f2a0 73 77 6f 72 64 28 6e 65 77 50 61 73 73 77 6f 72  sword(newPasswor
2f2b0 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
2f2c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2f2d0 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68  .    /// Sets th
2f2e0 65 20 70 61 73 73 77 6f 72 64 20 66 6f 72 20 61  e password for a
2f2f0 20 70 61 73 73 77 6f 72 64 2d 70 72 6f 74 65 63   password-protec
2f300 74 65 64 20 64 61 74 61 62 61 73 65 2e 20 20 41  ted database.  A
2f310 20 70 61 73 73 77 6f 72 64 2d 70 72 6f 74 65 63   password-protec
2f320 74 65 64 20 64 61 74 61 62 61 73 65 20 69 73 0d  ted database is.
2f330 0a 20 20 20 20 2f 2f 2f 20 75 6e 75 73 61 62 6c  .    /// unusabl
2f340 65 20 66 6f 72 20 61 6e 79 20 6f 70 65 72 61 74  e for any operat
2f350 69 6f 6e 20 75 6e 74 69 6c 20 74 68 65 20 70 61  ion until the pa
2f360 73 73 77 6f 72 64 20 68 61 73 20 62 65 65 6e 20  ssword has been 
2f370 73 65 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  set...    /// </
2f380 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2f390 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
2f3a0 61 74 61 62 61 73 65 50 61 73 73 77 6f 72 64 22  atabasePassword"
2f3b0 3e 54 68 65 20 70 61 73 73 77 6f 72 64 20 66 6f  >The password fo
2f3c0 72 20 74 68 65 20 64 61 74 61 62 61 73 65 3c 2f  r the database</
2f3d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c  param>..    publ
2f3e0 69 63 20 76 6f 69 64 20 53 65 74 50 61 73 73 77  ic void SetPassw
2f3f0 6f 72 64 28 73 74 72 69 6e 67 20 64 61 74 61 62  ord(string datab
2f400 61 73 65 50 61 73 73 77 6f 72 64 29 0d 0a 20 20  asePassword)..  
2f410 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b    {..      Check
2f420 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
2f430 20 20 20 20 20 53 65 74 50 61 73 73 77 6f 72 64       SetPassword
2f440 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
2f450 45 6d 70 74 79 28 64 61 74 61 62 61 73 65 50 61  Empty(databasePa
2f460 73 73 77 6f 72 64 29 20 3f 20 6e 75 6c 6c 20 3a  ssword) ? null :
2f470 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 2e 55 54   UTF8Encoding.UT
2f480 46 38 2e 47 65 74 42 79 74 65 73 28 64 61 74 61  F8.GetBytes(data
2f490 62 61 73 65 50 61 73 73 77 6f 72 64 29 29 3b 0d  basePassword));.
2f4a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2f4b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2f4c0 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 70 61   /// Sets the pa
2f4d0 73 73 77 6f 72 64 20 66 6f 72 20 61 20 70 61 73  ssword for a pas
2f4e0 73 77 6f 72 64 2d 70 72 6f 74 65 63 74 65 64 20  sword-protected 
2f4f0 64 61 74 61 62 61 73 65 2e 20 20 41 20 70 61 73  database.  A pas
2f500 73 77 6f 72 64 2d 70 72 6f 74 65 63 74 65 64 20  sword-protected 
2f510 64 61 74 61 62 61 73 65 20 69 73 0d 0a 20 20 20  database is..   
2f520 20 2f 2f 2f 20 75 6e 75 73 61 62 6c 65 20 66 6f   /// unusable fo
2f530 72 20 61 6e 79 20 6f 70 65 72 61 74 69 6f 6e 20  r any operation 
2f540 75 6e 74 69 6c 20 74 68 65 20 70 61 73 73 77 6f  until the passwo
2f550 72 64 20 68 61 73 20 62 65 65 6e 20 73 65 74 2e  rd has been set.
2f560 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2f570 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2f580 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 61 62  aram name="datab
2f590 61 73 65 50 61 73 73 77 6f 72 64 22 3e 54 68 65  asePassword">The
2f5a0 20 70 61 73 73 77 6f 72 64 20 66 6f 72 20 74 68   password for th
2f5b0 65 20 64 61 74 61 62 61 73 65 3c 2f 70 61 72 61  e database</para
2f5c0 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  m>..    public v
2f5d0 6f 69 64 20 53 65 74 50 61 73 73 77 6f 72 64 28  oid SetPassword(
2f5e0 62 79 74 65 5b 5d 20 64 61 74 61 62 61 73 65 50  byte[] databaseP
2f5f0 61 73 73 77 6f 72 64 29 0d 0a 20 20 20 20 7b 0d  assword)..    {.
2f600 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70  .      CheckDisp
2f610 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2f620 20 69 66 20 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e   if (_connection
2f630 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e 65 63 74  State != Connect
2f640 69 6f 6e 53 74 61 74 65 2e 43 6c 6f 73 65 64 29  ionState.Closed)
2f650 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77 20  ..        throw 
2f660 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
2f670 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 50  tionException("P
2f680 61 73 73 77 6f 72 64 20 63 61 6e 20 6f 6e 6c 79  assword can only
2f690 20 62 65 20 73 65 74 20 62 65 66 6f 72 65 20 74   be set before t
2f6a0 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
2f6b0 70 65 6e 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20  pened.");....   
2f6c0 20 20 20 69 66 20 28 64 61 74 61 62 61 73 65 50     if (databaseP
2f6d0 61 73 73 77 6f 72 64 20 21 3d 20 6e 75 6c 6c 29  assword != null)
2f6e0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 61  ..        if (da
2f6f0 74 61 62 61 73 65 50 61 73 73 77 6f 72 64 2e 4c  tabasePassword.L
2f700 65 6e 67 74 68 20 3d 3d 20 30 29 20 64 61 74 61  ength == 0) data
2f710 62 61 73 65 50 61 73 73 77 6f 72 64 20 3d 20 6e  basePassword = n
2f720 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 5f 70  ull;....      _p
2f730 61 73 73 77 6f 72 64 20 3d 20 64 61 74 61 62 61  assword = databa
2f740 73 65 50 61 73 73 77 6f 72 64 3b 0d 0a 20 20 20  sePassword;..   
2f750 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
2f760 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2f770 0a 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73  .    /// Queries
2f780 20 6f 72 20 6d 6f 64 69 66 69 65 73 20 74 68 65   or modifies the
2f790 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 74 72 69   number of retri
2f7a0 65 73 20 6f 72 20 74 68 65 20 72 65 74 72 79 20  es or the retry 
2f7b0 69 6e 74 65 72 76 61 6c 20 28 69 6e 20 6d 69 6c  interval (in mil
2f7c0 6c 69 73 65 63 6f 6e 64 73 29 20 66 6f 72 0d 0a  liseconds) for..
2f7d0 20 20 20 20 2f 2f 2f 20 63 65 72 74 61 69 6e 20      /// certain 
2f7e0 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e 73 20 74  I/O operations t
2f7f0 68 61 74 20 6d 61 79 20 66 61 69 6c 20 64 75 65  hat may fail due
2f800 20 74 6f 20 61 6e 74 69 2d 76 69 72 75 73 20 73   to anti-virus s
2f810 6f 66 74 77 61 72 65 2e 0d 0a 20 20 20 20 2f 2f  oftware...    //
2f820 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f830 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2f840 65 3d 22 63 6f 75 6e 74 22 3e 54 68 65 20 6e 75  e="count">The nu
2f850 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 74 6f  mber of times to
2f860 20 72 65 74 72 79 20 74 68 65 20 49 2f 4f 20 6f   retry the I/O o
2f870 70 65 72 61 74 69 6f 6e 2e 20 20 41 20 6e 65 67  peration.  A neg
2f880 61 74 69 76 65 20 76 61 6c 75 65 0d 0a 20 20 20  ative value..   
2f890 20 2f 2f 2f 20 77 69 6c 6c 20 63 61 75 73 65 20   /// will cause 
2f8a0 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 75 6e  the current coun
2f8b0 74 20 74 6f 20 62 65 20 71 75 65 72 69 65 64 20  t to be queried 
2f8c0 61 6e 64 20 72 65 70 6c 61 63 65 20 74 68 61 74  and replace that
2f8d0 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65 2e   negative value.
2f8e0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2f8f0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
2f900 6e 74 65 72 76 61 6c 22 3e 54 68 65 20 6e 75 6d  nterval">The num
2f910 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f  ber of milliseco
2f920 6e 64 73 20 74 6f 20 77 61 69 74 20 62 65 66 6f  nds to wait befo
2f930 72 65 20 72 65 74 72 79 69 6e 67 20 74 68 65 20  re retrying the 
2f940 49 2f 4f 0d 0a 20 20 20 20 2f 2f 2f 20 6f 70 65  I/O..    /// ope
2f950 72 61 74 69 6f 6e 2e 20 20 54 68 69 73 20 6e 75  ration.  This nu
2f960 6d 62 65 72 20 69 73 20 6d 75 6c 74 69 70 6c 69  mber is multipli
2f970 65 64 20 62 79 20 74 68 65 20 6e 75 6d 62 65 72  ed by the number
2f980 20 6f 66 20 72 65 74 72 79 20 61 74 74 65 6d 70   of retry attemp
2f990 74 73 20 73 6f 20 66 61 72 20 74 6f 20 63 6f 6d  ts so far to com
2f9a0 65 0d 0a 20 20 20 20 2f 2f 2f 20 75 70 20 77 69  e..    /// up wi
2f9b0 74 68 20 74 68 65 20 66 69 6e 61 6c 20 6e 75 6d  th the final num
2f9c0 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f  ber of milliseco
2f9d0 6e 64 73 20 74 6f 20 77 61 69 74 2e 20 20 41 20  nds to wait.  A 
2f9e0 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65 20 77  negative value w
2f9f0 69 6c 6c 20 63 61 75 73 65 20 74 68 65 0d 0a 20  ill cause the.. 
2fa00 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 20 69     /// current i
2fa10 6e 74 65 72 76 61 6c 20 74 6f 20 62 65 20 71 75  nterval to be qu
2fa20 65 72 69 65 64 20 61 6e 64 20 72 65 70 6c 61 63  eried and replac
2fa30 65 20 74 68 61 74 20 6e 65 67 61 74 69 76 65 20  e that negative 
2fa40 76 61 6c 75 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  value.</param>..
2fa50 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2fa60 3e 5a 65 72 6f 20 66 6f 72 20 73 75 63 63 65 73  >Zero for succes
2fa70 73 2c 20 6e 6f 6e 2d 7a 65 72 6f 20 66 6f 72 20  s, non-zero for 
2fa80 65 72 72 6f 72 2e 3c 2f 72 65 74 75 72 6e 73 3e  error.</returns>
2fa90 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c  ..    public SQL
2faa0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 65 74  iteErrorCode Set
2fab0 41 76 52 65 74 72 79 28 72 65 66 20 69 6e 74 20  AvRetry(ref int 
2fac0 63 6f 75 6e 74 2c 20 72 65 66 20 69 6e 74 20 69  count, ref int i
2fad0 6e 74 65 72 76 61 6c 29 0d 0a 20 20 20 20 7b 0d  nterval)..    {.
2fae0 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69  .        CheckDi
2faf0 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2fb00 20 20 20 20 20 69 66 20 28 5f 63 6f 6e 6e 65 63       if (_connec
2fb10 74 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e  tionState != Con
2fb20 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65  nectionState.Ope
2fb30 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n)..            
2fb40 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
2fb50 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
2fb60 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
2fb70 20 20 20 20 20 20 22 44 61 74 61 62 61 73 65 20        "Database 
2fb80 6d 75 73 74 20 62 65 20 6f 70 65 6e 65 64 20 62  must be opened b
2fb90 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 74  efore changing t
2fba0 68 65 20 41 56 20 72 65 74 72 79 20 70 61 72 61  he AV retry para
2fbb0 6d 65 74 65 72 73 2e 22 29 3b 0d 0a 0d 0a 20 20  meters.");....  
2fbc0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
2fbd0 72 43 6f 64 65 20 72 63 3b 0d 0a 20 20 20 20 20  rCode rc;..     
2fbe0 20 20 20 49 6e 74 50 74 72 20 70 41 72 67 20 3d     IntPtr pArg =
2fbf0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
2fc00 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
2fc10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2fc20 20 20 20 20 20 70 41 72 67 20 3d 20 4d 61 72 73       pArg = Mars
2fc30 68 61 6c 2e 41 6c 6c 6f 63 48 47 6c 6f 62 61 6c  hal.AllocHGlobal
2fc40 28 73 69 7a 65 6f 66 28 69 6e 74 29 20 2a 20 32  (sizeof(int) * 2
2fc50 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2fc60 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
2fc70 6e 74 33 32 28 70 41 72 67 2c 20 30 2c 20 63 6f  nt32(pArg, 0, co
2fc80 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  unt);..         
2fc90 20 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65     Marshal.Write
2fca0 49 6e 74 33 32 28 70 41 72 67 2c 20 73 69 7a 65  Int32(pArg, size
2fcb0 6f 66 28 69 6e 74 29 2c 20 69 6e 74 65 72 76 61  of(int), interva
2fcc0 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
2fcd0 20 20 20 72 63 20 3d 20 5f 73 71 6c 2e 46 69 6c     rc = _sql.Fil
2fce0 65 43 6f 6e 74 72 6f 6c 28 6e 75 6c 6c 2c 20 53  eControl(null, S
2fcf0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33  QLITE_FCNTL_WIN3
2fd00 32 5f 41 56 5f 52 45 54 52 59 2c 20 70 41 72 67  2_AV_RETRY, pArg
2fd10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2fd20 20 20 69 66 20 28 72 63 20 3d 3d 20 53 51 4c 69    if (rc == SQLi
2fd30 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d  teErrorCode.Ok).
2fd40 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2fd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd60 63 6f 75 6e 74 20 3d 20 4d 61 72 73 68 61 6c 2e  count = Marshal.
2fd70 52 65 61 64 49 6e 74 33 32 28 70 41 72 67 2c 20  ReadInt32(pArg, 
2fd80 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0);..           
2fd90 20 20 20 20 20 69 6e 74 65 72 76 61 6c 20 3d 20       interval = 
2fda0 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 33  Marshal.ReadInt3
2fdb0 32 28 70 41 72 67 2c 20 73 69 7a 65 6f 66 28 69  2(pArg, sizeof(i
2fdc0 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  nt));..         
2fdd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2fde0 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79  .        finally
2fdf0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2fe00 20 20 20 20 20 20 20 20 20 69 66 20 28 70 41 72           if (pAr
2fe10 67 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  g != IntPtr.Zero
2fe20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2fe30 20 20 20 4d 61 72 73 68 61 6c 2e 46 72 65 65 48     Marshal.FreeH
2fe40 47 6c 6f 62 61 6c 28 70 41 72 67 29 3b 0d 0a 20  Global(pArg);.. 
2fe50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2fe60 20 20 20 20 72 65 74 75 72 6e 20 72 63 3b 0d 0a      return rc;..
2fe70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2fe80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2fe90 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 68 75  /// Sets the chu
2fea0 6e 6b 20 73 69 7a 65 20 66 6f 72 20 74 68 65 20  nk size for the 
2feb0 70 72 69 6d 61 72 79 20 66 69 6c 65 20 61 73 73  primary file ass
2fec0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
2fed0 73 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20  s database..    
2fee0 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  /// connection..
2fef0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
2ff00 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
2ff10 72 61 6d 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e  ram name="size">
2ff20 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
2ff30 77 20 63 68 75 6e 6b 20 73 69 7a 65 20 66 6f 72  w chunk size for
2ff40 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
2ff50 73 65 2c 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20  se, in bytes... 
2ff60 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2ff70 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
2ff80 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5a 65 72 6f  s>..    /// Zero
2ff90 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20 6e 6f   for success, no
2ffa0 6e 2d 7a 65 72 6f 20 66 6f 72 20 65 72 72 6f 72  n-zero for error
2ffb0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
2ffc0 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
2ffd0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
2ffe0 65 20 53 65 74 43 68 75 6e 6b 53 69 7a 65 28 69  e SetChunkSize(i
2fff0 6e 74 20 73 69 7a 65 29 0d 0a 20 20 20 20 7b 0d  nt size)..    {.
30000 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69  .        CheckDi
30010 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
30020 20 20 20 20 20 69 66 20 28 5f 63 6f 6e 6e 65 63       if (_connec
30030 74 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e  tionState != Con
30040 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65  nectionState.Ope
30050 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n)..            
30060 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69  throw new Invali
30070 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74  dOperationExcept
30080 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
30090 20 20 20 20 20 20 22 44 61 74 61 62 61 73 65 20        "Database 
300a0 6d 75 73 74 20 62 65 20 6f 70 65 6e 65 64 20 62  must be opened b
300b0 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67 20 74  efore changing t
300c0 68 65 20 63 68 75 6e 6b 20 73 69 7a 65 2e 22 29  he chunk size.")
300d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 49 6e 74  ;....        Int
300e0 50 74 72 20 70 41 72 67 20 3d 20 49 6e 74 50 74  Ptr pArg = IntPt
300f0 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
30100 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30110 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  {..            p
30120 41 72 67 20 3d 20 4d 61 72 73 68 61 6c 2e 41 6c  Arg = Marshal.Al
30130 6c 6f 63 48 47 6c 6f 62 61 6c 28 73 69 7a 65 6f  locHGlobal(sizeo
30140 66 28 69 6e 74 29 20 2a 20 31 29 3b 0d 0a 0d 0a  f(int) * 1);....
30150 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
30160 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
30170 41 72 67 2c 20 30 2c 20 73 69 7a 65 29 3b 0d 0a  Arg, 0, size);..
30180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
30190 74 75 72 6e 20 5f 73 71 6c 2e 46 69 6c 65 43 6f  turn _sql.FileCo
301a0 6e 74 72 6f 6c 28 6e 75 6c 6c 2c 20 53 51 4c 49  ntrol(null, SQLI
301b0 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53  TE_FCNTL_CHUNK_S
301c0 49 5a 45 2c 20 70 41 72 67 29 3b 0d 0a 20 20 20  IZE, pArg);..   
301d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
301e0 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
301f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30200 69 66 20 28 70 41 72 67 20 21 3d 20 49 6e 74 50  if (pArg != IntP
30210 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
30220 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
30230 6c 2e 46 72 65 65 48 47 6c 6f 62 61 6c 28 70 41  l.FreeHGlobal(pA
30240 72 67 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rg);..        }.
30250 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
30260 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
30270 20 2f 2f 2f 20 52 65 6d 6f 76 65 73 20 6f 6e 65   /// Removes one
30280 20 73 65 74 20 6f 66 20 73 75 72 72 6f 75 6e 64   set of surround
30290 69 6e 67 20 73 69 6e 67 6c 65 20 2d 4f 52 2d 20  ing single -OR- 
302a0 64 6f 75 62 6c 65 20 71 75 6f 74 65 73 20 66 72  double quotes fr
302b0 6f 6d 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20  om the string.. 
302c0 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 61 6e 64     /// value and
302d0 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 73   returns the res
302e0 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 20 76 61  ulting string va
302f0 6c 75 65 2e 20 20 49 66 20 74 68 65 20 73 74 72  lue.  If the str
30300 69 6e 67 20 69 73 20 6e 75 6c 6c 2c 20 65 6d 70  ing is null, emp
30310 74 79 2c 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20  ty,..    /// or 
30320 63 6f 6e 74 61 69 6e 73 20 71 75 6f 74 65 73 20  contains quotes 
30330 74 68 61 74 20 61 72 65 20 6e 6f 74 20 62 61 6c  that are not bal
30340 61 6e 63 65 64 2c 20 6e 6f 74 68 69 6e 67 20 69  anced, nothing i
30350 73 20 64 6f 6e 65 20 61 6e 64 20 74 68 65 20 6f  s done and the o
30360 72 69 67 69 6e 61 6c 0d 0a 20 20 20 20 2f 2f 2f  riginal..    ///
30370 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 77 69   string value wi
30380 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d  ll be returned..
30390 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
303a0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
303b0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
303c0 3e 54 68 65 20 73 74 72 69 6e 67 20 76 61 6c 75  >The string valu
303d0 65 20 74 6f 20 70 72 6f 63 65 73 73 2e 3c 2f 70  e to process.</p
303e0 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
303f0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
30400 2f 20 54 68 65 20 73 74 72 69 6e 67 20 76 61 6c  / The string val
30410 75 65 2c 20 6d 6f 64 69 66 69 65 64 20 74 6f 20  ue, modified to 
30420 72 65 6d 6f 76 65 20 6f 6e 65 20 73 65 74 20 6f  remove one set o
30430 66 20 73 75 72 72 6f 75 6e 64 69 6e 67 20 73 69  f surrounding si
30440 6e 67 6c 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f  ngle -OR-..    /
30450 2f 2f 20 64 6f 75 62 6c 65 20 71 75 6f 74 65 73  // double quotes
30460 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e  , if applicable.
30470 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
30480 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
30490 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
304a0 55 6e 77 72 61 70 53 74 72 69 6e 67 28 73 74 72  UnwrapString(str
304b0 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  ing value)..    
304c0 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 53  {..        if (S
304d0 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
304e0 70 74 79 28 76 61 6c 75 65 29 29 0d 0a 20 20 20  pty(value))..   
304f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30500 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
30510 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65      // NOTE: The
30520 20 73 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 20   string is null 
30530 6f 72 20 65 6d 70 74 79 2c 20 72 65 74 75 72 6e  or empty, return
30540 20 69 74 20 76 65 72 62 61 74 69 6d 2e 0d 0a 20   it verbatim... 
30550 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
30560 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30570 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  n value;..      
30580 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
30590 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75  nt length = valu
305a0 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  e.Length;....   
305b0 20 20 20 20 20 69 66 20 28 28 28 76 61 6c 75 65       if (((value
305c0 5b 30 5d 20 3d 3d 20 27 5c 27 27 29 20 26 26 20  [0] == '\'') && 
305d0 28 76 61 6c 75 65 5b 6c 65 6e 67 74 68 20 2d 20  (value[length - 
305e0 31 5d 20 3d 3d 20 27 5c 27 27 29 29 20 7c 7c 0d  1] == '\'')) ||.
305f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 76  .            ((v
30600 61 6c 75 65 5b 30 5d 20 3d 3d 20 27 22 27 29 20  alue[0] == '"') 
30610 26 26 20 28 76 61 6c 75 65 5b 6c 65 6e 67 74 68  && (value[length
30620 20 2d 20 31 5d 20 3d 3d 20 27 22 27 29 29 29 0d   - 1] == '"'))).
30630 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
30640 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
30650 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
30660 20 52 65 6d 6f 76 65 20 74 68 65 20 66 69 72 73   Remove the firs
30670 74 20 61 6e 64 20 6c 61 73 74 20 63 68 61 72 61  t and last chara
30680 63 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  cter...         
30690 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
306a0 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
306b0 53 75 62 73 74 72 69 6e 67 28 31 2c 20 6c 65 6e  Substring(1, len
306c0 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 20 20 20  gth - 2);..     
306d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
306e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e  //..        // N
306f0 4f 54 45 3a 20 4e 6f 20 6d 61 74 63 68 2c 20 72  OTE: No match, r
30700 65 74 75 72 6e 20 74 68 65 20 69 6e 70 75 74 20  eturn the input 
30710 73 74 72 69 6e 67 20 76 65 72 62 61 74 69 6d 2e  string verbatim.
30720 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
30730 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
30740 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ue;..    }....  
30750 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
30760 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
30770 6e 65 73 20 74 68 65 20 64 69 72 65 63 74 6f 72  nes the director
30780 79 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65  y to be used whe
30790 6e 20 64 65 61 6c 69 6e 67 20 77 69 74 68 20 74  n dealing with t
307a0 68 65 20 22 7c 44 61 74 61 44 69 72 65 63 74 6f  he "|DataDirecto
307b0 72 79 7c 22 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61  ry|"..    /// ma
307c0 63 72 6f 20 69 6e 20 61 20 64 61 74 61 62 61 73  cro in a databas
307d0 65 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20  e file name...  
307e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
307f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
30800 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
30810 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 75 73   directory to us
30820 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68  e in place of th
30830 65 20 22 7c 44 61 74 61 44 69 72 65 63 74 6f 72  e "|DataDirector
30840 79 7c 22 20 6d 61 63 72 6f 20 2d 4f 52 2d 20 6e  y|" macro -OR- n
30850 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 2f  ull if it..    /
30860 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
30870 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f  ermined...    //
30880 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
30890 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
308a0 20 73 74 72 69 6e 67 20 47 65 74 44 61 74 61 44   string GetDataD
308b0 69 72 65 63 74 6f 72 79 28 29 0d 0a 20 20 20 20  irectory()..    
308c0 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
308d0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
308e0 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
308f0 20 72 65 73 75 6c 74 20 3d 20 50 61 74 68 2e 47   result = Path.G
30900 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28  etDirectoryName(
30910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 73  ..            As
30920 73 65 6d 62 6c 79 2e 47 65 74 43 61 6c 6c 69 6e  sembly.GetCallin
30930 67 41 73 73 65 6d 62 6c 79 28 29 2e 47 65 74 4e  gAssembly().GetN
30940 61 6d 65 28 29 2e 43 6f 64 65 42 61 73 65 29 3b  ame().CodeBase);
30950 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
30960 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d   string result =
30970 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65   AppDomain.Curre
30980 6e 74 44 6f 6d 61 69 6e 2e 47 65 74 44 61 74 61  ntDomain.GetData
30990 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22  (..            "
309a0 44 61 74 61 44 69 72 65 63 74 6f 72 79 22 29 20  DataDirectory") 
309b0 61 73 20 73 74 72 69 6e 67 3b 0d 0a 0d 0a 20 20  as string;....  
309c0 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
309d0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 72  .IsNullOrEmpty(r
309e0 65 73 75 6c 74 29 29 0d 0a 20 20 20 20 20 20 20  esult))..       
309f0 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 41 70       result = Ap
30a00 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74 44  pDomain.CurrentD
30a10 6f 6d 61 69 6e 2e 42 61 73 65 44 69 72 65 63 74  omain.BaseDirect
30a20 6f 72 79 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ory;..#endif....
30a30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
30a40 65 73 75 6c 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  esult;..    }...
30a50 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
30a60 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 78 70 61  y>..    /// Expa
30a70 6e 64 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20  nd the filename 
30a80 6f 66 20 74 68 65 20 64 61 74 61 20 73 6f 75 72  of the data sour
30a90 63 65 2c 20 72 65 73 6f 6c 76 69 6e 67 20 74 68  ce, resolving th
30aa0 65 20 7c 44 61 74 61 44 69 72 65 63 74 6f 72 79  e |DataDirectory
30ab0 7c 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 63 72 6f  |..    /// macro
30ac0 20 61 73 20 61 70 70 72 6f 70 72 69 61 74 65 2e   as appropriate.
30ad0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
30ae0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
30af0 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63  aram name="sourc
30b00 65 46 69 6c 65 22 3e 54 68 65 20 64 61 74 61 62  eFile">The datab
30b10 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20  ase filename to 
30b20 65 78 70 61 6e 64 3c 2f 70 61 72 61 6d 3e 0d 0a  expand</param>..
30b30 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
30b40 61 6d 65 3d 22 74 6f 46 75 6c 6c 50 61 74 68 22  ame="toFullPath"
30b50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
30b60 65 72 6f 20 69 66 20 74 68 65 20 72 65 74 75 72  ero if the retur
30b70 6e 65 64 20 66 69 6c 65 20 6e 61 6d 65 20 73 68  ned file name sh
30b80 6f 75 6c 64 20 62 65 20 63 6f 6e 76 65 72 74 65  ould be converte
30b90 64 20 74 6f 20 61 20 66 75 6c 6c 20 70 61 74 68  d to a full path
30ba0 0d 0a 20 20 20 20 2f 2f 2f 20 28 65 78 63 65 70  ..    /// (excep
30bb0 74 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65  t when using the
30bc0 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72   .NET Compact Fr
30bd0 61 6d 65 77 6f 72 6b 29 2e 0d 0a 20 20 20 20 2f  amework)...    /
30be0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
30bf0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
30c00 65 20 65 78 70 61 6e 64 65 64 20 70 61 74 68 20  e expanded path 
30c10 61 6e 64 20 66 69 6c 65 6e 61 6d 65 20 6f 66 20  and filename of 
30c20 74 68 65 20 66 69 6c 65 6e 61 6d 65 3c 2f 72 65  the filename</re
30c30 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76  turns>..    priv
30c40 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
30c50 67 20 45 78 70 61 6e 64 46 69 6c 65 4e 61 6d 65  g ExpandFileName
30c60 28 73 74 72 69 6e 67 20 73 6f 75 72 63 65 46 69  (string sourceFi
30c70 6c 65 2c 20 62 6f 6f 6c 20 74 6f 46 75 6c 6c 50  le, bool toFullP
30c80 61 74 68 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ath)..    {..   
30c90 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
30ca0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 73 6f  IsNullOrEmpty(so
30cb0 75 72 63 65 46 69 6c 65 29 29 20 72 65 74 75 72  urceFile)) retur
30cc0 6e 20 73 6f 75 72 63 65 46 69 6c 65 3b 0d 0a 0d  n sourceFile;...
30cd0 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 6f 75  .        if (sou
30ce0 72 63 65 46 69 6c 65 2e 53 74 61 72 74 73 57 69  rceFile.StartsWi
30cf0 74 68 28 5f 64 61 74 61 44 69 72 65 63 74 6f 72  th(_dataDirector
30d00 79 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69  y, StringCompari
30d10 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
30d20 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20 20  eCase))..       
30d30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30d40 73 74 72 69 6e 67 20 64 61 74 61 44 69 72 65 63  string dataDirec
30d50 74 6f 72 79 20 3d 20 47 65 74 44 61 74 61 44 69  tory = GetDataDi
30d60 72 65 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20  rectory();....  
30d70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 6f            if (so
30d80 75 72 63 65 46 69 6c 65 2e 4c 65 6e 67 74 68 20  urceFile.Length 
30d90 3e 20 5f 64 61 74 61 44 69 72 65 63 74 6f 72 79  > _dataDirectory
30da0 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20  .Length)..      
30db0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30dc0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 6f 75           if (sou
30dd0 72 63 65 46 69 6c 65 5b 5f 64 61 74 61 44 69 72  rceFile[_dataDir
30de0 65 63 74 6f 72 79 2e 4c 65 6e 67 74 68 5d 20 3d  ectory.Length] =
30df0 3d 20 50 61 74 68 2e 44 69 72 65 63 74 6f 72 79  = Path.Directory
30e00 53 65 70 61 72 61 74 6f 72 43 68 61 72 20 7c 7c  SeparatorChar ||
30e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30e20 20 20 20 20 20 20 73 6f 75 72 63 65 46 69 6c 65        sourceFile
30e30 5b 5f 64 61 74 61 44 69 72 65 63 74 6f 72 79 2e  [_dataDirectory.
30e40 4c 65 6e 67 74 68 5d 20 3d 3d 20 50 61 74 68 2e  Length] == Path.
30e50 41 6c 74 44 69 72 65 63 74 6f 72 79 53 65 70 61  AltDirectorySepa
30e60 72 61 74 6f 72 43 68 61 72 29 0d 0a 20 20 20 20  ratorChar)..    
30e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e80 73 6f 75 72 63 65 46 69 6c 65 20 3d 20 73 6f 75  sourceFile = sou
30e90 72 63 65 46 69 6c 65 2e 52 65 6d 6f 76 65 28 5f  rceFile.Remove(_
30ea0 64 61 74 61 44 69 72 65 63 74 6f 72 79 2e 4c 65  dataDirectory.Le
30eb0 6e 67 74 68 2c 20 31 29 3b 0d 0a 20 20 20 20 20  ngth, 1);..     
30ec0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30ed0 20 20 20 20 20 20 73 6f 75 72 63 65 46 69 6c 65        sourceFile
30ee0 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28   = Path.Combine(
30ef0 64 61 74 61 44 69 72 65 63 74 6f 72 79 2c 20 73  dataDirectory, s
30f00 6f 75 72 63 65 46 69 6c 65 2e 53 75 62 73 74 72  ourceFile.Substr
30f10 69 6e 67 28 5f 64 61 74 61 44 69 72 65 63 74 6f  ing(_dataDirecto
30f20 72 79 2e 4c 65 6e 67 74 68 29 29 3b 0d 0a 20 20  ry.Length));..  
30f30 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21        }....#if !
30f40 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
30f50 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
30f60 20 20 20 69 66 20 28 74 6f 46 75 6c 6c 50 61 74     if (toFullPat
30f70 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h)..            
30f80 73 6f 75 72 63 65 46 69 6c 65 20 3d 20 50 61 74  sourceFile = Pat
30f90 68 2e 47 65 74 46 75 6c 6c 50 61 74 68 28 73 6f  h.GetFullPath(so
30fa0 75 72 63 65 46 69 6c 65 29 3b 0d 0a 23 65 6e 64  urceFile);..#end
30fb0 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  if....        re
30fc0 74 75 72 6e 20 73 6f 75 72 63 65 46 69 6c 65 3b  turn sourceFile;
30fd0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
30fe0 2f 2f 3c 6f 76 65 72 6c 6f 61 64 73 3e 0d 0a 20  //<overloads>.. 
30ff0 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 6c 6c 6f     /// The follo
31000 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 20 61 72  wing commands ar
31010 65 20 75 73 65 64 20 74 6f 20 65 78 74 72 61 63  e used to extrac
31020 74 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61  t schema informa
31030 74 69 6f 6e 20 6f 75 74 20 6f 66 20 74 68 65 20  tion out of the 
31040 64 61 74 61 62 61 73 65 2e 20 20 56 61 6c 69 64  database.  Valid
31050 20 73 63 68 65 6d 61 20 74 79 70 65 73 20 61 72   schema types ar
31060 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73  e:..    /// <lis
31070 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e  t type="bullet">
31080 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
31090 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72  ..    /// <descr
310a0 69 70 74 69 6f 6e 3e 4d 65 74 61 44 61 74 61 43  iption>MetaDataC
310b0 6f 6c 6c 65 63 74 69 6f 6e 73 3c 2f 64 65 73 63  ollections</desc
310c0 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f  ription>..    //
310d0 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  / </item>..    /
310e0 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  // <item>..    /
310f0 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  // <description>
31100 44 61 74 61 53 6f 75 72 63 65 49 6e 66 6f 72 6d  DataSourceInform
31110 61 74 69 6f 6e 3c 2f 64 65 73 63 72 69 70 74 69  ation</descripti
31120 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69  on>..    /// </i
31130 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
31140 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64  tem>..    /// <d
31150 65 73 63 72 69 70 74 69 6f 6e 3e 43 61 74 61 6c  escription>Catal
31160 6f 67 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ogs</description
31170 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65  >..    /// </ite
31180 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
31190 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73  m>..    /// <des
311a0 63 72 69 70 74 69 6f 6e 3e 43 6f 6c 75 6d 6e 73  cription>Columns
311b0 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
311c0 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d      /// </item>.
311d0 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  .    /// <item>.
311e0 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  .    /// <descri
311f0 70 74 69 6f 6e 3e 46 6f 72 65 69 67 6e 4b 65 79  ption>ForeignKey
31200 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  s</description>.
31210 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e  .    /// </item>
31220 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
31230 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72  ..    /// <descr
31240 69 70 74 69 6f 6e 3e 49 6e 64 65 78 65 73 3c 2f  iption>Indexes</
31250 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
31260 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20    /// </item>.. 
31270 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20     /// <item>.. 
31280 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74     /// <descript
31290 69 6f 6e 3e 49 6e 64 65 78 43 6f 6c 75 6d 6e 73  ion>IndexColumns
312a0 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
312b0 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d      /// </item>.
312c0 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  .    /// <item>.
312d0 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  .    /// <descri
312e0 70 74 69 6f 6e 3e 54 61 62 6c 65 73 3c 2f 64 65  ption>Tables</de
312f0 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20  scription>..    
31300 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  /// </item>..   
31310 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 20   /// <item>..   
31320 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f   /// <descriptio
31330 6e 3e 56 69 65 77 73 3c 2f 64 65 73 63 72 69 70  n>Views</descrip
31340 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion>..    /// <
31350 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
31360 3c 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  <item>..    /// 
31370 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 56 69 65  <description>Vie
31380 77 43 6f 6c 75 6d 6e 73 3c 2f 64 65 73 63 72 69  wColumns</descri
31390 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ption>..    /// 
313a0 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
313b0 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f   </list>..    //
313c0 2f 20 3c 2f 6f 76 65 72 6c 6f 61 64 73 3e 0d 0a  / </overloads>..
313d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
313e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
313f0 6e 73 20 74 68 65 20 4d 65 74 61 44 61 74 61 43  ns the MetaDataC
31400 6f 6c 6c 65 63 74 69 6f 6e 73 20 73 63 68 65 6d  ollections schem
31410 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  a..    /// </sum
31420 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
31430 72 65 74 75 72 6e 73 3e 41 20 44 61 74 61 54 61  returns>A DataTa
31440 62 6c 65 20 6f 66 20 74 68 65 20 4d 65 74 61 44  ble of the MetaD
31450 61 74 61 43 6f 6c 6c 65 63 74 69 6f 6e 73 20 73  ataCollections s
31460 63 68 65 6d 61 3c 2f 72 65 74 75 72 6e 73 3e 0d  chema</returns>.
31470 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72  .    public over
31480 72 69 64 65 20 44 61 74 61 54 61 62 6c 65 20 47  ride DataTable G
31490 65 74 53 63 68 65 6d 61 28 29 0d 0a 20 20 20 20  etSchema()..    
314a0 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69  {..      CheckDi
314b0 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
314c0 20 72 65 74 75 72 6e 20 47 65 74 53 63 68 65 6d   return GetSchem
314d0 61 28 22 4d 65 74 61 44 61 74 61 43 6f 6c 6c 65  a("MetaDataColle
314e0 63 74 69 6f 6e 73 22 2c 20 6e 75 6c 6c 29 3b 0d  ctions", null);.
314f0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
31500 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
31510 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 73 63 68   /// Returns sch
31520 65 6d 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ema information 
31530 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
31540 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20   collection..   
31550 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
31560 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
31570 6e 61 6d 65 3d 22 63 6f 6c 6c 65 63 74 69 6f 6e  name="collection
31580 4e 61 6d 65 22 3e 54 68 65 20 73 63 68 65 6d 61  Name">The schema
31590 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 74 6f 20 72   collection to r
315a0 65 74 72 69 65 76 65 3c 2f 70 61 72 61 6d 3e 0d  etrieve</param>.
315b0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
315c0 73 3e 41 20 44 61 74 61 54 61 62 6c 65 20 6f 66  s>A DataTable of
315d0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
315e0 6f 6c 6c 65 63 74 69 6f 6e 3c 2f 72 65 74 75 72  ollection</retur
315f0 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
31600 6f 76 65 72 72 69 64 65 20 44 61 74 61 54 61 62  override DataTab
31610 6c 65 20 47 65 74 53 63 68 65 6d 61 28 73 74 72  le GetSchema(str
31620 69 6e 67 20 63 6f 6c 6c 65 63 74 69 6f 6e 4e 61  ing collectionNa
31630 6d 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  me)..    {..    
31640 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
31650 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  );..      return
31660 20 47 65 74 53 63 68 65 6d 61 28 63 6f 6c 6c 65   GetSchema(colle
31670 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e 65 77 20 73  ctionName, new s
31680 74 72 69 6e 67 5b 30 5d 29 3b 0d 0a 20 20 20 20  tring[0]);..    
31690 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
316a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
316b0 52 65 74 72 69 65 76 65 73 20 73 63 68 65 6d 61  Retrieves schema
316c0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 75 73 69   information usi
316d0 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
316e0 20 63 6f 6e 73 74 72 61 69 6e 74 28 73 29 20 66   constraint(s) f
316f0 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
31700 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20   collection..   
31710 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
31720 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
31730 6e 61 6d 65 3d 22 63 6f 6c 6c 65 63 74 69 6f 6e  name="collection
31740 4e 61 6d 65 22 3e 54 68 65 20 63 6f 6c 6c 65 63  Name">The collec
31750 74 69 6f 6e 20 74 6f 20 72 65 74 72 69 65 76 65  tion to retrieve
31760 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
31770 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
31780 72 65 73 74 72 69 63 74 69 6f 6e 56 61 6c 75 65  restrictionValue
31790 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  s">..    /// The
317a0 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 74 6f   restrictions to
317b0 20 69 6d 70 6f 73 65 2e 20 20 54 79 70 69 63 61   impose.  Typica
317c0 6c 6c 79 2c 20 74 68 69 73 20 6d 61 79 20 69 6e  lly, this may in
317d0 63 6c 75 64 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20  clude:..    /// 
317e0 3c 6c 69 73 74 20 74 79 70 65 3d 22 74 61 62 6c  <list type="tabl
317f0 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  e">..    /// <li
31800 73 74 68 65 61 64 65 72 3e 0d 0a 20 20 20 20 2f  stheader>..    /
31810 2f 2f 20 3c 74 65 72 6d 3e 72 65 73 74 72 69 63  // <term>restric
31820 74 69 6f 6e 56 61 6c 75 65 73 20 65 6c 65 6d 65  tionValues eleme
31830 6e 74 20 69 6e 64 65 78 3c 2f 74 65 72 6d 3e 0d  nt index</term>.
31840 0a 20 20 20 20 2f 2f 2f 20 3c 74 65 72 6d 3e 75  .    /// <term>u
31850 73 61 67 65 3c 2f 74 65 72 6d 3e 0d 0a 20 20 20  sage</term>..   
31860 20 2f 2f 2f 20 3c 2f 6c 69 73 74 68 65 61 64 65   /// </listheade
31870 72 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  r>..    /// <ite
31880 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73  m>..    /// <des
31890 63 72 69 70 74 69 6f 6e 3e 30 3c 2f 64 65 73 63  cription>0</desc
318a0 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f  ription>..    //
318b0 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54  / <description>T
318c0 68 65 20 64 61 74 61 62 61 73 65 20 28 6f 72 20  he database (or 
318d0 63 61 74 61 6c 6f 67 29 20 6e 61 6d 65 2c 20 69  catalog) name, i
318e0 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 3c 2f 64  f applicable.</d
318f0 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20  escription>..   
31900 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20   /// </item>..  
31910 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20    /// <item>..  
31920 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
31930 6f 6e 3e 31 3c 2f 64 65 73 63 72 69 70 74 69 6f  on>1</descriptio
31940 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73  n>..    /// <des
31950 63 72 69 70 74 69 6f 6e 3e 54 68 65 20 73 63 68  cription>The sch
31960 65 6d 61 20 6e 61 6d 65 2e 20 20 54 68 69 73 20  ema name.  This 
31970 69 73 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74  is not used by t
31980 68 69 73 20 70 72 6f 76 69 64 65 72 2e 3c 2f 64  his provider.</d
31990 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20  escription>..   
319a0 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20   /// </item>..  
319b0 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20    /// <item>..  
319c0 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
319d0 6f 6e 3e 32 3c 2f 64 65 73 63 72 69 70 74 69 6f  on>2</descriptio
319e0 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73  n>..    /// <des
319f0 63 72 69 70 74 69 6f 6e 3e 54 68 65 20 74 61 62  cription>The tab
31a00 6c 65 20 6e 61 6d 65 2c 20 69 66 20 61 70 70 6c  le name, if appl
31a10 69 63 61 62 6c 65 2e 3c 2f 64 65 73 63 72 69 70  icable.</descrip
31a20 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion>..    /// <
31a30 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
31a40 3c 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  <item>..    /// 
31a50 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 33 3c 2f  <description>3</
31a60 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
31a70 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
31a80 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 70  on>..    /// Dep
31a90 65 6e 64 73 20 6f 6e 20 3c 70 61 72 61 6d 72 65  ends on <paramre
31aa0 66 20 6e 61 6d 65 3d 22 63 6f 6c 6c 65 63 74 69  f name="collecti
31ab0 6f 6e 4e 61 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20  onName" />...   
31ac0 20 2f 2f 2f 20 57 68 65 6e 20 22 49 6e 64 65 78   /// When "Index
31ad0 43 6f 6c 75 6d 6e 73 22 2c 20 69 74 20 69 73 20  Columns", it is 
31ae0 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 3b 20  the index name; 
31af0 6f 74 68 65 72 77 69 73 65 2c 20 69 74 20 69 73  otherwise, it is
31b00 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
31b10 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 64 65 73  ...    /// </des
31b20 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f  cription>..    /
31b30 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  // </item>..    
31b40 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 20 20  /// <item>..    
31b50 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
31b60 3e 34 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >4</description>
31b70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72  ..    /// <descr
31b80 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f  iption>..    ///
31b90 20 44 65 70 65 6e 64 73 20 6f 6e 20 3c 70 61 72   Depends on <par
31ba0 61 6d 72 65 66 20 6e 61 6d 65 3d 22 63 6f 6c 6c  amref name="coll
31bb0 65 63 74 69 6f 6e 4e 61 6d 65 22 20 2f 3e 2e 0d  ectionName" />..
31bc0 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 22 49  .    /// When "I
31bd0 6e 64 65 78 43 6f 6c 75 6d 6e 73 22 2c 20 69 74  ndexColumns", it
31be0 20 69 73 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e   is the column n
31bf0 61 6d 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ame; otherwise, 
31c00 69 74 20 69 73 20 6e 6f 74 20 75 73 65 64 2e 0d  it is not used..
31c10 0a 20 20 20 20 2f 2f 2f 20 3c 2f 64 65 73 63 72  .    /// </descr
31c20 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f  iption>..    ///
31c30 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f   </item>..    //
31c40 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f  / </list>..    /
31c50 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
31c60 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20   /// <returns>A 
31c70 44 61 74 61 54 61 62 6c 65 20 6f 66 20 74 68 65  DataTable of the
31c80 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c 6c 65   specified colle
31c90 63 74 69 6f 6e 3c 2f 72 65 74 75 72 6e 73 3e 0d  ction</returns>.
31ca0 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72  .    public over
31cb0 72 69 64 65 20 44 61 74 61 54 61 62 6c 65 20 47  ride DataTable G
31cc0 65 74 53 63 68 65 6d 61 28 73 74 72 69 6e 67 20  etSchema(string 
31cd0 63 6f 6c 6c 65 63 74 69 6f 6e 4e 61 6d 65 2c 20  collectionName, 
31ce0 73 74 72 69 6e 67 5b 5d 20 72 65 73 74 72 69 63  string[] restric
31cf0 74 69 6f 6e 56 61 6c 75 65 73 29 0d 0a 20 20 20  tionValues)..   
31d00 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44   {..      CheckD
31d10 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
31d20 20 20 20 20 69 66 20 28 5f 63 6f 6e 6e 65 63 74      if (_connect
31d30 69 6f 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e  ionState != Conn
31d40 65 63 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e  ectionState.Open
31d50 29 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77  )..        throw
31d60 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
31d70 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29  ationException()
31d80 3b 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  ;....      strin
31d90 67 5b 5d 20 70 61 72 6d 73 20 3d 20 6e 65 77 20  g[] parms = new 
31da0 73 74 72 69 6e 67 5b 35 5d 3b 0d 0a 0d 0a 20 20  string[5];....  
31db0 20 20 20 20 69 66 20 28 72 65 73 74 72 69 63 74      if (restrict
31dc0 69 6f 6e 56 61 6c 75 65 73 20 3d 3d 20 6e 75 6c  ionValues == nul
31dd0 6c 29 20 72 65 73 74 72 69 63 74 69 6f 6e 56 61  l) restrictionVa
31de0 6c 75 65 73 20 3d 20 6e 65 77 20 73 74 72 69 6e  lues = new strin
31df0 67 5b 30 5d 3b 0d 0a 20 20 20 20 20 20 72 65 73  g[0];..      res
31e00 74 72 69 63 74 69 6f 6e 56 61 6c 75 65 73 2e 43  trictionValues.C
31e10 6f 70 79 54 6f 28 70 61 72 6d 73 2c 20 30 29 3b  opyTo(parms, 0);
31e20 0d 0a 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68  ....      switch
31e30 20 28 63 6f 6c 6c 65 63 74 69 6f 6e 4e 61 6d 65   (collectionName
31e40 2e 54 6f 55 70 70 65 72 28 43 75 6c 74 75 72 65  .ToUpper(Culture
31e50 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
31e60 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 7b  lture))..      {
31e70 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
31e80 4d 45 54 41 44 41 54 41 43 4f 4c 4c 45 43 54 49  METADATACOLLECTI
31e90 4f 4e 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  ONS":..         
31ea0 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61 5f 4d   return Schema_M
31eb0 65 74 61 44 61 74 61 43 6f 6c 6c 65 63 74 69 6f  etaDataCollectio
31ec0 6e 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 63  ns();..        c
31ed0 61 73 65 20 22 44 41 54 41 53 4f 55 52 43 45 49  ase "DATASOURCEI
31ee0 4e 46 4f 52 4d 41 54 49 4f 4e 22 3a 0d 0a 20 20  NFORMATION":..  
31ef0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
31f00 63 68 65 6d 61 5f 44 61 74 61 53 6f 75 72 63 65  chema_DataSource
31f10 49 6e 66 6f 72 6d 61 74 69 6f 6e 28 29 3b 0d 0a  Information();..
31f20 20 20 20 20 20 20 20 20 63 61 73 65 20 22 44 41          case "DA
31f30 54 41 54 59 50 45 53 22 3a 0d 0a 20 20 20 20 20  TATYPES":..     
31f40 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68 65       return Sche
31f50 6d 61 5f 44 61 74 61 54 79 70 65 73 28 29 3b 0d  ma_DataTypes();.
31f60 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 43  .        case "C
31f70 4f 4c 55 4d 4e 53 22 3a 0d 0a 20 20 20 20 20 20  OLUMNS":..      
31f80 20 20 63 61 73 65 20 22 54 41 42 4c 45 43 4f 4c    case "TABLECOL
31f90 55 4d 4e 53 22 3a 0d 0a 20 20 20 20 20 20 20 20  UMNS":..        
31fa0 20 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61 5f    return Schema_
31fb0 43 6f 6c 75 6d 6e 73 28 70 61 72 6d 73 5b 30 5d  Columns(parms[0]
31fc0 2c 20 70 61 72 6d 73 5b 32 5d 2c 20 70 61 72 6d  , parms[2], parm
31fd0 73 5b 33 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20  s[3]);..        
31fe0 63 61 73 65 20 22 49 4e 44 45 58 45 53 22 3a 0d  case "INDEXES":.
31ff0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
32000 6e 20 53 63 68 65 6d 61 5f 49 6e 64 65 78 65 73  n Schema_Indexes
32010 28 70 61 72 6d 73 5b 30 5d 2c 20 70 61 72 6d 73  (parms[0], parms
32020 5b 32 5d 2c 20 70 61 72 6d 73 5b 33 5d 29 3b 0d  [2], parms[3]);.
32030 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 54  .        case "T
32040 52 49 47 47 45 52 53 22 3a 0d 0a 20 20 20 20 20  RIGGERS":..     
32050 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68 65       return Sche
32060 6d 61 5f 54 72 69 67 67 65 72 73 28 70 61 72 6d  ma_Triggers(parm
32070 73 5b 30 5d 2c 20 70 61 72 6d 73 5b 32 5d 2c 20  s[0], parms[2], 
32080 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a 20 20 20 20  parms[3]);..    
32090 20 20 20 20 63 61 73 65 20 22 49 4e 44 45 58 43      case "INDEXC
320a0 4f 4c 55 4d 4e 53 22 3a 0d 0a 20 20 20 20 20 20  OLUMNS":..      
320b0 20 20 20 20 72 65 74 75 72 6e 20 53 63 68 65 6d      return Schem
320c0 61 5f 49 6e 64 65 78 43 6f 6c 75 6d 6e 73 28 70  a_IndexColumns(p
320d0 61 72 6d 73 5b 30 5d 2c 20 70 61 72 6d 73 5b 32  arms[0], parms[2
320e0 5d 2c 20 70 61 72 6d 73 5b 33 5d 2c 20 70 61 72  ], parms[3], par
320f0 6d 73 5b 34 5d 29 3b 0d 0a 20 20 20 20 20 20 20  ms[4]);..       
32100 20 63 61 73 65 20 22 54 41 42 4c 45 53 22 3a 0d   case "TABLES":.
32110 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
32120 6e 20 53 63 68 65 6d 61 5f 54 61 62 6c 65 73 28  n Schema_Tables(
32130 70 61 72 6d 73 5b 30 5d 2c 20 70 61 72 6d 73 5b  parms[0], parms[
32140 32 5d 2c 20 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a  2], parms[3]);..
32150 20 20 20 20 20 20 20 20 63 61 73 65 20 22 56 49          case "VI
32160 45 57 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  EWS":..         
32170 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61 5f 56   return Schema_V
32180 69 65 77 73 28 70 61 72 6d 73 5b 30 5d 2c 20 70  iews(parms[0], p
32190 61 72 6d 73 5b 32 5d 29 3b 0d 0a 20 20 20 20 20  arms[2]);..     
321a0 20 20 20 63 61 73 65 20 22 56 49 45 57 43 4f 4c     case "VIEWCOL
321b0 55 4d 4e 53 22 3a 0d 0a 20 20 20 20 20 20 20 20  UMNS":..        
321c0 20 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61 5f    return Schema_
321d0 56 69 65 77 43 6f 6c 75 6d 6e 73 28 70 61 72 6d  ViewColumns(parm
321e0 73 5b 30 5d 2c 20 70 61 72 6d 73 5b 32 5d 2c 20  s[0], parms[2], 
321f0 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a 20 20 20 20  parms[3]);..    
32200 20 20 20 20 63 61 73 65 20 22 46 4f 52 45 49 47      case "FOREIG
32210 4e 4b 45 59 53 22 3a 0d 0a 20 20 20 20 20 20 20  NKEYS":..       
32220 20 20 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61     return Schema
32230 5f 46 6f 72 65 69 67 6e 4b 65 79 73 28 70 61 72  _ForeignKeys(par
32240 6d 73 5b 30 5d 2c 20 70 61 72 6d 73 5b 32 5d 2c  ms[0], parms[2],
32250 20 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a 20 20 20   parms[3]);..   
32260 20 20 20 20 20 63 61 73 65 20 22 43 41 54 41 4c       case "CATAL
32270 4f 47 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  OGS":..         
32280 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61 5f 43   return Schema_C
32290 61 74 61 6c 6f 67 73 28 70 61 72 6d 73 5b 30 5d  atalogs(parms[0]
322a0 29 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65  );..        case
322b0 20 22 52 45 53 45 52 56 45 44 57 4f 52 44 53 22   "RESERVEDWORDS"
322c0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  :..          ret
322d0 75 72 6e 20 53 63 68 65 6d 61 5f 52 65 73 65 72  urn Schema_Reser
322e0 76 65 64 57 6f 72 64 73 28 29 3b 0d 0a 20 20 20  vedWords();..   
322f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 74 68 72 6f     }..      thro
32300 77 20 6e 65 77 20 4e 6f 74 53 75 70 70 6f 72 74  w new NotSupport
32310 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
32320 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
32330 76 61 74 65 20 73 74 61 74 69 63 20 44 61 74 61  vate static Data
32340 54 61 62 6c 65 20 53 63 68 65 6d 61 5f 52 65 73  Table Schema_Res
32350 65 72 76 65 64 57 6f 72 64 73 28 29 0d 0a 20 20  ervedWords()..  
32360 20 20 7b 0d 0a 20 20 20 20 20 20 44 61 74 61 54    {..      DataT
32370 61 62 6c 65 20 74 62 6c 20 3d 20 6e 65 77 20 44  able tbl = new D
32380 61 74 61 54 61 62 6c 65 28 22 52 65 73 65 72 76  ataTable("Reserv
32390 65 64 57 6f 72 64 73 22 29 3b 0d 0a 0d 0a 20 20  edWords");....  
323a0 20 20 20 20 74 62 6c 2e 4c 6f 63 61 6c 65 20 3d      tbl.Locale =
323b0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
323c0 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3b 0d 0a  ariantCulture;..
323d0 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
323e0 73 2e 41 64 64 28 22 52 65 73 65 72 76 65 64 57  s.Add("ReservedW
323f0 6f 72 64 22 2c 20 74 79 70 65 6f 66 28 73 74 72  ord", typeof(str
32400 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ing));..      tb
32410 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 4d  l.Columns.Add("M
32420 61 78 69 6d 75 6d 56 65 72 73 69 6f 6e 22 2c 20  aximumVersion", 
32430 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
32440 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
32450 6d 6e 73 2e 41 64 64 28 22 4d 69 6e 69 6d 75 6d  mns.Add("Minimum
32460 56 65 72 73 69 6f 6e 22 2c 20 74 79 70 65 6f 66  Version", typeof
32470 28 73 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a 20 20  (string));....  
32480 20 20 20 20 74 62 6c 2e 42 65 67 69 6e 4c 6f 61      tbl.BeginLoa
32490 64 44 61 74 61 28 29 3b 0d 0a 20 20 20 20 20 20  dData();..      
324a0 44 61 74 61 52 6f 77 20 72 6f 77 3b 0d 0a 20 20  DataRow row;..  
324b0 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
324c0 69 6e 67 20 77 6f 72 64 20 69 6e 20 53 52 2e 4b  ing word in SR.K
324d0 65 79 77 6f 72 64 73 2e 53 70 6c 69 74 28 6e 65  eywords.Split(ne
324e0 77 20 63 68 61 72 5b 5d 20 7b 20 27 2c 27 20 7d  w char[] { ',' }
324f0 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ))..      {..   
32500 20 20 20 20 20 72 6f 77 20 3d 20 74 62 6c 2e 4e       row = tbl.N
32510 65 77 52 6f 77 28 29 3b 0d 0a 20 20 20 20 20 20  ewRow();..      
32520 20 20 72 6f 77 5b 30 5d 20 3d 20 77 6f 72 64 3b    row[0] = word;
32530 0d 0a 20 20 20 20 20 20 20 20 74 62 6c 2e 52 6f  ..        tbl.Ro
32540 77 73 2e 41 64 64 28 72 6f 77 29 3b 0d 0a 20 20  ws.Add(row);..  
32550 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 74      }....      t
32560 62 6c 2e 41 63 63 65 70 74 43 68 61 6e 67 65 73  bl.AcceptChanges
32570 28 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 45  ();..      tbl.E
32580 6e 64 4c 6f 61 64 44 61 74 61 28 29 3b 0d 0a 0d  ndLoadData();...
32590 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 62  .      return tb
325a0 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  l;..    }....   
325b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
325c0 20 20 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61      /// Builds a
325d0 20 4d 65 74 61 44 61 74 61 43 6f 6c 6c 65 63 74   MetaDataCollect
325e0 69 6f 6e 73 20 73 63 68 65 6d 61 20 64 61 74 61  ions schema data
325f0 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  table..    /// <
32600 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
32610 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 44 61 74 61  // <returns>Data
32620 54 61 62 6c 65 3c 2f 72 65 74 75 72 6e 73 3e 0d  Table</returns>.
32630 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
32640 74 69 63 20 44 61 74 61 54 61 62 6c 65 20 53 63  tic DataTable Sc
32650 68 65 6d 61 5f 4d 65 74 61 44 61 74 61 43 6f 6c  hema_MetaDataCol
32660 6c 65 63 74 69 6f 6e 73 28 29 0d 0a 20 20 20 20  lections()..    
32670 7b 0d 0a 20 20 20 20 20 20 44 61 74 61 54 61 62  {..      DataTab
32680 6c 65 20 74 62 6c 20 3d 20 6e 65 77 20 44 61 74  le tbl = new Dat
32690 61 54 61 62 6c 65 28 22 4d 65 74 61 44 61 74 61  aTable("MetaData
326a0 43 6f 6c 6c 65 63 74 69 6f 6e 73 22 29 3b 0d 0a  Collections");..
326b0 0d 0a 20 20 20 20 20 20 74 62 6c 2e 4c 6f 63 61  ..      tbl.Loca
326c0 6c 65 20 3d 20 43 75 6c 74 75 72 65 49 6e 66 6f  le = CultureInfo
326d0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
326e0 65 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  e;..      tbl.Co
326f0 6c 75 6d 6e 73 2e 41 64 64 28 22 43 6f 6c 6c 65  lumns.Add("Colle
32700 63 74 69 6f 6e 4e 61 6d 65 22 2c 20 74 79 70 65  ctionName", type
32710 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20  of(string));..  
32720 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
32730 41 64 64 28 22 4e 75 6d 62 65 72 4f 66 52 65 73  Add("NumberOfRes
32740 74 72 69 63 74 69 6f 6e 73 22 2c 20 74 79 70 65  trictions", type
32750 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20  of(int));..     
32760 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
32770 28 22 4e 75 6d 62 65 72 4f 66 49 64 65 6e 74 69  ("NumberOfIdenti
32780 66 69 65 72 50 61 72 74 73 22 2c 20 74 79 70 65  fierParts", type
32790 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20  of(int));....   
327a0 20 20 20 74 62 6c 2e 42 65 67 69 6e 4c 6f 61 64     tbl.BeginLoad
327b0 44 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Data();....     
327c0 20 53 74 72 69 6e 67 52 65 61 64 65 72 20 72 65   StringReader re
327d0 61 64 65 72 20 3d 20 6e 65 77 20 53 74 72 69 6e  ader = new Strin
327e0 67 52 65 61 64 65 72 28 53 52 2e 4d 65 74 61 44  gReader(SR.MetaD
327f0 61 74 61 43 6f 6c 6c 65 63 74 69 6f 6e 73 29 3b  ataCollections);
32800 0d 0a 20 20 20 20 20 20 74 62 6c 2e 52 65 61 64  ..      tbl.Read
32810 58 6d 6c 28 72 65 61 64 65 72 29 3b 0d 0a 20 20  Xml(reader);..  
32820 20 20 20 20 72 65 61 64 65 72 2e 43 6c 6f 73 65      reader.Close
32830 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 62 6c  ();....      tbl
32840 2e 41 63 63 65 70 74 43 68 61 6e 67 65 73 28 29  .AcceptChanges()
32850 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 45 6e 64  ;..      tbl.End
32860 4c 6f 61 64 44 61 74 61 28 29 3b 0d 0a 0d 0a 20  LoadData();.... 
32870 20 20 20 20 20 72 65 74 75 72 6e 20 74 62 6c 3b       return tbl;
32880 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
32890 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
328a0 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 20 44    /// Builds a D
328b0 61 74 61 53 6f 75 72 63 65 49 6e 66 6f 72 6d 61  ataSourceInforma
328c0 74 69 6f 6e 20 64 61 74 61 74 61 62 6c 65 0d 0a  tion datatable..
328d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
328e0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  y>..    /// <ret
328f0 75 72 6e 73 3e 44 61 74 61 54 61 62 6c 65 3c 2f  urns>DataTable</
32900 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
32910 69 76 61 74 65 20 44 61 74 61 54 61 62 6c 65 20  ivate DataTable 
32920 53 63 68 65 6d 61 5f 44 61 74 61 53 6f 75 72 63  Schema_DataSourc
32930 65 49 6e 66 6f 72 6d 61 74 69 6f 6e 28 29 0d 0a  eInformation()..
32940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 61 74      {..      Dat
32950 61 54 61 62 6c 65 20 74 62 6c 20 3d 20 6e 65 77  aTable tbl = new
32960 20 44 61 74 61 54 61 62 6c 65 28 22 44 61 74 61   DataTable("Data
32970 53 6f 75 72 63 65 49 6e 66 6f 72 6d 61 74 69 6f  SourceInformatio
32980 6e 22 29 3b 0d 0a 20 20 20 20 20 20 44 61 74 61  n");..      Data
32990 52 6f 77 20 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20  Row row;....    
329a0 20 20 74 62 6c 2e 4c 6f 63 61 6c 65 20 3d 20 43    tbl.Locale = C
329b0 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
329c0 69 61 6e 74 43 75 6c 74 75 72 65 3b 0d 0a 20 20  iantCulture;..  
329d0 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
329e0 41 64 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f  Add(DbMetaDataCo
329f0 6c 75 6d 6e 4e 61 6d 65 73 2e 43 6f 6d 70 6f 73  lumnNames.Compos
32a00 69 74 65 49 64 65 6e 74 69 66 69 65 72 53 65 70  iteIdentifierSep
32a10 61 72 61 74 6f 72 50 61 74 74 65 72 6e 2c 20 74  aratorPattern, t
32a20 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d  ypeof(string));.
32a30 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
32a40 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74  ns.Add(DbMetaDat
32a50 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 44 61 74  aColumnNames.Dat
32a60 61 53 6f 75 72 63 65 50 72 6f 64 75 63 74 4e 61  aSourceProductNa
32a70 6d 65 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e  me, typeof(strin
32a80 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  g));..      tbl.
32a90 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65  Columns.Add(DbMe
32aa0 74 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65  taDataColumnName
32ab0 73 2e 44 61 74 61 53 6f 75 72 63 65 50 72 6f 64  s.DataSourceProd
32ac0 75 63 74 56 65 72 73 69 6f 6e 2c 20 74 79 70 65  uctVersion, type
32ad0 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20  of(string));..  
32ae0 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
32af0 41 64 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f  Add(DbMetaDataCo
32b00 6c 75 6d 6e 4e 61 6d 65 73 2e 44 61 74 61 53 6f  lumnNames.DataSo
32b10 75 72 63 65 50 72 6f 64 75 63 74 56 65 72 73 69  urceProductVersi
32b20 6f 6e 4e 6f 72 6d 61 6c 69 7a 65 64 2c 20 74 79  onNormalized, ty
32b30 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a  peof(string));..
32b40 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
32b50 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74 61  s.Add(DbMetaData
32b60 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 47 72 6f 75  ColumnNames.Grou
32b70 70 42 79 42 65 68 61 76 69 6f 72 2c 20 74 79 70  pByBehavior, typ
32b80 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20  eof(int));..    
32b90 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
32ba0 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75  d(DbMetaDataColu
32bb0 6d 6e 4e 61 6d 65 73 2e 49 64 65 6e 74 69 66 69  mnNames.Identifi
32bc0 65 72 50 61 74 74 65 72 6e 2c 20 74 79 70 65 6f  erPattern, typeo
32bd0 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
32be0 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
32bf0 64 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f 6c  dd(DbMetaDataCol
32c00 75 6d 6e 4e 61 6d 65 73 2e 49 64 65 6e 74 69 66  umnNames.Identif
32c10 69 65 72 43 61 73 65 2c 20 74 79 70 65 6f 66 28  ierCase, typeof(
32c20 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  int));..      tb
32c30 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62  l.Columns.Add(Db
32c40 4d 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61  MetaDataColumnNa
32c50 6d 65 73 2e 4f 72 64 65 72 42 79 43 6f 6c 75 6d  mes.OrderByColum
32c60 6e 73 49 6e 53 65 6c 65 63 74 2c 20 74 79 70 65  nsInSelect, type
32c70 6f 66 28 62 6f 6f 6c 29 29 3b 0d 0a 20 20 20 20  of(bool));..    
32c80 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
32c90 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75  d(DbMetaDataColu
32ca0 6d 6e 4e 61 6d 65 73 2e 50 61 72 61 6d 65 74 65  mnNames.Paramete
32cb0 72 4d 61 72 6b 65 72 46 6f 72 6d 61 74 2c 20 74  rMarkerFormat, t
32cc0 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d  ypeof(string));.
32cd0 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
32ce0 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74  ns.Add(DbMetaDat
32cf0 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 50 61 72  aColumnNames.Par
32d00 61 6d 65 74 65 72 4d 61 72 6b 65 72 50 61 74 74  ameterMarkerPatt
32d10 65 72 6e 2c 20 74 79 70 65 6f 66 28 73 74 72 69  ern, typeof(stri
32d20 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  ng));..      tbl
32d30 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d  .Columns.Add(DbM
32d40 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d  etaDataColumnNam
32d50 65 73 2e 50 61 72 61 6d 65 74 65 72 4e 61 6d 65  es.ParameterName
32d60 4d 61 78 4c 65 6e 67 74 68 2c 20 74 79 70 65 6f  MaxLength, typeo
32d70 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20  f(int));..      
32d80 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
32d90 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e  DbMetaDataColumn
32da0 4e 61 6d 65 73 2e 50 61 72 61 6d 65 74 65 72 4e  Names.ParameterN
32db0 61 6d 65 50 61 74 74 65 72 6e 2c 20 74 79 70 65  amePattern, type
32dc0 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20  of(string));..  
32dd0 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
32de0 41 64 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f  Add(DbMetaDataCo
32df0 6c 75 6d 6e 4e 61 6d 65 73 2e 51 75 6f 74 65 64  lumnNames.Quoted
32e00 49 64 65 6e 74 69 66 69 65 72 50 61 74 74 65 72  IdentifierPatter
32e10 6e 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67  n, typeof(string
32e20 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  ));..      tbl.C
32e30 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74  olumns.Add(DbMet
32e40 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73  aDataColumnNames
32e50 2e 51 75 6f 74 65 64 49 64 65 6e 74 69 66 69 65  .QuotedIdentifie
32e60 72 43 61 73 65 2c 20 74 79 70 65 6f 66 28 69 6e  rCase, typeof(in
32e70 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  t));..      tbl.
32e80 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65  Columns.Add(DbMe
32e90 74 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65  taDataColumnName
32ea0 73 2e 53 74 61 74 65 6d 65 6e 74 53 65 70 61 72  s.StatementSepar
32eb0 61 74 6f 72 50 61 74 74 65 72 6e 2c 20 74 79 70  atorPattern, typ
32ec0 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20  eof(string));.. 
32ed0 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
32ee0 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74 61 43  .Add(DbMetaDataC
32ef0 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 53 74 72 69 6e  olumnNames.Strin
32f00 67 4c 69 74 65 72 61 6c 50 61 74 74 65 72 6e 2c  gLiteralPattern,
32f10 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29   typeof(string))
32f20 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
32f30 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44  umns.Add(DbMetaD
32f40 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 53  ataColumnNames.S
32f50 75 70 70 6f 72 74 65 64 4a 6f 69 6e 4f 70 65 72  upportedJoinOper
32f60 61 74 6f 72 73 2c 20 74 79 70 65 6f 66 28 69 6e  ators, typeof(in
32f70 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 62  t));....      tb
32f80 6c 2e 42 65 67 69 6e 4c 6f 61 64 44 61 74 61 28  l.BeginLoadData(
32f90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 6f 77 20  );....      row 
32fa0 3d 20 74 62 6c 2e 4e 65 77 52 6f 77 28 29 3b 0d  = tbl.NewRow();.
32fb0 0a 20 20 20 20 20 20 72 6f 77 2e 49 74 65 6d 41  .      row.ItemA
32fc0 72 72 61 79 20 3d 20 6e 65 77 20 6f 62 6a 65 63  rray = new objec
32fd0 74 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e  t[] {..        n
32fe0 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 22 53  ull,..        "S
32ff0 51 4c 69 74 65 22 2c 0d 0a 20 20 20 20 20 20 20  QLite",..       
33000 20 5f 73 71 6c 2e 56 65 72 73 69 6f 6e 2c 0d 0a   _sql.Version,..
33010 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 56 65 72          _sql.Ver
33020 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 33  sion,..        3
33030 2c 0d 0a 20 20 20 20 20 20 20 20 40 22 28 5e 5c  ,..        @"(^\
33040 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75 7d 5c 70 7b  [\p{Lo}\p{Lu}\p{
33050 4c 6c 7d 5f 40 23 5d 5b 5c 70 7b 4c 6f 7d 5c 70  Ll}_@#][\p{Lo}\p
33060 7b 4c 75 7d 5c 70 7b 4c 6c 7d 5c 70 7b 4e 64 7d  {Lu}\p{Ll}\p{Nd}
33070 40 24 23 5f 5d 2a 24 29 7c 28 5e 5c 5b 5b 5e 5c  @$#_]*$)|(^\[[^\
33080 5d 5c 30 5d 7c 5c 5d 5c 5d 2b 5c 5d 24 29 7c 28  ]\0]|\]\]+\]$)|(
33090 5e 5c 22 22 5b 5e 5c 22 22 5c 30 5d 7c 5c 22 22  ^\""[^\""\0]|\""
330a0 5c 22 22 2b 5c 22 22 24 29 22 2c 0d 0a 20 20 20  \""+\""$)",..   
330b0 20 20 20 20 20 31 2c 0d 0a 20 20 20 20 20 20 20       1,..       
330c0 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
330d0 20 22 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20   "{0}",..       
330e0 20 40 22 40 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75   @"@[\p{Lo}\p{Lu
330f0 7d 5c 70 7b 4c 6c 7d 5c 70 7b 4c 6d 7d 5f 40 23  }\p{Ll}\p{Lm}_@#
33100 5d 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75 7d 5c 70  ][\p{Lo}\p{Lu}\p
33110 7b 4c 6c 7d 5c 70 7b 4c 6d 7d 5c 70 7b 4e 64 7d  {Ll}\p{Lm}\p{Nd}
33120 5c 75 66 66 33 66 5f 40 23 5c 24 5d 2a 28 3f 3d  \uff3f_@#\$]*(?=
33130 5c 73 2b 7c 24 29 22 2c 0d 0a 20 20 20 20 20 20  \s+|$)",..      
33140 20 20 32 35 35 2c 0d 0a 20 20 20 20 20 20 20 20    255,..        
33150 40 22 5e 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75 7d  @"^[\p{Lo}\p{Lu}
33160 5c 70 7b 4c 6c 7d 5c 70 7b 4c 6d 7d 5f 40 23 5d  \p{Ll}\p{Lm}_@#]
33170 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75 7d 5c 70 7b  [\p{Lo}\p{Lu}\p{
33180 4c 6c 7d 5c 70 7b 4c 6d 7d 5c 70 7b 4e 64 7d 5c  Ll}\p{Lm}\p{Nd}\
33190 75 66 66 33 66 5f 40 23 5c 24 5d 2a 28 3f 3d 5c  uff3f_@#\$]*(?=\
331a0 73 2b 7c 24 29 22 2c 0d 0a 20 20 20 20 20 20 20  s+|$)",..       
331b0 20 40 22 28 28 5b 5e 5c 5b 5d 7c 5c 5d 5c 5d 29   @"(([^\[]|\]\])
331c0 2a 29 22 2c 0d 0a 20 20 20 20 20 20 20 20 31 2c  *)",..        1,
331d0 0d 0a 20 20 20 20 20 20 20 20 22 3b 22 2c 0d 0a  ..        ";",..
331e0 20 20 20 20 20 20 20 20 40 22 27 28 28 5b 5e 27          @"'(([^'
331f0 5d 7c 27 27 29 2a 29 27 22 2c 0d 0a 20 20 20 20  ]|'')*)'",..    
33200 20 20 20 20 31 35 0d 0a 20 20 20 20 20 20 7d 3b      15..      };
33210 0d 0a 20 20 20 20 20 20 74 62 6c 2e 52 6f 77 73  ..      tbl.Rows
33220 2e 41 64 64 28 72 6f 77 29 3b 0d 0a 0d 0a 20 20  .Add(row);....  
33230 20 20 20 20 74 62 6c 2e 41 63 63 65 70 74 43 68      tbl.AcceptCh
33240 61 6e 67 65 73 28 29 3b 0d 0a 20 20 20 20 20 20  anges();..      
33250 74 62 6c 2e 45 6e 64 4c 6f 61 64 44 61 74 61 28  tbl.EndLoadData(
33260 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
33270 72 6e 20 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d 0a  rn tbl;..    }..
33280 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
33290 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69  ry>..    /// Bui
332a0 6c 64 20 61 20 43 6f 6c 75 6d 6e 73 20 73 63 68  ld a Columns sch
332b0 65 6d 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ema..    /// </s
332c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
332d0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74   <param name="st
332e0 72 43 61 74 61 6c 6f 67 22 3e 54 68 65 20 63 61  rCatalog">The ca
332f0 74 61 6c 6f 67 20 28 61 74 74 61 63 68 65 64 20  talog (attached 
33300 64 61 74 61 62 61 73 65 29 20 74 6f 20 71 75 65  database) to que
33310 72 79 2c 20 63 61 6e 20 62 65 20 6e 75 6c 6c 3c  ry, can be null<
33320 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
33330 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74   <param name="st
33340 72 54 61 62 6c 65 22 3e 54 68 65 20 74 61 62 6c  rTable">The tabl
33350 65 20 74 6f 20 72 65 74 72 69 65 76 65 20 73 63  e to retrieve sc
33360 68 65 6d 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  hema information
33370 20 66 6f 72 2c 20 63 61 6e 20 62 65 20 6e 75 6c   for, can be nul
33380 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  l</param>..    /
33390 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
333a0 73 74 72 43 6f 6c 75 6d 6e 22 3e 54 68 65 20 63  strColumn">The c
333b0 6f 6c 75 6d 6e 20 74 6f 20 72 65 74 72 69 65 76  olumn to retriev
333c0 65 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61  e schema informa
333d0 74 69 6f 6e 20 66 6f 72 2c 20 63 61 6e 20 62 65  tion for, can be
333e0 20 6e 75 6c 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20   null</param>.. 
333f0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
33400 44 61 74 61 54 61 62 6c 65 3c 2f 72 65 74 75 72  DataTable</retur
33410 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
33420 20 44 61 74 61 54 61 62 6c 65 20 53 63 68 65 6d   DataTable Schem
33430 61 5f 43 6f 6c 75 6d 6e 73 28 73 74 72 69 6e 67  a_Columns(string
33440 20 73 74 72 43 61 74 61 6c 6f 67 2c 20 73 74 72   strCatalog, str
33450 69 6e 67 20 73 74 72 54 61 62 6c 65 2c 20 73 74  ing strTable, st
33460 72 69 6e 67 20 73 74 72 43 6f 6c 75 6d 6e 29 0d  ring strColumn).
33470 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 61  .    {..      Da
33480 74 61 54 61 62 6c 65 20 74 62 6c 20 3d 20 6e 65  taTable tbl = ne
33490 77 20 44 61 74 61 54 61 62 6c 65 28 22 43 6f 6c  w DataTable("Col
334a0 75 6d 6e 73 22 29 3b 0d 0a 20 20 20 20 20 20 44  umns");..      D
334b0 61 74 61 52 6f 77 20 72 6f 77 3b 0d 0a 0d 0a 20  ataRow row;.... 
334c0 20 20 20 20 20 74 62 6c 2e 4c 6f 63 61 6c 65 20       tbl.Locale 
334d0 3d 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  = CultureInfo.In
334e0 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3b 0d  variantCulture;.
334f0 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
33500 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 43 41  ns.Add("TABLE_CA
33510 54 41 4c 4f 47 22 2c 20 74 79 70 65 6f 66 28 73  TALOG", typeof(s
33520 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
33530 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
33540 22 54 41 42 4c 45 5f 53 43 48 45 4d 41 22 2c 20  "TABLE_SCHEMA", 
33550 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
33560 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
33570 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 4e  mns.Add("TABLE_N
33580 41 4d 45 22 2c 20 74 79 70 65 6f 66 28 73 74 72  AME", typeof(str
33590 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ing));..      tb
335a0 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
335b0 4f 4c 55 4d 4e 5f 4e 41 4d 45 22 2c 20 74 79 70  OLUMN_NAME", typ
335c0 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20  eof(string));.. 
335d0 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
335e0 2e 41 64 64 28 22 43 4f 4c 55 4d 4e 5f 47 55 49  .Add("COLUMN_GUI
335f0 44 22 2c 20 74 79 70 65 6f 66 28 47 75 69 64 29  D", typeof(Guid)
33600 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
33610 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 55 4d  lumns.Add("COLUM
33620 4e 5f 50 52 4f 50 49 44 22 2c 20 74 79 70 65 6f  N_PROPID", typeo
33630 66 28 6c 6f 6e 67 29 29 3b 0d 0a 20 20 20 20 20  f(long));..     
33640 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
33650 28 22 4f 52 44 49 4e 41 4c 5f 50 4f 53 49 54 49  ("ORDINAL_POSITI
33660 4f 4e 22 2c 20 74 79 70 65 6f 66 28 69 6e 74 29  ON", typeof(int)
33670 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
33680 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 55 4d  lumns.Add("COLUM
33690 4e 5f 48 41 53 44 45 46 41 55 4c 54 22 2c 20 74  N_HASDEFAULT", t
336a0 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b 0d 0a 20  ypeof(bool));.. 
336b0 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
336c0 2e 41 64 64 28 22 43 4f 4c 55 4d 4e 5f 44 45 46  .Add("COLUMN_DEF
336d0 41 55 4c 54 22 2c 20 74 79 70 65 6f 66 28 73 74  AULT", typeof(st
336e0 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74  ring));..      t
336f0 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
33700 43 4f 4c 55 4d 4e 5f 46 4c 41 47 53 22 2c 20 74  COLUMN_FLAGS", t
33710 79 70 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 20  ypeof(long));.. 
33720 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
33730 2e 41 64 64 28 22 49 53 5f 4e 55 4c 4c 41 42 4c  .Add("IS_NULLABL
33740 45 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29  E", typeof(bool)
33750 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
33760 6c 75 6d 6e 73 2e 41 64 64 28 22 44 41 54 41 5f  lumns.Add("DATA_
33770 54 59 50 45 22 2c 20 74 79 70 65 6f 66 28 73 74  TYPE", typeof(st
33780 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74  ring));..      t
33790 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
337a0 54 59 50 45 5f 47 55 49 44 22 2c 20 74 79 70 65  TYPE_GUID", type
337b0 6f 66 28 47 75 69 64 29 29 3b 0d 0a 20 20 20 20  of(Guid));..    
337c0 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
337d0 64 28 22 43 48 41 52 41 43 54 45 52 5f 4d 41 58  d("CHARACTER_MAX
337e0 49 4d 55 4d 5f 4c 45 4e 47 54 48 22 2c 20 74 79  IMUM_LENGTH", ty
337f0 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20  peof(int));..   
33800 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
33810 64 64 28 22 43 48 41 52 41 43 54 45 52 5f 4f 43  dd("CHARACTER_OC
33820 54 45 54 5f 4c 45 4e 47 54 48 22 2c 20 74 79 70  TET_LENGTH", typ
33830 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20  eof(int));..    
33840 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
33850 64 28 22 4e 55 4d 45 52 49 43 5f 50 52 45 43 49  d("NUMERIC_PRECI
33860 53 49 4f 4e 22 2c 20 74 79 70 65 6f 66 28 69 6e  SION", typeof(in
33870 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  t));..      tbl.
33880 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 4e 55 4d  Columns.Add("NUM
33890 45 52 49 43 5f 53 43 41 4c 45 22 2c 20 74 79 70  ERIC_SCALE", typ
338a0 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20  eof(int));..    
338b0 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
338c0 64 28 22 44 41 54 45 54 49 4d 45 5f 50 52 45 43  d("DATETIME_PREC
338d0 49 53 49 4f 4e 22 2c 20 74 79 70 65 6f 66 28 6c  ISION", typeof(l
338e0 6f 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ong));..      tb
338f0 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
33900 48 41 52 41 43 54 45 52 5f 53 45 54 5f 43 41 54  HARACTER_SET_CAT
33910 41 4c 4f 47 22 2c 20 74 79 70 65 6f 66 28 73 74  ALOG", typeof(st
33920 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74  ring));..      t
33930 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
33940 43 48 41 52 41 43 54 45 52 5f 53 45 54 5f 53 43  CHARACTER_SET_SC
33950 48 45 4d 41 22 2c 20 74 79 70 65 6f 66 28 73 74  HEMA", typeof(st
33960 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74  ring));..      t
33970 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
33980 43 48 41 52 41 43 54 45 52 5f 53 45 54 5f 4e 41  CHARACTER_SET_NA
33990 4d 45 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69  ME", typeof(stri
339a0 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  ng));..      tbl
339b0 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f  .Columns.Add("CO
339c0 4c 4c 41 54 49 4f 4e 5f 43 41 54 41 4c 4f 47 22  LLATION_CATALOG"
339d0 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29  , typeof(string)
339e0 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
339f0 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 4c 41  lumns.Add("COLLA
33a00 54 49 4f 4e 5f 53 43 48 45 4d 41 22 2c 20 74 79  TION_SCHEMA", ty
33a10 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a  peof(string));..
33a20 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
33a30 73 2e 41 64 64 28 22 43 4f 4c 4c 41 54 49 4f 4e  s.Add("COLLATION
33a40 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66 28 73  _NAME", typeof(s
33a50 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
33a60 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
33a70 22 44 4f 4d 41 49 4e 5f 43 41 54 41 4c 4f 47 22  "DOMAIN_CATALOG"
33a80 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29  , typeof(string)
33a90 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
33aa0 6c 75 6d 6e 73 2e 41 64 64 28 22 44 4f 4d 41 49  lumns.Add("DOMAI
33ab0 4e 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66 28  N_NAME", typeof(
33ac0 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20  string));..     
33ad0 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
33ae0 28 22 44 45 53 43 52 49 50 54 49 4f 4e 22 2c 20  ("DESCRIPTION", 
33af0 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
33b00 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
33b10 6d 6e 73 2e 41 64 64 28 22 50 52 49 4d 41 52 59  mns.Add("PRIMARY
33b20 5f 4b 45 59 22 2c 20 74 79 70 65 6f 66 28 62 6f  _KEY", typeof(bo
33b30 6f 6c 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  ol));..      tbl
33b40 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 45 44  .Columns.Add("ED
33b50 4d 5f 54 59 50 45 22 2c 20 74 79 70 65 6f 66 28  M_TYPE", typeof(
33b60 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20  string));..     
33b70 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
33b80 28 22 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22  ("AUTOINCREMENT"
33b90 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b  , typeof(bool));
33ba0 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
33bb0 6d 6e 73 2e 41 64 64 28 22 55 4e 49 51 55 45 22  mns.Add("UNIQUE"
33bc0 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b  , typeof(bool));
33bd0 0d 0a 0d 0a 20 20 20 20 20 20 74 62 6c 2e 42 65  ....      tbl.Be
33be0 67 69 6e 4c 6f 61 64 44 61 74 61 28 29 3b 0d 0a  ginLoadData();..
33bf0 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72 69  ..      if (Stri
33c00 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
33c10 28 73 74 72 43 61 74 61 6c 6f 67 29 29 20 73 74  (strCatalog)) st
33c20 72 43 61 74 61 6c 6f 67 20 3d 20 47 65 74 44 65  rCatalog = GetDe
33c30 66 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d 65  faultCatalogName
33c40 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72  ();....      str
33c50 69 6e 67 20 6d 61 73 74 65 72 20 3d 20 47 65 74  ing master = Get
33c60 4d 61 73 74 65 72 54 61 62 6c 65 4e 61 6d 65 28  MasterTableName(
33c70 49 73 54 65 6d 70 6f 72 61 72 79 43 61 74 61 6c  IsTemporaryCatal
33c80 6f 67 4e 61 6d 65 28 73 74 72 43 61 74 61 6c 6f  ogName(strCatalo
33c90 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 75 73  g));....      us
33ca0 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61  ing (SQLiteComma
33cb0 6e 64 20 63 6d 64 54 61 62 6c 65 73 20 3d 20 6e  nd cmdTables = n
33cc0 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  ew SQLiteCommand
33cd0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
33ce0 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
33cf0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
33d00 74 43 75 6c 74 75 72 65 2c 20 22 53 45 4c 45 43  tCulture, "SELEC
33d10 54 20 2a 20 46 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b  T * FROM [{0}].[
33d20 7b 31 7d 5d 20 57 48 45 52 45 20 5b 74 79 70 65  {1}] WHERE [type
33d30 5d 20 4c 49 4b 45 20 27 74 61 62 6c 65 27 20 4f  ] LIKE 'table' O
33d40 52 20 5b 74 79 70 65 5d 20 4c 49 4b 45 20 27 76  R [type] LIKE 'v
33d50 69 65 77 27 22 2c 20 73 74 72 43 61 74 61 6c 6f  iew'", strCatalo
33d60 67 2c 20 6d 61 73 74 65 72 29 2c 20 74 68 69 73  g, master), this
33d70 29 29 0d 0a 20 20 20 20 20 20 75 73 69 6e 67 20  ))..      using 
33d80 28 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  (SQLiteDataReade
33d90 72 20 72 64 54 61 62 6c 65 73 20 3d 20 63 6d 64  r rdTables = cmd
33da0 54 61 62 6c 65 73 2e 45 78 65 63 75 74 65 52 65  Tables.ExecuteRe
33db0 61 64 65 72 28 29 29 0d 0a 20 20 20 20 20 20 7b  ader())..      {
33dc0 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
33dd0 28 72 64 54 61 62 6c 65 73 2e 52 65 61 64 28 29  (rdTables.Read()
33de0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
33df0 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
33e00 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
33e10 28 73 74 72 54 61 62 6c 65 29 20 7c 7c 20 53 74  (strTable) || St
33e20 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 74 72  ring.Compare(str
33e30 54 61 62 6c 65 2c 20 72 64 54 61 62 6c 65 73 2e  Table, rdTables.
33e40 47 65 74 53 74 72 69 6e 67 28 32 29 2c 20 53 74  GetString(2), St
33e50 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
33e60 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65  rdinalIgnoreCase
33e70 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20  ) == 0)..       
33e80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
33e90 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
33ea0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
33eb0 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74      using (SQLit
33ec0 65 43 6f 6d 6d 61 6e 64 20 63 6d 64 20 3d 20 6e  eCommand cmd = n
33ed0 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  ew SQLiteCommand
33ee0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
33ef0 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
33f00 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
33f10 74 43 75 6c 74 75 72 65 2c 20 22 53 45 4c 45 43  tCulture, "SELEC
33f20 54 20 2a 20 46 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b  T * FROM [{0}].[
33f30 7b 31 7d 5d 22 2c 20 73 74 72 43 61 74 61 6c 6f  {1}]", strCatalo
33f40 67 2c 20 72 64 54 61 62 6c 65 73 2e 47 65 74 53  g, rdTables.GetS
33f50 74 72 69 6e 67 28 32 29 29 2c 20 74 68 69 73 29  tring(2)), this)
33f60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
33f70 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 44 61   using (SQLiteDa
33f80 74 61 52 65 61 64 65 72 20 72 64 20 3d 20 28 53  taReader rd = (S
33f90 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 29  QLiteDataReader)
33fa0 63 6d 64 2e 45 78 65 63 75 74 65 52 65 61 64 65  cmd.ExecuteReade
33fb0 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  r(CommandBehavio
33fc0 72 2e 53 63 68 65 6d 61 4f 6e 6c 79 29 29 0d 0a  r.SchemaOnly))..
33fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73                us
33fe0 69 6e 67 20 28 44 61 74 61 54 61 62 6c 65 20 74  ing (DataTable t
33ff0 62 6c 53 63 68 65 6d 61 20 3d 20 72 64 2e 47 65  blSchema = rd.Ge
34000 74 53 63 68 65 6d 61 54 61 62 6c 65 28 74 72 75  tSchemaTable(tru
34010 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20  e, true))..     
34020 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34030 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
34040 61 63 68 20 28 44 61 74 61 52 6f 77 20 73 63 68  ach (DataRow sch
34050 65 6d 61 52 6f 77 20 69 6e 20 74 62 6c 53 63 68  emaRow in tblSch
34060 65 6d 61 2e 52 6f 77 73 29 0d 0a 20 20 20 20 20  ema.Rows)..     
34070 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34090 69 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61  if (String.Compa
340a0 72 65 28 73 63 68 65 6d 61 52 6f 77 5b 53 63 68  re(schemaRow[Sch
340b0 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 43  emaTableColumn.C
340c0 6f 6c 75 6d 6e 4e 61 6d 65 5d 2e 54 6f 53 74 72  olumnName].ToStr
340d0 69 6e 67 28 29 2c 20 73 74 72 43 6f 6c 75 6d 6e  ing(), strColumn
340e0 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73  , StringComparis
340f0 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
34100 43 61 73 65 29 20 3d 3d 20 30 0d 0a 20 20 20 20  Case) == 0..    
34110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34120 7c 7c 20 73 74 72 43 6f 6c 75 6d 6e 20 3d 3d 20  || strColumn == 
34130 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
34140 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34160 72 6f 77 20 3d 20 74 62 6c 2e 4e 65 77 52 6f 77  row = tbl.NewRow
34170 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
34180 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22             row["
34190 4e 55 4d 45 52 49 43 5f 50 52 45 43 49 53 49 4f  NUMERIC_PRECISIO
341a0 4e 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b  N"] = schemaRow[
341b0 53 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d  SchemaTableColum
341c0 6e 2e 4e 75 6d 65 72 69 63 50 72 65 63 69 73 69  n.NumericPrecisi
341d0 6f 6e 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  on];..          
341e0 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22 4e            row["N
341f0 55 4d 45 52 49 43 5f 53 43 41 4c 45 22 5d 20 3d  UMERIC_SCALE"] =
34200 20 73 63 68 65 6d 61 52 6f 77 5b 53 63 68 65 6d   schemaRow[Schem
34210 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 4e 75 6d  aTableColumn.Num
34220 65 72 69 63 53 63 61 6c 65 5d 3b 0d 0a 20 20 20  ericScale];..   
34230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34240 20 72 6f 77 5b 22 54 41 42 4c 45 5f 4e 41 4d 45   row["TABLE_NAME
34250 22 5d 20 3d 20 72 64 54 61 62 6c 65 73 2e 47 65  "] = rdTables.Ge
34260 74 53 74 72 69 6e 67 28 32 29 3b 0d 0a 20 20 20  tString(2);..   
34270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34280 20 72 6f 77 5b 22 43 4f 4c 55 4d 4e 5f 4e 41 4d   row["COLUMN_NAM
34290 45 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b  E"] = schemaRow[
342a0 53 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d  SchemaTableColum
342b0 6e 2e 43 6f 6c 75 6d 6e 4e 61 6d 65 5d 3b 0d 0a  n.ColumnName];..
342c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
342d0 20 20 20 20 72 6f 77 5b 22 54 41 42 4c 45 5f 43      row["TABLE_C
342e0 41 54 41 4c 4f 47 22 5d 20 3d 20 73 74 72 43 61  ATALOG"] = strCa
342f0 74 61 6c 6f 67 3b 0d 0a 20 20 20 20 20 20 20 20  talog;..        
34300 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b              row[
34310 22 4f 52 44 49 4e 41 4c 5f 50 4f 53 49 54 49 4f  "ORDINAL_POSITIO
34320 4e 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b  N"] = schemaRow[
34330 53 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d  SchemaTableColum
34340 6e 2e 43 6f 6c 75 6d 6e 4f 72 64 69 6e 61 6c 5d  n.ColumnOrdinal]
34350 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
34360 20 20 20 20 20 20 20 72 6f 77 5b 22 43 4f 4c 55         row["COLU
34370 4d 4e 5f 48 41 53 44 45 46 41 55 4c 54 22 5d 20  MN_HASDEFAULT"] 
34380 3d 20 28 73 63 68 65 6d 61 52 6f 77 5b 53 63 68  = (schemaRow[Sch
34390 65 6d 61 54 61 62 6c 65 4f 70 74 69 6f 6e 61 6c  emaTableOptional
343a0 43 6f 6c 75 6d 6e 2e 44 65 66 61 75 6c 74 56 61  Column.DefaultVa
343b0 6c 75 65 5d 20 21 3d 20 44 42 4e 75 6c 6c 2e 56  lue] != DBNull.V
343c0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
343d0 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b              row[
343e0 22 43 4f 4c 55 4d 4e 5f 44 45 46 41 55 4c 54 22  "COLUMN_DEFAULT"
343f0 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b 53 63  ] = schemaRow[Sc
34400 68 65 6d 61 54 61 62 6c 65 4f 70 74 69 6f 6e 61  hemaTableOptiona
34410 6c 43 6f 6c 75 6d 6e 2e 44 65 66 61 75 6c 74 56  lColumn.DefaultV
34420 61 6c 75 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20  alue];..        
34430 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b              row[
34440 22 49 53 5f 4e 55 4c 4c 41 42 4c 45 22 5d 20 3d  "IS_NULLABLE"] =
34450 20 73 63 68 65 6d 61 52 6f 77 5b 53 63 68 65 6d   schemaRow[Schem
34460 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 41 6c 6c  aTableColumn.All
34470 6f 77 44 42 4e 75 6c 6c 5d 3b 0d 0a 20 20 20 20  owDBNull];..    
34480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34490 72 6f 77 5b 22 44 41 54 41 5f 54 59 50 45 22 5d  row["DATA_TYPE"]
344a0 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b 22 44 61   = schemaRow["Da
344b0 74 61 54 79 70 65 4e 61 6d 65 22 5d 2e 54 6f 53  taTypeName"].ToS
344c0 74 72 69 6e 67 28 29 2e 54 6f 4c 6f 77 65 72 28  tring().ToLower(
344d0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
344e0 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
344f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34500 20 20 20 20 72 6f 77 5b 22 45 44 4d 5f 54 59 50      row["EDM_TYP
34510 45 22 5d 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76  E"] = SQLiteConv
34520 65 72 74 2e 44 62 54 79 70 65 54 6f 54 79 70 65  ert.DbTypeToType
34530 4e 61 6d 65 28 74 68 69 73 2c 20 28 44 62 54 79  Name(this, (DbTy
34540 70 65 29 73 63 68 65 6d 61 52 6f 77 5b 53 63 68  pe)schemaRow[Sch
34550 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 50  emaTableColumn.P
34560 72 6f 76 69 64 65 72 54 79 70 65 5d 2c 20 5f 66  roviderType], _f
34570 6c 61 67 73 29 2e 54 6f 53 74 72 69 6e 67 28 29  lags).ToString()
34580 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65  .ToLower(Culture
34590 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
345a0 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
345b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77               row
345c0 5b 22 43 48 41 52 41 43 54 45 52 5f 4d 41 58 49  ["CHARACTER_MAXI
345d0 4d 55 4d 5f 4c 45 4e 47 54 48 22 5d 20 3d 20 73  MUM_LENGTH"] = s
345e0 63 68 65 6d 61 52 6f 77 5b 53 63 68 65 6d 61 54  chemaRow[SchemaT
345f0 61 62 6c 65 43 6f 6c 75 6d 6e 2e 43 6f 6c 75 6d  ableColumn.Colum
34600 6e 53 69 7a 65 5d 3b 0d 0a 20 20 20 20 20 20 20  nSize];..       
34610 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77               row
34620 5b 22 54 41 42 4c 45 5f 53 43 48 45 4d 41 22 5d  ["TABLE_SCHEMA"]
34630 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b 53 63 68   = schemaRow[Sch
34640 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 42  emaTableColumn.B
34650 61 73 65 53 63 68 65 6d 61 4e 61 6d 65 5d 3b 0d  aseSchemaName];.
34660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34670 20 20 20 20 20 72 6f 77 5b 22 50 52 49 4d 41 52       row["PRIMAR
34680 59 5f 4b 45 59 22 5d 20 3d 20 73 63 68 65 6d 61  Y_KEY"] = schema
34690 52 6f 77 5b 53 63 68 65 6d 61 54 61 62 6c 65 43  Row[SchemaTableC
346a0 6f 6c 75 6d 6e 2e 49 73 4b 65 79 5d 3b 0d 0a 20  olumn.IsKey];.. 
346b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
346c0 20 20 20 72 6f 77 5b 22 41 55 54 4f 49 4e 43 52     row["AUTOINCR
346d0 45 4d 45 4e 54 22 5d 20 3d 20 73 63 68 65 6d 61  EMENT"] = schema
346e0 52 6f 77 5b 53 63 68 65 6d 61 54 61 62 6c 65 4f  Row[SchemaTableO
346f0 70 74 69 6f 6e 61 6c 43 6f 6c 75 6d 6e 2e 49 73  ptionalColumn.Is
34700 41 75 74 6f 49 6e 63 72 65 6d 65 6e 74 5d 3b 0d  AutoIncrement];.
34710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34720 20 20 20 20 20 72 6f 77 5b 22 43 4f 4c 4c 41 54       row["COLLAT
34730 49 4f 4e 5f 4e 41 4d 45 22 5d 20 3d 20 73 63 68  ION_NAME"] = sch
34740 65 6d 61 52 6f 77 5b 22 43 6f 6c 6c 61 74 69 6f  emaRow["Collatio
34750 6e 54 79 70 65 22 5d 3b 0d 0a 20 20 20 20 20 20  nType"];..      
34760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f                ro
34770 77 5b 22 55 4e 49 51 55 45 22 5d 20 3d 20 73 63  w["UNIQUE"] = sc
34780 68 65 6d 61 52 6f 77 5b 53 63 68 65 6d 61 54 61  hemaRow[SchemaTa
34790 62 6c 65 43 6f 6c 75 6d 6e 2e 49 73 55 6e 69 71  bleColumn.IsUniq
347a0 75 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue];..          
347b0 20 20 20 20 20 20 20 20 20 20 74 62 6c 2e 52 6f            tbl.Ro
347c0 77 73 2e 41 64 64 28 72 6f 77 29 3b 0d 0a 20 20  ws.Add(row);..  
347d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
347e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
347f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
34800 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
34810 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
34820 20 20 63 61 74 63 68 28 53 51 4c 69 74 65 45 78    catch(SQLiteEx
34830 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  ception)..      
34840 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34850 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34860 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
34870 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34880 20 74 62 6c 2e 41 63 63 65 70 74 43 68 61 6e 67   tbl.AcceptChang
34890 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  es();..      tbl
348a0 2e 45 6e 64 4c 6f 61 64 44 61 74 61 28 29 3b 0d  .EndLoadData();.
348b0 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
348c0 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  tbl;..    }.... 
348d0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
348e0 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
348f0 73 20 69 6e 64 65 78 20 69 6e 66 6f 72 6d 61 74  s index informat
34900 69 6f 6e 20 66 6f 72 20 74 68 65 20 67 69 76 65  ion for the give
34910 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 63  n database and c
34920 61 74 61 6c 6f 67 0d 0a 20 20 20 20 2f 2f 2f 20  atalog..    /// 
34930 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
34940 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
34950 22 73 74 72 43 61 74 61 6c 6f 67 22 3e 54 68 65  "strCatalog">The
34960 20 63 61 74 61 6c 6f 67 20 28 61 74 74 61 63 68   catalog (attach
34970 65 64 20 64 61 74 61 62 61 73 65 29 20 74 6f 20  ed database) to 
34980 71 75 65 72 79 2c 20 63 61 6e 20 62 65 20 6e 75  query, can be nu
34990 6c 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  ll</param>..    
349a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
349b0 22 73 74 72 49 6e 64 65 78 22 3e 54 68 65 20 6e  "strIndex">The n
349c0 61 6d 65 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ame of the index
349d0 20 74 6f 20 72 65 74 72 69 65 76 65 20 69 6e 66   to retrieve inf
349e0 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 2c 20 63 61  ormation for, ca
349f0 6e 20 62 65 20 6e 75 6c 6c 3c 2f 70 61 72 61 6d  n be null</param
34a00 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
34a10 6d 20 6e 61 6d 65 3d 22 73 74 72 54 61 62 6c 65  m name="strTable
34a20 22 3e 54 68 65 20 74 61 62 6c 65 20 74 6f 20 72  ">The table to r
34a30 65 74 72 69 65 76 65 20 69 6e 64 65 78 20 69 6e  etrieve index in
34a40 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 2c 20 63  formation for, c
34a50 61 6e 20 62 65 20 6e 75 6c 6c 3c 2f 70 61 72 61  an be null</para
34a60 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
34a70 75 72 6e 73 3e 44 61 74 61 54 61 62 6c 65 3c 2f  urns>DataTable</
34a80 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
34a90 69 76 61 74 65 20 44 61 74 61 54 61 62 6c 65 20  ivate DataTable 
34aa0 53 63 68 65 6d 61 5f 49 6e 64 65 78 65 73 28 73  Schema_Indexes(s
34ab0 74 72 69 6e 67 20 73 74 72 43 61 74 61 6c 6f 67  tring strCatalog
34ac0 2c 20 73 74 72 69 6e 67 20 73 74 72 54 61 62 6c  , string strTabl
34ad0 65 2c 20 73 74 72 69 6e 67 20 73 74 72 49 6e 64  e, string strInd
34ae0 65 78 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ex)..    {..    
34af0 20 20 44 61 74 61 54 61 62 6c 65 20 74 62 6c 20    DataTable tbl 
34b00 3d 20 6e 65 77 20 44 61 74 61 54 61 62 6c 65 28  = new DataTable(
34b10 22 49 6e 64 65 78 65 73 22 29 3b 0d 0a 20 20 20  "Indexes");..   
34b20 20 20 20 44 61 74 61 52 6f 77 20 72 6f 77 3b 0d     DataRow row;.
34b30 0a 20 20 20 20 20 20 4c 69 73 74 3c 69 6e 74 3e  .      List<int>
34b40 20 70 72 69 6d 61 72 79 4b 65 79 73 20 3d 20 6e   primaryKeys = n
34b50 65 77 20 4c 69 73 74 3c 69 6e 74 3e 28 29 3b 0d  ew List<int>();.
34b60 0a 20 20 20 20 20 20 62 6f 6f 6c 20 6d 61 79 62  .      bool mayb
34b70 65 52 6f 77 49 64 3b 0d 0a 0d 0a 20 20 20 20 20  eRowId;....     
34b80 20 74 62 6c 2e 4c 6f 63 61 6c 65 20 3d 20 43 75   tbl.Locale = Cu
34b90 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
34ba0 61 6e 74 43 75 6c 74 75 72 65 3b 0d 0a 20 20 20  antCulture;..   
34bb0 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
34bc0 64 64 28 22 54 41 42 4c 45 5f 43 41 54 41 4c 4f  dd("TABLE_CATALO
34bd0 47 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e  G", typeof(strin
34be0 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  g));..      tbl.
34bf0 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 54 41 42  Columns.Add("TAB
34c00 4c 45 5f 53 43 48 45 4d 41 22 2c 20 74 79 70 65  LE_SCHEMA", type
34c10 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20  of(string));..  
34c20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
34c30 41 64 64 28 22 54 41 42 4c 45 5f 4e 41 4d 45 22  Add("TABLE_NAME"
34c40 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29  , typeof(string)
34c50 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
34c60 6c 75 6d 6e 73 2e 41 64 64 28 22 49 4e 44 45 58  lumns.Add("INDEX
34c70 5f 43 41 54 41 4c 4f 47 22 2c 20 74 79 70 65 6f  _CATALOG", typeo
34c80 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
34c90 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
34ca0 64 64 28 22 49 4e 44 45 58 5f 53 43 48 45 4d 41  dd("INDEX_SCHEMA
34cb0 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67  ", typeof(string
34cc0 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  ));..      tbl.C
34cd0 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 49 4e 44 45  olumns.Add("INDE
34ce0 58 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66 28  X_NAME", typeof(
34cf0 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20  string));..     
34d00 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
34d10 28 22 50 52 49 4d 41 52 59 5f 4b 45 59 22 2c 20  ("PRIMARY_KEY", 
34d20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b 0d 0a  typeof(bool));..
34d30 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
34d40 73 2e 41 64 64 28 22 55 4e 49 51 55 45 22 2c 20  s.Add("UNIQUE", 
34d50 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b 0d 0a  typeof(bool));..
34d60 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
34d70 73 2e 41 64 64 28 22 43 4c 55 53 54 45 52 45 44  s.Add("CLUSTERED
34d80 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29  ", typeof(bool))
34d90 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
34da0 75 6d 6e 73 2e 41 64 64 28 22 54 59 50 45 22 2c  umns.Add("TYPE",
34db0 20 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   typeof(int));..
34dc0 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
34dd0 73 2e 41 64 64 28 22 46 49 4c 4c 5f 46 41 43 54  s.Add("FILL_FACT
34de0 4f 52 22 2c 20 74 79 70 65 6f 66 28 69 6e 74 29  OR", typeof(int)
34df0 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
34e00 6c 75 6d 6e 73 2e 41 64 64 28 22 49 4e 49 54 49  lumns.Add("INITI
34e10 41 4c 5f 53 49 5a 45 22 2c 20 74 79 70 65 6f 66  AL_SIZE", typeof
34e20 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74  (int));..      t
34e30 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
34e40 4e 55 4c 4c 53 22 2c 20 74 79 70 65 6f 66 28 69  NULLS", typeof(i
34e50 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  nt));..      tbl
34e60 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 53 4f  .Columns.Add("SO
34e70 52 54 5f 42 4f 4f 4b 4d 41 52 4b 53 22 2c 20 74  RT_BOOKMARKS", t
34e80 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b 0d 0a 20  ypeof(bool));.. 
34e90 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
34ea0 2e 41 64 64 28 22 41 55 54 4f 5f 55 50 44 41 54  .Add("AUTO_UPDAT
34eb0 45 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29  E", typeof(bool)
34ec0 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
34ed0 6c 75 6d 6e 73 2e 41 64 64 28 22 4e 55 4c 4c 5f  lumns.Add("NULL_
34ee0 43 4f 4c 4c 41 54 49 4f 4e 22 2c 20 74 79 70 65  COLLATION", type
34ef0 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20  of(int));..     
34f00 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
34f10 28 22 4f 52 44 49 4e 41 4c 5f 50 4f 53 49 54 49  ("ORDINAL_POSITI
34f20 4f 4e 22 2c 20 74 79 70 65 6f 66 28 69 6e 74 29  ON", typeof(int)
34f30 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
34f40 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 55 4d  lumns.Add("COLUM
34f50 4e 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66 28  N_NAME", typeof(
34f60 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20  string));..     
34f70 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
34f80 28 22 43 4f 4c 55 4d 4e 5f 47 55 49 44 22 2c 20  ("COLUMN_GUID", 
34f90 74 79 70 65 6f 66 28 47 75 69 64 29 29 3b 0d 0a  typeof(Guid));..
34fa0 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
34fb0 73 2e 41 64 64 28 22 43 4f 4c 55 4d 4e 5f 50 52  s.Add("COLUMN_PR
34fc0 4f 50 49 44 22 2c 20 74 79 70 65 6f 66 28 6c 6f  OPID", typeof(lo
34fd0 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  ng));..      tbl
34fe0 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f  .Columns.Add("CO
34ff0 4c 4c 41 54 49 4f 4e 22 2c 20 74 79 70 65 6f 66  LLATION", typeof
35000 28 73 68 6f 72 74 29 29 3b 0d 0a 20 20 20 20 20  (short));..     
35010 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
35020 28 22 43 41 52 44 49 4e 41 4c 49 54 59 22 2c 20  ("CARDINALITY", 
35030 74 79 70 65 6f 66 28 44 65 63 69 6d 61 6c 29 29  typeof(Decimal))
35040 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
35050 75 6d 6e 73 2e 41 64 64 28 22 50 41 47 45 53 22  umns.Add("PAGES"
35060 2c 20 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d  , typeof(int));.
35070 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
35080 6e 73 2e 41 64 64 28 22 46 49 4c 54 45 52 5f 43  ns.Add("FILTER_C
35090 4f 4e 44 49 54 49 4f 4e 22 2c 20 74 79 70 65 6f  ONDITION", typeo
350a0 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
350b0 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
350c0 64 64 28 22 49 4e 54 45 47 52 41 54 45 44 22 2c  dd("INTEGRATED",
350d0 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b 0d   typeof(bool));.
350e0 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
350f0 6e 73 2e 41 64 64 28 22 49 4e 44 45 58 5f 44 45  ns.Add("INDEX_DE
35100 46 49 4e 49 54 49 4f 4e 22 2c 20 74 79 70 65 6f  FINITION", typeo
35110 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 0d 0a 20  f(string));.... 
35120 20 20 20 20 20 74 62 6c 2e 42 65 67 69 6e 4c 6f       tbl.BeginLo
35130 61 64 44 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20  adData();....   
35140 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
35150 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 73 74 72 43  NullOrEmpty(strC
35160 61 74 61 6c 6f 67 29 29 20 73 74 72 43 61 74 61  atalog)) strCata
35170 6c 6f 67 20 3d 20 47 65 74 44 65 66 61 75 6c 74  log = GetDefault
35180 43 61 74 61 6c 6f 67 4e 61 6d 65 28 29 3b 0d 0a  CatalogName();..
35190 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d  ..      string m
351a0 61 73 74 65 72 20 3d 20 47 65 74 4d 61 73 74 65  aster = GetMaste
351b0 72 54 61 62 6c 65 4e 61 6d 65 28 49 73 54 65 6d  rTableName(IsTem
351c0 70 6f 72 61 72 79 43 61 74 61 6c 6f 67 4e 61 6d  poraryCatalogNam
351d0 65 28 73 74 72 43 61 74 61 6c 6f 67 29 29 3b 0d  e(strCatalog));.
351e0 0a 0d 0a 20 20 20 20 20 20 75 73 69 6e 67 20 28  ...      using (
351f0 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6d  SQLiteCommand cm
35200 64 54 61 62 6c 65 73 20 3d 20 6e 65 77 20 53 51  dTables = new SQ
35210 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 48 65 6c 70  LiteCommand(Help
35220 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
35230 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
35240 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
35250 75 72 65 2c 20 22 53 45 4c 45 43 54 20 2a 20 46  ure, "SELECT * F
35260 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b 7b 31 7d 5d 20  ROM [{0}].[{1}] 
35270 57 48 45 52 45 20 5b 74 79 70 65 5d 20 4c 49 4b  WHERE [type] LIK
35280 45 20 27 74 61 62 6c 65 27 22 2c 20 73 74 72 43  E 'table'", strC
35290 61 74 61 6c 6f 67 2c 20 6d 61 73 74 65 72 29 2c  atalog, master),
352a0 20 74 68 69 73 29 29 0d 0a 20 20 20 20 20 20 75   this))..      u
352b0 73 69 6e 67 20 28 53 51 4c 69 74 65 44 61 74 61  sing (SQLiteData
352c0 52 65 61 64 65 72 20 72 64 54 61 62 6c 65 73 20  Reader rdTables 
352d0 3d 20 63 6d 64 54 61 62 6c 65 73 2e 45 78 65 63  = cmdTables.Exec
352e0 75 74 65 52 65 61 64 65 72 28 29 29 0d 0a 20 20  uteReader())..  
352f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 77      {..        w
35300 68 69 6c 65 20 28 72 64 54 61 62 6c 65 73 2e 52  hile (rdTables.R
35310 65 61 64 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ead())..        
35320 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6d 61 79  {..          may
35330 62 65 52 6f 77 49 64 20 3d 20 66 61 6c 73 65 3b  beRowId = false;
35340 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 69 6d  ..          prim
35350 61 72 79 4b 65 79 73 2e 43 6c 65 61 72 28 29 3b  aryKeys.Clear();
35360 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
35370 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
35380 6d 70 74 79 28 73 74 72 54 61 62 6c 65 29 20 7c  mpty(strTable) |
35390 7c 20 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65  | String.Compare
353a0 28 72 64 54 61 62 6c 65 73 2e 47 65 74 53 74 72  (rdTables.GetStr
353b0 69 6e 67 28 32 29 2c 20 73 74 72 54 61 62 6c 65  ing(2), strTable
353c0 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73  , StringComparis
353d0 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
353e0 43 61 73 65 29 20 3d 3d 20 30 29 0d 0a 20 20 20  Case) == 0)..   
353f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35400 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 2c 20        // First, 
35410 6c 6f 6f 6b 20 66 6f 72 20 61 6e 79 20 72 6f 77  look for any row
35420 69 64 20 69 6e 64 65 78 65 73 20 2d 2d 20 77 68  id indexes -- wh
35430 69 63 68 20 73 71 6c 69 74 65 20 64 65 66 69 6e  ich sqlite defin
35440 65 73 20 61 72 65 20 49 4e 54 45 47 45 52 20 50  es are INTEGER P
35450 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
35460 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns...           
35470 20 2f 2f 20 53 75 63 68 20 69 6e 64 65 78 65 73   // Such indexes
35480 20 61 72 65 20 6e 6f 74 20 6c 69 73 74 65 64 20   are not listed 
35490 69 6e 20 74 68 65 20 69 6e 64 65 78 65 73 20 6c  in the indexes l
354a0 69 73 74 20 62 75 74 20 63 6f 75 6e 74 20 61 73  ist but count as
354b0 20 69 6e 64 65 78 65 73 20 6a 75 73 74 20 74 68   indexes just th
354c0 65 20 73 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  e same...       
354d0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
354e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
354f0 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51         using (SQ
35500 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6d 64 54  LiteCommand cmdT
35510 61 62 6c 65 20 3d 20 6e 65 77 20 53 51 4c 69 74  able = new SQLit
35520 65 43 6f 6d 6d 61 6e 64 28 48 65 6c 70 65 72 4d  eCommand(HelperM
35530 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
35540 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
35550 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
35560 2c 20 22 50 52 41 47 4d 41 20 5b 7b 30 7d 5d 2e  , "PRAGMA [{0}].
35570 74 61 62 6c 65 5f 69 6e 66 6f 28 5b 7b 31 7d 5d  table_info([{1}]
35580 29 22 2c 20 73 74 72 43 61 74 61 6c 6f 67 2c 20  )", strCatalog, 
35590 72 64 54 61 62 6c 65 73 2e 47 65 74 53 74 72 69  rdTables.GetStri
355a0 6e 67 28 32 29 29 2c 20 74 68 69 73 29 29 0d 0a  ng(2)), this))..
355b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73                us
355c0 69 6e 67 20 28 53 51 4c 69 74 65 44 61 74 61 52  ing (SQLiteDataR
355d0 65 61 64 65 72 20 72 64 54 61 62 6c 65 20 3d 20  eader rdTable = 
355e0 63 6d 64 54 61 62 6c 65 2e 45 78 65 63 75 74 65  cmdTable.Execute
355f0 52 65 61 64 65 72 28 29 29 0d 0a 20 20 20 20 20  Reader())..     
35600 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35610 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c              whil
35620 65 20 28 72 64 54 61 62 6c 65 2e 52 65 61 64 28  e (rdTable.Read(
35630 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
35640 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35650 20 20 20 20 20 20 20 20 20 69 66 20 28 72 64 54           if (rdT
35660 61 62 6c 65 2e 47 65 74 49 6e 74 33 32 28 35 29  able.GetInt32(5)
35670 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
35680 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
356a0 20 70 72 69 6d 61 72 79 4b 65 79 73 2e 41 64 64   primaryKeys.Add
356b0 28 72 64 54 61 62 6c 65 2e 47 65 74 49 6e 74 33  (rdTable.GetInt3
356c0 32 28 30 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  2(0));....      
356d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
356e0 20 49 66 20 74 68 65 20 70 72 69 6d 61 72 79 20   If the primary 
356f0 6b 65 79 20 69 73 20 6f 66 20 74 79 70 65 20 49  key is of type I
35700 4e 54 45 47 45 52 2c 20 74 68 65 6e 20 69 74 73  NTEGER, then its
35710 20 61 20 72 6f 77 69 64 20 61 6e 64 20 77 65 20   a rowid and we 
35720 6e 65 65 64 20 74 6f 20 6d 61 6b 65 20 61 20 66  need to make a f
35730 61 6b 65 20 69 6e 64 65 78 20 65 6e 74 72 79 20  ake index entry 
35740 66 6f 72 20 69 74 2e 0d 0a 20 20 20 20 20 20 20  for it...       
35750 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
35760 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28  (String.Compare(
35770 72 64 54 61 62 6c 65 2e 47 65 74 53 74 72 69 6e  rdTable.GetStrin
35780 67 28 32 29 2c 20 22 49 4e 54 45 47 45 52 22 2c  g(2), "INTEGER",
35790 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
357a0 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
357b0 61 73 65 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ase) == 0)..    
357c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
357d0 20 20 6d 61 79 62 65 52 6f 77 49 64 20 3d 20 74    maybeRowId = t
357e0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
357f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35800 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
35810 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
35820 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
35830 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
35840 28 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  (SQLiteException
35850 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
35860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35870 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
35880 28 70 72 69 6d 61 72 79 4b 65 79 73 2e 43 6f 75  (primaryKeys.Cou
35890 6e 74 20 3d 3d 20 31 20 26 26 20 6d 61 79 62 65  nt == 1 && maybe
358a0 52 6f 77 49 64 20 3d 3d 20 74 72 75 65 29 0d 0a  RowId == true)..
358b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
358c0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77               row
358d0 20 3d 20 74 62 6c 2e 4e 65 77 52 6f 77 28 29 3b   = tbl.NewRow();
358e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
358f0 20 20 72 6f 77 5b 22 54 41 42 4c 45 5f 43 41 54    row["TABLE_CAT
35900 41 4c 4f 47 22 5d 20 3d 20 73 74 72 43 61 74 61  ALOG"] = strCata
35910 6c 6f 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  log;..          
35920 20 20 20 20 72 6f 77 5b 22 54 41 42 4c 45 5f 4e      row["TABLE_N
35930 41 4d 45 22 5d 20 3d 20 72 64 54 61 62 6c 65 73  AME"] = rdTables
35940 2e 47 65 74 53 74 72 69 6e 67 28 32 29 3b 0d 0a  .GetString(2);..
35950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f                ro
35960 77 5b 22 49 4e 44 45 58 5f 43 41 54 41 4c 4f 47  w["INDEX_CATALOG
35970 22 5d 20 3d 20 73 74 72 43 61 74 61 6c 6f 67 3b  "] = strCatalog;
35980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35990 72 6f 77 5b 22 50 52 49 4d 41 52 59 5f 4b 45 59  row["PRIMARY_KEY
359a0 22 5d 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  "] = true;..    
359b0 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22 49            row["I
359c0 4e 44 45 58 5f 4e 41 4d 45 22 5d 20 3d 20 48 65  NDEX_NAME"] = He
359d0 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
359e0 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
359f0 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
35a00 6c 74 75 72 65 2c 20 22 7b 31 7d 5f 50 4b 5f 7b  lture, "{1}_PK_{
35a10 30 7d 22 2c 20 72 64 54 61 62 6c 65 73 2e 47 65  0}", rdTables.Ge
35a20 74 53 74 72 69 6e 67 28 32 29 2c 20 6d 61 73 74  tString(2), mast
35a30 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
35a40 20 20 20 20 72 6f 77 5b 22 55 4e 49 51 55 45 22      row["UNIQUE"
35a50 5d 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  ] = true;....   
35a60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
35a70 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 28 73  tring.Compare((s
35a80 74 72 69 6e 67 29 72 6f 77 5b 22 49 4e 44 45 58  tring)row["INDEX
35a90 5f 4e 41 4d 45 22 5d 2c 20 73 74 72 49 6e 64 65  _NAME"], strInde
35aa0 78 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69  x, StringCompari
35ab0 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
35ac0 65 43 61 73 65 29 20 3d 3d 20 30 0d 0a 20 20 20  eCase) == 0..   
35ad0 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 73 74             || st
35ae0 72 49 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c 29 0d  rIndex == null).
35af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  .              {
35b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35b10 20 20 74 62 6c 2e 52 6f 77 73 2e 41 64 64 28 72    tbl.Rows.Add(r
35b20 6f 77 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ow);..          
35b30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35b40 20 20 20 20 20 20 20 70 72 69 6d 61 72 79 4b 65         primaryKe
35b50 79 73 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20  ys.Clear();..   
35b60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
35b70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 77            // Now
35b80 20 66 65 74 63 68 20 61 6c 6c 20 74 68 65 20 72   fetch all the r
35b90 65 73 74 20 6f 66 20 74 68 65 20 69 6e 64 65 78  est of the index
35ba0 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es...           
35bb0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
35bc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35bd0 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65     using (SQLite
35be0 43 6f 6d 6d 61 6e 64 20 63 6d 64 20 3d 20 6e 65  Command cmd = ne
35bf0 77 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 28  w SQLiteCommand(
35c00 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
35c10 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75  ringFormat(Cultu
35c20 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
35c30 43 75 6c 74 75 72 65 2c 20 22 50 52 41 47 4d 41  Culture, "PRAGMA
35c40 20 5b 7b 30 7d 5d 2e 69 6e 64 65 78 5f 6c 69 73   [{0}].index_lis
35c50 74 28 5b 7b 31 7d 5d 29 22 2c 20 73 74 72 43 61  t([{1}])", strCa
35c60 74 61 6c 6f 67 2c 20 72 64 54 61 62 6c 65 73 2e  talog, rdTables.
35c70 47 65 74 53 74 72 69 6e 67 28 32 29 29 2c 20 74  GetString(2)), t
35c80 68 69 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20  his))..         
35c90 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
35ca0 74 65 44 61 74 61 52 65 61 64 65 72 20 72 64 20  teDataReader rd 
35cb0 3d 20 28 53 51 4c 69 74 65 44 61 74 61 52 65 61  = (SQLiteDataRea
35cc0 64 65 72 29 63 6d 64 2e 45 78 65 63 75 74 65 52  der)cmd.ExecuteR
35cd0 65 61 64 65 72 28 29 29 0d 0a 20 20 20 20 20 20  eader())..      
35ce0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35cf0 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65             while
35d00 20 28 72 64 2e 52 65 61 64 28 29 29 0d 0a 20 20   (rd.Read())..  
35d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
35d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35d30 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 43 6f     if (String.Co
35d40 6d 70 61 72 65 28 72 64 2e 47 65 74 53 74 72 69  mpare(rd.GetStri
35d50 6e 67 28 31 29 2c 20 73 74 72 49 6e 64 65 78 2c  ng(1), strIndex,
35d60 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
35d70 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
35d80 61 73 65 29 20 3d 3d 20 30 0d 0a 20 20 20 20 20  ase) == 0..     
35d90 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20               || 
35da0 73 74 72 49 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c  strIndex == null
35db0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
35dc0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35dd0 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 20              row 
35de0 3d 20 74 62 6c 2e 4e 65 77 52 6f 77 28 29 3b 0d  = tbl.NewRow();.
35df0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
35e00 20 20 20 20 20 20 20 72 6f 77 5b 22 54 41 42 4c         row["TABL
35e10 45 5f 43 41 54 41 4c 4f 47 22 5d 20 3d 20 73 74  E_CATALOG"] = st
35e20 72 43 61 74 61 6c 6f 67 3b 0d 0a 20 20 20 20 20  rCatalog;..     
35e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
35e40 6f 77 5b 22 54 41 42 4c 45 5f 4e 41 4d 45 22 5d  ow["TABLE_NAME"]
35e50 20 3d 20 72 64 54 61 62 6c 65 73 2e 47 65 74 53   = rdTables.GetS
35e60 74 72 69 6e 67 28 32 29 3b 0d 0a 20 20 20 20 20  tring(2);..     
35e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
35e80 6f 77 5b 22 49 4e 44 45 58 5f 43 41 54 41 4c 4f  ow["INDEX_CATALO
35e90 47 22 5d 20 3d 20 73 74 72 43 61 74 61 6c 6f 67  G"] = strCatalog
35ea0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
35eb0 20 20 20 20 20 20 20 72 6f 77 5b 22 49 4e 44 45         row["INDE
35ec0 58 5f 4e 41 4d 45 22 5d 20 3d 20 72 64 2e 47 65  X_NAME"] = rd.Ge
35ed0 74 53 74 72 69 6e 67 28 31 29 3b 0d 0a 20 20 20  tString(1);..   
35ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35ef0 20 72 6f 77 5b 22 55 4e 49 51 55 45 22 5d 20 3d   row["UNIQUE"] =
35f00 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54   SQLiteConvert.T
35f10 6f 42 6f 6f 6c 65 61 6e 28 72 64 2e 47 65 74 56  oBoolean(rd.GetV
35f20 61 6c 75 65 28 32 29 2c 20 43 75 6c 74 75 72 65  alue(2), Culture
35f30 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
35f40 6c 74 75 72 65 2c 20 66 61 6c 73 65 29 3b 0d 0a  lture, false);..
35f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35f60 20 20 20 20 72 6f 77 5b 22 50 52 49 4d 41 52 59      row["PRIMARY
35f70 5f 4b 45 59 22 5d 20 3d 20 66 61 6c 73 65 3b 0d  _KEY"] = false;.
35f80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
35f90 20 20 20 20 20 20 20 2f 2f 20 67 65 74 20 74 68         // get th
35fa0 65 20 69 6e 64 65 78 20 64 65 66 69 6e 69 74 69  e index definiti
35fb0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
35fc0 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53          using (S
35fd0 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6d 64  QLiteCommand cmd
35fe0 49 6e 64 65 78 65 73 20 3d 20 6e 65 77 20 53 51  Indexes = new SQ
35ff0 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 48 65 6c 70  LiteCommand(Help
36000 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
36010 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
36020 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
36030 75 72 65 2c 20 22 53 45 4c 45 43 54 20 2a 20 46  ure, "SELECT * F
36040 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b 7b 32 7d 5d 20  ROM [{0}].[{2}] 
36050 57 48 45 52 45 20 5b 74 79 70 65 5d 20 4c 49 4b  WHERE [type] LIK
36060 45 20 27 69 6e 64 65 78 27 20 41 4e 44 20 5b 6e  E 'index' AND [n
36070 61 6d 65 5d 20 4c 49 4b 45 20 27 7b 31 7d 27 22  ame] LIKE '{1}'"
36080 2c 20 73 74 72 43 61 74 61 6c 6f 67 2c 20 72 64  , strCatalog, rd
36090 2e 47 65 74 53 74 72 69 6e 67 28 31 29 2e 52 65  .GetString(1).Re
360a0 70 6c 61 63 65 28 22 27 22 2c 20 22 27 27 22 29  place("'", "''")
360b0 2c 20 6d 61 73 74 65 72 29 2c 20 74 68 69 73 29  , master), this)
360c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
360d0 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51         using (SQ
360e0 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 20 72  LiteDataReader r
360f0 64 49 6e 64 65 78 65 73 20 3d 20 63 6d 64 49 6e  dIndexes = cmdIn
36100 64 65 78 65 73 2e 45 78 65 63 75 74 65 52 65 61  dexes.ExecuteRea
36110 64 65 72 28 29 29 0d 0a 20 20 20 20 20 20 20 20  der())..        
36120 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36140 20 20 20 20 20 77 68 69 6c 65 20 28 72 64 49 6e       while (rdIn
36150 64 65 78 65 73 2e 52 65 61 64 28 29 29 0d 0a 20  dexes.Read()).. 
36160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36170 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36190 69 66 20 28 72 64 49 6e 64 65 78 65 73 2e 49 73  if (rdIndexes.Is
361a0 44 42 4e 75 6c 6c 28 34 29 20 3d 3d 20 66 61 6c  DBNull(4) == fal
361b0 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se)..           
361c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
361d0 6f 77 5b 22 49 4e 44 45 58 5f 44 45 46 49 4e 49  ow["INDEX_DEFINI
361e0 54 49 4f 4e 22 5d 20 3d 20 72 64 49 6e 64 65 78  TION"] = rdIndex
361f0 65 73 2e 47 65 74 53 74 72 69 6e 67 28 34 29 3b  es.GetString(4);
36200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36210 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
36220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36230 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
36250 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36260 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 77 20 66          // Now f
36270 6f 72 20 74 68 65 20 72 65 61 6c 6c 79 20 68 61  or the really ha
36280 72 64 20 77 6f 72 6b 2e 20 20 46 69 67 75 72 65  rd work.  Figure
36290 20 6f 75 74 20 77 68 69 63 68 20 69 6e 64 65 78   out which index
362a0 20 69 73 20 74 68 65 20 70 72 69 6d 61 72 79 20   is the primary 
362b0 6b 65 79 20 69 6e 64 65 78 2e 0d 0a 20 20 20 20  key index...    
362c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
362d0 2f 2f 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20  // The only way 
362e0 74 6f 20 66 69 67 75 72 65 20 69 74 20 6f 75 74  to figure it out
362f0 20 69 73 20 74 6f 20 63 68 65 63 6b 20 69 66 20   is to check if 
36300 74 68 65 20 69 6e 64 65 78 20 77 61 73 20 61 6e  the index was an
36310 20 61 75 74 6f 69 6e 64 65 78 20 61 6e 64 20 69   autoindex and i
36320 66 20 77 65 20 68 61 76 65 20 61 20 6e 6f 6e 2d  f we have a non-
36330 72 6f 77 69 64 0d 0a 20 20 20 20 20 20 20 20 20  rowid..         
36340 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 72             // pr
36350 69 6d 61 72 79 20 6b 65 79 2c 20 61 6e 64 20 61  imary key, and a
36360 6c 6c 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69  ll the columns i
36370 6e 20 74 68 65 20 67 69 76 65 6e 20 69 6e 64 65  n the given inde
36380 78 20 6d 61 74 63 68 20 74 68 65 20 70 72 69 6d  x match the prim
36390 61 72 79 20 6b 65 79 20 63 6f 6c 75 6d 6e 73 0d  ary key columns.
363a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
363b0 20 20 20 20 20 69 66 20 28 70 72 69 6d 61 72 79       if (primary
363c0 4b 65 79 73 2e 43 6f 75 6e 74 20 3e 20 30 20 26  Keys.Count > 0 &
363d0 26 20 72 64 2e 47 65 74 53 74 72 69 6e 67 28 31  & rd.GetString(1
363e0 29 2e 53 74 61 72 74 73 57 69 74 68 28 22 73 71  ).StartsWith("sq
363f0 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78 5f 22  lite_autoindex_"
36400 20 2b 20 72 64 54 61 62 6c 65 73 2e 47 65 74 53   + rdTables.GetS
36410 74 72 69 6e 67 28 32 29 2c 20 53 74 72 69 6e 67  tring(2), String
36420 43 6f 6d 70 61 72 69 73 6f 6e 2e 49 6e 76 61 72  Comparison.Invar
36430 69 61 6e 74 43 75 6c 74 75 72 65 49 67 6e 6f 72  iantCultureIgnor
36440 65 43 61 73 65 29 20 3d 3d 20 74 72 75 65 29 0d  eCase) == true).
36450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36460 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73                us
36480 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61  ing (SQLiteComma
36490 6e 64 20 63 6d 64 44 65 74 61 69 6c 73 20 3d 20  nd cmdDetails = 
364a0 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  new SQLiteComman
364b0 64 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  d(HelperMethods.
364c0 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
364d0 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
364e0 6e 74 43 75 6c 74 75 72 65 2c 20 22 50 52 41 47  ntCulture, "PRAG
364f0 4d 41 20 5b 7b 30 7d 5d 2e 69 6e 64 65 78 5f 69  MA [{0}].index_i
36500 6e 66 6f 28 5b 7b 31 7d 5d 29 22 2c 20 73 74 72  nfo([{1}])", str
36510 43 61 74 61 6c 6f 67 2c 20 72 64 2e 47 65 74 53  Catalog, rd.GetS
36520 74 72 69 6e 67 28 31 29 29 2c 20 74 68 69 73 29  tring(1)), this)
36530 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36540 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28           using (
36550 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72  SQLiteDataReader
36560 20 72 64 44 65 74 61 69 6c 73 20 3d 20 63 6d 64   rdDetails = cmd
36570 44 65 74 61 69 6c 73 2e 45 78 65 63 75 74 65 52  Details.ExecuteR
36580 65 61 64 65 72 28 29 29 0d 0a 20 20 20 20 20 20  eader())..      
36590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
365b0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
365c0 4d 61 74 63 68 65 73 20 3d 20 30 3b 0d 0a 20 20  Matches = 0;..  
365d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365e0 20 20 20 20 20 20 77 68 69 6c 65 20 28 72 64 44        while (rdD
365f0 65 74 61 69 6c 73 2e 52 65 61 64 28 29 29 0d 0a  etails.Read())..
36600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36610 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36630 20 20 20 20 20 69 66 20 28 70 72 69 6d 61 72 79       if (primary
36640 4b 65 79 73 2e 43 6f 6e 74 61 69 6e 73 28 72 64  Keys.Contains(rd
36650 44 65 74 61 69 6c 73 2e 47 65 74 49 6e 74 33 32  Details.GetInt32
36660 28 31 29 29 20 3d 3d 20 66 61 6c 73 65 29 0d 0a  (1)) == false)..
36670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36680 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
36690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366a0 20 20 20 20 20 20 20 20 20 6e 4d 61 74 63 68 65           nMatche
366b0 73 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  s = 0;..        
366c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366d0 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
366e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36710 20 20 20 6e 4d 61 74 63 68 65 73 2b 2b 3b 0d 0a     nMatches++;..
36720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36730 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36750 20 20 20 69 66 20 28 6e 4d 61 74 63 68 65 73 20     if (nMatches 
36760 3d 3d 20 70 72 69 6d 61 72 79 4b 65 79 73 2e 43  == primaryKeys.C
36770 6f 75 6e 74 29 0d 0a 20 20 20 20 20 20 20 20 20  ount)..         
36780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
36790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
367a0 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b              row[
367b0 22 50 52 49 4d 41 52 59 5f 4b 45 59 22 5d 20 3d  "PRIMARY_KEY"] =
367c0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
367d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
367e0 20 20 70 72 69 6d 61 72 79 4b 65 79 73 2e 43 6c    primaryKeys.Cl
367f0 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ear();..        
36800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36810 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
36820 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
36830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36840 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
36850 20 20 20 20 20 20 20 20 20 74 62 6c 2e 52 6f 77           tbl.Row
36860 73 2e 41 64 64 28 72 6f 77 29 3b 0d 0a 20 20 20  s.Add(row);..   
36870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
36880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36890 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
368a0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
368b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
368c0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
368d0 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  ception)..      
368e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
368f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36900 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
36910 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
36920 20 74 62 6c 2e 41 63 63 65 70 74 43 68 61 6e 67   tbl.AcceptChang
36930 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  es();..      tbl
36940 2e 45 6e 64 4c 6f 61 64 44 61 74 61 28 29 3b 0d  .EndLoadData();.
36950 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
36960 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  tbl;..    }.... 
36970 20 20 20 70 72 69 76 61 74 65 20 44 61 74 61 54     private DataT
36980 61 62 6c 65 20 53 63 68 65 6d 61 5f 54 72 69 67  able Schema_Trig
36990 67 65 72 73 28 73 74 72 69 6e 67 20 63 61 74 61  gers(string cata
369a0 6c 6f 67 2c 20 73 74 72 69 6e 67 20 74 61 62 6c  log, string tabl
369b0 65 2c 20 73 74 72 69 6e 67 20 74 72 69 67 67 65  e, string trigge
369c0 72 4e 61 6d 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  rName)..    {.. 
369d0 20 20 20 20 20 44 61 74 61 54 61 62 6c 65 20 74       DataTable t
369e0 62 6c 20 3d 20 6e 65 77 20 44 61 74 61 54 61 62  bl = new DataTab
369f0 6c 65 28 22 54 72 69 67 67 65 72 73 22 29 3b 0d  le("Triggers");.
36a00 0a 20 20 20 20 20 20 44 61 74 61 52 6f 77 20 72  .      DataRow r
36a10 6f 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 62 6c  ow;....      tbl
36a20 2e 4c 6f 63 61 6c 65 20 3d 20 43 75 6c 74 75 72  .Locale = Cultur
36a30 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
36a40 75 6c 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 74  ulture;..      t
36a50 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
36a60 54 41 42 4c 45 5f 43 41 54 41 4c 4f 47 22 2c 20  TABLE_CATALOG", 
36a70 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
36a80 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
36a90 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 53  mns.Add("TABLE_S
36aa0 43 48 45 4d 41 22 2c 20 74 79 70 65 6f 66 28 73  CHEMA", typeof(s
36ab0 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
36ac0 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
36ad0 22 54 41 42 4c 45 5f 4e 41 4d 45 22 2c 20 74 79  "TABLE_NAME", ty
36ae0 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a  peof(string));..
36af0 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
36b00 73 2e 41 64 64 28 22 54 52 49 47 47 45 52 5f 4e  s.Add("TRIGGER_N
36b10 41 4d 45 22 2c 20 74 79 70 65 6f 66 28 73 74 72  AME", typeof(str
36b20 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ing));..      tb
36b30 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 54  l.Columns.Add("T
36b40 52 49 47 47 45 52 5f 44 45 46 49 4e 49 54 49 4f  RIGGER_DEFINITIO
36b50 4e 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e  N", typeof(strin
36b60 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 62  g));....      tb
36b70 6c 2e 42 65 67 69 6e 4c 6f 61 64 44 61 74 61 28  l.BeginLoadData(
36b80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28  );....      if (
36b90 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
36ba0 6d 70 74 79 28 74 61 62 6c 65 29 29 20 74 61 62  mpty(table)) tab
36bb0 6c 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  le = null;..    
36bc0 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
36bd0 75 6c 6c 4f 72 45 6d 70 74 79 28 63 61 74 61 6c  ullOrEmpty(catal
36be0 6f 67 29 29 20 63 61 74 61 6c 6f 67 20 3d 20 47  og)) catalog = G
36bf0 65 74 44 65 66 61 75 6c 74 43 61 74 61 6c 6f 67  etDefaultCatalog
36c00 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 73  Name();..      s
36c10 74 72 69 6e 67 20 6d 61 73 74 65 72 20 3d 20 47  tring master = G
36c20 65 74 4d 61 73 74 65 72 54 61 62 6c 65 4e 61 6d  etMasterTableNam
36c30 65 28 49 73 54 65 6d 70 6f 72 61 72 79 43 61 74  e(IsTemporaryCat
36c40 61 6c 6f 67 4e 61 6d 65 28 63 61 74 61 6c 6f 67  alogName(catalog
36c50 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 75 73 69  ));....      usi
36c60 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ng (SQLiteComman
36c70 64 20 63 6d 64 20 3d 20 6e 65 77 20 53 51 4c 69  d cmd = new SQLi
36c80 74 65 43 6f 6d 6d 61 6e 64 28 48 65 6c 70 65 72  teCommand(Helper
36c90 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
36ca0 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f  rmat(CultureInfo
36cb0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
36cc0 65 2c 20 22 53 45 4c 45 43 54 20 5b 74 79 70 65  e, "SELECT [type
36cd0 5d 2c 20 5b 6e 61 6d 65 5d 2c 20 5b 74 62 6c 5f  ], [name], [tbl_
36ce0 6e 61 6d 65 5d 2c 20 5b 72 6f 6f 74 70 61 67 65  name], [rootpage
36cf0 5d 2c 20 5b 73 71 6c 5d 2c 20 5b 72 6f 77 69 64  ], [sql], [rowid
36d00 5d 20 46 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b 7b 31  ] FROM [{0}].[{1
36d10 7d 5d 20 57 48 45 52 45 20 5b 74 79 70 65 5d 20  }] WHERE [type] 
36d20 4c 49 4b 45 20 27 74 72 69 67 67 65 72 27 22 2c  LIKE 'trigger'",
36d30 20 63 61 74 61 6c 6f 67 2c 20 6d 61 73 74 65 72   catalog, master
36d40 29 2c 20 74 68 69 73 29 29 0d 0a 20 20 20 20 20  ), this))..     
36d50 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 44 61   using (SQLiteDa
36d60 74 61 52 65 61 64 65 72 20 72 64 20 3d 20 28 53  taReader rd = (S
36d70 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 29  QLiteDataReader)
36d80 63 6d 64 2e 45 78 65 63 75 74 65 52 65 61 64 65  cmd.ExecuteReade
36d90 72 28 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  r())..      {.. 
36da0 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 72 64         while (rd
36db0 2e 52 65 61 64 28 29 29 0d 0a 20 20 20 20 20 20  .Read())..      
36dc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
36dd0 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72  f (String.Compar
36de0 65 28 72 64 2e 47 65 74 53 74 72 69 6e 67 28 31  e(rd.GetString(1
36df0 29 2c 20 74 72 69 67 67 65 72 4e 61 6d 65 2c 20  ), triggerName, 
36e00 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
36e10 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
36e20 73 65 29 20 3d 3d 20 30 0d 0a 20 20 20 20 20 20  se) == 0..      
36e30 20 20 20 20 20 20 7c 7c 20 74 72 69 67 67 65 72        || trigger
36e40 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
36e50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
36e60 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c          if (tabl
36e70 65 20 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 53 74 72  e == null || Str
36e80 69 6e 67 2e 43 6f 6d 70 61 72 65 28 74 61 62 6c  ing.Compare(tabl
36e90 65 2c 20 72 64 2e 47 65 74 53 74 72 69 6e 67 28  e, rd.GetString(
36ea0 32 29 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  2), StringCompar
36eb0 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
36ec0 72 65 43 61 73 65 29 20 3d 3d 20 30 29 0d 0a 20  reCase) == 0).. 
36ed0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
36ee0 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 20              row 
36ef0 3d 20 74 62 6c 2e 4e 65 77 52 6f 77 28 29 3b 0d  = tbl.NewRow();.
36f00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
36f10 20 72 6f 77 5b 22 54 41 42 4c 45 5f 43 41 54 41   row["TABLE_CATA
36f20 4c 4f 47 22 5d 20 3d 20 63 61 74 61 6c 6f 67 3b  LOG"] = catalog;
36f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36f40 72 6f 77 5b 22 54 41 42 4c 45 5f 4e 41 4d 45 22  row["TABLE_NAME"
36f50 5d 20 3d 20 72 64 2e 47 65 74 53 74 72 69 6e 67  ] = rd.GetString
36f60 28 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (2);..          
36f70 20 20 20 20 72 6f 77 5b 22 54 52 49 47 47 45 52      row["TRIGGER
36f80 5f 4e 41 4d 45 22 5d 20 3d 20 72 64 2e 47 65 74  _NAME"] = rd.Get
36f90 53 74 72 69 6e 67 28 31 29 3b 0d 0a 20 20 20 20  String(1);..    
36fa0 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22 54            row["T
36fb0 52 49 47 47 45 52 5f 44 45 46 49 4e 49 54 49 4f  RIGGER_DEFINITIO
36fc0 4e 22 5d 20 3d 20 72 64 2e 47 65 74 53 74 72 69  N"] = rd.GetStri
36fd0 6e 67 28 34 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng(4);....      
36fe0 20 20 20 20 20 20 20 20 74 62 6c 2e 52 6f 77 73          tbl.Rows
36ff0 2e 41 64 64 28 72 6f 77 29 3b 0d 0a 20 20 20 20  .Add(row);..    
37000 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37010 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37020 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
37030 20 20 74 62 6c 2e 41 63 63 65 70 74 43 68 61 6e    tbl.AcceptChan
37040 67 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 74 62  ges();..      tb
37050 6c 2e 45 6e 64 4c 6f 61 64 44 61 74 61 28 29 3b  l.EndLoadData();
37060 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ....      return
37070 20 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a   tbl;..    }....
37080 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
37090 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 72 69  >..    /// Retri
370a0 65 76 65 73 20 74 61 62 6c 65 20 73 63 68 65 6d  eves table schem
370b0 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f  a information fo
370c0 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  r the database a
370d0 6e 64 20 63 61 74 61 6c 6f 67 0d 0a 20 20 20 20  nd catalog..    
370e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
370f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37100 61 6d 65 3d 22 73 74 72 43 61 74 61 6c 6f 67 22  ame="strCatalog"
37110 3e 54 68 65 20 63 61 74 61 6c 6f 67 20 28 61 74  >The catalog (at
37120 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 29  tached database)
37130 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 61 62   to retrieve tab
37140 6c 65 73 20 6f 6e 3c 2f 70 61 72 61 6d 3e 0d 0a  les on</param>..
37150 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37160 61 6d 65 3d 22 73 74 72 54 61 62 6c 65 22 3e 54  ame="strTable">T
37170 68 65 20 74 61 62 6c 65 20 74 6f 20 72 65 74 72  he table to retr
37180 69 65 76 65 2c 20 63 61 6e 20 62 65 20 6e 75 6c  ieve, can be nul
37190 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  l</param>..    /
371a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
371b0 73 74 72 54 79 70 65 22 3e 54 68 65 20 74 61 62  strType">The tab
371c0 6c 65 20 74 79 70 65 2c 20 63 61 6e 20 62 65 20  le type, can be 
371d0 6e 75 6c 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  null</param>..  
371e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 44    /// <returns>D
371f0 61 74 61 54 61 62 6c 65 3c 2f 72 65 74 75 72 6e  ataTable</return
37200 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  s>..    private 
37210 44 61 74 61 54 61 62 6c 65 20 53 63 68 65 6d 61  DataTable Schema
37220 5f 54 61 62 6c 65 73 28 73 74 72 69 6e 67 20 73  _Tables(string s
37230 74 72 43 61 74 61 6c 6f 67 2c 20 73 74 72 69 6e  trCatalog, strin
37240 67 20 73 74 72 54 61 62 6c 65 2c 20 73 74 72 69  g strTable, stri
37250 6e 67 20 73 74 72 54 79 70 65 29 0d 0a 20 20 20  ng strType)..   
37260 20 7b 0d 0a 20 20 20 20 20 20 44 61 74 61 54 61   {..      DataTa
37270 62 6c 65 20 74 62 6c 20 3d 20 6e 65 77 20 44 61  ble tbl = new Da
37280 74 61 54 61 62 6c 65 28 22 54 61 62 6c 65 73 22  taTable("Tables"
37290 29 3b 0d 0a 20 20 20 20 20 20 44 61 74 61 52 6f  );..      DataRo
372a0 77 20 72 6f 77 3b 0d 0a 20 20 20 20 20 20 73 74  w row;..      st
372b0 72 69 6e 67 20 73 74 72 49 74 65 6d 3b 0d 0a 0d  ring strItem;...
372c0 0a 20 20 20 20 20 20 74 62 6c 2e 4c 6f 63 61 6c  .      tbl.Local
372d0 65 20 3d 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  e = CultureInfo.
372e0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
372f0 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
37300 75 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f  umns.Add("TABLE_
37310 43 41 54 41 4c 4f 47 22 2c 20 74 79 70 65 6f 66  CATALOG", typeof
37320 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20  (string));..    
37330 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
37340 64 28 22 54 41 42 4c 45 5f 53 43 48 45 4d 41 22  d("TABLE_SCHEMA"
37350 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29  , typeof(string)
37360 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
37370 6c 75 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c 45  lumns.Add("TABLE
37380 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66 28 73  _NAME", typeof(s
37390 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
373a0 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
373b0 22 54 41 42 4c 45 5f 54 59 50 45 22 2c 20 74 79  "TABLE_TYPE", ty
373c0 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a  peof(string));..
373d0 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
373e0 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 49 44 22  s.Add("TABLE_ID"
373f0 2c 20 74 79 70 65 6f 66 28 6c 6f 6e 67 29 29 3b  , typeof(long));
37400 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
37410 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 52  mns.Add("TABLE_R
37420 4f 4f 54 50 41 47 45 22 2c 20 74 79 70 65 6f 66  OOTPAGE", typeof
37430 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74  (int));..      t
37440 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
37450 54 41 42 4c 45 5f 44 45 46 49 4e 49 54 49 4f 4e  TABLE_DEFINITION
37460 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67  ", typeof(string
37470 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 42  ));..      tbl.B
37480 65 67 69 6e 4c 6f 61 64 44 61 74 61 28 29 3b 0d  eginLoadData();.
37490 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72  ...      if (Str
374a0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
374b0 79 28 73 74 72 43 61 74 61 6c 6f 67 29 29 20 73  y(strCatalog)) s
374c0 74 72 43 61 74 61 6c 6f 67 20 3d 20 47 65 74 44  trCatalog = GetD
374d0 65 66 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d  efaultCatalogNam
374e0 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 73 74  e();....      st
374f0 72 69 6e 67 20 6d 61 73 74 65 72 20 3d 20 47 65  ring master = Ge
37500 74 4d 61 73 74 65 72 54 61 62 6c 65 4e 61 6d 65  tMasterTableName
37510 28 49 73 54 65 6d 70 6f 72 61 72 79 43 61 74 61  (IsTemporaryCata
37520 6c 6f 67 4e 61 6d 65 28 73 74 72 43 61 74 61 6c  logName(strCatal
37530 6f 67 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 75  og));....      u
37540 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d 6d  sing (SQLiteComm
37550 61 6e 64 20 63 6d 64 20 3d 20 6e 65 77 20 53 51  and cmd = new SQ
37560 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 48 65 6c 70  LiteCommand(Help
37570 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
37580 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e  Format(CultureIn
37590 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
375a0 75 72 65 2c 20 22 53 45 4c 45 43 54 20 5b 74 79  ure, "SELECT [ty
375b0 70 65 5d 2c 20 5b 6e 61 6d 65 5d 2c 20 5b 74 62  pe], [name], [tb
375c0 6c 5f 6e 61 6d 65 5d 2c 20 5b 72 6f 6f 74 70 61  l_name], [rootpa
375d0 67 65 5d 2c 20 5b 73 71 6c 5d 2c 20 5b 72 6f 77  ge], [sql], [row
375e0 69 64 5d 20 46 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b  id] FROM [{0}].[
375f0 7b 31 7d 5d 20 57 48 45 52 45 20 5b 74 79 70 65  {1}] WHERE [type
37600 5d 20 4c 49 4b 45 20 27 74 61 62 6c 65 27 22 2c  ] LIKE 'table'",
37610 20 73 74 72 43 61 74 61 6c 6f 67 2c 20 6d 61 73   strCatalog, mas
37620 74 65 72 29 2c 20 74 68 69 73 29 29 0d 0a 20 20  ter), this))..  
37630 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74      using (SQLit
37640 65 44 61 74 61 52 65 61 64 65 72 20 72 64 20 3d  eDataReader rd =
37650 20 28 53 51 4c 69 74 65 44 61 74 61 52 65 61 64   (SQLiteDataRead
37660 65 72 29 63 6d 64 2e 45 78 65 63 75 74 65 52 65  er)cmd.ExecuteRe
37670 61 64 65 72 28 29 29 0d 0a 20 20 20 20 20 20 7b  ader())..      {
37680 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
37690 28 72 64 2e 52 65 61 64 28 29 29 0d 0a 20 20 20  (rd.Read())..   
376a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
376b0 20 20 73 74 72 49 74 65 6d 20 3d 20 72 64 2e 47    strItem = rd.G
376c0 65 74 53 74 72 69 6e 67 28 30 29 3b 0d 0a 20 20  etString(0);..  
376d0 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
376e0 6e 67 2e 43 6f 6d 70 61 72 65 28 72 64 2e 47 65  ng.Compare(rd.Ge
376f0 74 53 74 72 69 6e 67 28 32 29 2c 20 30 2c 20 22  tString(2), 0, "
37700 53 51 4c 49 54 45 5f 22 2c 20 30 2c 20 37 2c 20  SQLITE_", 0, 7, 
37710 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
37720 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
37730 73 65 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20  se) == 0)..     
37740 20 20 20 20 20 20 20 73 74 72 49 74 65 6d 20 3d         strItem =
37750 20 22 53 59 53 54 45 4d 5f 54 41 42 4c 45 22 3b   "SYSTEM_TABLE";
37760 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  ....          if
37770 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65   (String.Compare
37780 28 73 74 72 54 79 70 65 2c 20 73 74 72 49 74 65  (strType, strIte
37790 6d 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69  m, StringCompari
377a0 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
377b0 65 43 61 73 65 29 20 3d 3d 20 30 0d 0a 20 20 20  eCase) == 0..   
377c0 20 20 20 20 20 20 20 20 20 7c 7c 20 73 74 72 54           || strT
377d0 79 70 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ype == null)..  
377e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
377f0 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
37800 67 2e 43 6f 6d 70 61 72 65 28 72 64 2e 47 65 74  g.Compare(rd.Get
37810 53 74 72 69 6e 67 28 32 29 2c 20 73 74 72 54 61  String(2), strTa
37820 62 6c 65 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61  ble, StringCompa
37830 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
37840 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 0d 0a 20  oreCase) == 0.. 
37850 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20               || 
37860 73 74 72 54 61 62 6c 65 20 3d 3d 20 6e 75 6c 6c  strTable == null
37870 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
37880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37890 72 6f 77 20 3d 20 74 62 6c 2e 4e 65 77 52 6f 77  row = tbl.NewRow
378a0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
378b0 20 20 20 20 20 72 6f 77 5b 22 54 41 42 4c 45 5f       row["TABLE_
378c0 43 41 54 41 4c 4f 47 22 5d 20 3d 20 73 74 72 43  CATALOG"] = strC
378d0 61 74 61 6c 6f 67 3b 0d 0a 20 20 20 20 20 20 20  atalog;..       
378e0 20 20 20 20 20 20 20 72 6f 77 5b 22 54 41 42 4c         row["TABL
378f0 45 5f 4e 41 4d 45 22 5d 20 3d 20 72 64 2e 47 65  E_NAME"] = rd.Ge
37900 74 53 74 72 69 6e 67 28 32 29 3b 0d 0a 20 20 20  tString(2);..   
37910 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22             row["
37920 54 41 42 4c 45 5f 54 59 50 45 22 5d 20 3d 20 73  TABLE_TYPE"] = s
37930 74 72 49 74 65 6d 3b 0d 0a 20 20 20 20 20 20 20  trItem;..       
37940 20 20 20 20 20 20 20 72 6f 77 5b 22 54 41 42 4c         row["TABL
37950 45 5f 49 44 22 5d 20 3d 20 72 64 2e 47 65 74 49  E_ID"] = rd.GetI
37960 6e 74 36 34 28 35 29 3b 0d 0a 20 20 20 20 20 20  nt64(5);..      
37970 20 20 20 20 20 20 20 20 72 6f 77 5b 22 54 41 42          row["TAB
37980 4c 45 5f 52 4f 4f 54 50 41 47 45 22 5d 20 3d 20  LE_ROOTPAGE"] = 
37990 72 64 2e 47 65 74 49 6e 74 33 32 28 33 29 3b 0d  rd.GetInt32(3);.
379a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
379b0 6f 77 5b 22 54 41 42 4c 45 5f 44 45 46 49 4e 49  ow["TABLE_DEFINI
379c0 54 49 4f 4e 22 5d 20 3d 20 72 64 2e 47 65 74 53  TION"] = rd.GetS
379d0 74 72 69 6e 67 28 34 29 3b 0d 0a 0d 0a 20 20 20  tring(4);....   
379e0 20 20 20 20 20 20 20 20 20 20 20 74 62 6c 2e 52             tbl.R
379f0 6f 77 73 2e 41 64 64 28 72 6f 77 29 3b 0d 0a 20  ows.Add(row);.. 
37a00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
37a10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37a20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
37a30 0a 20 20 20 20 20 20 74 62 6c 2e 41 63 63 65 70  .      tbl.Accep
37a40 74 43 68 61 6e 67 65 73 28 29 3b 0d 0a 20 20 20  tChanges();..   
37a50 20 20 20 74 62 6c 2e 45 6e 64 4c 6f 61 64 44 61     tbl.EndLoadDa
37a60 74 61 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  ta();....      r
37a70 65 74 75 72 6e 20 74 62 6c 3b 0d 0a 20 20 20 20  eturn tbl;..    
37a80 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
37a90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
37aa0 52 65 74 72 69 65 76 65 73 20 76 69 65 77 20 73  Retrieves view s
37ab0 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61 74 69 6f  chema informatio
37ac0 6e 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61  n for the databa
37ad0 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  se..    /// </su
37ae0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f