System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 918a8e651b12f588d9bcf6654cd6730e4f52cf75:


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 23 69 66 20  ////////....#if 
17d70 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c 7c  INTEROP_CODEC ||
17d80 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44 45   INTEROP_INCLUDE
17d90 5f 53 45 45 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  _SEE..    /// <s
17da0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
17db0 20 41 74 74 65 6d 70 74 73 20 74 6f 20 65 73 63   Attempts to esc
17dc0 61 70 65 20 74 68 65 20 73 70 65 63 69 66 69 65  ape the specifie
17dd0 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  d connection str
17de0 69 6e 67 20 70 72 6f 70 65 72 74 79 20 6e 61 6d  ing property nam
17df0 65 20 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 76 61  e or..    /// va
17e00 6c 75 65 20 69 6e 20 61 20 77 61 79 20 74 68 61  lue in a way tha
17e10 74 20 69 73 20 63 6f 6d 70 61 74 69 62 6c 65 20  t is compatible 
17e20 77 69 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74  with the connect
17e30 69 6f 6e 20 73 74 72 69 6e 67 20 70 61 72 73 65  ion string parse
17e40 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  r...    /// </su
17e50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
17e60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
17e70 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
17e80 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  e connection str
17e90 69 6e 67 20 70 72 6f 70 65 72 74 79 20 6e 61 6d  ing property nam
17ea0 65 20 6f 72 20 76 61 6c 75 65 20 74 6f 20 65 73  e or value to es
17eb0 63 61 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  cape...    /// <
17ec0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
17ed0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c   <param name="al
17ee0 6c 6f 77 45 71 75 61 6c 73 22 3e 0d 0a 20 20 20  lowEquals">..   
17ef0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
17f00 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e   the equals sign
17f10 20 69 73 20 70 65 72 6d 69 74 74 65 64 20 69 6e   is permitted in
17f20 20 74 68 65 20 73 74 72 69 6e 67 2e 20 20 49 66   the string.  If
17f30 20 74 68 69 73 20 69 73 0d 0a 20 20 20 20 2f 2f   this is..    //
17f40 2f 20 7a 65 72 6f 20 61 6e 64 20 74 68 65 20 73  / zero and the s
17f50 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 61  tring contains a
17f60 6e 20 65 71 75 61 6c 73 20 73 69 67 6e 2c 20 61  n equals sign, a
17f70 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c  n exception will
17f80 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 72   be..    /// thr
17f90 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  own...    /// </
17fa0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
17fb0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
17fc0 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c 20  // The original 
17fd0 73 74 72 69 6e 67 2c 20 77 69 74 68 20 61 6c 6c  string, with all
17fe0 20 73 70 65 63 69 61 6c 20 63 68 61 72 61 63 74   special charact
17ff0 65 72 73 20 65 73 63 61 70 65 64 2e 20 20 49 66  ers escaped.  If
18000 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72   the..    /// or
18010 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 63 6f  iginal string co
18020 6e 74 61 69 6e 73 20 65 71 75 61 6c 73 20 73 69  ntains equals si
18030 67 6e 73 2c 20 74 68 65 79 20 77 69 6c 6c 20 6e  gns, they will n
18040 6f 74 20 62 65 20 65 73 63 61 70 65 64 2e 0d 0a  ot be escaped...
18050 20 20 20 20 2f 2f 2f 20 49 6e 73 74 65 61 64 2c      /// Instead,
18060 20 74 68 65 79 20 77 69 6c 6c 20 62 65 20 70 72   they will be pr
18070 65 73 65 72 76 65 64 20 76 65 72 62 61 74 69 6d  eserved verbatim
18080 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
18090 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
180a0 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
180b0 20 45 73 63 61 70 65 46 6f 72 43 6f 6e 6e 65 63   EscapeForConnec
180c0 74 69 6f 6e 53 74 72 69 6e 67 28 0d 0a 20 20 20  tionString(..   
180d0 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
180e0 65 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  e,..        bool
180f0 20 61 6c 6c 6f 77 45 71 75 61 6c 73 0d 0a 20 20   allowEquals..  
18100 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
18110 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
18120 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
18130 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
18140 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
18150 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
18160 66 20 28 76 61 6c 75 65 2e 49 6e 64 65 78 4f 66  f (value.IndexOf
18170 41 6e 79 28 53 51 4c 69 74 65 43 6f 6e 76 65 72  Any(SQLiteConver
18180 74 2e 53 70 65 63 69 61 6c 43 68 61 72 73 29 20  t.SpecialChars) 
18190 3d 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20  == -1)..        
181a0 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
181b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
181c0 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e   length = value.
181d0 4c 65 6e 67 74 68 3b 0d 0a 20 20 20 20 20 20 20  Length;..       
181e0 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 62   StringBuilder b
181f0 75 69 6c 64 65 72 20 3d 20 6e 65 77 20 53 74 72  uilder = new Str
18200 69 6e 67 42 75 69 6c 64 65 72 28 6c 65 6e 67 74  ingBuilder(lengt
18210 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66  h);....        f
18220 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20  or (int index = 
18230 30 3b 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74  0; index < lengt
18240 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20  h; index++)..   
18250 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18260 20 20 20 20 63 68 61 72 20 63 68 61 72 61 63 74      char charact
18270 65 72 20 3d 20 76 61 6c 75 65 5b 69 6e 64 65 78  er = value[index
18280 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
18290 20 20 73 77 69 74 63 68 20 28 63 68 61 72 61 63    switch (charac
182a0 74 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ter)..          
182b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
182c0 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
182d0 43 6f 6e 76 65 72 74 2e 51 75 6f 74 65 43 68 61  Convert.QuoteCha
182e0 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r:..            
182f0 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 43      case SQLiteC
18300 6f 6e 76 65 72 74 2e 41 6c 74 51 75 6f 74 65 43  onvert.AltQuoteC
18310 68 61 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  har:..          
18320 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
18330 65 43 6f 6e 76 65 72 74 2e 50 61 69 72 43 68 61  eConvert.PairCha
18340 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r:..            
18350 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 43      case SQLiteC
18360 6f 6e 76 65 72 74 2e 45 73 63 61 70 65 43 68 61  onvert.EscapeCha
18370 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r:..            
18380 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
183a0 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
183b0 64 28 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  d(SQLiteConvert.
183c0 45 73 63 61 70 65 43 68 61 72 29 3b 0d 0a 20 20  EscapeChar);..  
183d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
183e0 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70        builder.Ap
183f0 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b  pend(character);
18400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18410 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
18420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18430 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18440 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51           case SQ
18450 4c 69 74 65 43 6f 6e 76 65 72 74 2e 56 61 6c 75  LiteConvert.Valu
18460 65 43 68 61 72 3a 0d 0a 20 20 20 20 20 20 20 20  eChar:..        
18470 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18490 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c 6f 77         if (allow
184a0 45 71 75 61 6c 73 29 0d 0a 20 20 20 20 20 20 20  Equals)..       
184b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
184d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
184f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18500 2f 2f 20 48 41 43 4b 3a 20 54 68 65 20 63 6f 6e  // HACK: The con
18510 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70  nection string p
18520 61 72 73 65 72 20 61 6c 6c 6f 77 73 0d 0a 20 20  arser allows..  
18530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18540 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
18550 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74     connection st
18560 72 69 6e 67 20 70 72 6f 70 65 72 74 79 20 76 61  ring property va
18570 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  lues..          
18580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18590 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 63 6f    //       to co
185a0 6e 74 61 69 6e 20 65 71 75 61 6c 73 20 73 69 67  ntain equals sig
185b0 6e 73 3b 20 68 6f 77 65 76 65 72 2c 0d 0a 20 20  ns; however,..  
185c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
185d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
185e0 20 20 20 74 68 65 79 20 63 61 6e 6e 6f 74 20 62     they cannot b
185f0 65 20 65 73 63 61 70 65 64 2e 0d 0a 20 20 20 20  e escaped...    
18600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18610 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
18620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18630 20 20 20 20 20 20 20 20 2f 2f 20 62 75 69 6c 64          // build
18640 65 72 2e 41 70 70 65 6e 64 28 53 51 4c 69 74 65  er.Append(SQLite
18650 43 6f 6e 76 65 72 74 2e 45 73 63 61 70 65 43 68  Convert.EscapeCh
18660 61 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ar);..          
18670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18680 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
18690 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20  (character);..  
186a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
186b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
186c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
186d0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
186e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
186f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
18710 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
18720 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
18730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18740 20 20 20 20 20 20 20 20 20 20 20 20 22 65 71 75              "equ
18750 61 6c 73 20 73 69 67 6e 20 63 68 61 72 61 63 74  als sign charact
18760 65 72 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65  er is not allowe
18770 64 20 68 65 72 65 22 29 3b 0d 0a 20 20 20 20 20  d here");..     
18780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18790 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
187a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
187b0 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
187c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
187d0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66               def
187e0 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20  ault:..         
187f0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18810 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70        builder.Ap
18820 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b  pend(character);
18830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18840 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
18850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18860 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18870 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
18880 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  }....        ret
18890 75 72 6e 20 62 75 69 6c 64 65 72 2e 54 6f 53 74  urn builder.ToSt
188a0 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  ring();..    }..
188b0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
18920 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18930 2f 2f 2f 20 42 75 69 6c 64 73 20 61 20 63 6f 6e  /// Builds a con
18940 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 66  nection string f
18950 72 6f 6d 20 61 20 6c 69 73 74 20 6f 66 20 6b 65  rom a list of ke
18960 79 2f 76 61 6c 75 65 20 70 61 69 72 73 2e 0d 0a  y/value pairs...
18970 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18980 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
18990 61 6d 20 6e 61 6d 65 3d 22 6f 70 74 73 22 3e 0d  am name="opts">.
189a0 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6c 69 73  .    /// The lis
189b0 74 20 6f 66 20 6b 65 79 2f 76 61 6c 75 65 20 70  t of key/value p
189c0 61 69 72 73 20 63 6f 72 72 65 73 70 6f 6e 64 69  airs correspondi
189d0 6e 67 20 74 6f 20 74 68 65 20 70 61 72 61 6d 65  ng to the parame
189e0 74 65 72 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  ters to be..    
189f0 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 77 69  /// specified wi
18a00 74 68 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  thin the connect
18a10 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ion string...   
18a20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18a30 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
18a40 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
18a50 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e  nnection string.
18a60 20 20 44 65 70 65 6e 64 69 6e 67 20 6f 6e 20 68    Depending on h
18a70 6f 77 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  ow the connectio
18a80 6e 20 73 74 72 69 6e 67 20 77 61 73 0d 0a 20 20  n string was..  
18a90 20 20 2f 2f 2f 20 6f 72 69 67 69 6e 61 6c 6c 79    /// originally
18aa0 20 70 61 72 73 65 64 2c 20 74 68 65 20 72 65 74   parsed, the ret
18ab0 75 72 6e 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e  urned connection
18ac0 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 6d 61   string value ma
18ad0 79 20 6e 6f 74 20 62 65 0d 0a 20 20 20 20 2f 2f  y not be..    //
18ae0 2f 20 75 73 61 62 6c 65 20 69 6e 20 61 20 73 75  / usable in a su
18af0 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f  bsequent call to
18b00 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
18b10 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
18b20 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
18b30 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
18b40 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
18b50 42 75 69 6c 64 43 6f 6e 6e 65 63 74 69 6f 6e 53  BuildConnectionS
18b60 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
18b70 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72 69 6e  SortedList<strin
18b80 67 2c 20 73 74 72 69 6e 67 3e 20 6f 70 74 73 0d  g, string> opts.
18b90 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
18ba0 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f  {..        if (o
18bb0 70 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 72 65 74  pts == null) ret
18bc0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
18bd0 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72     StringBuilder
18be0 20 62 75 69 6c 64 65 72 20 3d 20 6e 65 77 20 53   builder = new S
18bf0 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d  tringBuilder();.
18c00 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61  ...        forea
18c10 63 68 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72  ch (KeyValuePair
18c20 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
18c30 20 70 61 69 72 20 69 6e 20 6f 70 74 73 29 0d 0a   pair in opts)..
18c40 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 4e          {..#if N
18c50 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 0d 0a 20  ET_COMPACT_20.. 
18c60 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
18c70 65 72 2e 41 70 70 65 6e 64 28 48 65 6c 70 65 72  er.Append(Helper
18c80 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
18c90 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
18ca0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
18cb0 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
18cc0 75 72 65 2c 20 22 7b 30 7d 7b 31 7d 7b 32 7d 7b  ure, "{0}{1}{2}{
18cd0 33 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  3}",..          
18ce0 20 20 20 20 20 20 45 73 63 61 70 65 46 6f 72 43        EscapeForC
18cf0 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 28  onnectionString(
18d00 70 61 69 72 2e 4b 65 79 2c 20 66 61 6c 73 65 29  pair.Key, false)
18d10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18d20 20 20 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74     SQLiteConvert
18d30 2e 56 61 6c 75 65 43 68 61 72 2c 0d 0a 20 20 20  .ValueChar,..   
18d40 20 20 20 20 20 20 20 20 20 20 20 20 20 45 73 63               Esc
18d50 61 70 65 46 6f 72 43 6f 6e 6e 65 63 74 69 6f 6e  apeForConnection
18d60 53 74 72 69 6e 67 28 70 61 69 72 2e 56 61 6c 75  String(pair.Valu
18d70 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
18d80 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
18d90 65 43 6f 6e 76 65 72 74 2e 50 61 69 72 43 68 61  eConvert.PairCha
18da0 72 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  r));..#else..   
18db0 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72           builder
18dc0 2e 41 70 70 65 6e 64 46 6f 72 6d 61 74 28 22 7b  .AppendFormat("{
18dd0 30 7d 7b 31 7d 7b 32 7d 7b 33 7d 22 2c 0d 0a 20  0}{1}{2}{3}",.. 
18de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45                 E
18df0 73 63 61 70 65 46 6f 72 43 6f 6e 6e 65 63 74 69  scapeForConnecti
18e00 6f 6e 53 74 72 69 6e 67 28 70 61 69 72 2e 4b 65  onString(pair.Ke
18e10 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
18e20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
18e30 74 65 43 6f 6e 76 65 72 74 2e 56 61 6c 75 65 43  teConvert.ValueC
18e40 68 61 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  har,..          
18e50 20 20 20 20 20 20 45 73 63 61 70 65 46 6f 72 43        EscapeForC
18e60 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 28  onnectionString(
18e70 70 61 69 72 2e 56 61 6c 75 65 2c 20 74 72 75 65  pair.Value, true
18e80 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
18e90 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 76 65 72      SQLiteConver
18ea0 74 2e 50 61 69 72 43 68 61 72 29 3b 0d 0a 23 65  t.PairChar);..#e
18eb0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
18ec0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
18ed0 6e 20 62 75 69 6c 64 65 72 2e 54 6f 53 74 72 69  n builder.ToStri
18ee0 6e 67 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 23 65  ng();..    }..#e
18ef0 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  ndif....    ////
18f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18f60 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
18f70 53 65 74 75 70 53 51 4c 69 74 65 42 61 73 65 28  SetupSQLiteBase(
18f80 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72 69 6e  SortedList<strin
18f90 67 2c 20 73 74 72 69 6e 67 3e 20 6f 70 74 73 29  g, string> opts)
18fa0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
18fb0 20 6f 62 6a 65 63 74 20 65 6e 75 6d 56 61 6c 75   object enumValu
18fc0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 65 6e  e;....        en
18fd0 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50 61 72  umValue = TryPar
18fe0 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20  seEnum(..       
18ff0 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69       typeof(SQLi
19000 74 65 44 61 74 65 46 6f 72 6d 61 74 73 29 2c 20  teDateFormats), 
19010 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 44  FindKey(opts, "D
19020 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 22 2c 0d  ateTimeFormat",.
19030 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66  .            Def
19040 61 75 6c 74 44 61 74 65 54 69 6d 65 46 6f 72 6d  aultDateTimeForm
19050 61 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 2c 20  at.ToString()), 
19060 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
19070 20 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d    SQLiteDateForm
19080 61 74 73 20 64 61 74 65 46 6f 72 6d 61 74 20 3d  ats dateFormat =
19090 20 28 65 6e 75 6d 56 61 6c 75 65 20 69 73 20 53   (enumValue is S
190a0 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
190b0 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
190c0 20 28 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d   (SQLiteDateForm
190d0 61 74 73 29 65 6e 75 6d 56 61 6c 75 65 20 3a 20  ats)enumValue : 
190e0 44 65 66 61 75 6c 74 44 61 74 65 54 69 6d 65 46  DefaultDateTimeF
190f0 6f 72 6d 61 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  ormat;....      
19100 20 20 65 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72    enumValue = Tr
19110 79 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20  yParseEnum(..   
19120 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
19130 44 61 74 65 54 69 6d 65 4b 69 6e 64 29 2c 20 46  DateTimeKind), F
19140 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 61  indKey(opts, "Da
19150 74 65 54 69 6d 65 4b 69 6e 64 22 2c 0d 0a 20 20  teTimeKind",..  
19160 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
19170 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 54 6f  tDateTimeKind.To
19180 53 74 72 69 6e 67 28 29 29 2c 20 74 72 75 65 29  String()), true)
19190 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 44 61 74  ;....        Dat
191a0 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 20 3d  eTimeKind kind =
191b0 20 28 65 6e 75 6d 56 61 6c 75 65 20 69 73 20 44   (enumValue is D
191c0 61 74 65 54 69 6d 65 4b 69 6e 64 29 20 3f 0d 0a  ateTimeKind) ?..
191d0 20 20 20 20 20 20 20 20 20 20 20 20 28 44 61 74              (Dat
191e0 65 54 69 6d 65 4b 69 6e 64 29 65 6e 75 6d 56 61  eTimeKind)enumVa
191f0 6c 75 65 20 3a 20 44 65 66 61 75 6c 74 44 61 74  lue : DefaultDat
19200 65 54 69 6d 65 4b 69 6e 64 3b 0d 0a 0d 0a 20 20  eTimeKind;....  
19210 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 61 74        string dat
19220 65 54 69 6d 65 46 6f 72 6d 61 74 20 3d 20 46 69  eTimeFormat = Fi
19230 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 61 74  ndKey(opts, "Dat
19240 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e  eTimeFormatStrin
19250 67 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g",..           
19260 20 44 65 66 61 75 6c 74 44 61 74 65 54 69 6d 65   DefaultDateTime
19270 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a  FormatString);..
19280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
19290 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
192a0 51 4c 69 74 65 20 61 75 74 6f 6d 61 74 69 63 61  QLite automatica
192b0 6c 6c 79 20 73 65 74 73 20 74 68 65 20 65 6e 63  lly sets the enc
192c0 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 64 61 74  oding of the dat
192d0 61 62 61 73 65 0d 0a 20 20 20 20 20 20 20 20 2f  abase..        /
192e0 2f 20 20 20 20 20 20 20 74 6f 20 55 54 46 31 36  /       to UTF16
192f0 20 69 66 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20   if called from 
19300 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
19310 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  ...        //.. 
19320 20 20 20 20 20 20 20 69 66 20 28 53 51 4c 69 74         if (SQLit
19330 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65  eConvert.ToBoole
19340 61 6e 28 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c  an(FindKey(opts,
19350 20 22 55 73 65 55 54 46 31 36 45 6e 63 6f 64 69   "UseUTF16Encodi
19360 6e 67 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ng",..          
19370 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 55          DefaultU
19380 73 65 55 54 46 31 36 45 6e 63 6f 64 69 6e 67 2e  seUTF16Encoding.
19390 54 6f 53 74 72 69 6e 67 28 29 29 29 29 0d 0a 20  ToString()))).. 
193a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
193b0 20 20 20 20 20 20 5f 73 71 6c 20 3d 20 6e 65 77        _sql = new
193c0 20 53 51 4c 69 74 65 33 5f 55 54 46 31 36 28 0d   SQLite3_UTF16(.
193d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
193e0 20 64 61 74 65 46 6f 72 6d 61 74 2c 20 6b 69 6e   dateFormat, kin
193f0 64 2c 20 64 61 74 65 54 69 6d 65 46 6f 72 6d 61  d, dateTimeForma
19400 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  t, IntPtr.Zero, 
19410 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20  null,..         
19420 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0d 0a         false);..
19430 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19440 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
19450 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19460 5f 73 71 6c 20 3d 20 6e 65 77 20 53 51 4c 69 74  _sql = new SQLit
19470 65 33 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e3(..           
19480 20 20 20 20 20 64 61 74 65 46 6f 72 6d 61 74 2c       dateFormat,
19490 20 6b 69 6e 64 2c 20 64 61 74 65 54 69 6d 65 46   kind, dateTimeF
194a0 6f 72 6d 61 74 2c 20 49 6e 74 50 74 72 2e 5a 65  ormat, IntPtr.Ze
194b0 72 6f 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20  ro, null,..     
194c0 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
194d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
194e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19550 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70     #region IDisp
19560 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  osable Members..
19570 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
19580 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f  >..    /// Dispo
19590 73 65 73 20 61 6e 64 20 66 69 6e 61 6c 69 7a 65  ses and finalize
195a0 73 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  s the connection
195b0 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e  , if applicable.
195c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
195d0 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
195e0 20 6e 65 77 20 76 6f 69 64 20 44 69 73 70 6f 73   new void Dispos
195f0 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
19600 20 20 20 20 69 66 20 28 5f 6e 6f 44 69 73 70 6f      if (_noDispo
19610 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se)..           
19620 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
19630 20 20 20 20 62 61 73 65 2e 44 69 73 70 6f 73 65      base.Dispose
19640 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ();..    }..    
19650 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
19660 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196c0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
196d0 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61   IDisposable "Pa
196e0 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a  ttern" Members..
196f0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
19700 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
19710 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
19720 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20  ckDisposed() /* 
19730 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 7b 0d  throw */..    {.
19740 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49  .#if THROW_ON_DI
19750 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20  SPOSED..        
19760 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
19770 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
19780 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
19790 73 65 64 45 78 63 65 70 74 69 6f 6e 28 74 79 70  sedException(typ
197a0 65 6f 66 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  eof(SQLiteConnec
197b0 74 69 6f 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 23 65  tion).Name);..#e
197c0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ndif..    }.... 
197d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
197e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
197f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19830 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
19840 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
19850 20 43 6c 65 61 6e 73 20 75 70 20 72 65 73 6f 75   Cleans up resou
19860 72 63 65 73 20 28 6e 61 74 69 76 65 20 61 6e 64  rces (native and
19870 20 6d 61 6e 61 67 65 64 29 20 61 73 73 6f 63 69   managed) associ
19880 61 74 65 64 20 77 69 74 68 20 74 68 65 20 63 75  ated with the cu
19890 72 72 65 6e 74 20 69 6e 73 74 61 6e 63 65 2e 0d  rrent instance..
198a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
198b0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
198c0 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73  ram name="dispos
198d0 69 6e 67 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5a  ing">..    /// Z
198e0 65 72 6f 20 77 68 65 6e 20 62 65 69 6e 67 20 64  ero when being d
198f0 69 73 70 6f 73 65 64 20 76 69 61 20 67 61 72 62  isposed via garb
19900 61 67 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 3b 20  age collection; 
19910 6f 74 68 65 72 77 69 73 65 2c 20 6e 6f 6e 2d 7a  otherwise, non-z
19920 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ero...    /// </
19930 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 6f 74  param>..    prot
19940 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 76  ected override v
19950 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
19960 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
19970 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d   {..#if !NET_COM
19980 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
19990 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
199a0 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68    if (HelperMeth
199b0 6f 64 73 2e 48 61 73 46 6c 61 67 73 28 5f 66 6c  ods.HasFlags(_fl
199c0 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ags, SQLiteConne
199d0 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65  ctionFlags.Trace
199e0 57 61 72 6e 69 6e 67 29 29 0d 0a 20 20 20 20 20  Warning))..     
199f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19a00 20 20 69 66 20 28 5f 6e 6f 44 69 73 70 6f 73 65    if (_noDispose
19a10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
19a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19a30 20 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73    System.Diagnos
19a40 74 69 63 73 2e 54 72 61 63 65 2e 57 72 69 74 65  tics.Trace.Write
19a50 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f  Line(HelperMetho
19a60 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
19a70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19a80 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
19a90 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
19aa0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19ab0 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a         "WARNING:
19ac0 20 44 69 73 70 6f 73 69 6e 67 20 6f 66 20 63 6f   Disposing of co
19ad0 6e 6e 65 63 74 69 6f 6e 20 5c 22 7b 30 7d 5c 22  nnection \"{0}\"
19ae0 20 77 69 74 68 20 74 68 65 20 6e 6f 2d 64 69 73   with the no-dis
19af0 70 6f 73 65 20 66 6c 61 67 20 73 65 74 2e 22 2c  pose flag set.",
19b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19b10 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f        _connectio
19b20 6e 53 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20  nString));..    
19b30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
19b40 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
19b50 20 20 20 20 20 20 20 20 5f 64 69 73 70 6f 73 69          _disposi
19b60 6e 67 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  ng = true;....  
19b70 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
19b80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19b90 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
19ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
19bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19bc0 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67   //if (disposing
19bd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
19be0 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20     //{..        
19bf0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
19c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
19c30 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73      //    // dis
19c40 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
19c50 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
19c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c70 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
19ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d              //}.
19cb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
19cc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
19cf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
19d00 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
19d10 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
19d20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
19d30 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19d60 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6c 6f               Clo
19d70 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
19d80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
19d90 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79  .        finally
19da0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
19db0 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 44 69           base.Di
19dc0 73 70 6f 73 65 28 64 69 73 70 6f 73 69 6e 67 29  spose(disposing)
19dd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
19de0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
19df0 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79 74   // NOTE: Everyt
19e00 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 66  hing should be f
19e10 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20 61 74  ully disposed at
19e20 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20   this point...  
19e30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
19e40 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
19e50 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
19e60 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20      }..    }..  
19e70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
19e80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ee0 2f 2f 2f 0d 0a 0d 0a 23 69 66 20 50 4c 41 54 46  ///....#if PLATF
19ef0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
19f00 57 4f 52 4b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  WORK..    /// <s
19f10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
19f20 20 4f 62 73 6f 6c 65 74 65 0d 0a 20 20 20 20 2f   Obsolete..    /
19f30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
19f40 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
19f50 64 65 20 69 6e 74 20 43 6f 6e 6e 65 63 74 69 6f  de int Connectio
19f60 6e 54 69 6d 65 6f 75 74 0d 0a 20 20 20 20 7b 0d  nTimeout..    {.
19f70 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20  .      get..    
19f80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
19f90 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
19fa0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 65         return De
19fb0 66 61 75 6c 74 43 6f 6e 6e 65 63 74 69 6f 6e 54  faultConnectionT
19fc0 69 6d 65 6f 75 74 3b 0d 0a 20 20 20 20 20 20 7d  imeout;..      }
19fd0 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d  ..    }..#endif.
19fe0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
19ff0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72  ary>..    /// Cr
1a000 65 61 74 65 73 20 61 20 63 6c 6f 6e 65 20 6f 66  eates a clone of
1a010 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
1a020 20 20 41 6c 6c 20 61 74 74 61 63 68 65 64 20 64    All attached d
1a030 61 74 61 62 61 73 65 73 20 61 6e 64 20 75 73 65  atabases and use
1a040 72 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  r-defined functi
1a050 6f 6e 73 20 61 72 65 20 63 6c 6f 6e 65 64 2e 20  ons are cloned. 
1a060 20 49 66 20 74 68 65 20 65 78 69 73 74 69 6e 67   If the existing
1a070 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f   connection is o
1a080 70 65 6e 2c 20 74 68 65 20 63 6c 6f 6e 65 64 20  pen, the cloned 
1a090 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20  connection..    
1a0a0 2f 2f 2f 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65  /// will also be
1a0b0 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f   opened...    //
1a0c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1a0d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c    /// <returns><
1a0e0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
1a0f0 75 62 6c 69 63 20 6f 62 6a 65 63 74 20 43 6c 6f  ublic object Clo
1a100 6e 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ne()..    {..   
1a110 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
1a120 28 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ();..      retur
1a130 6e 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e  n new SQLiteConn
1a140 65 63 74 69 6f 6e 28 74 68 69 73 29 3b 0d 0a 20  ection(this);.. 
1a150 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
1a160 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1a170 2f 2f 20 43 72 65 61 74 65 73 20 61 20 64 61 74  // Creates a dat
1a180 61 62 61 73 65 20 66 69 6c 65 2e 20 20 54 68 69  abase file.  Thi
1a190 73 20 6a 75 73 74 20 63 72 65 61 74 65 73 20 61  s just creates a
1a1a0 20 7a 65 72 6f 2d 62 79 74 65 20 66 69 6c 65 20   zero-byte file 
1a1b0 77 68 69 63 68 20 53 51 4c 69 74 65 0d 0a 20 20  which SQLite..  
1a1c0 20 20 2f 2f 2f 20 77 69 6c 6c 20 74 75 72 6e 20    /// will turn 
1a1d0 69 6e 74 6f 20 61 20 64 61 74 61 62 61 73 65 20  into a database 
1a1e0 77 68 65 6e 20 74 68 65 20 66 69 6c 65 20 69 73  when the file is
1a1f0 20 6f 70 65 6e 65 64 20 70 72 6f 70 65 72 6c 79   opened properly
1a200 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1a210 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
1a220 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 61  param name="data
1a230 62 61 73 65 46 69 6c 65 4e 61 6d 65 22 3e 54 68  baseFileName">Th
1a240 65 20 66 69 6c 65 20 74 6f 20 63 72 65 61 74 65  e file to create
1a250 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 73 74  </param>..    st
1a260 61 74 69 63 20 70 75 62 6c 69 63 20 76 6f 69 64  atic public void
1a270 20 43 72 65 61 74 65 46 69 6c 65 28 73 74 72 69   CreateFile(stri
1a280 6e 67 20 64 61 74 61 62 61 73 65 46 69 6c 65 4e  ng databaseFileN
1a290 61 6d 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ame)..    {..   
1a2a0 20 20 20 46 69 6c 65 53 74 72 65 61 6d 20 66 73     FileStream fs
1a2b0 20 3d 20 46 69 6c 65 2e 43 72 65 61 74 65 28 64   = File.Create(d
1a2c0 61 74 61 62 61 73 65 46 69 6c 65 4e 61 6d 65 29  atabaseFileName)
1a2d0 3b 0d 0a 20 20 20 20 20 20 66 73 2e 43 6c 6f 73  ;..      fs.Clos
1a2e0 65 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  e();..    }.... 
1a2f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1a300 0d 0a 20 20 20 20 2f 2f 2f 20 52 61 69 73 65 73  ..    /// Raises
1a310 20 74 68 65 20 73 74 61 74 65 20 63 68 61 6e 67   the state chang
1a320 65 20 65 76 65 6e 74 20 77 68 65 6e 20 74 68 65  e event when the
1a330 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 63 6f   state of the co
1a340 6e 6e 65 63 74 69 6f 6e 20 63 68 61 6e 67 65 73  nnection changes
1a350 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1a360 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1a370 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 65 77 53 74  aram name="newSt
1a380 61 74 65 22 3e 54 68 65 20 6e 65 77 20 63 6f 6e  ate">The new con
1a390 6e 65 63 74 69 6f 6e 20 73 74 61 74 65 2e 20 20  nection state.  
1a3a0 49 66 20 74 68 69 73 20 69 73 20 64 69 66 66 65  If this is diffe
1a3b0 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f 20 66 72  rent..    /// fr
1a3c0 6f 6d 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  om the previous 
1a3d0 73 74 61 74 65 2c 20 74 68 65 20 3c 73 65 65 20  state, the <see 
1a3e0 63 72 65 66 3d 22 53 74 61 74 65 43 68 61 6e 67  cref="StateChang
1a3f0 65 22 20 2f 3e 20 65 76 65 6e 74 20 69 73 0d 0a  e" /> event is..
1a400 20 20 20 20 2f 2f 2f 20 72 61 69 73 65 64 2e 3c      /// raised.<
1a410 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
1a420 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 76   <param name="ev
1a430 65 6e 74 41 72 67 73 22 3e 54 68 65 20 65 76 65  entArgs">The eve
1a440 6e 74 20 64 61 74 61 20 63 72 65 61 74 65 64 20  nt data created 
1a450 66 6f 72 20 74 68 65 20 72 61 69 73 65 64 20 65  for the raised e
1a460 76 65 6e 74 2c 20 69 66 0d 0a 20 20 20 20 2f 2f  vent, if..    //
1a470 2f 20 69 74 20 77 61 73 20 61 63 74 75 61 6c 6c  / it was actuall
1a480 79 20 72 61 69 73 65 64 2e 3c 2f 70 61 72 61 6d  y raised.</param
1a490 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
1a4a0 76 6f 69 64 20 4f 6e 53 74 61 74 65 43 68 61 6e  void OnStateChan
1a4b0 67 65 28 0d 0a 20 20 20 20 20 20 20 20 43 6f 6e  ge(..        Con
1a4c0 6e 65 63 74 69 6f 6e 53 74 61 74 65 20 6e 65 77  nectionState new
1a4d0 53 74 61 74 65 2c 0d 0a 20 20 20 20 20 20 20 20  State,..        
1a4e0 72 65 66 20 53 74 61 74 65 43 68 61 6e 67 65 45  ref StateChangeE
1a4f0 76 65 6e 74 41 72 67 73 20 65 76 65 6e 74 41 72  ventArgs eventAr
1a500 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  gs..        ).. 
1a510 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 6f     {..        Co
1a520 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 20 6f 6c  nnectionState ol
1a530 64 53 74 61 74 65 20 3d 20 5f 63 6f 6e 6e 65 63  dState = _connec
1a540 74 69 6f 6e 53 74 61 74 65 3b 0d 0a 0d 0a 20 20  tionState;....  
1a550 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69 6f        _connectio
1a560 6e 53 74 61 74 65 20 3d 20 6e 65 77 53 74 61 74  nState = newStat
1a570 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  e;....        if
1a580 20 28 28 53 74 61 74 65 43 68 61 6e 67 65 20 21   ((StateChange !
1a590 3d 20 6e 75 6c 6c 29 20 26 26 20 28 6e 65 77 53  = null) && (newS
1a5a0 74 61 74 65 20 21 3d 20 6f 6c 64 53 74 61 74 65  tate != oldState
1a5b0 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
1a5c0 20 20 20 20 20 20 20 20 20 20 20 53 74 61 74 65             State
1a5d0 43 68 61 6e 67 65 45 76 65 6e 74 41 72 67 73 20  ChangeEventArgs 
1a5e0 6c 6f 63 61 6c 45 76 65 6e 74 41 72 67 73 20 3d  localEventArgs =
1a5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a600 20 20 6e 65 77 20 53 74 61 74 65 43 68 61 6e 67    new StateChang
1a610 65 45 76 65 6e 74 41 72 67 73 28 6f 6c 64 53 74  eEventArgs(oldSt
1a620 61 74 65 2c 20 6e 65 77 53 74 61 74 65 29 3b 0d  ate, newState);.
1a630 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
1a640 74 61 74 65 43 68 61 6e 67 65 28 74 68 69 73 2c  tateChange(this,
1a650 20 6c 6f 63 61 6c 45 76 65 6e 74 41 72 67 73 29   localEventArgs)
1a660 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1a670 20 65 76 65 6e 74 41 72 67 73 20 3d 20 6c 6f 63   eventArgs = loc
1a680 61 6c 45 76 65 6e 74 41 72 67 73 3b 0d 0a 20 20  alEventArgs;..  
1a690 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
1a6a0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1a6b0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
1a6c0 65 72 6d 69 6e 65 73 20 61 6e 64 20 72 65 74 75  ermines and retu
1a6d0 72 6e 73 20 74 68 65 20 66 61 6c 6c 62 61 63 6b  rns the fallback
1a6e0 20 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69   default isolati
1a6f0 6f 6e 20 6c 65 76 65 6c 20 77 68 65 6e 20 6f 6e  on level when on
1a700 65 20 63 61 6e 6e 6f 74 20 62 65 0d 0a 20 20 20  e cannot be..   
1a710 20 2f 2f 2f 20 6f 62 74 61 69 6e 65 64 20 66 72   /// obtained fr
1a720 6f 6d 20 61 6e 20 65 78 69 73 74 69 6e 67 20 63  om an existing c
1a730 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e  onnection instan
1a740 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ce...    /// </s
1a750 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1a760 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1a770 2f 2f 2f 20 54 68 65 20 66 61 6c 6c 62 61 63 6b  /// The fallback
1a780 20 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69   default isolati
1a790 6f 6e 20 6c 65 76 65 6c 20 66 6f 72 20 74 68 69  on level for thi
1a7a0 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 73  s connection ins
1a7b0 74 61 6e 63 65 20 2d 4f 52 2d 0d 0a 20 20 20 20  tance -OR-..    
1a7c0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1a7d0 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 2e 55 6e  solationLevel.Un
1a7e0 73 70 65 63 69 66 69 65 64 22 20 2f 3e 20 69 66  specified" /> if
1a7f0 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
1a800 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f  termined...    /
1a810 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1a820 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1a830 63 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  c IsolationLevel
1a840 20 47 65 74 46 61 6c 6c 62 61 63 6b 44 65 66 61   GetFallbackDefa
1a850 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65  ultIsolationLeve
1a860 6c 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  l()..    {..    
1a870 20 20 20 20 72 65 74 75 72 6e 20 44 65 66 61 75      return Defau
1a880 6c 74 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  ltIsolationLevel
1a890 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1a8a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1a8b0 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
1a8c0 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
1a8d0 65 20 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74  e default isolat
1a8e0 69 6f 6e 20 6c 65 76 65 6c 20 66 6f 72 20 74 68  ion level for th
1a8f0 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e  is connection in
1a900 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
1a910 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1a920 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1a930 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
1a940 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65  ult isolation le
1a950 76 65 6c 20 66 6f 72 20 74 68 69 73 20 63 6f 6e  vel for this con
1a960 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65  nection instance
1a970 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 3c   -OR-..    /// <
1a980 73 65 65 20 63 72 65 66 3d 22 49 73 6f 6c 61 74  see cref="Isolat
1a990 69 6f 6e 4c 65 76 65 6c 2e 55 6e 73 70 65 63 69  ionLevel.Unspeci
1a9a0 66 69 65 64 22 20 2f 3e 20 69 66 20 69 74 20 63  fied" /> if it c
1a9b0 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
1a9c0 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ned...    /// </
1a9d0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
1a9e0 74 65 72 6e 61 6c 20 49 73 6f 6c 61 74 69 6f 6e  ternal Isolation
1a9f0 4c 65 76 65 6c 20 47 65 74 44 65 66 61 75 6c 74  Level GetDefault
1aa00 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 29  IsolationLevel()
1aa10 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1aa20 20 72 65 74 75 72 6e 20 5f 64 65 66 61 75 6c 74   return _default
1aa30 49 73 6f 6c 61 74 69 6f 6e 3b 0d 0a 20 20 20 20  Isolation;..    
1aa40 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
1aa50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1aa60 4f 42 53 4f 4c 45 54 45 2e 20 20 43 72 65 61 74  OBSOLETE.  Creat
1aa70 65 73 20 61 20 6e 65 77 20 53 51 4c 69 74 65 54  es a new SQLiteT
1aa80 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 20 6f 6e  ransaction if on
1aa90 65 20 69 73 6e 27 74 20 61 6c 72 65 61 64 79 20  e isn't already 
1aaa0 61 63 74 69 76 65 20 6f 6e 20 74 68 65 20 63 6f  active on the co
1aab0 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f  nnection...    /
1aac0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1aad0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1aae0 6d 65 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c 65 76  me="isolationLev
1aaf0 65 6c 22 3e 54 68 69 73 20 70 61 72 61 6d 65 74  el">This paramet
1ab00 65 72 20 69 73 20 69 67 6e 6f 72 65 64 2e 3c 2f  er is ignored.</
1ab10 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1ab20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66  <param name="def
1ab30 65 72 72 65 64 4c 6f 63 6b 22 3e 57 68 65 6e 20  erredLock">When 
1ab40 54 52 55 45 2c 20 53 51 4c 69 74 65 20 64 65 66  TRUE, SQLite def
1ab50 65 72 73 20 6f 62 74 61 69 6e 69 6e 67 20 61 20  ers obtaining a 
1ab60 77 72 69 74 65 20 6c 6f 63 6b 20 75 6e 74 69 6c  write lock until
1ab70 20 61 20 77 72 69 74 65 20 6f 70 65 72 61 74 69   a write operati
1ab80 6f 6e 20 69 73 20 72 65 71 75 65 73 74 65 64 2e  on is requested.
1ab90 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 46  ..    /// When F
1aba0 41 4c 53 45 2c 20 61 20 77 72 69 74 65 6c 6f 63  ALSE, a writeloc
1abb0 6b 20 69 73 20 6f 62 74 61 69 6e 65 64 20 69 6d  k is obtained im
1abc0 6d 65 64 69 61 74 65 6c 79 2e 20 20 54 68 65 20  mediately.  The 
1abd0 64 65 66 61 75 6c 74 20 69 73 20 54 52 55 45 2c  default is TRUE,
1abe0 20 62 75 74 20 69 6e 20 61 20 6d 75 6c 74 69 2d   but in a multi-
1abf0 74 68 72 65 61 64 65 64 20 6d 75 6c 74 69 2d 77  threaded multi-w
1ac00 72 69 74 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 65  riter..    /// e
1ac10 6e 76 69 72 6f 6e 6d 65 6e 74 2c 20 6f 6e 65 20  nvironment, one 
1ac20 6d 61 79 20 69 6e 73 74 65 61 64 20 63 68 6f 6f  may instead choo
1ac30 73 65 20 74 6f 20 6c 6f 63 6b 20 74 68 65 20 64  se to lock the d
1ac40 61 74 61 62 61 73 65 20 69 6d 6d 65 64 69 61 74  atabase immediat
1ac50 65 6c 79 20 74 6f 20 61 76 6f 69 64 20 61 6e 79  ely to avoid any
1ac60 20 70 6f 73 73 69 62 6c 65 20 77 72 69 74 65 72   possible writer
1ac70 20 64 65 61 64 6c 6f 63 6b 2e 3c 2f 70 61 72 61   deadlock.</para
1ac80 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
1ac90 75 72 6e 73 3e 52 65 74 75 72 6e 73 20 61 20 53  urns>Returns a S
1aca0 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e  QLiteTransaction
1acb0 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e   object.</return
1acc0 73 3e 0d 0a 20 20 20 20 5b 4f 62 73 6f 6c 65 74  s>..    [Obsolet
1acd0 65 28 22 55 73 65 20 6f 6e 65 20 6f 66 20 74 68  e("Use one of th
1ace0 65 20 73 74 61 6e 64 61 72 64 20 42 65 67 69 6e  e standard Begin
1acf0 54 72 61 6e 73 61 63 74 69 6f 6e 20 6d 65 74 68  Transaction meth
1ad00 6f 64 73 2c 20 74 68 69 73 20 6f 6e 65 20 77 69  ods, this one wi
1ad10 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20 73 6f  ll be removed so
1ad20 6f 6e 22 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  on")]..    publi
1ad30 63 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74  c SQLiteTransact
1ad40 69 6f 6e 20 42 65 67 69 6e 54 72 61 6e 73 61 63  ion BeginTransac
1ad50 74 69 6f 6e 28 49 73 6f 6c 61 74 69 6f 6e 4c 65  tion(IsolationLe
1ad60 76 65 6c 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76  vel isolationLev
1ad70 65 6c 2c 20 62 6f 6f 6c 20 64 65 66 65 72 72 65  el, bool deferre
1ad80 64 4c 6f 63 6b 29 0d 0a 20 20 20 20 7b 0d 0a 20  dLock)..    {.. 
1ad90 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
1ada0 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 72 65 74  ed();..      ret
1adb0 75 72 6e 20 28 53 51 4c 69 74 65 54 72 61 6e 73  urn (SQLiteTrans
1adc0 61 63 74 69 6f 6e 29 42 65 67 69 6e 44 62 54 72  action)BeginDbTr
1add0 61 6e 73 61 63 74 69 6f 6e 28 64 65 66 65 72 72  ansaction(deferr
1ade0 65 64 4c 6f 63 6b 20 3d 3d 20 66 61 6c 73 65 20  edLock == false 
1adf0 3f 20 49 6d 6d 65 64 69 61 74 65 49 73 6f 6c 61  ? ImmediateIsola
1ae00 74 69 6f 6e 4c 65 76 65 6c 20 3a 20 44 65 66 65  tionLevel : Defe
1ae10 72 72 65 64 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  rredIsolationLev
1ae20 65 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  el);..    }.... 
1ae30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1ae40 0d 0a 20 20 20 20 2f 2f 2f 20 4f 42 53 4f 4c 45  ..    /// OBSOLE
1ae50 54 45 2e 20 20 43 72 65 61 74 65 73 20 61 20 6e  TE.  Creates a n
1ae60 65 77 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63  ew SQLiteTransac
1ae70 74 69 6f 6e 20 69 66 20 6f 6e 65 20 69 73 6e 27  tion if one isn'
1ae80 74 20 61 6c 72 65 61 64 79 20 61 63 74 69 76 65  t already active
1ae90 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
1aea0 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  on...    /// </s
1aeb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1aec0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
1aed0 66 65 72 72 65 64 4c 6f 63 6b 22 3e 57 68 65 6e  ferredLock">When
1aee0 20 54 52 55 45 2c 20 53 51 4c 69 74 65 20 64 65   TRUE, SQLite de
1aef0 66 65 72 73 20 6f 62 74 61 69 6e 69 6e 67 20 61  fers obtaining a
1af00 20 77 72 69 74 65 20 6c 6f 63 6b 20 75 6e 74 69   write lock unti
1af10 6c 20 61 20 77 72 69 74 65 20 6f 70 65 72 61 74  l a write operat
1af20 69 6f 6e 20 69 73 20 72 65 71 75 65 73 74 65 64  ion is requested
1af30 2e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  ...    /// When 
1af40 46 41 4c 53 45 2c 20 61 20 77 72 69 74 65 6c 6f  FALSE, a writelo
1af50 63 6b 20 69 73 20 6f 62 74 61 69 6e 65 64 20 69  ck is obtained i
1af60 6d 6d 65 64 69 61 74 65 6c 79 2e 20 20 54 68 65  mmediately.  The
1af70 20 64 65 66 61 75 6c 74 20 69 73 20 66 61 6c 73   default is fals
1af80 65 2c 20 62 75 74 20 69 6e 20 61 20 6d 75 6c 74  e, but in a mult
1af90 69 2d 74 68 72 65 61 64 65 64 20 6d 75 6c 74 69  i-threaded multi
1afa0 2d 77 72 69 74 65 72 0d 0a 20 20 20 20 2f 2f 2f  -writer..    ///
1afb0 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2c 20 6f 6e   environment, on
1afc0 65 20 6d 61 79 20 69 6e 73 74 65 61 64 20 63 68  e may instead ch
1afd0 6f 6f 73 65 20 74 6f 20 6c 6f 63 6b 20 74 68 65  oose to lock the
1afe0 20 64 61 74 61 62 61 73 65 20 69 6d 6d 65 64 69   database immedi
1aff0 61 74 65 6c 79 20 74 6f 20 61 76 6f 69 64 20 61  ately to avoid a
1b000 6e 79 20 70 6f 73 73 69 62 6c 65 20 77 72 69 74  ny possible writ
1b010 65 72 20 64 65 61 64 6c 6f 63 6b 2e 3c 2f 70 61  er deadlock.</pa
1b020 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1b030 65 74 75 72 6e 73 3e 52 65 74 75 72 6e 73 20 61  eturns>Returns a
1b040 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69   SQLiteTransacti
1b050 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74 75  on object.</retu
1b060 72 6e 73 3e 0d 0a 20 20 20 20 5b 4f 62 73 6f 6c  rns>..    [Obsol
1b070 65 74 65 28 22 55 73 65 20 6f 6e 65 20 6f 66 20  ete("Use one of 
1b080 74 68 65 20 73 74 61 6e 64 61 72 64 20 42 65 67  the standard Beg
1b090 69 6e 54 72 61 6e 73 61 63 74 69 6f 6e 20 6d 65  inTransaction me
1b0a0 74 68 6f 64 73 2c 20 74 68 69 73 20 6f 6e 65 20  thods, this one 
1b0b0 77 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65 64 20  will be removed 
1b0c0 73 6f 6f 6e 22 29 5d 0d 0a 20 20 20 20 70 75 62  soon")]..    pub
1b0d0 6c 69 63 20 53 51 4c 69 74 65 54 72 61 6e 73 61  lic SQLiteTransa
1b0e0 63 74 69 6f 6e 20 42 65 67 69 6e 54 72 61 6e 73  ction BeginTrans
1b0f0 61 63 74 69 6f 6e 28 62 6f 6f 6c 20 64 65 66 65  action(bool defe
1b100 72 72 65 64 4c 6f 63 6b 29 0d 0a 20 20 20 20 7b  rredLock)..    {
1b110 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69 73  ..      CheckDis
1b120 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
1b130 72 65 74 75 72 6e 20 28 53 51 4c 69 74 65 54 72  return (SQLiteTr
1b140 61 6e 73 61 63 74 69 6f 6e 29 42 65 67 69 6e 44  ansaction)BeginD
1b150 62 54 72 61 6e 73 61 63 74 69 6f 6e 28 64 65 66  bTransaction(def
1b160 65 72 72 65 64 4c 6f 63 6b 20 3d 3d 20 66 61 6c  erredLock == fal
1b170 73 65 20 3f 20 49 6d 6d 65 64 69 61 74 65 49 73  se ? ImmediateIs
1b180 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 3a 20 44  olationLevel : D
1b190 65 66 65 72 72 65 64 49 73 6f 6c 61 74 69 6f 6e  eferredIsolation
1b1a0 4c 65 76 65 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a  Level);..    }..
1b1b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1b1c0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65  ry>..    /// Cre
1b1d0 61 74 65 73 20 61 20 6e 65 77 20 3c 73 65 65 20  ates a new <see 
1b1e0 63 72 65 66 3d 22 53 51 4c 69 74 65 54 72 61 6e  cref="SQLiteTran
1b1f0 73 61 63 74 69 6f 6e 22 20 2f 3e 20 69 66 20 6f  saction" /> if o
1b200 6e 65 20 69 73 6e 27 74 20 61 6c 72 65 61 64 79  ne isn't already
1b210 20 61 63 74 69 76 65 20 6f 6e 20 74 68 65 20 63   active on the c
1b220 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
1b230 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1b240 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1b250 61 6d 65 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c 65  ame="isolationLe
1b260 76 65 6c 22 3e 53 75 70 70 6f 72 74 65 64 20 69  vel">Supported i
1b270 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73 20  solation levels 
1b280 61 72 65 20 53 65 72 69 61 6c 69 7a 61 62 6c 65  are Serializable
1b290 2c 20 52 65 61 64 43 6f 6d 6d 69 74 74 65 64 20  , ReadCommitted 
1b2a0 61 6e 64 20 55 6e 73 70 65 63 69 66 69 65 64 2e  and Unspecified.
1b2b0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1b2c0 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20  / <remarks>..   
1b2d0 20 2f 2f 2f 20 55 6e 73 70 65 63 69 66 69 65 64   /// Unspecified
1b2e0 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 64 65   will use the de
1b2f0 66 61 75 6c 74 20 69 73 6f 6c 61 74 69 6f 6e 20  fault isolation 
1b300 6c 65 76 65 6c 20 73 70 65 63 69 66 69 65 64 20  level specified 
1b310 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  in the connectio
1b320 6e 20 73 74 72 69 6e 67 2e 20 20 49 66 20 6e 6f  n string.  If no
1b330 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c   isolation level
1b340 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 6e   is specified in
1b350 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f   the..    /// co
1b360 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2c  nnection string,
1b370 20 53 65 72 69 61 6c 69 7a 61 62 6c 65 20 69 73   Serializable is
1b380 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20   used...    /// 
1b390 53 65 72 69 61 6c 69 7a 61 62 6c 65 20 74 72 61  Serializable tra
1b3a0 6e 73 61 63 74 69 6f 6e 73 20 61 72 65 20 74 68  nsactions are th
1b3b0 65 20 64 65 66 61 75 6c 74 2e 20 20 49 6e 20 74  e default.  In t
1b3c0 68 69 73 20 6d 6f 64 65 2c 20 74 68 65 20 65 6e  his mode, the en
1b3d0 67 69 6e 65 20 67 65 74 73 20 61 6e 20 69 6d 6d  gine gets an imm
1b3e0 65 64 69 61 74 65 20 6c 6f 63 6b 20 6f 6e 20 74  ediate lock on t
1b3f0 68 65 20 64 61 74 61 62 61 73 65 2c 20 61 6e 64  he database, and
1b400 20 6e 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64   no other thread
1b410 73 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61 79 20 62  s..    /// may b
1b420 65 67 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69  egin a transacti
1b430 6f 6e 2e 20 20 4f 74 68 65 72 20 74 68 72 65 61  on.  Other threa
1b440 64 73 20 6d 61 79 20 72 65 61 64 20 66 72 6f 6d  ds may read from
1b450 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 62   the database, b
1b460 75 74 20 6e 6f 74 20 77 72 69 74 65 2e 0d 0a 20  ut not write... 
1b470 20 20 20 2f 2f 2f 20 57 69 74 68 20 61 20 52 65     /// With a Re
1b480 61 64 43 6f 6d 6d 69 74 74 65 64 20 69 73 6f 6c  adCommitted isol
1b490 61 74 69 6f 6e 20 6c 65 76 65 6c 2c 20 6c 6f 63  ation level, loc
1b4a0 6b 73 20 61 72 65 20 64 65 66 65 72 72 65 64 20  ks are deferred 
1b4b0 61 6e 64 20 65 6c 65 76 61 74 65 64 20 61 73 20  and elevated as 
1b4c0 6e 65 65 64 65 64 2e 20 20 49 74 20 69 73 20 70  needed.  It is p
1b4d0 6f 73 73 69 62 6c 65 20 66 6f 72 20 6d 75 6c 74  ossible for mult
1b4e0 69 70 6c 65 20 74 68 72 65 61 64 73 20 74 6f 20  iple threads to 
1b4f0 73 74 61 72 74 0d 0a 20 20 20 20 2f 2f 2f 20 61  start..    /// a
1b500 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 20   transaction in 
1b510 52 65 61 64 43 6f 6d 6d 69 74 74 65 64 20 6d 6f  ReadCommitted mo
1b520 64 65 2c 20 62 75 74 20 69 66 20 61 20 74 68 72  de, but if a thr
1b530 65 61 64 20 61 74 74 65 6d 70 74 73 20 74 6f 20  ead attempts to 
1b540 63 6f 6d 6d 69 74 20 61 20 74 72 61 6e 73 61 63  commit a transac
1b550 74 69 6f 6e 20 77 68 69 6c 65 20 61 6e 6f 74 68  tion while anoth
1b560 65 72 20 74 68 72 65 61 64 0d 0a 20 20 20 20 2f  er thread..    /
1b570 2f 2f 20 68 61 73 20 61 20 52 65 61 64 43 6f 6d  // has a ReadCom
1b580 6d 69 74 74 65 64 20 6c 6f 63 6b 2c 20 69 74 20  mitted lock, it 
1b590 6d 61 79 20 74 69 6d 65 6f 75 74 20 6f 72 20 63  may timeout or c
1b5a0 61 75 73 65 20 61 20 64 65 61 64 6c 6f 63 6b 20  ause a deadlock 
1b5b0 6f 6e 20 62 6f 74 68 20 74 68 72 65 61 64 73 20  on both threads 
1b5c0 75 6e 74 69 6c 20 62 6f 74 68 20 74 68 72 65 61  until both threa
1b5d0 64 73 27 20 43 6f 6d 6d 61 6e 64 54 69 6d 65 6f  ds' CommandTimeo
1b5e0 75 74 27 73 20 61 72 65 20 72 65 61 63 68 65 64  ut's are reached
1b5f0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
1b600 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  arks>..    /// <
1b610 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e 73 20  returns>Returns 
1b620 61 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74  a SQLiteTransact
1b630 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74  ion object.</ret
1b640 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
1b650 63 20 6e 65 77 20 53 51 4c 69 74 65 54 72 61 6e  c new SQLiteTran
1b660 73 61 63 74 69 6f 6e 20 42 65 67 69 6e 54 72 61  saction BeginTra
1b670 6e 73 61 63 74 69 6f 6e 28 49 73 6f 6c 61 74 69  nsaction(Isolati
1b680 6f 6e 4c 65 76 65 6c 20 69 73 6f 6c 61 74 69 6f  onLevel isolatio
1b690 6e 4c 65 76 65 6c 29 0d 0a 20 20 20 20 7b 0d 0a  nLevel)..    {..
1b6a0 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
1b6b0 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 72 65  sed();..      re
1b6c0 74 75 72 6e 20 28 53 51 4c 69 74 65 54 72 61 6e  turn (SQLiteTran
1b6d0 73 61 63 74 69 6f 6e 29 42 65 67 69 6e 44 62 54  saction)BeginDbT
1b6e0 72 61 6e 73 61 63 74 69 6f 6e 28 69 73 6f 6c 61  ransaction(isola
1b6f0 74 69 6f 6e 4c 65 76 65 6c 29 3b 0d 0a 20 20 20  tionLevel);..   
1b700 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1b710 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1b720 20 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 3c   Creates a new <
1b730 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1b740 54 72 61 6e 73 61 63 74 69 6f 6e 22 20 2f 3e 20  Transaction" /> 
1b750 69 66 20 6f 6e 65 20 69 73 6e 27 74 20 61 6c 72  if one isn't alr
1b760 65 61 64 79 0d 0a 20 20 20 20 2f 2f 2f 20 61 63  eady..    /// ac
1b770 74 69 76 65 20 6f 6e 20 74 68 65 20 63 6f 6e 6e  tive on the conn
1b780 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  ection...    ///
1b790 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1b7a0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65   /// <returns>Re
1b7b0 74 75 72 6e 73 20 74 68 65 20 6e 65 77 20 74 72  turns the new tr
1b7c0 61 6e 73 61 63 74 69 6f 6e 20 6f 62 6a 65 63 74  ansaction object
1b7d0 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
1b7e0 20 70 75 62 6c 69 63 20 6e 65 77 20 53 51 4c 69   public new SQLi
1b7f0 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 20 42 65  teTransaction Be
1b800 67 69 6e 54 72 61 6e 73 61 63 74 69 6f 6e 28 29  ginTransaction()
1b810 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43  ..    {..      C
1b820 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
1b830 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 53  .      return (S
1b840 51 4c 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e  QLiteTransaction
1b850 29 42 65 67 69 6e 44 62 54 72 61 6e 73 61 63 74  )BeginDbTransact
1b860 69 6f 6e 28 5f 64 65 66 61 75 6c 74 49 73 6f 6c  ion(_defaultIsol
1b870 61 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a  ation);..    }..
1b880 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1b890 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72  ry>..    /// For
1b8a0 77 61 72 64 73 20 74 6f 20 74 68 65 20 6c 6f 63  wards to the loc
1b8b0 61 6c 20 3c 73 65 65 20 63 72 65 66 3d 22 42 65  al <see cref="Be
1b8c0 67 69 6e 54 72 61 6e 73 61 63 74 69 6f 6e 28 49  ginTransaction(I
1b8d0 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 22 20  solationLevel)" 
1b8e0 2f 3e 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20  /> function..   
1b8f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1b900 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
1b910 6e 61 6d 65 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c  name="isolationL
1b920 65 76 65 6c 22 3e 53 75 70 70 6f 72 74 65 64 20  evel">Supported 
1b930 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 73  isolation levels
1b940 20 61 72 65 20 55 6e 73 70 65 63 69 66 69 65 64   are Unspecified
1b950 2c 20 53 65 72 69 61 6c 69 7a 61 62 6c 65 2c 20  , Serializable, 
1b960 61 6e 64 20 52 65 61 64 43 6f 6d 6d 69 74 74 65  and ReadCommitte
1b970 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  d</param>..    /
1b980 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
1b990 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 6f 74  turns>..    prot
1b9a0 65 63 74 65 64 20 6f 76 65 72 72 69 64 65 20 44  ected override D
1b9b0 62 54 72 61 6e 73 61 63 74 69 6f 6e 20 42 65 67  bTransaction Beg
1b9c0 69 6e 44 62 54 72 61 6e 73 61 63 74 69 6f 6e 28  inDbTransaction(
1b9d0 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 69  IsolationLevel i
1b9e0 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 0d 0a  solationLevel)..
1b9f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
1ba00 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74  (_connectionStat
1ba10 65 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 53  e != ConnectionS
1ba20 74 61 74 65 2e 4f 70 65 6e 29 0d 0a 20 20 20 20  tate.Open)..    
1ba30 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
1ba40 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
1ba50 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20  ception();....  
1ba60 20 20 20 20 69 66 20 28 69 73 6f 6c 61 74 69 6f      if (isolatio
1ba70 6e 4c 65 76 65 6c 20 3d 3d 20 49 73 6f 6c 61 74  nLevel == Isolat
1ba80 69 6f 6e 4c 65 76 65 6c 2e 55 6e 73 70 65 63 69  ionLevel.Unspeci
1ba90 66 69 65 64 29 20 69 73 6f 6c 61 74 69 6f 6e 4c  fied) isolationL
1baa0 65 76 65 6c 20 3d 20 5f 64 65 66 61 75 6c 74 49  evel = _defaultI
1bab0 73 6f 6c 61 74 69 6f 6e 3b 0d 0a 20 20 20 20 20  solation;..     
1bac0 20 69 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20   isolationLevel 
1bad0 3d 20 47 65 74 45 66 66 65 63 74 69 76 65 49 73  = GetEffectiveIs
1bae0 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 69 73 6f  olationLevel(iso
1baf0 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 3b 0d 0a 0d  lationLevel);...
1bb00 0a 20 20 20 20 20 20 69 66 20 28 69 73 6f 6c 61  .      if (isola
1bb10 74 69 6f 6e 4c 65 76 65 6c 20 21 3d 20 49 6d 6d  tionLevel != Imm
1bb20 65 64 69 61 74 65 49 73 6f 6c 61 74 69 6f 6e 4c  ediateIsolationL
1bb30 65 76 65 6c 20 26 26 20 69 73 6f 6c 61 74 69 6f  evel && isolatio
1bb40 6e 4c 65 76 65 6c 20 21 3d 20 44 65 66 65 72 72  nLevel != Deferr
1bb50 65 64 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  edIsolationLevel
1bb60 29 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77  )..        throw
1bb70 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63   new ArgumentExc
1bb80 65 70 74 69 6f 6e 28 22 69 73 6f 6c 61 74 69 6f  eption("isolatio
1bb90 6e 4c 65 76 65 6c 22 29 3b 0d 0a 0d 0a 20 20 20  nLevel");....   
1bba0 20 20 20 53 51 4c 69 74 65 54 72 61 6e 73 61 63     SQLiteTransac
1bbb0 74 69 6f 6e 20 74 72 61 6e 73 61 63 74 69 6f 6e  tion transaction
1bbc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 48  ;....      if (H
1bbd0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73  elperMethods.Has
1bbe0 46 6c 61 67 73 28 5f 66 6c 61 67 73 2c 20 53 51  Flags(_flags, SQ
1bbf0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
1bc00 61 67 73 2e 41 6c 6c 6f 77 4e 65 73 74 65 64 54  ags.AllowNestedT
1bc10 72 61 6e 73 61 63 74 69 6f 6e 73 29 29 0d 0a 20  ransactions)).. 
1bc20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bc30 20 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20    transaction = 
1bc40 6e 65 77 20 53 51 4c 69 74 65 54 72 61 6e 73 61  new SQLiteTransa
1bc50 63 74 69 6f 6e 32 28 0d 0a 20 20 20 20 20 20 20  ction2(..       
1bc60 20 20 20 20 20 20 20 74 68 69 73 2c 20 69 73 6f         this, iso
1bc70 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 21 3d 20 49  lationLevel != I
1bc80 6d 6d 65 64 69 61 74 65 49 73 6f 6c 61 74 69 6f  mmediateIsolatio
1bc90 6e 4c 65 76 65 6c 29 3b 0d 0a 20 20 20 20 20 20  nLevel);..      
1bca0 7d 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  }..      else.. 
1bcb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1bcc0 20 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20    transaction = 
1bcd0 6e 65 77 20 53 51 4c 69 74 65 54 72 61 6e 73 61  new SQLiteTransa
1bce0 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
1bcf0 20 20 20 20 20 20 74 68 69 73 2c 20 69 73 6f 6c        this, isol
1bd00 61 74 69 6f 6e 4c 65 76 65 6c 20 21 3d 20 49 6d  ationLevel != Im
1bd10 6d 65 64 69 61 74 65 49 73 6f 6c 61 74 69 6f 6e  mediateIsolation
1bd20 4c 65 76 65 6c 29 3b 0d 0a 20 20 20 20 20 20 7d  Level);..      }
1bd30 0d 0a 0d 0a 20 20 20 20 20 20 4f 6e 43 68 61 6e  ....      OnChan
1bd40 67 65 64 28 74 68 69 73 2c 20 6e 65 77 20 43 6f  ged(this, new Co
1bd50 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67  nnectionEventArg
1bd60 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51  s(..          SQ
1bd70 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76  LiteConnectionEv
1bd80 65 6e 74 54 79 70 65 2e 4e 65 77 54 72 61 6e 73  entType.NewTrans
1bd90 61 63 74 69 6f 6e 2c 20 6e 75 6c 6c 2c 20 74 72  action, null, tr
1bda0 61 6e 73 61 63 74 69 6f 6e 2c 0d 0a 20 20 20 20  ansaction,..    
1bdb0 20 20 20 20 20 20 6e 75 6c 6c 2c 20 6e 75 6c 6c        null, null
1bdc0 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75  , null, null, nu
1bdd0 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  ll));....      r
1bde0 65 74 75 72 6e 20 74 72 61 6e 73 61 63 74 69 6f  eturn transactio
1bdf0 6e 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  n;..    }....   
1be00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1be10 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1be20 68 6f 64 20 69 73 20 6e 6f 74 20 69 6d 70 6c 65  hod is not imple
1be30 6d 65 6e 74 65 64 3b 20 68 6f 77 65 76 65 72 2c  mented; however,
1be40 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
1be50 43 68 61 6e 67 65 64 22 20 2f 3e 0d 0a 20 20 20  Changed" />..   
1be60 20 2f 2f 2f 20 65 76 65 6e 74 20 77 69 6c 6c 20   /// event will 
1be70 73 74 69 6c 6c 20 62 65 20 72 61 69 73 65 64 2e  still be raised.
1be80 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1be90 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1bea0 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 61 62  aram name="datab
1beb0 61 73 65 4e 61 6d 65 22 3e 3c 2f 70 61 72 61 6d  aseName"></param
1bec0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  >..    public ov
1bed0 65 72 72 69 64 65 20 76 6f 69 64 20 43 68 61 6e  erride void Chan
1bee0 67 65 44 61 74 61 62 61 73 65 28 73 74 72 69 6e  geDatabase(strin
1bef0 67 20 64 61 74 61 62 61 73 65 4e 61 6d 65 29 0d  g databaseName).
1bf00 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68  .    {..      Ch
1bf10 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
1bf20 0d 0a 20 20 20 20 20 20 4f 6e 43 68 61 6e 67 65  ..      OnChange
1bf30 64 28 74 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e  d(this, new Conn
1bf40 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 28  ectionEventArgs(
1bf50 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69  ..          SQLi
1bf60 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  teConnectionEven
1bf70 74 54 79 70 65 2e 43 68 61 6e 67 65 44 61 74 61  tType.ChangeData
1bf80 62 61 73 65 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  base, null, null
1bf90 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20  , null, null,.. 
1bfa0 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20 64           null, d
1bfb0 61 74 61 62 61 73 65 4e 61 6d 65 2c 20 6e 75 6c  atabaseName, nul
1bfc0 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 68  l));....      th
1bfd0 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
1bfe0 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
1bff0 29 3b 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f 72 20  ); // NOTE: For 
1c000 6c 65 67 61 63 79 20 63 6f 6d 70 61 74 69 62 69  legacy compatibi
1c010 6c 69 74 79 2e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lity...    }....
1c020 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1c030 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  >..    /// When 
1c040 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
1c050 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65  nection is close
1c060 64 2c 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20  d, all commands 
1c070 6c 69 6e 6b 65 64 20 74 6f 20 74 68 69 73 20 63  linked to this c
1c080 6f 6e 6e 65 63 74 69 6f 6e 20 61 72 65 20 61 75  onnection are au
1c090 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 73 65  tomatically rese
1c0a0 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  t...    /// </su
1c0b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
1c0c0 69 63 20 6f 76 65 72 72 69 64 65 20 76 6f 69 64  ic override void
1c0d0 20 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7b 0d   Close()..    {.
1c0e0 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70  .      CheckDisp
1c0f0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
1c100 20 4f 6e 43 68 61 6e 67 65 64 28 74 68 69 73 2c   OnChanged(this,
1c110 20 6e 65 77 20 43 6f 6e 6e 65 63 74 69 6f 6e 45   new ConnectionE
1c120 76 65 6e 74 41 72 67 73 28 0d 0a 20 20 20 20 20  ventArgs(..     
1c130 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
1c140 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 2e 43  ctionEventType.C
1c150 6c 6f 73 69 6e 67 2c 20 6e 75 6c 6c 2c 20 6e 75  losing, null, nu
1c160 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20  ll, null, null, 
1c170 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20  null,..         
1c180 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 29 3b 0d 0a   null, null));..
1c190 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c  ..      if (_sql
1c1a0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
1c1b0 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52   {..#if !PLATFOR
1c1c0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
1c1d0 52 4b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b  RK..        lock
1c1e0 20 28 5f 65 6e 6c 69 73 74 6d 65 6e 74 53 79 6e   (_enlistmentSyn
1c1f0 63 52 6f 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41  cRoot) /* TRANSA
1c200 43 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20  CTIONAL */..    
1c210 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c220 20 53 51 4c 69 74 65 45 6e 6c 69 73 74 6d 65 6e   SQLiteEnlistmen
1c230 74 20 65 6e 6c 69 73 74 6d 65 6e 74 20 3d 20 5f  t enlistment = _
1c240 65 6e 6c 69 73 74 6d 65 6e 74 3b 0d 0a 20 20 20  enlistment;..   
1c250 20 20 20 20 20 20 20 5f 65 6e 6c 69 73 74 6d 65         _enlistme
1c260 6e 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  nt = null;....  
1c270 20 20 20 20 20 20 20 20 69 66 20 28 65 6e 6c 69          if (enli
1c280 73 74 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29 0d  stment != null).
1c290 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1c2a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20            // If 
1c2b0 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  the connection i
1c2c0 73 20 65 6e 6c 69 73 74 65 64 20 69 6e 20 61 20  s enlisted in a 
1c2d0 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 63 6f 70  transaction scop
1c2e0 65 20 61 6e 64 20 74 68 65 20 73 63 6f 70 65 20  e and the scope 
1c2f0 69 73 20 73 74 69 6c 6c 20 61 63 74 69 76 65 2c  is still active,
1c300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1c310 20 77 65 20 63 61 6e 6e 6f 74 20 74 72 75 6c 79   we cannot truly
1c320 20 73 68 75 74 20 64 6f 77 6e 20 74 68 69 73 20   shut down this 
1c330 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 6e 74 69 6c  connection until
1c340 20 74 68 65 20 73 63 6f 70 65 20 68 61 73 20 63   the scope has c
1c350 6f 6d 70 6c 65 74 65 64 2e 20 20 54 68 65 72 65  ompleted.  There
1c360 66 6f 72 65 20 6d 61 6b 65 20 61 0d 0a 20 20 20  fore make a..   
1c370 20 20 20 20 20 20 20 20 20 2f 2f 20 68 69 64 64           // hidd
1c380 65 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 65  en connection te
1c390 6d 70 6f 72 61 72 69 6c 79 20 74 6f 20 68 6f 6c  mporarily to hol
1c3a0 64 20 6f 70 65 6e 20 74 68 65 20 63 6f 6e 6e 65  d open the conne
1c3b0 63 74 69 6f 6e 20 75 6e 74 69 6c 20 74 68 65 20  ction until the 
1c3c0 73 63 6f 70 65 20 68 61 73 20 63 6f 6d 70 6c 65  scope has comple
1c3d0 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ted...          
1c3e0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
1c3f0 6f 6e 20 63 6e 6e 20 3d 20 6e 65 77 20 53 51 4c  on cnn = new SQL
1c400 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 29 3b  iteConnection();
1c410 0d 0a 0d 0a 23 69 66 20 44 45 42 55 47 0d 0a 20  ....#if DEBUG.. 
1c420 20 20 20 20 20 20 20 20 20 20 20 63 6e 6e 2e 5f             cnn._
1c430 64 65 62 75 67 53 74 72 69 6e 67 20 3d 20 48 65  debugString = He
1c440 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
1c450 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
1c460 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
1c470 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
1c480 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
1c490 20 20 20 20 20 20 20 20 20 20 22 63 6c 6f 73 65            "close
1c4a0 54 68 72 65 61 64 49 64 20 3d 20 7b 30 7d 2c 20  ThreadId = {0}, 
1c4b0 7b 31 7d 7b 32 7d 7b 32 7d 7b 33 7d 22 2c 0d 0a  {1}{2}{2}{3}",..
1c4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4d0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 47 65  HelperMethods.Ge
1c4e0 74 54 68 72 65 61 64 49 64 28 29 2c 20 5f 73 71  tThreadId(), _sq
1c4f0 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
1c500 20 20 20 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e      Environment.
1c510 4e 65 77 4c 69 6e 65 2c 20 5f 64 65 62 75 67 53  NewLine, _debugS
1c520 74 72 69 6e 67 29 3b 0d 0a 23 65 6e 64 69 66 0d  tring);..#endif.
1c530 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ...            c
1c540 6e 6e 2e 5f 73 71 6c 20 3d 20 5f 73 71 6c 3b 0d  nn._sql = _sql;.
1c550 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6e 6e  .            cnn
1c560 2e 5f 74 72 61 6e 73 61 63 74 69 6f 6e 4c 65 76  ._transactionLev
1c570 65 6c 20 3d 20 5f 74 72 61 6e 73 61 63 74 69 6f  el = _transactio
1c580 6e 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20  nLevel;..       
1c590 20 20 20 20 20 63 6e 6e 2e 5f 74 72 61 6e 73 61       cnn._transa
1c5a0 63 74 69 6f 6e 53 65 71 75 65 6e 63 65 20 3d 20  ctionSequence = 
1c5b0 5f 74 72 61 6e 73 61 63 74 69 6f 6e 53 65 71 75  _transactionSequ
1c5c0 65 6e 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  ence;..         
1c5d0 20 20 20 63 6e 6e 2e 5f 65 6e 6c 69 73 74 6d 65     cnn._enlistme
1c5e0 6e 74 20 3d 20 65 6e 6c 69 73 74 6d 65 6e 74 3b  nt = enlistment;
1c5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6e  ..            cn
1c600 6e 2e 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61  n._connectionSta
1c610 74 65 20 3d 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e  te = _connection
1c620 53 74 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  State;..        
1c630 20 20 20 20 63 6e 6e 2e 5f 76 65 72 73 69 6f 6e      cnn._version
1c640 20 3d 20 5f 76 65 72 73 69 6f 6e 3b 0d 0a 0d 0a   = _version;....
1c650 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1c660 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 20 74 72  teTransaction tr
1c670 61 6e 73 61 63 74 69 6f 6e 20 3d 20 65 6e 6c 69  ansaction = enli
1c680 73 74 6d 65 6e 74 2e 5f 74 72 61 6e 73 61 63 74  stment._transact
1c690 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ion;....        
1c6a0 20 20 20 20 69 66 20 28 74 72 61 6e 73 61 63 74      if (transact
1c6b0 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion != null)..  
1c6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1c6d0 61 6e 73 61 63 74 69 6f 6e 2e 5f 63 6e 6e 20 3d  ansaction._cnn =
1c6e0 20 63 6e 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   cnn;....       
1c6f0 20 20 20 20 20 65 6e 6c 69 73 74 6d 65 6e 74 2e       enlistment.
1c700 5f 64 69 73 70 6f 73 65 43 6f 6e 6e 65 63 74 69  _disposeConnecti
1c710 6f 6e 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  on = true;....  
1c720 20 20 20 20 20 20 20 20 20 20 5f 73 71 6c 20 3d            _sql =
1c730 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
1c740 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1c750 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1c760 69 66 20 28 5f 73 71 6c 20 21 3d 20 6e 75 6c 6c  if (_sql != null
1c770 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
1c780 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 43 6c 6f          _sql.Clo
1c790 73 65 28 5f 64 69 73 70 6f 73 69 6e 67 29 3b 0d  se(_disposing);.
1c7a0 0a 20 20 20 20 20 20 20 20 20 20 5f 73 71 6c 20  .          _sql 
1c7b0 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
1c7c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 5f 74 72 61   }..        _tra
1c7d0 6e 73 61 63 74 69 6f 6e 4c 65 76 65 6c 20 3d 20  nsactionLevel = 
1c7e0 30 3b 0d 0a 20 20 20 20 20 20 20 20 5f 74 72 61  0;..        _tra
1c7f0 6e 73 61 63 74 69 6f 6e 53 65 71 75 65 6e 63 65  nsactionSequence
1c800 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a   = 0;..      }..
1c810 0d 0a 20 20 20 20 20 20 53 74 61 74 65 43 68 61  ..      StateCha
1c820 6e 67 65 45 76 65 6e 74 41 72 67 73 20 65 76 65  ngeEventArgs eve
1c830 6e 74 41 72 67 73 20 3d 20 6e 75 6c 6c 3b 0d 0a  ntArgs = null;..
1c840 20 20 20 20 20 20 4f 6e 53 74 61 74 65 43 68 61        OnStateCha
1c850 6e 67 65 28 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  nge(ConnectionSt
1c860 61 74 65 2e 43 6c 6f 73 65 64 2c 20 72 65 66 20  ate.Closed, ref 
1c870 65 76 65 6e 74 41 72 67 73 29 3b 0d 0a 0d 0a 20  eventArgs);.... 
1c880 20 20 20 20 20 4f 6e 43 68 61 6e 67 65 64 28 74       OnChanged(t
1c890 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e 65 63 74  his, new Connect
1c8a0 69 6f 6e 45 76 65 6e 74 41 72 67 73 28 0d 0a 20  ionEventArgs(.. 
1c8b0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
1c8c0 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79  onnectionEventTy
1c8d0 70 65 2e 43 6c 6f 73 65 64 2c 20 65 76 65 6e 74  pe.Closed, event
1c8e0 41 72 67 73 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  Args, null, null
1c8f0 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20  , null,..       
1c900 20 20 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e     null, null, n
1c910 75 6c 6c 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  ull));..    }...
1c920 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1c930 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
1c940 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  rns the number o
1c950 66 20 70 6f 6f 6c 20 65 6e 74 72 69 65 73 20 66  f pool entries f
1c960 6f 72 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65  or the file name
1c970 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1c980 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1c990 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1c9a0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
1c9b0 63 20 69 6e 74 20 50 6f 6f 6c 43 6f 75 6e 74 0d  c int PoolCount.
1c9c0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
1c9d0 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  get..        {..
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c9f0 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 20 72 65  _sql == null) re
1ca00 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20  turn 0;..       
1ca10 20 20 20 20 20 72 65 74 75 72 6e 20 5f 73 71 6c       return _sql
1ca20 2e 43 6f 75 6e 74 50 6f 6f 6c 28 29 3b 0d 0a 20  .CountPool();.. 
1ca30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
1ca40 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
1ca50 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6c  ary>..    /// Cl
1ca60 65 61 72 73 20 74 68 65 20 63 6f 6e 6e 65 63 74  ears the connect
1ca70 69 6f 6e 20 70 6f 6f 6c 20 61 73 73 6f 63 69 61  ion pool associa
1ca80 74 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6e  ted with the con
1ca90 6e 65 63 74 69 6f 6e 2e 20 20 41 6e 79 20 6f 74  nection.  Any ot
1caa0 68 65 72 20 61 63 74 69 76 65 20 63 6f 6e 6e 65  her active conne
1cab0 63 74 69 6f 6e 73 20 75 73 69 6e 67 20 74 68 65  ctions using the
1cac0 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 66   same database f
1cad0 69 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 6c  ile..    /// wil
1cae0 6c 20 62 65 20 64 69 73 63 61 72 64 65 64 20 69  l be discarded i
1caf0 6e 73 74 65 61 64 20 6f 66 20 72 65 74 75 72 6e  nstead of return
1cb00 65 64 20 74 6f 20 74 68 65 20 70 6f 6f 6c 20 77  ed to the pool w
1cb10 68 65 6e 20 74 68 65 79 20 61 72 65 20 63 6c 6f  hen they are clo
1cb20 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  sed...    /// </
1cb30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1cb40 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
1cb50 6f 6e 6e 65 63 74 69 6f 6e 22 3e 3c 2f 70 61 72  onnection"></par
1cb60 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  am>..    public 
1cb70 73 74 61 74 69 63 20 76 6f 69 64 20 43 6c 65 61  static void Clea
1cb80 72 50 6f 6f 6c 28 53 51 4c 69 74 65 43 6f 6e 6e  rPool(SQLiteConn
1cb90 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
1cba0 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  n)..    {..     
1cbb0 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 2e   if (connection.
1cbc0 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 20 72 65  _sql == null) re
1cbd0 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 63 6f 6e  turn;..      con
1cbe0 6e 65 63 74 69 6f 6e 2e 5f 73 71 6c 2e 43 6c 65  nection._sql.Cle
1cbf0 61 72 50 6f 6f 6c 28 29 3b 0d 0a 20 20 20 20 7d  arPool();..    }
1cc00 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
1cc10 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1cc20 6c 65 61 72 73 20 61 6c 6c 20 63 6f 6e 6e 65 63  lears all connec
1cc30 74 69 6f 6e 20 70 6f 6f 6c 73 2e 20 20 41 6e 79  tion pools.  Any
1cc40 20 61 63 74 69 76 65 20 63 6f 6e 6e 65 63 74 69   active connecti
1cc50 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 69 73 63  ons will be disc
1cc60 61 72 64 65 64 20 69 6e 73 74 65 61 64 20 6f 66  arded instead of
1cc70 20 73 65 6e 74 20 74 6f 20 74 68 65 20 70 6f 6f   sent to the poo
1cc80 6c 20 77 68 65 6e 20 74 68 65 79 20 61 72 65 20  l when they are 
1cc90 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  closed...    ///
1cca0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1ccb0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
1ccc0 6f 69 64 20 43 6c 65 61 72 41 6c 6c 50 6f 6f 6c  oid ClearAllPool
1ccd0 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  s()..    {..    
1cce0 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
1ccf0 6f 6e 50 6f 6f 6c 2e 43 6c 65 61 72 41 6c 6c 50  onPool.ClearAllP
1cd00 6f 6f 6c 73 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  ools();..    }..
1cd10 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1cd20 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1cd30 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
1cd40 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
1cd50 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72  e parameters for
1cd60 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d   the connection.
1cd70 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1cd80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
1cd90 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
1cda0 46 6f 72 20 74 68 65 20 63 6f 6d 70 6c 65 74 65  For the complete
1cdb0 20 6c 69 73 74 20 6f 66 20 73 75 70 70 6f 72 74   list of support
1cdc0 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  ed connection st
1cdd0 72 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73 2c  ring properties,
1cde0 0d 0a 20 20 20 20 2f 2f 2f 20 70 6c 65 61 73 65  ..    /// please
1cdf0 20 73 65 65 20 3c 73 65 65 20 63 72 65 66 3d 22   see <see cref="
1ce00 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1ce10 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  " />...    /// <
1ce20 2f 72 65 6d 61 72 6b 73 3e 0d 0a 23 69 66 20 21  /remarks>..#if !
1ce30 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
1ce40 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b  FRAMEWORK..    [
1ce50 52 65 66 72 65 73 68 50 72 6f 70 65 72 74 69 65  RefreshPropertie
1ce60 73 28 52 65 66 72 65 73 68 50 72 6f 70 65 72 74  s(RefreshPropert
1ce70 69 65 73 2e 41 6c 6c 29 2c 20 44 65 66 61 75 6c  ies.All), Defaul
1ce80 74 56 61 6c 75 65 28 22 22 29 5d 0d 0a 20 20 20  tValue("")]..   
1ce90 20 5b 45 64 69 74 6f 72 28 22 53 51 4c 69 74 65   [Editor("SQLite
1cea0 2e 44 65 73 69 67 6e 65 72 2e 53 51 4c 69 74 65  .Designer.SQLite
1ceb0 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  ConnectionString
1cec0 45 64 69 74 6f 72 2c 20 53 51 4c 69 74 65 2e 44  Editor, SQLite.D
1ced0 65 73 69 67 6e 65 72 2c 20 56 65 72 73 69 6f 6e  esigner, Version
1cee0 3d 22 20 2b 20 53 51 4c 69 74 65 33 2e 44 65 73  =" + SQLite3.Des
1cef0 69 67 6e 65 72 56 65 72 73 69 6f 6e 20 2b 20 22  ignerVersion + "
1cf00 2c 20 43 75 6c 74 75 72 65 3d 6e 65 75 74 72 61  , Culture=neutra
1cf10 6c 2c 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b 65  l, PublicKeyToke
1cf20 6e 3d 64 62 39 33 37 62 63 32 64 34 34 66 66 31  n=db937bc2d44ff1
1cf30 33 39 22 2c 20 22 53 79 73 74 65 6d 2e 44 72 61  39", "System.Dra
1cf40 77 69 6e 67 2e 44 65 73 69 67 6e 2e 55 49 54 79  wing.Design.UITy
1cf50 70 65 45 64 69 74 6f 72 2c 20 53 79 73 74 65 6d  peEditor, System
1cf60 2e 44 72 61 77 69 6e 67 2c 20 56 65 72 73 69 6f  .Drawing, Versio
1cf70 6e 3d 32 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75  n=2.0.0.0, Cultu
1cf80 72 65 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c  re=neutral, Publ
1cf90 69 63 4b 65 79 54 6f 6b 65 6e 3d 62 30 33 66 35  icKeyToken=b03f5
1cfa0 66 37 66 31 31 64 35 30 61 33 61 22 29 5d 0d 0a  f7f11d50a3a")]..
1cfb0 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c  #endif..    publ
1cfc0 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
1cfd0 6e 67 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  ng ConnectionStr
1cfe0 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ing..    {..    
1cff0 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a    get..      {..
1d000 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
1d010 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
1d020 20 20 72 65 74 75 72 6e 20 5f 63 6f 6e 6e 65 63    return _connec
1d030 74 69 6f 6e 53 74 72 69 6e 67 3b 0d 0a 20 20 20  tionString;..   
1d040 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d     }..      set.
1d050 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
1d060 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
1d070 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  );....        if
1d080 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
1d090 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 72 6f  ..          thro
1d0a0 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
1d0b0 6c 6c 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  llException();..
1d0c0 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 69  ..        else i
1d0d0 66 20 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74  f (_connectionSt
1d0e0 61 74 65 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f  ate != Connectio
1d0f0 6e 53 74 61 74 65 2e 43 6c 6f 73 65 64 29 0d 0a  nState.Closed)..
1d100 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1d110 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1d120 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1d130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5f 63 6f 6e  ....        _con
1d140 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20  nectionString = 
1d150 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
1d160 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
1d170 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1d180 20 2f 2f 2f 20 43 72 65 61 74 65 20 61 20 6e 65   /// Create a ne
1d190 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  w <see cref="SQL
1d1a0 69 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e 20 61  iteCommand" /> a
1d1b0 6e 64 20 61 73 73 6f 63 69 61 74 65 20 69 74 20  nd associate it 
1d1c0 77 69 74 68 20 74 68 69 73 20 63 6f 6e 6e 65 63  with this connec
1d1d0 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
1d1e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1d1f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75  // <returns>Retu
1d200 72 6e 73 20 61 20 6e 65 77 20 63 6f 6d 6d 61 6e  rns a new comman
1d210 64 20 6f 62 6a 65 63 74 20 61 6c 72 65 61 64 79  d object already
1d220 20 61 73 73 69 67 6e 65 64 20 74 6f 20 74 68 69   assigned to thi
1d230 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f 72  s connection.</r
1d240 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
1d250 6c 69 63 20 6e 65 77 20 53 51 4c 69 74 65 43 6f  lic new SQLiteCo
1d260 6d 6d 61 6e 64 20 43 72 65 61 74 65 43 6f 6d 6d  mmand CreateComm
1d270 61 6e 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  and()..    {..  
1d280 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
1d290 64 28 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75  d();..      retu
1d2a0 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d  rn new SQLiteCom
1d2b0 6d 61 6e 64 28 74 68 69 73 29 3b 0d 0a 20 20 20  mand(this);..   
1d2c0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1d2d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1d2e0 20 46 6f 72 77 61 72 64 73 20 74 6f 20 74 68 65   Forwards to the
1d2f0 20 6c 6f 63 61 6c 20 3c 73 65 65 20 63 72 65 66   local <see cref
1d300 3d 22 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64 22  ="CreateCommand"
1d310 20 2f 3e 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20   /> function... 
1d320 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1d330 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
1d340 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  rns></returns>..
1d350 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 6f 76      protected ov
1d360 65 72 72 69 64 65 20 44 62 43 6f 6d 6d 61 6e 64  erride DbCommand
1d370 20 43 72 65 61 74 65 44 62 43 6f 6d 6d 61 6e 64   CreateDbCommand
1d380 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
1d390 20 72 65 74 75 72 6e 20 43 72 65 61 74 65 43 6f   return CreateCo
1d3a0 6d 6d 61 6e 64 28 29 3b 0d 0a 20 20 20 20 7d 0d  mmand();..    }.
1d3b0 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 53  ...#if INTEROP_S
1d3c0 45 53 53 49 4f 4e 5f 45 58 54 45 4e 53 49 4f 4e  ESSION_EXTENSION
1d3d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1d3e0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74  ry>..    /// Att
1d3f0 65 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65 20  empts to create 
1d400 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  a new <see cref=
1d410 22 49 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 22  "ISQLiteSession"
1d420 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1d430 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 69  nce..    /// usi
1d440 6e 67 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69  ng this connecti
1d450 6f 6e 20 61 6e 64 20 74 68 65 20 73 70 65 63 69  on and the speci
1d460 66 69 65 64 20 64 61 74 61 62 61 73 65 20 6e 61  fied database na
1d470 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
1d480 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1d490 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61   <param name="da
1d4a0 74 61 62 61 73 65 4e 61 6d 65 22 3e 0d 0a 20 20  tabaseName">..  
1d4b0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f    /// The name o
1d4c0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
1d4d0 6f 72 20 74 68 65 20 6e 65 77 6c 79 20 63 72 65  or the newly cre
1d4e0 61 74 65 64 20 73 65 73 73 69 6f 6e 2e 0d 0a 20  ated session... 
1d4f0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1d500 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
1d510 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
1d520 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20 73 65  newly created se
1d530 73 73 69 6f 6e 20 2d 4f 52 2d 20 6e 75 6c 6c 20  ssion -OR- null 
1d540 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
1d550 63 72 65 61 74 65 64 2e 0d 0a 20 20 20 20 2f 2f  created...    //
1d560 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1d570 20 20 70 75 62 6c 69 63 20 49 53 51 4c 69 74 65    public ISQLite
1d580 53 65 73 73 69 6f 6e 20 43 72 65 61 74 65 53 65  Session CreateSe
1d590 73 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ssion(..        
1d5a0 73 74 72 69 6e 67 20 64 61 74 61 62 61 73 65 4e  string databaseN
1d5b0 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ame..        )..
1d5c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
1d5d0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
1d5e0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
1d5f0 6e 20 6e 65 77 20 53 51 4c 69 74 65 53 65 73 73  n new SQLiteSess
1d600 69 6f 6e 28 47 65 74 4e 61 74 69 76 65 48 61 6e  ion(GetNativeHan
1d610 64 6c 65 28 74 68 69 73 29 2c 20 5f 66 6c 61 67  dle(this), _flag
1d620 73 2c 20 64 61 74 61 62 61 73 65 4e 61 6d 65 29  s, databaseName)
1d630 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1d640 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d650 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
1d660 74 6f 20 63 72 65 61 74 65 20 61 20 6e 65 77 20  to create a new 
1d670 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1d680 74 65 43 68 61 6e 67 65 53 65 74 22 20 2f 3e 20  teChangeSet" /> 
1d690 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 0d  object instance.
1d6a0 0a 20 20 20 20 2f 2f 2f 20 75 73 69 6e 67 20 74  .    /// using t
1d6b0 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61  his connection a
1d6c0 6e 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64  nd the specified
1d6d0 20 72 61 77 20 64 61 74 61 2e 0d 0a 20 20 20 20   raw data...    
1d6e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1d6f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1d700 61 6d 65 3d 22 72 61 77 44 61 74 61 22 3e 0d 0a  ame="rawData">..
1d710 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 61 77 20      /// The raw 
1d720 64 61 74 61 20 74 68 61 74 20 63 6f 6e 74 61 69  data that contai
1d730 6e 73 20 61 20 63 68 61 6e 67 65 20 73 65 74 20  ns a change set 
1d740 28 6f 72 20 70 61 74 63 68 20 73 65 74 29 2e 0d  (or patch set)..
1d750 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
1d760 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
1d770 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
1d780 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20  e newly created 
1d790 63 68 61 6e 67 65 20 73 65 74 20 2d 4f 52 2d 20  change set -OR- 
1d7a0 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
1d7b0 74 20 62 65 20 63 72 65 61 74 65 64 2e 0d 0a 20  t be created... 
1d7c0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1d7d0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 49 53  >..    public IS
1d7e0 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 20 43  QLiteChangeSet C
1d7f0 72 65 61 74 65 43 68 61 6e 67 65 53 65 74 28 0d  reateChangeSet(.
1d800 0a 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20  .        byte[] 
1d810 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20 20 20  rawData..       
1d820 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
1d830 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
1d840 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  ();....        r
1d850 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
1d860 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 28  MemoryChangeSet(
1d870 72 61 77 44 61 74 61 2c 20 47 65 74 4e 61 74 69  rawData, GetNati
1d880 76 65 48 61 6e 64 6c 65 28 74 68 69 73 29 2c 20  veHandle(this), 
1d890 5f 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20 7d 0d  _flags);..    }.
1d8a0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
1d8b0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74  ary>..    /// At
1d8c0 74 65 6d 70 74 73 20 74 6f 20 63 72 65 61 74 65  tempts to create
1d8d0 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
1d8e0 3d 22 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  ="ISQLiteChangeS
1d8f0 65 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  et" /> object in
1d900 73 74 61 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20  stance..    /// 
1d910 75 73 69 6e 67 20 74 68 69 73 20 63 6f 6e 6e 65  using this conne
1d920 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 20 73 70  ction and the sp
1d930 65 63 69 66 69 65 64 20 72 61 77 20 64 61 74 61  ecified raw data
1d940 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1d950 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
1d960 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 61 77 44  param name="rawD
1d970 61 74 61 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ata">..    /// T
1d980 68 65 20 72 61 77 20 64 61 74 61 20 74 68 61 74  he raw data that
1d990 20 63 6f 6e 74 61 69 6e 73 20 61 20 63 68 61 6e   contains a chan
1d9a0 67 65 20 73 65 74 20 28 6f 72 20 70 61 74 63 68  ge set (or patch
1d9b0 20 73 65 74 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   set)...    /// 
1d9c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1d9d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
1d9e0 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  lags">..    /// 
1d9f0 54 68 65 20 66 6c 61 67 73 20 75 73 65 64 20 74  The flags used t
1da00 6f 20 63 72 65 61 74 65 20 74 68 65 20 63 68 61  o create the cha
1da10 6e 67 65 20 73 65 74 20 69 74 65 72 61 74 6f 72  nge set iterator
1da20 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
1da30 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
1da40 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
1da50 54 68 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65  The newly create
1da60 64 20 63 68 61 6e 67 65 20 73 65 74 20 2d 4f 52  d change set -OR
1da70 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e  - null if it can
1da80 6e 6f 74 20 62 65 20 63 72 65 61 74 65 64 2e 0d  not be created..
1da90 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
1daa0 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
1dab0 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  ISQLiteChangeSet
1dac0 20 43 72 65 61 74 65 43 68 61 6e 67 65 53 65 74   CreateChangeSet
1dad0 28 0d 0a 20 20 20 20 20 20 20 20 62 79 74 65 5b  (..        byte[
1dae0 5d 20 72 61 77 44 61 74 61 2c 0d 0a 20 20 20 20  ] rawData,..    
1daf0 20 20 20 20 53 51 4c 69 74 65 43 68 61 6e 67 65      SQLiteChange
1db00 53 65 74 53 74 61 72 74 46 6c 61 67 73 20 66 6c  SetStartFlags fl
1db10 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
1db20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
1db30 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
1db40 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
1db50 6e 20 6e 65 77 20 53 51 4c 69 74 65 4d 65 6d 6f  n new SQLiteMemo
1db60 72 79 43 68 61 6e 67 65 53 65 74 28 72 61 77 44  ryChangeSet(rawD
1db70 61 74 61 2c 20 47 65 74 4e 61 74 69 76 65 48 61  ata, GetNativeHa
1db80 6e 64 6c 65 28 74 68 69 73 29 2c 20 5f 66 6c 61  ndle(this), _fla
1db90 67 73 2c 20 66 6c 61 67 73 29 3b 0d 0a 20 20 20  gs, flags);..   
1dba0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1dbb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1dbc0 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 72 65   Attempts to cre
1dbd0 61 74 65 20 61 20 6e 65 77 20 3c 73 65 65 20 63  ate a new <see c
1dbe0 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61 6e  ref="ISQLiteChan
1dbf0 67 65 53 65 74 22 20 2f 3e 20 6f 62 6a 65 63 74  geSet" /> object
1dc00 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20 20 2f   instance..    /
1dc10 2f 2f 20 75 73 69 6e 67 20 74 68 69 73 20 63 6f  // using this co
1dc20 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 20 74 68 65  nnection and the
1dc30 20 73 70 65 63 69 66 69 65 64 20 73 74 72 65 61   specified strea
1dc40 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  m...    /// </su
1dc50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1dc60 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 70  <param name="inp
1dc70 75 74 53 74 72 65 61 6d 22 3e 0d 0a 20 20 20 20  utStream">..    
1dc80 2f 2f 2f 20 54 68 65 20 73 74 72 65 61 6d 20 77  /// The stream w
1dc90 68 65 72 65 20 74 68 65 20 72 61 77 20 64 61 74  here the raw dat
1dca0 61 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20  a that contains 
1dcb0 61 20 63 68 61 6e 67 65 20 73 65 74 20 28 6f 72  a change set (or
1dcc0 20 70 61 74 63 68 20 73 65 74 29 0d 0a 20 20 20   patch set)..   
1dcd0 20 2f 2f 2f 20 6d 61 79 20 62 65 20 72 65 61 64   /// may be read
1dce0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
1dcf0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
1dd00 72 61 6d 20 6e 61 6d 65 3d 22 6f 75 74 70 75 74  ram name="output
1dd10 53 74 72 65 61 6d 22 3e 0d 0a 20 20 20 20 2f 2f  Stream">..    //
1dd20 2f 20 54 68 65 20 73 74 72 65 61 6d 20 77 68 65  / The stream whe
1dd30 72 65 20 74 68 65 20 72 61 77 20 64 61 74 61 20  re the raw data 
1dd40 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 61 20  that contains a 
1dd50 63 68 61 6e 67 65 20 73 65 74 20 28 6f 72 20 70  change set (or p
1dd60 61 74 63 68 20 73 65 74 29 0d 0a 20 20 20 20 2f  atch set)..    /
1dd70 2f 2f 20 6d 61 79 20 62 65 20 77 72 69 74 74 65  // may be writte
1dd80 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  n...    /// </pa
1dd90 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1dda0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
1ddb0 20 54 68 65 20 6e 65 77 6c 79 20 63 72 65 61 74   The newly creat
1ddc0 65 64 20 63 68 61 6e 67 65 20 73 65 74 20 2d 4f  ed change set -O
1ddd0 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 20 63 61  R- null if it ca
1dde0 6e 6e 6f 74 20 62 65 20 63 72 65 61 74 65 64 2e  nnot be created.
1ddf0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
1de00 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
1de10 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65   ISQLiteChangeSe
1de20 74 20 43 72 65 61 74 65 43 68 61 6e 67 65 53 65  t CreateChangeSe
1de30 74 28 0d 0a 20 20 20 20 20 20 20 20 53 74 72 65  t(..        Stre
1de40 61 6d 20 69 6e 70 75 74 53 74 72 65 61 6d 2c 0d  am inputStream,.
1de50 0a 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20  .        Stream 
1de60 6f 75 74 70 75 74 53 74 72 65 61 6d 0d 0a 20 20  outputStream..  
1de70 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
1de80 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
1de90 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
1dea0 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
1deb0 51 4c 69 74 65 53 74 72 65 61 6d 43 68 61 6e 67  QLiteStreamChang
1dec0 65 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20  eSet(..         
1ded0 20 20 20 69 6e 70 75 74 53 74 72 65 61 6d 2c 20     inputStream, 
1dee0 6f 75 74 70 75 74 53 74 72 65 61 6d 2c 20 47 65  outputStream, Ge
1def0 74 4e 61 74 69 76 65 48 61 6e 64 6c 65 28 74 68  tNativeHandle(th
1df00 69 73 29 2c 20 5f 66 6c 61 67 73 29 3b 0d 0a 20  is), _flags);.. 
1df10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
1df20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1df30 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63  // Attempts to c
1df40 72 65 61 74 65 20 61 20 6e 65 77 20 3c 73 65 65  reate a new <see
1df50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68   cref="ISQLiteCh
1df60 61 6e 67 65 53 65 74 22 20 2f 3e 20 6f 62 6a 65  angeSet" /> obje
1df70 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20 20  ct instance..   
1df80 20 2f 2f 2f 20 75 73 69 6e 67 20 74 68 69 73 20   /// using this 
1df90 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 20 74  connection and t
1dfa0 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74 72  he specified str
1dfb0 65 61 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  eam...    /// </
1dfc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1dfd0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69  / <param name="i
1dfe0 6e 70 75 74 53 74 72 65 61 6d 22 3e 0d 0a 20 20  nputStream">..  
1dff0 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 65 61 6d    /// The stream
1e000 20 77 68 65 72 65 20 74 68 65 20 72 61 77 20 64   where the raw d
1e010 61 74 61 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ata that contain
1e020 73 20 61 20 63 68 61 6e 67 65 20 73 65 74 20 28  s a change set (
1e030 6f 72 20 70 61 74 63 68 20 73 65 74 29 0d 0a 20  or patch set).. 
1e040 20 20 20 2f 2f 2f 20 6d 61 79 20 62 65 20 72 65     /// may be re
1e050 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ad...    /// </p
1e060 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
1e070 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 75 74 70  param name="outp
1e080 75 74 53 74 72 65 61 6d 22 3e 0d 0a 20 20 20 20  utStream">..    
1e090 2f 2f 2f 20 54 68 65 20 73 74 72 65 61 6d 20 77  /// The stream w
1e0a0 68 65 72 65 20 74 68 65 20 72 61 77 20 64 61 74  here the raw dat
1e0b0 61 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20  a that contains 
1e0c0 61 20 63 68 61 6e 67 65 20 73 65 74 20 28 6f 72  a change set (or
1e0d0 20 70 61 74 63 68 20 73 65 74 29 0d 0a 20 20 20   patch set)..   
1e0e0 20 2f 2f 2f 20 6d 61 79 20 62 65 20 77 72 69 74   /// may be writ
1e0f0 74 65 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ten...    /// </
1e100 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1e110 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
1e120 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  gs">..    /// Th
1e130 65 20 66 6c 61 67 73 20 75 73 65 64 20 74 6f 20  e flags used to 
1e140 63 72 65 61 74 65 20 74 68 65 20 63 68 61 6e 67  create the chang
1e150 65 20 73 65 74 20 69 74 65 72 61 74 6f 72 2e 0d  e set iterator..
1e160 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
1e170 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
1e180 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
1e190 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20  e newly created 
1e1a0 63 68 61 6e 67 65 20 73 65 74 20 2d 4f 52 2d 20  change set -OR- 
1e1b0 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
1e1c0 74 20 62 65 20 63 72 65 61 74 65 64 2e 0d 0a 20  t be created... 
1e1d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1e1e0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 49 53  >..    public IS
1e1f0 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 20 43  QLiteChangeSet C
1e200 72 65 61 74 65 43 68 61 6e 67 65 53 65 74 28 0d  reateChangeSet(.
1e210 0a 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20  .        Stream 
1e220 69 6e 70 75 74 53 74 72 65 61 6d 2c 0d 0a 20 20  inputStream,..  
1e230 20 20 20 20 20 20 53 74 72 65 61 6d 20 6f 75 74        Stream out
1e240 70 75 74 53 74 72 65 61 6d 2c 0d 0a 20 20 20 20  putStream,..    
1e250 20 20 20 20 53 51 4c 69 74 65 43 68 61 6e 67 65      SQLiteChange
1e260 53 65 74 53 74 61 72 74 46 6c 61 67 73 20 66 6c  SetStartFlags fl
1e270 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
1e280 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
1e290 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
1e2a0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
1e2b0 6e 20 6e 65 77 20 53 51 4c 69 74 65 53 74 72 65  n new SQLiteStre
1e2c0 61 6d 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20  amChangeSet(..  
1e2d0 20 20 20 20 20 20 20 20 20 20 69 6e 70 75 74 53            inputS
1e2e0 74 72 65 61 6d 2c 20 6f 75 74 70 75 74 53 74 72  tream, outputStr
1e2f0 65 61 6d 2c 20 47 65 74 4e 61 74 69 76 65 48 61  eam, GetNativeHa
1e300 6e 64 6c 65 28 74 68 69 73 29 2c 20 5f 66 6c 61  ndle(this), _fla
1e310 67 73 2c 20 66 6c 61 67 73 29 3b 0d 0a 20 20 20  gs, flags);..   
1e320 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1e330 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1e340 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 72 65   Attempts to cre
1e350 61 74 65 20 61 20 6e 65 77 20 3c 73 65 65 20 63  ate a new <see c
1e360 72 65 66 3d 22 49 53 51 4c 69 74 65 43 68 61 6e  ref="ISQLiteChan
1e370 67 65 47 72 6f 75 70 22 20 2f 3e 20 6f 62 6a 65  geGroup" /> obje
1e380 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 73 74  ct..    /// inst
1e390 61 6e 63 65 20 75 73 69 6e 67 20 74 68 69 73 20  ance using this 
1e3a0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
1e3b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1e3c0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
1e3d0 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
1e3e0 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20 63 68  newly created ch
1e3f0 61 6e 67 65 20 67 72 6f 75 70 20 2d 4f 52 2d 20  ange group -OR- 
1e400 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
1e410 74 20 62 65 20 63 72 65 61 74 65 64 2e 0d 0a 20  t be created... 
1e420 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1e430 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 49 53  >..    public IS
1e440 51 4c 69 74 65 43 68 61 6e 67 65 47 72 6f 75 70  QLiteChangeGroup
1e450 20 43 72 65 61 74 65 43 68 61 6e 67 65 47 72 6f   CreateChangeGro
1e460 75 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  up()..    {..   
1e470 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
1e480 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
1e490 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69   return new SQLi
1e4a0 74 65 43 68 61 6e 67 65 47 72 6f 75 70 28 5f 66  teChangeGroup(_f
1e4b0 6c 61 67 73 29 3b 0d 0a 20 20 20 20 7d 0d 0a 23  lags);..    }..#
1e4c0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  endif....    ///
1e4d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1e4e0 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
1e4f0 64 61 74 61 20 73 6f 75 72 63 65 20 66 69 6c 65  data source file
1e500 20 6e 61 6d 65 20 77 69 74 68 6f 75 74 20 65 78   name without ex
1e510 74 65 6e 73 69 6f 6e 20 6f 72 20 70 61 74 68 2e  tension or path.
1e520 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1e530 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46  ary>..#if !PLATF
1e540 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
1e550 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 65 73 69 67  WORK..    [Desig
1e560 6e 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e  nerSerialization
1e570 56 69 73 69 62 69 6c 69 74 79 28 44 65 73 69 67  Visibility(Desig
1e580 6e 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e  nerSerialization
1e590 56 69 73 69 62 69 6c 69 74 79 2e 48 69 64 64 65  Visibility.Hidde
1e5a0 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  n)]..#endif..   
1e5b0 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
1e5c0 20 73 74 72 69 6e 67 20 44 61 74 61 53 6f 75 72   string DataSour
1e5d0 63 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ce..    {..     
1e5e0 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
1e5f0 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
1e600 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
1e610 20 72 65 74 75 72 6e 20 5f 64 61 74 61 53 6f 75   return _dataSou
1e620 72 63 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  rce;..      }.. 
1e630 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
1e640 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1e650 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 66  // Returns the f
1e660 75 6c 6c 79 20 71 75 61 6c 69 66 69 65 64 20 70  ully qualified p
1e670 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
1e680 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  e for the curren
1e690 74 6c 79 20 6f 70 65 6e 0d 0a 20 20 20 20 2f 2f  tly open..    //
1e6a0 2f 20 64 61 74 61 62 61 73 65 2c 20 69 66 20 61  / database, if a
1e6b0 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ny...    /// </s
1e6c0 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c  ummary>..#if !PL
1e6d0 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
1e6e0 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 44 65  AMEWORK..    [De
1e6f0 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74  signerSerializat
1e700 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 28 44 65  ionVisibility(De
1e710 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74  signerSerializat
1e720 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 2e 48 69  ionVisibility.Hi
1e730 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  dden)]..#endif..
1e740 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
1e750 67 20 46 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  g FileName..    
1e760 7b 0d 0a 20 20 20 20 20 20 20 20 67 65 74 0d 0a  {..        get..
1e770 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e780 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
1e790 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
1e7a0 20 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20         if (_sql 
1e7b0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1e7c0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1e7d0 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1e7e0 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 0d 0a  tionException(..
1e7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e800 20 20 20 20 22 44 61 74 61 62 61 73 65 20 63 6f      "Database co
1e810 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c  nnection not val
1e820 69 64 20 66 6f 72 20 67 65 74 74 69 6e 67 20 66  id for getting f
1e830 69 6c 65 20 6e 61 6d 65 2e 22 29 3b 0d 0a 0d 0a  ile name.");....
1e840 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1e850 72 6e 20 5f 73 71 6c 2e 47 65 74 46 69 6c 65 4e  rn _sql.GetFileN
1e860 61 6d 65 28 47 65 74 44 65 66 61 75 6c 74 43 61  ame(GetDefaultCa
1e870 74 61 6c 6f 67 4e 61 6d 65 28 29 29 3b 0d 0a 20  talogName());.. 
1e880 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
1e890 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
1e8a0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
1e8b0 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e 67  turns the string
1e8c0 20 22 6d 61 69 6e 22 2e 0d 0a 20 20 20 20 2f 2f   "main"...    //
1e8d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69  / </summary>..#i
1e8e0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
1e8f0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
1e900 20 20 5b 44 65 73 69 67 6e 65 72 53 65 72 69 61    [DesignerSeria
1e910 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69  lizationVisibili
1e920 74 79 28 44 65 73 69 67 6e 65 72 53 65 72 69 61  ty(DesignerSeria
1e930 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69  lizationVisibili
1e940 74 79 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65 6e  ty.Hidden)]..#en
1e950 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
1e960 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20  override string 
1e970 44 61 74 61 62 61 73 65 0d 0a 20 20 20 20 7b 0d  Database..    {.
1e980 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20  .      get..    
1e990 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
1e9a0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
1e9b0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65         return Ge
1e9c0 74 44 65 66 61 75 6c 74 43 61 74 61 6c 6f 67 4e  tDefaultCatalogN
1e9d0 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  ame();..      }.
1e9e0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e  .    }....    in
1e9f0 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74  ternal static st
1ea00 72 69 6e 67 20 4d 61 70 55 72 69 50 61 74 68 28  ring MapUriPath(
1ea10 73 74 72 69 6e 67 20 70 61 74 68 29 0d 0a 20 20  string path)..  
1ea20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
1ea30 28 70 61 74 68 2e 53 74 61 72 74 73 57 69 74 68  (path.StartsWith
1ea40 20 28 22 66 69 6c 65 3a 2f 2f 22 2c 20 53 74 72   ("file://", Str
1ea50 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
1ea60 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
1ea70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
1ea80 65 74 75 72 6e 20 70 61 74 68 2e 53 75 62 73 74  eturn path.Subst
1ea90 72 69 6e 67 20 28 37 29 3b 0d 0a 20 20 20 20 20  ring (7);..     
1eaa0 20 65 6c 73 65 20 69 66 20 28 70 61 74 68 2e 53   else if (path.S
1eab0 74 61 72 74 73 57 69 74 68 20 28 22 66 69 6c 65  tartsWith ("file
1eac0 3a 22 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  :", StringCompar
1ead0 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
1eae0 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20  reCase))..      
1eaf0 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 74        return pat
1eb00 68 2e 53 75 62 73 74 72 69 6e 67 20 28 35 29 3b  h.Substring (5);
1eb10 0d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20  ..      else if 
1eb20 28 70 61 74 68 2e 53 74 61 72 74 73 57 69 74 68  (path.StartsWith
1eb30 20 28 22 2f 22 2c 20 53 74 72 69 6e 67 43 6f 6d   ("/", StringCom
1eb40 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
1eb50 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20  gnoreCase))..   
1eb60 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1eb70 70 61 74 68 3b 0d 0a 20 20 20 20 20 20 65 6c 73  path;..      els
1eb80 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  e..            t
1eb90 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
1eba0 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
1ebb0 6f 6e 20 28 22 49 6e 76 61 6c 69 64 20 63 6f 6e  on ("Invalid con
1ebc0 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 3a 20  nection string: 
1ebd0 69 6e 76 61 6c 69 64 20 55 52 49 22 29 3b 0d 0a  invalid URI");..
1ebe0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
1ebf0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1ec00 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
1ec10 66 20 74 68 65 20 6c 65 67 61 63 79 20 63 6f 6e  f the legacy con
1ec20 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70  nection string p
1ec30 61 72 73 65 72 20 73 68 6f 75 6c 64 20 62 65 20  arser should be 
1ec40 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  used...    /// <
1ec50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ec60 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1ec70 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20  connection">..  
1ec80 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
1ec90 74 69 6f 6e 20 74 68 61 74 20 77 69 6c 6c 20 62  tion that will b
1eca0 65 20 75 73 69 6e 67 20 74 68 65 20 70 61 72 73  e using the pars
1ecb0 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  ed connection st
1ecc0 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ring...    /// <
1ecd0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
1ece0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1ecf0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
1ed00 74 68 65 20 6c 65 67 61 63 79 20 63 6f 6e 6e 65  the legacy conne
1ed10 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 61 72  ction string par
1ed20 73 65 72 20 73 68 6f 75 6c 64 20 62 65 20 75 73  ser should be us
1ed30 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ed...    /// </r
1ed40 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
1ed50 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c  vate static bool
1ed60 20 53 68 6f 75 6c 64 55 73 65 4c 65 67 61 63 79   ShouldUseLegacy
1ed70 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  ConnectionString
1ed80 50 61 72 73 65 72 28 0d 0a 20 20 20 20 20 20 20  Parser(..       
1ed90 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
1eda0 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20  n connection..  
1edb0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
1edc0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
1edd0 61 6d 65 20 3d 20 22 4e 6f 5f 53 51 4c 69 74 65  ame = "No_SQLite
1ede0 43 6f 6e 6e 65 63 74 69 6f 6e 4e 65 77 50 61 72  ConnectionNewPar
1edf0 73 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 6f  ser";..        o
1ee00 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a  bject value;....
1ee10 20 20 20 20 20 20 20 20 69 66 20 28 28 63 6f 6e          if ((con
1ee20 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
1ee30 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
1ee40 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47   connection.TryG
1ee50 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28  etCachedSetting(
1ee60 6e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6f 75 74 20  name, null, out 
1ee70 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
1ee80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ee90 72 65 74 75 72 6e 20 28 76 61 6c 75 65 20 21 3d  return (value !=
1eea0 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20   null);..       
1eeb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
1eec0 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d   ((connection ==
1eed0 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
1eee0 20 20 20 20 20 20 20 54 72 79 47 65 74 4c 61 73         TryGetLas
1eef0 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e  tCachedSetting(n
1ef00 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6f 75 74 20 76  ame, null, out v
1ef10 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
1ef20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
1ef30 65 74 75 72 6e 20 28 76 61 6c 75 65 20 21 3d 20  eturn (value != 
1ef40 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
1ef50 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76 61 6c  }....        val
1ef60 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  ue = UnsafeNativ
1ef70 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74  eMethods.GetSett
1ef80 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6e  ingValue(name, n
1ef90 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ull);....       
1efa0 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20   if (connection 
1efb0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
1efc0 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
1efd0 2e 53 65 74 43 61 63 68 65 64 53 65 74 74 69 6e  .SetCachedSettin
1efe0 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  g(name, value);.
1eff0 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
1f000 20 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 61             SetLa
1f010 73 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28  stCachedSetting(
1f020 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 0d  name, value);...
1f030 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
1f040 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 3b  (value != null);
1f050 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1f060 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1f070 20 20 2f 2f 2f 20 50 61 72 73 65 73 20 61 20 63    /// Parses a c
1f080 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67  onnection string
1f090 20 69 6e 74 6f 20 63 6f 6d 70 6f 6e 65 6e 74 20   into component 
1f0a0 70 61 72 74 73 20 75 73 69 6e 67 20 74 68 65 20  parts using the 
1f0b0 63 75 73 74 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20  custom..    /// 
1f0c0 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
1f0d0 67 20 70 61 72 73 65 72 2e 20 20 41 6e 20 65 78  g parser.  An ex
1f0e0 63 65 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 74  ception may be t
1f0f0 68 72 6f 77 6e 20 69 66 20 74 68 65 20 73 79 6e  hrown if the syn
1f100 74 61 78 0d 0a 20 20 20 20 2f 2f 2f 20 6f 66 20  tax..    /// of 
1f110 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  the connection s
1f120 74 72 69 6e 67 20 69 73 20 69 6e 63 6f 72 72 65  tring is incorre
1f130 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ct...    /// </s
1f140 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1f150 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
1f160 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 22 3e  nnectionString">
1f170 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
1f180 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
1f190 74 6f 20 70 61 72 73 65 2e 0d 0a 20 20 20 20 2f  to parse...    /
1f1a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1f1b0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1f1c0 3d 22 61 6c 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 22  ="allowNameOnly"
1f1d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
1f1e0 65 72 6f 20 69 66 20 6e 61 6d 65 73 20 61 72 65  ero if names are
1f1f0 20 61 6c 6c 6f 77 65 64 20 77 69 74 68 6f 75 74   allowed without
1f200 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f   values...    //
1f210 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1f220 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f230 20 20 20 2f 2f 2f 20 54 68 65 20 6c 69 73 74 20     /// The list 
1f240 6f 66 20 6b 65 79 2f 76 61 6c 75 65 20 70 61 69  of key/value pai
1f250 72 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  rs corresponding
1f260 20 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65   to the paramete
1f270 72 73 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  rs specified..  
1f280 20 20 2f 2f 2f 20 77 69 74 68 69 6e 20 74 68 65    /// within the
1f290 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
1f2a0 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ng...    /// </r
1f2b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
1f2c0 76 61 74 65 20 73 74 61 74 69 63 20 53 6f 72 74  vate static Sort
1f2d0 65 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20 73  edList<string, s
1f2e0 74 72 69 6e 67 3e 20 50 61 72 73 65 43 6f 6e 6e  tring> ParseConn
1f2f0 65 63 74 69 6f 6e 53 74 72 69 6e 67 28 0d 0a 20  ectionString(.. 
1f300 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
1f310 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c 0d  nnectionString,.
1f320 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 61 6c  .        bool al
1f330 6c 6f 77 4e 61 6d 65 4f 6e 6c 79 0d 0a 20 20 20  lowNameOnly..   
1f340 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
1f350 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 61         return Pa
1f360 72 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  rseConnectionStr
1f370 69 6e 67 28 6e 75 6c 6c 2c 20 63 6f 6e 6e 65 63  ing(null, connec
1f380 74 69 6f 6e 53 74 72 69 6e 67 2c 20 61 6c 6c 6f  tionString, allo
1f390 77 4e 61 6d 65 4f 6e 6c 79 29 3b 0d 0a 20 20 20  wNameOnly);..   
1f3a0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1f3b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1f3c0 20 50 61 72 73 65 73 20 61 20 63 6f 6e 6e 65 63   Parses a connec
1f3d0 74 69 6f 6e 20 73 74 72 69 6e 67 20 69 6e 74 6f  tion string into
1f3e0 20 63 6f 6d 70 6f 6e 65 6e 74 20 70 61 72 74 73   component parts
1f3f0 20 75 73 69 6e 67 20 74 68 65 20 63 75 73 74 6f   using the custo
1f400 6d 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65  m..    /// conne
1f410 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 61 72  ction string par
1f420 73 65 72 2e 20 20 41 6e 20 65 78 63 65 70 74 69  ser.  An excepti
1f430 6f 6e 20 6d 61 79 20 62 65 20 74 68 72 6f 77 6e  on may be thrown
1f440 20 69 66 20 74 68 65 20 73 79 6e 74 61 78 0d 0a   if the syntax..
1f450 20 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 63      /// of the c
1f460 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67  onnection string
1f470 20 69 73 20 69 6e 63 6f 72 72 65 63 74 2e 0d 0a   is incorrect...
1f480 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1f490 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
1f4a0 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74  am name="connect
1f4b0 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ion">..    /// T
1f4c0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68  he connection th
1f4d0 61 74 20 77 69 6c 6c 20 62 65 20 75 73 69 6e 67  at will be using
1f4e0 20 74 68 65 20 70 61 72 73 65 64 20 63 6f 6e 6e   the parsed conn
1f4f0 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a  ection string...
1f500 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1f510 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1f520 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
1f530 6e 53 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20 2f  nString">..    /
1f540 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  // The connectio
1f550 6e 20 73 74 72 69 6e 67 20 74 6f 20 70 61 72 73  n string to pars
1f560 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
1f570 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
1f580 61 72 61 6d 20 6e 61 6d 65 3d 22 61 6c 6c 6f 77  aram name="allow
1f590 4e 61 6d 65 4f 6e 6c 79 22 3e 0d 0a 20 20 20 20  NameOnly">..    
1f5a0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
1f5b0 6e 61 6d 65 73 20 61 72 65 20 61 6c 6c 6f 77 65  names are allowe
1f5c0 64 20 77 69 74 68 6f 75 74 20 76 61 6c 75 65 73  d without values
1f5d0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
1f5e0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
1f5f0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
1f600 54 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79 2f  The list of key/
1f610 76 61 6c 75 65 20 70 61 69 72 73 20 63 6f 72 72  value pairs corr
1f620 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65  esponding to the
1f630 20 70 61 72 61 6d 65 74 65 72 73 20 73 70 65 63   parameters spec
1f640 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 77  ified..    /// w
1f650 69 74 68 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63  ithin the connec
1f660 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20  tion string...  
1f670 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1f680 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
1f690 61 74 69 63 20 53 6f 72 74 65 64 4c 69 73 74 3c  atic SortedList<
1f6a0 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20  string, string> 
1f6b0 50 61 72 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 53  ParseConnectionS
1f6c0 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
1f6d0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1f6e0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20   connection,..  
1f6f0 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f 6e        string con
1f700 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c 0d 0a  nectionString,..
1f710 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 61 6c 6c          bool all
1f720 6f 77 4e 61 6d 65 4f 6e 6c 79 0d 0a 20 20 20 20  owNameOnly..    
1f730 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
1f740 20 20 20 20 73 74 72 69 6e 67 20 73 20 3d 20 63      string s = c
1f750 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 3b  onnectionString;
1f760 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e 3b 0d 0a  ..      int n;..
1f770 20 20 20 20 20 20 53 6f 72 74 65 64 4c 69 73 74        SortedList
1f780 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
1f790 20 6c 73 20 3d 20 6e 65 77 20 53 6f 72 74 65 64   ls = new Sorted
1f7a0 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20 73 74 72  List<string, str
1f7b0 69 6e 67 3e 28 53 74 72 69 6e 67 43 6f 6d 70 61  ing>(StringCompa
1f7c0 72 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  rer.OrdinalIgnor
1f7d0 65 43 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eCase);....     
1f7e0 20 2f 2f 20 46 69 72 73 74 20 73 70 6c 69 74 20   // First split 
1f7f0 69 6e 74 6f 20 73 65 6d 69 2d 63 6f 6c 6f 6e 20  into semi-colon 
1f800 64 65 6c 69 6d 69 74 65 64 20 76 61 6c 75 65 73  delimited values
1f810 2e 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20  ...      string 
1f820 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  error = null;.. 
1f830 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
1f840 50 61 72 74 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  Parts;....      
1f850 69 66 20 28 53 68 6f 75 6c 64 55 73 65 4c 65 67  if (ShouldUseLeg
1f860 61 63 79 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  acyConnectionStr
1f870 69 6e 67 50 61 72 73 65 72 28 63 6f 6e 6e 65 63  ingParser(connec
1f880 74 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20 20  tion))..        
1f890 20 20 61 72 50 61 72 74 73 20 3d 20 53 51 4c 69    arParts = SQLi
1f8a0 74 65 43 6f 6e 76 65 72 74 2e 53 70 6c 69 74 28  teConvert.Split(
1f8b0 73 2c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  s, SQLiteConvert
1f8c0 2e 50 61 69 72 43 68 61 72 29 3b 0d 0a 20 20 20  .PairChar);..   
1f8d0 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
1f8e0 20 20 20 61 72 50 61 72 74 73 20 3d 20 53 51 4c     arParts = SQL
1f8f0 69 74 65 43 6f 6e 76 65 72 74 2e 4e 65 77 53 70  iteConvert.NewSp
1f900 6c 69 74 28 73 2c 20 53 51 4c 69 74 65 43 6f 6e  lit(s, SQLiteCon
1f910 76 65 72 74 2e 50 61 69 72 43 68 61 72 2c 20 74  vert.PairChar, t
1f920 72 75 65 2c 20 72 65 66 20 65 72 72 6f 72 29 3b  rue, ref error);
1f930 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 61 72  ....      if (ar
1f940 50 61 72 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  Parts == null)..
1f950 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1f960 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
1f970 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 48  umentException(H
1f980 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
1f990 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
1f9a0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
1f9b0 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
1f9c0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
1f9d0 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 43 6f       "Invalid Co
1f9e0 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 66  nnectionString f
1f9f0 6f 72 6d 61 74 2c 20 63 61 6e 6e 6f 74 20 70 61  ormat, cannot pa
1fa00 72 73 65 3a 20 7b 30 7d 22 2c 20 28 65 72 72 6f  rse: {0}", (erro
1fa10 72 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20  r != null) ?..  
1fa20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
1fa30 72 20 3a 20 22 63 6f 75 6c 64 20 6e 6f 74 20 73  r : "could not s
1fa40 70 6c 69 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  plit connection 
1fa50 73 74 72 69 6e 67 20 69 6e 74 6f 20 70 72 6f 70  string into prop
1fa60 65 72 74 69 65 73 22 29 29 3b 0d 0a 20 20 20 20  erties"));..    
1fa70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 6e 74    }....      int
1fa80 20 78 20 3d 20 28 61 72 50 61 72 74 73 20 21 3d   x = (arParts !=
1fa90 20 6e 75 6c 6c 29 20 3f 20 61 72 50 61 72 74 73   null) ? arParts
1faa0 2e 4c 65 6e 67 74 68 20 3a 20 30 3b 0d 0a 20 20  .Length : 0;..  
1fab0 20 20 20 20 2f 2f 20 46 6f 72 20 65 61 63 68 20      // For each 
1fac0 73 65 6d 69 2d 63 6f 6c 6f 6e 20 70 69 65 63 65  semi-colon piece
1fad0 2c 20 73 70 6c 69 74 20 69 6e 74 6f 20 6b 65 79  , split into key
1fae0 20 61 6e 64 20 76 61 6c 75 65 20 70 61 69 72 73   and value pairs
1faf0 20 62 79 20 74 68 65 20 70 72 65 73 65 6e 63 65   by the presence
1fb00 20 6f 66 20 74 68 65 20 3d 20 73 69 67 6e 0d 0a   of the = sign..
1fb10 20 20 20 20 20 20 66 6f 72 20 28 6e 20 3d 20 30        for (n = 0
1fb20 3b 20 6e 20 3c 20 78 3b 20 6e 2b 2b 29 0d 0a 20  ; n < x; n++).. 
1fb30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1fb40 69 66 20 28 61 72 50 61 72 74 73 5b 6e 5d 20 3d  if (arParts[n] =
1fb50 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1fb60 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
1fb70 20 20 20 20 20 20 20 20 61 72 50 61 72 74 73 5b          arParts[
1fb80 6e 5d 20 3d 20 61 72 50 61 72 74 73 5b 6e 5d 2e  n] = arParts[n].
1fb90 54 72 69 6d 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Trim();....     
1fba0 20 20 20 69 66 20 28 61 72 50 61 72 74 73 5b 6e     if (arParts[n
1fbb0 5d 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a  ].Length == 0)..
1fbc0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
1fbd0 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
1fbe0 6e 74 20 69 6e 64 65 78 4f 66 20 3d 20 61 72 50  nt indexOf = arP
1fbf0 61 72 74 73 5b 6e 5d 2e 49 6e 64 65 78 4f 66 28  arts[n].IndexOf(
1fc00 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 56 61  SQLiteConvert.Va
1fc10 6c 75 65 43 68 61 72 29 3b 0d 0a 0d 0a 20 20 20  lueChar);....   
1fc20 20 20 20 20 20 69 66 20 28 69 6e 64 65 78 4f 66       if (indexOf
1fc30 20 21 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20   != -1)..       
1fc40 20 20 20 6c 73 2e 41 64 64 28 55 6e 77 72 61 70     ls.Add(Unwrap
1fc50 53 74 72 69 6e 67 28 61 72 50 61 72 74 73 5b 6e  String(arParts[n
1fc60 5d 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69  ].Substring(0, i
1fc70 6e 64 65 78 4f 66 29 2e 54 72 69 6d 28 29 29 2c  ndexOf).Trim()),
1fc80 20 55 6e 77 72 61 70 53 74 72 69 6e 67 28 61 72   UnwrapString(ar
1fc90 50 61 72 74 73 5b 6e 5d 2e 53 75 62 73 74 72 69  Parts[n].Substri
1fca0 6e 67 28 69 6e 64 65 78 4f 66 20 2b 20 31 29 2e  ng(indexOf + 1).
1fcb0 54 72 69 6d 28 29 29 29 3b 0d 0a 20 20 20 20 20  Trim()));..     
1fcc0 20 20 20 65 6c 73 65 20 69 66 20 28 61 6c 6c 6f     else if (allo
1fcd0 77 4e 61 6d 65 4f 6e 6c 79 29 0d 0a 20 20 20 20  wNameOnly)..    
1fce0 20 20 20 20 20 20 6c 73 2e 41 64 64 28 55 6e 77        ls.Add(Unw
1fcf0 72 61 70 53 74 72 69 6e 67 28 61 72 50 61 72 74  rapString(arPart
1fd00 73 5b 6e 5d 2e 54 72 69 6d 28 29 29 2c 20 53 74  s[n].Trim()), St
1fd10 72 69 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 20 20  ring.Empty);..  
1fd20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
1fd30 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1fd40 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f  ArgumentExceptio
1fd50 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  n(HelperMethods.
1fd60 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c  StringFormat(Cul
1fd70 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1fd80 43 75 6c 74 75 72 65 2c 20 22 49 6e 76 61 6c 69  Culture, "Invali
1fd90 64 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  d ConnectionStri
1fda0 6e 67 20 66 6f 72 6d 61 74 20 66 6f 72 20 70 61  ng format for pa
1fdb0 72 74 20 5c 22 7b 30 7d 5c 22 2c 20 6e 6f 20 65  rt \"{0}\", no e
1fdc0 71 75 61 6c 20 73 69 67 6e 20 66 6f 75 6e 64 22  qual sign found"
1fdd0 2c 20 61 72 50 61 72 74 73 5b 6e 5d 29 29 3b 0d  , arParts[n]));.
1fde0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
1fdf0 72 65 74 75 72 6e 20 6c 73 3b 0d 0a 20 20 20 20  return ls;..    
1fe00 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
1fe10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1fe20 50 61 72 73 65 73 20 61 20 63 6f 6e 6e 65 63 74  Parses a connect
1fe30 69 6f 6e 20 73 74 72 69 6e 67 20 75 73 69 6e 67  ion string using
1fe40 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 28 69   the built-in (i
1fe50 2e 65 2e 20 66 72 61 6d 65 77 6f 72 6b 20 70 72  .e. framework pr
1fe60 6f 76 69 64 65 64 29 0d 0a 20 20 20 20 2f 2f 2f  ovided)..    ///
1fe70 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
1fe80 6e 67 20 70 61 72 73 65 72 20 63 6c 61 73 73 20  ng parser class 
1fe90 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
1fea0 6b 65 79 2f 76 61 6c 75 65 20 70 61 69 72 73 2e  key/value pairs.
1feb0 20 20 41 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78    An..    /// ex
1fec0 63 65 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 74  ception may be t
1fed0 68 72 6f 77 6e 20 69 66 20 74 68 65 20 63 6f 6e  hrown if the con
1fee0 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 69  nection string i
1fef0 73 20 69 6e 76 61 6c 69 64 20 6f 72 20 63 61 6e  s invalid or can
1ff00 6e 6f 74 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20  not be..    /// 
1ff10 70 61 72 73 65 64 2e 20 20 57 68 65 6e 20 63 6f  parsed.  When co
1ff20 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65 20 2e  mpiled for the .
1ff30 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d  NET Compact Fram
1ff40 65 77 6f 72 6b 2c 20 74 68 65 20 63 75 73 74 6f  ework, the custo
1ff50 6d 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65  m..    /// conne
1ff60 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 61 72  ction string par
1ff70 73 65 72 20 69 73 20 61 6c 77 61 79 73 20 75 73  ser is always us
1ff80 65 64 20 69 6e 73 74 65 61 64 20 62 65 63 61 75  ed instead becau
1ff90 73 65 20 74 68 65 20 66 72 61 6d 65 77 6f 72 6b  se the framework
1ffa0 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64  ..    /// provid
1ffb0 65 64 20 6f 6e 65 20 69 73 20 75 6e 61 76 61 69  ed one is unavai
1ffc0 6c 61 62 6c 65 20 74 68 65 72 65 2e 0d 0a 20 20  lable there...  
1ffd0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1ffe0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1fff0 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
20000 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  n">..    /// The
20010 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74   connection that
20020 20 77 69 6c 6c 20 62 65 20 75 73 69 6e 67 20 74   will be using t
20030 68 65 20 70 61 72 73 65 64 20 63 6f 6e 6e 65 63  he parsed connec
20040 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20  tion string...  
20050 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
20060 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
20070 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 53  ame="connectionS
20080 74 72 69 6e 67 22 3e 0d 0a 20 20 20 20 2f 2f 2f  tring">..    ///
20090 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
200a0 73 74 72 69 6e 67 20 74 6f 20 70 61 72 73 65 2e  string to parse.
200b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
200c0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
200d0 61 6d 20 6e 61 6d 65 3d 22 73 74 72 69 63 74 22  am name="strict"
200e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
200f0 65 72 6f 20 74 6f 20 74 68 72 6f 77 20 61 6e 20  ero to throw an 
20100 65 78 63 65 70 74 69 6f 6e 20 69 66 20 61 6e 79  exception if any
20110 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
20120 6e 67 20 76 61 6c 75 65 73 20 61 72 65 20 6e 6f  ng values are no
20130 74 20 6f 66 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  t of..    /// th
20140 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72  e <see cref="Str
20150 69 6e 67 22 20 2f 3e 20 74 79 70 65 2e 20 20 54  ing" /> type.  T
20160 68 69 73 20 69 73 20 6e 6f 74 20 61 70 70 6c 69  his is not appli
20170 63 61 62 6c 65 20 77 68 65 6e 20 72 75 6e 6e 69  cable when runni
20180 6e 67 20 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74  ng on..    /// t
20190 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20  he .NET Compact 
201a0 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20  Framework...    
201b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
201c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
201d0 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79 2f 76  he list of key/v
201e0 61 6c 75 65 20 70 61 69 72 73 2e 3c 2f 72 65 74  alue pairs.</ret
201f0 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
20200 74 65 20 73 74 61 74 69 63 20 53 6f 72 74 65 64  te static Sorted
20210 4c 69 73 74 3c 73 74 72 69 6e 67 2c 20 73 74 72  List<string, str
20220 69 6e 67 3e 20 50 61 72 73 65 43 6f 6e 6e 65 63  ing> ParseConnec
20230 74 69 6f 6e 53 74 72 69 6e 67 56 69 61 46 72 61  tionStringViaFra
20240 6d 65 77 6f 72 6b 28 0d 0a 20 20 20 20 20 20 20  mework(..       
20250 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
20260 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
20270 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
20280 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 2c 0d  nnectionString,.
20290 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 74  .        bool st
202a0 72 69 63 74 0d 0a 20 20 20 20 20 20 20 20 29 0d  rict..        ).
202b0 0a 20 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41  .    {..#if !PLA
202c0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
202d0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
202e0 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  DbConnectionStri
202f0 6e 67 42 75 69 6c 64 65 72 20 63 6f 6e 6e 65 63  ngBuilder connec
20300 74 69 6f 6e 53 74 72 69 6e 67 42 75 69 6c 64 65  tionStringBuilde
20310 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3d  r..            =
20320 20 6e 65 77 20 44 62 43 6f 6e 6e 65 63 74 69 6f   new DbConnectio
20330 6e 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29  nStringBuilder()
20340 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e  ;....        con
20350 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 42 75 69  nectionStringBui
20360 6c 64 65 72 2e 43 6f 6e 6e 65 63 74 69 6f 6e 53  lder.ConnectionS
20370 74 72 69 6e 67 20 3d 20 63 6f 6e 6e 65 63 74 69  tring = connecti
20380 6f 6e 53 74 72 69 6e 67 3b 20 2f 2a 20 74 68 72  onString; /* thr
20390 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  ow */....       
203a0 20 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72 69   SortedList<stri
203b0 6e 67 2c 20 73 74 72 69 6e 67 3e 20 72 65 73 75  ng, string> resu
203c0 6c 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  lt =..          
203d0 20 20 6e 65 77 20 53 6f 72 74 65 64 4c 69 73 74    new SortedList
203e0 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
203f0 28 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 2e  (StringComparer.
20400 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
20410 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66  e);....        f
20420 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 6b  oreach (string k
20430 65 79 4e 61 6d 65 20 69 6e 20 63 6f 6e 6e 65 63  eyName in connec
20440 74 69 6f 6e 53 74 72 69 6e 67 42 75 69 6c 64 65  tionStringBuilde
20450 72 2e 4b 65 79 73 29 0d 0a 20 20 20 20 20 20 20  r.Keys)..       
20460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20470 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 63  object value = c
20480 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 42  onnectionStringB
20490 75 69 6c 64 65 72 5b 6b 65 79 4e 61 6d 65 5d 3b  uilder[keyName];
204a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
204b0 72 69 6e 67 20 6b 65 79 56 61 6c 75 65 20 3d 20  ring keyValue = 
204c0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
204d0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69       if (value i
204e0 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20  s string)..     
204f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20500 20 20 20 20 20 20 20 20 20 20 6b 65 79 56 61 6c            keyVal
20510 75 65 20 3d 20 28 73 74 72 69 6e 67 29 76 61 6c  ue = (string)val
20520 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
20530 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
20540 65 6c 73 65 20 69 66 20 28 73 74 72 69 63 74 29  else if (strict)
20550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
20560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20570 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
20580 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  entException(.. 
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205a0 20 20 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 70     "connection p
205b0 72 6f 70 65 72 74 79 20 76 61 6c 75 65 20 69 73  roperty value is
205c0 20 6e 6f 74 20 61 20 73 74 72 69 6e 67 22 2c 0d   not a string",.
205d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
205e0 20 20 20 20 20 6b 65 79 4e 61 6d 65 29 3b 0d 0a       keyName);..
205f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
20600 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
20610 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
20620 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
20630 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20640 20 20 20 6b 65 79 56 61 6c 75 65 20 3d 20 76 61     keyValue = va
20650 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  lue.ToString();.
20660 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
20670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
20680 73 75 6c 74 2e 41 64 64 28 6b 65 79 4e 61 6d 65  sult.Add(keyName
20690 2c 20 6b 65 79 56 61 6c 75 65 29 3b 0d 0a 20 20  , keyValue);..  
206a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
206b0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
206c0 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  ;..#else..      
206d0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f    //..        //
206e0 20 4e 4f 54 45 3a 20 4f 6e 20 74 68 65 20 2e 4e   NOTE: On the .N
206f0 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65  ET Compact Frame
20700 77 6f 72 6b 2c 20 61 6c 77 61 79 73 20 75 73 65  work, always use
20710 20 6f 75 72 20 63 75 73 74 6f 6d 20 63 6f 6e 6e   our custom conn
20720 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ection..        
20730 2f 2f 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  //       string 
20740 70 61 72 73 65 72 20 61 73 20 74 68 65 20 62 75  parser as the bu
20750 69 6c 74 2d 69 6e 20 28 69 2e 65 2e 20 66 72 61  ilt-in (i.e. fra
20760 6d 65 77 6f 72 6b 20 70 72 6f 76 69 64 65 64 29  mework provided)
20770 20 6f 6e 65 20 69 73 0d 0a 20 20 20 20 20 20 20   one is..       
20780 20 2f 2f 20 20 20 20 20 20 20 75 6e 61 76 61 69   //       unavai
20790 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  lable...        
207a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  //..        retu
207b0 72 6e 20 50 61 72 73 65 43 6f 6e 6e 65 63 74 69  rn ParseConnecti
207c0 6f 6e 53 74 72 69 6e 67 28 63 6f 6e 6e 65 63 74  onString(connect
207d0 69 6f 6e 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 53  ion, connectionS
207e0 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 3b 0d 0a  tring, false);..
207f0 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d  #endif..    }...
20800 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
20810 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
20820 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
20830 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4d 61 6e 75  y>..    /// Manu
20840 61 6c 20 64 69 73 74 72 69 62 75 74 65 64 20 74  al distributed t
20850 72 61 6e 73 61 63 74 69 6f 6e 20 65 6e 6c 69 73  ransaction enlis
20860 74 6d 65 6e 74 20 73 75 70 70 6f 72 74 0d 0a 20  tment support.. 
20870 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
20880 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
20890 6d 20 6e 61 6d 65 3d 22 74 72 61 6e 73 61 63 74  m name="transact
208a0 69 6f 6e 22 3e 54 68 65 20 64 69 73 74 72 69 62  ion">The distrib
208b0 75 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  uted transaction
208c0 20 74 6f 20 65 6e 6c 69 73 74 20 69 6e 3c 2f 70   to enlist in</p
208d0 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69  aram>..    publi
208e0 63 20 6f 76 65 72 72 69 64 65 20 76 6f 69 64 20  c override void 
208f0 45 6e 6c 69 73 74 54 72 61 6e 73 61 63 74 69 6f  EnlistTransactio
20900 6e 28 53 79 73 74 65 6d 2e 54 72 61 6e 73 61 63  n(System.Transac
20910 74 69 6f 6e 73 2e 54 72 61 6e 73 61 63 74 69 6f  tions.Transactio
20920 6e 20 74 72 61 6e 73 61 63 74 69 6f 6e 29 0d 0a  n transaction)..
20930 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43      {..        C
20940 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
20950 0a 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  ...        bool 
20960 77 61 69 74 46 6f 72 45 6e 6c 69 73 74 6d 65 6e  waitForEnlistmen
20970 74 52 65 73 65 74 3b 0d 0a 20 20 20 20 20 20 20  tReset;..       
20980 20 69 6e 74 20 77 61 69 74 54 69 6d 65 6f 75 74   int waitTimeout
20990 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63  ;....        loc
209a0 6b 20 28 5f 65 6e 6c 69 73 74 6d 65 6e 74 53 79  k (_enlistmentSy
209b0 6e 63 52 6f 6f 74 29 20 2f 2a 20 54 52 41 4e 53  ncRoot) /* TRANS
209c0 41 43 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20  ACTIONAL */..   
209d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
209e0 20 20 20 20 77 61 69 74 46 6f 72 45 6e 6c 69 73      waitForEnlis
209f0 74 6d 65 6e 74 52 65 73 65 74 20 3d 20 48 65 6c  tmentReset = Hel
20a00 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c  perMethods.HasFl
20a10 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ags(..          
20a20 20 20 20 20 20 20 5f 66 6c 61 67 73 2c 20 53 51        _flags, SQ
20a30 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
20a40 61 67 73 2e 57 61 69 74 46 6f 72 45 6e 6c 69 73  ags.WaitForEnlis
20a50 74 6d 65 6e 74 52 65 73 65 74 29 3b 0d 0a 0d 0a  tmentReset);....
20a60 20 20 20 20 20 20 20 20 20 20 20 20 77 61 69 74              wait
20a70 54 69 6d 65 6f 75 74 20 3d 20 5f 77 61 69 74 54  Timeout = _waitT
20a80 69 6d 65 6f 75 74 3b 0d 0a 20 20 20 20 20 20 20  imeout;..       
20a90 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
20aa0 20 28 77 61 69 74 46 6f 72 45 6e 6c 69 73 74 6d   (waitForEnlistm
20ab0 65 6e 74 52 65 73 65 74 29 0d 0a 20 20 20 20 20  entReset)..     
20ac0 20 20 20 20 20 20 20 2f 2a 20 49 47 4e 4f 52 45         /* IGNORE
20ad0 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
20ae0 20 20 57 61 69 74 46 6f 72 45 6e 6c 69 73 74 6d    WaitForEnlistm
20af0 65 6e 74 52 65 73 65 74 28 77 61 69 74 54 69 6d  entReset(waitTim
20b00 65 6f 75 74 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  eout, null);....
20b10 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 65          lock (_e
20b20 6e 6c 69 73 74 6d 65 6e 74 53 79 6e 63 52 6f 6f  nlistmentSyncRoo
20b30 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f  t) /* TRANSACTIO
20b40 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  NAL */..        
20b50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
20b60 66 20 28 5f 65 6e 6c 69 73 74 6d 65 6e 74 20 21  f (_enlistment !
20b70 3d 20 6e 75 6c 6c 20 26 26 20 74 72 61 6e 73 61  = null && transa
20b80 63 74 69 6f 6e 20 3d 3d 20 5f 65 6e 6c 69 73 74  ction == _enlist
20b90 6d 65 6e 74 2e 5f 73 63 6f 70 65 29 0d 0a 20 20  ment._scope)..  
20ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20bb0 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  turn;..         
20bc0 20 20 20 65 6c 73 65 20 69 66 20 28 5f 65 6e 6c     else if (_enl
20bd0 69 73 74 6d 65 6e 74 20 21 3d 20 6e 75 6c 6c 29  istment != null)
20be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20bf0 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
20c00 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 41  mentException("A
20c10 6c 72 65 61 64 79 20 65 6e 6c 69 73 74 65 64 20  lready enlisted 
20c20 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
20c30 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
20c40 20 20 20 69 66 20 28 5f 74 72 61 6e 73 61 63 74     if (_transact
20c50 69 6f 6e 4c 65 76 65 6c 20 3e 20 30 20 26 26 20  ionLevel > 0 && 
20c60 74 72 61 6e 73 61 63 74 69 6f 6e 20 21 3d 20 6e  transaction != n
20c70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
20c80 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
20c90 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f  ArgumentExceptio
20ca0 6e 28 22 55 6e 61 62 6c 65 20 74 6f 20 65 6e 6c  n("Unable to enl
20cb0 69 73 74 20 69 6e 20 74 72 61 6e 73 61 63 74 69  ist in transacti
20cc0 6f 6e 2c 20 61 20 6c 6f 63 61 6c 20 74 72 61 6e  on, a local tran
20cd0 73 61 63 74 69 6f 6e 20 61 6c 72 65 61 64 79 20  saction already 
20ce0 65 78 69 73 74 73 22 29 3b 0d 0a 20 20 20 20 20  exists");..     
20cf0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
20d00 74 72 61 6e 73 61 63 74 69 6f 6e 20 3d 3d 20 6e  transaction == n
20d10 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
20d20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
20d30 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
20d40 70 74 69 6f 6e 28 22 55 6e 61 62 6c 65 20 74 6f  ption("Unable to
20d50 20 65 6e 6c 69 73 74 20 69 6e 20 74 72 61 6e 73   enlist in trans
20d60 61 63 74 69 6f 6e 2c 20 69 74 20 69 73 20 6e 75  action, it is nu
20d70 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ll");....       
20d80 20 20 20 20 20 62 6f 6f 6c 20 73 74 72 69 63 74       bool strict
20d90 45 6e 6c 69 73 74 6d 65 6e 74 20 3d 20 48 65 6c  Enlistment = Hel
20da0 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c  perMethods.HasFl
20db0 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ags(..          
20dc0 20 20 20 20 20 20 5f 66 6c 61 67 73 2c 20 53 51        _flags, SQ
20dd0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
20de0 61 67 73 2e 53 74 72 69 63 74 45 6e 6c 69 73 74  ags.StrictEnlist
20df0 6d 65 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ment);....      
20e00 20 20 20 20 20 20 5f 65 6e 6c 69 73 74 6d 65 6e        _enlistmen
20e10 74 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 45 6e  t = new SQLiteEn
20e20 6c 69 73 74 6d 65 6e 74 28 74 68 69 73 2c 20 74  listment(this, t
20e30 72 61 6e 73 61 63 74 69 6f 6e 2c 0d 0a 20 20 20  ransaction,..   
20e40 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
20e50 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 49  FallbackDefaultI
20e60 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 29 2c  solationLevel(),
20e70 20 73 74 72 69 63 74 45 6e 6c 69 73 74 6d 65 6e   strictEnlistmen
20e80 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
20e90 20 20 20 20 73 74 72 69 63 74 45 6e 6c 69 73 74      strictEnlist
20ea0 6d 65 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ment);....      
20eb0 20 20 20 20 20 20 4f 6e 43 68 61 6e 67 65 64 28        OnChanged(
20ec0 74 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e 65 63  this, new Connec
20ed0 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 28 0d 0a  tionEventArgs(..
20ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ef0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
20f00 45 76 65 6e 74 54 79 70 65 2e 45 6e 6c 69 73 74  EventType.Enlist
20f10 54 72 61 6e 73 61 63 74 69 6f 6e 2c 20 6e 75 6c  Transaction, nul
20f20 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e  l, null, null, n
20f30 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ull,..          
20f40 20 20 20 20 20 20 6e 75 6c 6c 2c 20 6e 75 6c 6c        null, null
20f50 2c 20 6e 65 77 20 6f 62 6a 65 63 74 5b 5d 20 7b  , new object[] {
20f60 20 5f 65 6e 6c 69 73 74 6d 65 6e 74 20 7d 29 29   _enlistment }))
20f70 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
20f80 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23    }..#endif....#
20f90 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
20fa0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
20fb0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
20fc0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 3e 45 58 50  ..    /// <b>EXP
20fd0 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20 2d 2d  ERIMENTAL</b> --
20fe0 0d 0a 20 20 20 20 2f 2f 2f 20 57 61 69 74 73 20  ..    /// Waits 
20ff0 66 6f 72 20 74 68 65 20 65 6e 6c 69 73 74 6d 65  for the enlistme
21000 6e 74 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  nt associated wi
21010 74 68 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69  th this connecti
21020 6f 6e 20 74 6f 20 62 65 20 72 65 73 65 74 2e 0d  on to be reset..
21030 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
21040 74 68 6f 64 20 61 6c 77 61 79 73 20 74 68 72 6f  thod always thro
21050 77 73 20 3c 73 65 65 20 63 72 65 66 3d 22 4e 6f  ws <see cref="No
21060 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
21070 70 74 69 6f 6e 22 20 2f 3e 20 77 68 65 6e 0d 0a  ption" /> when..
21080 20 20 20 20 2f 2f 2f 20 72 75 6e 6e 69 6e 67 20      /// running 
21090 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70  on the .NET Comp
210a0 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e 0d 0a  act Framework...
210b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
210c0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
210d0 61 6d 20 6e 61 6d 65 3d 22 74 69 6d 65 6f 75 74  am name="timeout
210e0 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 22 3e 0d 0a  Milliseconds">..
210f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 70 70 72      /// The appr
21100 6f 78 69 6d 61 74 65 20 6d 61 78 69 6d 75 6d 20  oximate maximum 
21110 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73  number of millis
21120 65 63 6f 6e 64 73 20 74 6f 20 77 61 69 74 20 62  econds to wait b
21130 65 66 6f 72 65 20 74 69 6d 69 6e 67 0d 0a 20 20  efore timing..  
21140 20 20 2f 2f 2f 20 6f 75 74 20 74 68 65 20 77 61    /// out the wa
21150 69 74 20 6f 70 65 72 61 74 69 6f 6e 2e 0d 0a 20  it operation... 
21160 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
21170 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
21180 6e 61 6d 65 3d 22 72 65 74 75 72 6e 4f 6e 44 69  name="returnOnDi
21190 73 70 6f 73 65 64 22 3e 0d 0a 20 20 20 20 2f 2f  sposed">..    //
211a0 2f 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  / The return val
211b0 75 65 20 74 6f 20 75 73 65 20 69 66 20 74 68 65  ue to use if the
211c0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 73 20   connection has 
211d0 62 65 65 6e 20 64 69 73 70 6f 73 65 64 3b 20 69  been disposed; i
211e0 66 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20  f this..    /// 
211f0 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 20 3c  value is null, <
21200 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74  see cref="Object
21210 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
21220 6e 22 20 2f 3e 20 77 69 6c 6c 20 62 65 20 72 61  n" /> will be ra
21230 69 73 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 69 66  ised..    /// if
21240 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
21250 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65  has been dispose
21260 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
21270 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
21280 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
21290 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
212a0 20 65 6e 6c 69 73 74 6d 65 6e 74 20 61 73 73 63   enlistment assc
212b0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
212c0 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 72  connection was r
212d0 65 73 65 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 6f  eset;..    /// o
212e0 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 20  therwise, zero. 
212f0 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f   It should be no
21300 74 65 64 20 74 68 61 74 20 74 68 69 73 20 6d 65  ted that this me
21310 74 68 6f 64 20 72 65 74 75 72 6e 69 6e 67 20 61  thod returning a
21320 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 6e 2d 7a 65  ..    /// non-ze
21330 72 6f 20 76 61 6c 75 65 20 64 6f 65 73 20 6e 6f  ro value does no
21340 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 67 75  t necessarily gu
21350 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65  arantee that the
21360 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
21370 20 2f 2f 2f 20 63 61 6e 20 65 6e 6c 69 73 74 20   /// can enlist 
21380 69 6e 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63  in a new transac
21390 74 69 6f 6e 20 28 69 2e 65 2e 20 64 75 65 20 74  tion (i.e. due t
213a0 6f 20 70 6f 74 65 6e 74 69 63 61 6c 20 72 61 63  o potentical rac
213b0 65 20 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f 20  e with..    /// 
213c0 6f 74 68 65 72 20 74 68 72 65 61 64 73 29 3b 20  other threads); 
213d0 74 68 65 72 65 66 6f 72 65 2c 20 63 61 6c 6c 65  therefore, calle
213e0 72 73 20 73 68 6f 75 6c 64 20 67 65 6e 65 72 61  rs should genera
213f0 6c 6c 79 20 75 73 65 20 74 72 79 2f 63 61 74 63  lly use try/catc
21400 68 0d 0a 20 20 20 20 2f 2f 2f 20 77 68 65 6e 20  h..    /// when 
21410 63 61 6c 6c 69 6e 67 20 74 68 65 20 3c 73 65 65  calling the <see
21420 20 63 72 65 66 3d 22 45 6e 6c 69 73 74 54 72 61   cref="EnlistTra
21430 6e 73 61 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74  nsaction" /> met
21440 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  hod...    /// </
21450 72 65 74 75 72 6e 73 3e 0d 0a 23 65 6c 73 65 0d  returns>..#else.
21460 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
21470 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 3e 45  y>..    /// <b>E
21480 58 50 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20  XPERIMENTAL</b> 
21490 2d 2d 0d 0a 20 20 20 20 2f 2f 2f 20 57 61 69 74  --..    /// Wait
214a0 73 20 66 6f 72 20 74 68 65 20 65 6e 6c 69 73 74  s for the enlist
214b0 6d 65 6e 74 20 61 73 73 6f 63 69 61 74 65 64 20  ment associated 
214c0 77 69 74 68 20 74 68 69 73 20 63 6f 6e 6e 65 63  with this connec
214d0 74 69 6f 6e 20 74 6f 20 62 65 20 72 65 73 65 74  tion to be reset
214e0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
214f0 6d 65 74 68 6f 64 20 61 6c 77 61 79 73 20 74 68  method always th
21500 72 6f 77 73 20 3c 73 65 65 20 63 72 65 66 3d 22  rows <see cref="
21510 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
21520 63 65 70 74 69 6f 6e 22 20 2f 3e 20 77 68 65 6e  ception" /> when
21530 0d 0a 20 20 20 20 2f 2f 2f 20 72 75 6e 6e 69 6e  ..    /// runnin
21540 67 20 6f 6e 20 74 68 65 20 2e 4e 45 54 20 43 6f  g on the .NET Co
21550 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 2e  mpact Framework.
21560 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
21570 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
21580 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69 6d 65 6f  aram name="timeo
21590 75 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 22 3e  utMilliseconds">
215a0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 70  ..    /// The ap
215b0 70 72 6f 78 69 6d 61 74 65 20 6d 61 78 69 6d 75  proximate maximu
215c0 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c  m number of mill
215d0 69 73 65 63 6f 6e 64 73 20 74 6f 20 77 61 69 74  iseconds to wait
215e0 20 62 65 66 6f 72 65 20 74 69 6d 69 6e 67 0d 0a   before timing..
215f0 20 20 20 20 2f 2f 2f 20 6f 75 74 20 74 68 65 20      /// out the 
21600 77 61 69 74 20 6f 70 65 72 61 74 69 6f 6e 2e 0d  wait operation..
21610 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
21620 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
21630 6d 20 6e 61 6d 65 3d 22 72 65 74 75 72 6e 4f 6e  m name="returnOn
21640 44 69 73 70 6f 73 65 64 22 3e 0d 0a 20 20 20 20  Disposed">..    
21650 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e 20 76  /// The return v
21660 61 6c 75 65 20 74 6f 20 75 73 65 20 69 66 20 74  alue to use if t
21670 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  he connection ha
21680 73 20 62 65 65 6e 20 64 69 73 70 6f 73 65 64 3b  s been disposed;
21690 20 69 66 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f   if this..    //
216a0 2f 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c  / value is null,
216b0 20 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65   <see cref="Obje
216c0 63 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74  ctDisposedExcept
216d0 69 6f 6e 22 20 2f 3e 20 77 69 6c 6c 20 62 65 20  ion" /> will be 
216e0 72 61 69 73 65 64 0d 0a 20 20 20 20 2f 2f 2f 20  raised..    /// 
216f0 69 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  if the connectio
21700 6e 20 68 61 73 20 62 65 65 6e 20 64 69 73 70 6f  n has been dispo
21710 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  sed...    /// </
21720 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
21730 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
21740 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
21750 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74 20 61 73  he enlistment as
21760 73 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  sciated with thi
21770 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  s connection was
21780 20 72 65 73 65 74 3b 0d 0a 20 20 20 20 2f 2f 2f   reset;..    ///
21790 20 6f 74 68 65 72 77 69 73 65 2c 20 7a 65 72 6f   otherwise, zero
217a0 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20  .  It should be 
217b0 6e 6f 74 65 64 20 74 68 61 74 20 74 68 69 73 20  noted that this 
217c0 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 69 6e 67  method returning
217d0 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 6e 6f 6e 2d   a..    /// non-
217e0 7a 65 72 6f 20 76 61 6c 75 65 20 64 6f 65 73 20  zero value does 
217f0 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20  not necessarily 
21800 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 74  guarantee that t
21810 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20  he connection.. 
21820 20 20 20 2f 2f 2f 20 63 61 6e 20 65 6e 6c 69 73     /// can enlis
21830 74 20 69 6e 20 61 20 6e 65 77 20 74 72 61 6e 73  t in a new trans
21840 61 63 74 69 6f 6e 20 28 69 2e 65 2e 20 64 75 65  action (i.e. due
21850 20 74 6f 20 70 6f 74 65 6e 74 69 63 61 6c 20 72   to potentical r
21860 61 63 65 20 77 69 74 68 0d 0a 20 20 20 20 2f 2f  ace with..    //
21870 2f 20 6f 74 68 65 72 20 74 68 72 65 61 64 73 29  / other threads)
21880 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 63 61 6c  ; therefore, cal
21890 6c 65 72 73 20 73 68 6f 75 6c 64 20 67 65 6e 65  lers should gene
218a0 72 61 6c 6c 79 20 75 73 65 20 74 72 79 2f 63 61  rally use try/ca
218b0 74 63 68 0d 0a 20 20 20 20 2f 2f 2f 20 77 68 65  tch..    /// whe
218c0 6e 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 45 6e  n calling the En
218d0 6c 69 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 20  listTransaction 
218e0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f 2f  method...    ///
218f0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 23 65 6e   </returns>..#en
21900 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  dif..    public 
21910 62 6f 6f 6c 20 57 61 69 74 46 6f 72 45 6e 6c 69  bool WaitForEnli
21920 73 74 6d 65 6e 74 52 65 73 65 74 28 0d 0a 20 20  stmentReset(..  
21930 20 20 20 20 20 20 69 6e 74 20 74 69 6d 65 6f 75        int timeou
21940 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 2c 0d 0a  tMilliseconds,..
21950 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 72 65          bool? re
21960 74 75 72 6e 4f 6e 44 69 73 70 6f 73 65 64 0d 0a  turnOnDisposed..
21970 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
21980 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 72 65  ..        if (re
21990 74 75 72 6e 4f 6e 44 69 73 70 6f 73 65 64 20 3d  turnOnDisposed =
219a0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
219b0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
219c0 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 65  ed();..        e
219d0 6c 73 65 20 69 66 28 64 69 73 70 6f 73 65 64 29  lse if(disposed)
219e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
219f0 74 75 72 6e 20 28 62 6f 6f 6c 29 72 65 74 75 72  turn (bool)retur
21a00 6e 4f 6e 44 69 73 70 6f 73 65 64 3b 0d 0a 0d 0a  nOnDisposed;....
21a10 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21a20 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21a30 20 20 20 20 20 20 20 20 69 66 20 28 74 69 6d 65          if (time
21a40 6f 75 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  outMilliseconds 
21a50 3c 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  < 0)..          
21a60 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
21a70 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 74  mentException("t
21a80 69 6d 65 6f 75 74 20 63 61 6e 6e 6f 74 20 62 65  imeout cannot be
21a90 20 6e 65 67 61 74 69 76 65 22 29 3b 0d 0a 0d 0a   negative");....
21aa0 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 69 6e          const in
21ab0 74 20 64 65 66 61 75 6c 74 4d 69 6c 6c 69 73 65  t defaultMillise
21ac0 63 6f 6e 64 73 20 3d 20 31 30 30 3b 0d 0a 20 20  conds = 100;..  
21ad0 20 20 20 20 20 20 69 6e 74 20 73 6c 65 65 70 4d        int sleepM
21ae0 69 6c 6c 69 73 65 63 6f 6e 64 73 3b 0d 0a 0d 0a  illiseconds;....
21af0 20 20 20 20 20 20 20 20 69 66 20 28 74 69 6d 65          if (time
21b00 6f 75 74 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  outMilliseconds 
21b10 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 7b  == 0)..        {
21b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 6c  ..            sl
21b30 65 65 70 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  eepMilliseconds 
21b40 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  = 0;..        }.
21b50 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
21b60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21b70 20 20 20 20 20 20 73 6c 65 65 70 4d 69 6c 6c 69        sleepMilli
21b80 73 65 63 6f 6e 64 73 20 3d 20 4d 61 74 68 2e 4d  seconds = Math.M
21b90 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  in(..           
21ba0 20 20 20 20 20 74 69 6d 65 6f 75 74 4d 69 6c 6c       timeoutMill
21bb0 69 73 65 63 6f 6e 64 73 20 2f 20 31 30 2c 20 64  iseconds / 10, d
21bc0 65 66 61 75 6c 74 4d 69 6c 6c 69 73 65 63 6f 6e  efaultMillisecon
21bd0 64 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ds);....        
21be0 20 20 20 20 69 66 20 28 73 6c 65 65 70 4d 69 6c      if (sleepMil
21bf0 6c 69 73 65 63 6f 6e 64 73 20 3d 3d 20 30 29 0d  liseconds == 0).
21c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21c10 20 73 6c 65 65 70 4d 69 6c 6c 69 73 65 63 6f 6e   sleepMillisecon
21c20 64 73 20 3d 20 64 65 66 61 75 6c 74 4d 69 6c 6c  ds = defaultMill
21c30 69 73 65 63 6f 6e 64 73 3b 0d 0a 20 20 20 20 20  iseconds;..     
21c40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
21c50 44 61 74 65 54 69 6d 65 20 73 74 61 72 74 20 3d  DateTime start =
21c60 20 44 61 74 65 54 69 6d 65 2e 55 74 63 4e 6f 77   DateTime.UtcNow
21c70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69  ;....        whi
21c80 6c 65 20 28 74 72 75 65 29 0d 0a 20 20 20 20 20  le (true)..     
21c90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
21ca0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
21cb0 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 74 65 6d    // NOTE: Attem
21cc0 70 74 20 74 6f 20 61 63 71 75 69 72 65 20 74 68  pt to acquire th
21cd0 65 20 6e 65 63 65 73 73 61 72 79 20 6c 6f 63 6b  e necessary lock
21ce0 20 77 69 74 68 6f 75 74 20 62 6c 6f 63 6b 69 6e   without blockin
21cf0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
21d00 2f 2f 20 20 20 20 20 20 20 54 68 69 73 20 6d 65  //       This me
21d10 74 68 6f 64 20 77 69 6c 6c 20 74 72 65 61 74 20  thod will treat 
21d20 61 20 66 61 69 6c 75 72 65 20 74 6f 20 6f 62 74  a failure to obt
21d30 61 69 6e 20 74 68 65 20 6c 6f 63 6b 20 74 68 65  ain the lock the
21d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
21d50 20 20 20 20 20 20 20 73 61 6d 65 20 61 73 20 74         same as t
21d60 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74 20 6e 6f  he enlistment no
21d70 74 20 62 65 69 6e 67 20 72 65 73 65 74 20 79 65  t being reset ye
21d80 74 2e 20 20 42 6f 74 68 20 77 69 6c 6c 0d 0a 20  t.  Both will.. 
21d90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
21da0 20 20 20 20 61 64 76 61 6e 63 65 20 74 6f 77 61      advance towa
21db0 72 64 20 74 68 65 20 74 69 6d 65 6f 75 74 2e 0d  rd the timeout..
21dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
21dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
21de0 6c 20 6c 6f 63 6b 65 64 20 3d 20 4d 6f 6e 69 74  l locked = Monit
21df0 6f 72 2e 54 72 79 45 6e 74 65 72 28 5f 65 6e 6c  or.TryEnter(_enl
21e00 69 73 74 6d 65 6e 74 53 79 6e 63 52 6f 6f 74 29  istmentSyncRoot)
21e10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21e20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
21e30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21e40 20 20 20 20 20 69 66 20 28 6c 6f 63 6b 65 64 29       if (locked)
21e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21e60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21e70 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
21e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e90 20 2f 2f 20 4e 4f 54 45 3a 20 49 73 20 74 68 65   // NOTE: Is the
21ea0 72 65 20 73 74 69 6c 6c 20 61 6e 20 65 6e 6c 69  re still an enli
21eb0 73 74 6d 65 6e 74 3f 20 20 49 66 20 6e 6f 74 2c  stment?  If not,
21ec0 20 77 65 20 61 72 65 0d 0a 20 20 20 20 20 20 20   we are..       
21ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
21ee0 20 20 20 20 20 20 64 6f 6e 65 2e 20 20 54 68 65        done.  The
21ef0 72 65 20 69 73 20 61 20 70 6f 74 65 6e 74 69 61  re is a potentia
21f00 6c 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e  l race condition
21f10 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20   in..           
21f20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
21f30 20 20 74 68 65 20 63 61 6c 6c 65 72 20 69 66 20    the caller if 
21f40 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 20 69  another thread i
21f50 73 20 61 62 6c 65 20 74 6f 20 73 65 74 75 70 0d  s able to setup.
21f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21f70 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 20       //       a 
21f80 6e 65 77 20 65 6e 6c 69 73 74 6d 65 6e 74 20 61  new enlistment a
21f90 74 20 61 6e 79 20 70 6f 69 6e 74 20 70 72 69 6f  t any point prio
21fa0 72 20 74 6f 20 6f 75 72 0d 0a 20 20 20 20 20 20  r to our..      
21fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
21fc0 20 20 20 20 20 20 20 63 61 6c 6c 65 72 20 66 75         caller fu
21fd0 6c 6c 79 20 64 65 61 6c 69 6e 67 20 77 69 74 68  lly dealing with
21fe0 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
21ff0 68 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  his..           
22000 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
22010 20 20 6d 65 74 68 6f 64 2e 20 20 48 6f 77 65 76    method.  Howev
22020 65 72 2c 20 74 68 61 74 20 73 68 6f 75 6c 64 20  er, that should 
22030 67 65 6e 65 72 61 6c 6c 79 20 6e 65 76 65 72 0d  generally never.
22040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22050 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61       //       ha
22060 70 70 65 6e 20 62 65 63 61 75 73 65 20 74 68 69  ppen because thi
22070 73 20 63 6c 61 73 73 20 69 73 20 6e 6f 74 20 69  s class is not i
22080 6e 74 65 6e 64 65 64 20 74 6f 0d 0a 20 20 20 20  ntended to..    
22090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220a0 2f 2f 20 20 20 20 20 20 20 62 65 20 75 73 65 64  //       be used
220b0 20 62 79 20 6d 75 6c 74 69 70 6c 65 20 63 6f 6e   by multiple con
220c0 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 73 2c  current threads,
220d0 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20   with..         
220e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
220f0 20 20 20 20 74 68 65 20 6e 6f 74 61 62 6c 65 20      the notable 
22100 65 78 63 65 70 74 69 6f 6e 20 6f 66 20 61 6e 20  exception of an 
22110 61 63 74 69 76 65 20 65 6e 6c 69 73 74 6d 65 6e  active enlistmen
22120 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
22130 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
22140 62 65 69 6e 67 20 61 73 79 6e 63 68 72 6f 6e 6f  being asynchrono
22150 75 73 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f  usly committed o
22160 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 0d 0a 20  r rolled back.. 
22170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22180 20 20 20 2f 2f 20 20 20 20 20 20 20 62 79 20 74     //       by t
22190 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
221a0 6b 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k...            
221b0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
221c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221d0 69 66 20 28 5f 65 6e 6c 69 73 74 6d 65 6e 74 20  if (_enlistment 
221e0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
221f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22200 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
22210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22220 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
22230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
22240 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
22250 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22260 20 20 20 20 20 20 69 66 20 28 6c 6f 63 6b 65 64        if (locked
22270 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22280 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22290 20 20 20 20 20 20 20 20 20 20 4d 6f 6e 69 74 6f            Monito
222a0 72 2e 45 78 69 74 28 5f 65 6e 6c 69 73 74 6d 65  r.Exit(_enlistme
222b0 6e 74 53 79 6e 63 52 6f 6f 74 29 3b 0d 0a 20 20  ntSyncRoot);..  
222c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222d0 20 20 6c 6f 63 6b 65 64 20 3d 20 66 61 6c 73 65    locked = false
222e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
222f0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22300 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
22310 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
22320 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 20 74 69     // NOTE: A ti
22330 6d 65 6f 75 74 20 76 61 6c 75 65 20 6f 66 20 7a  meout value of z
22340 65 72 6f 20 69 73 20 73 70 65 63 69 61 6c 2e 20  ero is special. 
22350 20 49 74 20 6d 65 61 6e 73 20 6e 65 76 65 72 0d   It means never.
22360 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
22370 20 20 20 20 20 20 73 6c 65 65 70 2e 0d 0a 20 20        sleep...  
22380 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
22390 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 6c            if (sl
223a0 65 65 70 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  eepMilliseconds 
223b0 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
223c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
223d0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
223e0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
223f0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 48 6f 77      // NOTE: How
22400 20 6d 75 63 68 20 74 69 6d 65 20 68 61 73 20 65   much time has e
22410 6c 61 70 73 65 64 20 73 69 6e 63 65 20 77 65 20  lapsed since we 
22420 66 69 72 73 74 20 73 74 61 72 74 69 6e 67 0d 0a  first starting..
22430 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
22440 20 20 20 20 20 77 61 69 74 69 6e 67 3f 0d 0a 20       waiting?.. 
22450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
22460 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
22470 69 6d 65 20 6e 6f 77 20 3d 20 44 61 74 65 54 69  ime now = DateTi
22480 6d 65 2e 55 74 63 4e 6f 77 3b 0d 0a 20 20 20 20  me.UtcNow;..    
22490 20 20 20 20 20 20 20 20 54 69 6d 65 53 70 61 6e          TimeSpan
224a0 20 65 6c 61 70 73 65 64 20 3d 20 6e 6f 77 2e 53   elapsed = now.S
224b0 75 62 74 72 61 63 74 28 73 74 61 72 74 29 3b 0d  ubtract(start);.
224c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
224d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
224e0 2f 20 4e 4f 54 45 3a 20 41 72 65 20 77 65 20 64  / NOTE: Are we d
224f0 6f 6e 65 20 77 61 69 74 3f 0d 0a 20 20 20 20 20  one wait?..     
22500 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
22510 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 74 6f         double to
22520 74 61 6c 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  talMilliseconds 
22530 3d 20 65 6c 61 70 73 65 64 2e 54 6f 74 61 6c 4d  = elapsed.TotalM
22540 69 6c 6c 69 73 65 63 6f 6e 64 73 3b 0d 0a 0d 0a  illiseconds;....
22550 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22560 28 74 6f 74 61 6c 4d 69 6c 6c 69 73 65 63 6f 6e  (totalMillisecon
22570 64 73 20 3c 20 30 29 20 7c 7c 20 2f 2a 20 54 69  ds < 0) || /* Ti
22580 6d 65 20 77 65 6e 74 20 62 61 63 6b 77 61 72 64  me went backward
22590 3f 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ? */..          
225a0 20 20 20 20 20 20 28 74 6f 74 61 6c 4d 69 6c 6c        (totalMill
225b0 69 73 65 63 6f 6e 64 73 20 3e 3d 20 28 64 6f 75  iseconds >= (dou
225c0 62 6c 65 29 74 69 6d 65 6f 75 74 4d 69 6c 6c 69  ble)timeoutMilli
225d0 73 65 63 6f 6e 64 73 29 29 0d 0a 20 20 20 20 20  seconds))..     
225e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
225f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
22600 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
22610 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
22620 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
22630 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
22640 6c 65 65 70 20 66 6f 72 20 61 20 62 69 74 20 61  leep for a bit a
22650 6e 64 20 74 68 65 6e 20 74 72 79 20 61 67 61 69  nd then try agai
22660 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
22670 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
22680 54 68 72 65 61 64 2e 53 6c 65 65 70 28 73 6c 65  Thread.Sleep(sle
22690 65 70 4d 69 6c 6c 69 73 65 63 6f 6e 64 73 29 3b  epMilliseconds);
226a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c  ..        }..#el
226b0 73 65 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f  se..        thro
226c0 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65  w new NotImpleme
226d0 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b  ntedException();
226e0 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 0d  ..#endif..    }.
226f0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
22700 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4c 6f  ary>..    /// Lo
22710 6f 6b 73 20 66 6f 72 20 61 20 6b 65 79 20 69 6e  oks for a key in
22720 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 6b 65   the array of ke
22730 79 2f 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20  y/values of the 
22740 70 61 72 61 6d 65 74 65 72 20 73 74 72 69 6e 67  parameter string
22750 2e 20 20 49 66 20 6e 6f 74 20 66 6f 75 6e 64 2c  .  If not found,
22760 20 72 65 74 75 72 6e 20 74 68 65 20 73 70 65 63   return the spec
22770 69 66 69 65 64 20 64 65 66 61 75 6c 74 20 76 61  ified default va
22780 6c 75 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  lue..    /// </s
22790 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
227a0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 74   <param name="it
227b0 65 6d 73 22 3e 54 68 65 20 6c 69 73 74 20 74 6f  ems">The list to
227c0 20 6c 6f 6f 6b 20 69 6e 3c 2f 70 61 72 61 6d 3e   look in</param>
227d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
227e0 20 6e 61 6d 65 3d 22 6b 65 79 22 3e 54 68 65 20   name="key">The 
227f0 6b 65 79 20 74 6f 20 66 69 6e 64 3c 2f 70 61 72  key to find</par
22800 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
22810 72 61 6d 20 6e 61 6d 65 3d 22 64 65 66 56 61 6c  ram name="defVal
22820 75 65 22 3e 54 68 65 20 64 65 66 61 75 6c 74 20  ue">The default 
22830 76 61 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20  value to return 
22840 69 66 20 74 68 65 20 6b 65 79 20 69 73 20 6e 6f  if the key is no
22850 74 20 66 6f 75 6e 64 3c 2f 70 61 72 61 6d 3e 0d  t found</param>.
22860 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
22870 73 3e 54 68 65 20 76 61 6c 75 65 20 63 6f 72 72  s>The value corr
22880 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65  esponding to the
22890 20 73 70 65 63 69 66 69 65 64 20 6b 65 79 2c 20   specified key, 
228a0 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  or the default v
228b0 61 6c 75 65 20 69 66 20 6e 6f 74 20 66 6f 75 6e  alue if not foun
228c0 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  d.</returns>..  
228d0 20 20 73 74 61 74 69 63 20 69 6e 74 65 72 6e 61    static interna
228e0 6c 20 73 74 72 69 6e 67 20 46 69 6e 64 4b 65 79  l string FindKey
228f0 28 53 6f 72 74 65 64 4c 69 73 74 3c 73 74 72 69  (SortedList<stri
22900 6e 67 2c 20 73 74 72 69 6e 67 3e 20 69 74 65 6d  ng, string> item
22910 73 2c 20 73 74 72 69 6e 67 20 6b 65 79 2c 20 73  s, string key, s
22920 74 72 69 6e 67 20 64 65 66 56 61 6c 75 65 29 0d  tring defValue).
22930 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 73 74  .    {..      st
22940 72 69 6e 67 20 72 65 74 3b 0d 0a 0d 0a 20 20 20  ring ret;....   
22950 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
22960 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6b 65 79 29  NullOrEmpty(key)
22970 29 20 72 65 74 75 72 6e 20 64 65 66 56 61 6c 75  ) return defValu
22980 65 3b 0d 0a 20 20 20 20 20 20 69 66 20 28 69 74  e;..      if (it
22990 65 6d 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  ems.TryGetValue(
229a0 6b 65 79 2c 20 6f 75 74 20 72 65 74 29 29 20 72  key, out ret)) r
229b0 65 74 75 72 6e 20 72 65 74 3b 0d 0a 20 20 20 20  eturn ret;..    
229c0 20 20 69 66 20 28 69 74 65 6d 73 2e 54 72 79 47    if (items.TryG
229d0 65 74 56 61 6c 75 65 28 6b 65 79 2e 52 65 70 6c  etValue(key.Repl
229e0 61 63 65 28 22 20 22 2c 20 53 74 72 69 6e 67 2e  ace(" ", String.
229f0 45 6d 70 74 79 29 2c 20 6f 75 74 20 72 65 74 29  Empty), out ret)
22a00 29 20 72 65 74 75 72 6e 20 72 65 74 3b 0d 0a 20  ) return ret;.. 
22a10 20 20 20 20 20 69 66 20 28 69 74 65 6d 73 2e 54       if (items.T
22a20 72 79 47 65 74 56 61 6c 75 65 28 6b 65 79 2e 52  ryGetValue(key.R
22a30 65 70 6c 61 63 65 28 22 20 22 2c 20 22 5f 22 29  eplace(" ", "_")
22a40 2c 20 6f 75 74 20 72 65 74 29 29 20 72 65 74 75  , out ret)) retu
22a50 72 6e 20 72 65 74 3b 0d 0a 0d 0a 20 20 20 20 20  rn ret;....     
22a60 20 72 65 74 75 72 6e 20 64 65 66 56 61 6c 75 65   return defValue
22a70 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
22a80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
22a90 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
22aa0 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 73  to convert the s
22ab0 74 72 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 61  tring value to a
22ac0 6e 20 65 6e 75 6d 65 72 61 74 65 64 20 76 61 6c  n enumerated val
22ad0 75 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ue of the specif
22ae0 69 65 64 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f  ied type...    /
22af0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
22b00 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
22b10 6d 65 3d 22 74 79 70 65 22 3e 54 68 65 20 65 6e  me="type">The en
22b20 75 6d 65 72 61 74 65 64 20 74 79 70 65 20 74 6f  umerated type to
22b30 20 63 6f 6e 76 65 72 74 20 74 68 65 20 73 74 72   convert the str
22b40 69 6e 67 20 76 61 6c 75 65 20 74 6f 2e 3c 2f 70  ing value to.</p
22b50 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
22b60 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
22b70 65 22 3e 54 68 65 20 73 74 72 69 6e 67 20 76 61  e">The string va
22b80 6c 75 65 20 74 6f 20 62 65 20 63 6f 6e 76 65 72  lue to be conver
22b90 74 65 64 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ted.</param>..  
22ba0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
22bb0 65 3d 22 69 67 6e 6f 72 65 43 61 73 65 22 3e 4e  e="ignoreCase">N
22bc0 6f 6e 2d 7a 65 72 6f 20 74 6f 20 6d 61 6b 65 20  on-zero to make 
22bd0 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 63  the conversion c
22be0 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 2e  ase-insensitive.
22bf0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
22c00 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 65  / <returns>The e
22c10 6e 75 6d 65 72 61 74 65 64 20 76 61 6c 75 65 20  numerated value 
22c20 75 70 6f 6e 20 73 75 63 63 65 73 73 20 6f 72 20  upon success or 
22c30 6e 75 6c 6c 20 75 70 6f 6e 20 65 72 72 6f 72 2e  null upon error.
22c40 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
22c50 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
22c60 6f 62 6a 65 63 74 20 54 72 79 50 61 72 73 65 45  object TryParseE
22c70 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 54 79  num(..        Ty
22c80 70 65 20 74 79 70 65 2c 0d 0a 20 20 20 20 20 20  pe type,..      
22c90 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d    string value,.
22ca0 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 69 67  .        bool ig
22cb0 6e 6f 72 65 43 61 73 65 0d 0a 20 20 20 20 20 20  noreCase..      
22cc0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
22cd0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
22ce0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 76 61  IsNullOrEmpty(va
22cf0 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
22d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
22d10 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
22d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22d30 20 20 72 65 74 75 72 6e 20 45 6e 75 6d 2e 50 61    return Enum.Pa
22d40 72 73 65 28 74 79 70 65 2c 20 76 61 6c 75 65 2c  rse(type, value,
22d50 20 69 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20   ignoreCase);.. 
22d60 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
22d70 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
22d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
22d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22da0 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
22db0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22dc0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
22dd0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
22de0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
22df0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
22e00 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74    /// Attempts t
22e10 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 69 6e 70  o convert an inp
22e20 75 74 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61  ut string into a
22e30 20 62 79 74 65 20 76 61 6c 75 65 2e 0d 0a 20 20   byte value...  
22e40 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
22e50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
22e60 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
22e70 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69      /// The stri
22e80 6e 67 20 76 61 6c 75 65 20 74 6f 20 62 65 20 63  ng value to be c
22e90 6f 6e 76 65 72 74 65 64 2e 0d 0a 20 20 20 20 2f  onverted...    /
22ea0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
22eb0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
22ec0 3d 22 73 74 79 6c 65 22 3e 0d 0a 20 20 20 20 2f  ="style">..    /
22ed0 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 73 74  // The number st
22ee0 79 6c 65 73 20 74 6f 20 75 73 65 20 66 6f 72 20  yles to use for 
22ef0 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d  the conversion..
22f00 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
22f10 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
22f20 6d 20 6e 61 6d 65 3d 22 72 65 73 75 6c 74 22 3e  m name="result">
22f30 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73  ..    /// Upon s
22f40 75 63 65 73 73 2c 20 74 68 69 73 20 77 69 6c 6c  ucess, this will
22f50 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 70 61 72   contain the par
22f60 73 65 64 20 62 79 74 65 20 76 61 6c 75 65 2e 0d  sed byte value..
22f70 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61  .    /// Upon fa
22f80 69 6c 75 72 65 2c 20 74 68 65 20 76 61 6c 75 65  ilure, the value
22f90 20 6f 66 20 74 68 69 73 20 70 61 72 61 6d 65 74   of this paramet
22fa0 65 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e  er is undefined.
22fb0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
22fc0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
22fd0 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
22fe0 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e 20 73 75 63  on-zero upon suc
22ff0 63 65 73 73 3b 20 7a 65 72 6f 20 6f 6e 20 66 61  cess; zero on fa
23000 69 6c 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ilure...    /// 
23010 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
23020 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
23030 6f 6f 6c 20 54 72 79 50 61 72 73 65 42 79 74 65  ool TryParseByte
23040 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
23050 67 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  g value,..      
23060 20 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 20 73    NumberStyles s
23070 74 79 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 6f  tyle,..        o
23080 75 74 20 62 79 74 65 20 72 65 73 75 6c 74 0d 0a  ut byte result..
23090 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
230a0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
230b0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
230c0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
230d0 20 62 79 74 65 2e 54 72 79 50 61 72 73 65 28 76   byte.TryParse(v
230e0 61 6c 75 65 2c 20 73 74 79 6c 65 2c 20 6e 75 6c  alue, style, nul
230f0 6c 2c 20 6f 75 74 20 72 65 73 75 6c 74 29 3b 0d  l, out result);.
23100 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
23110 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
23120 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
23130 6c 74 20 3d 20 62 79 74 65 2e 50 61 72 73 65 28  lt = byte.Parse(
23140 76 61 6c 75 65 2c 20 73 74 79 6c 65 29 3b 0d 0a  value, style);..
23150 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23160 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
23170 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
23180 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
23190 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
231a0 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  t = 0;..        
231b0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
231c0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
231d0 6e 64 69 66 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ndif..    }.... 
231e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
231f0 0d 0a 20 20 20 20 2f 2f 2f 20 43 68 61 6e 67 65  ..    /// Change
23200 20 61 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   a configuration
23210 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 20 66 6f   option value fo
23220 72 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d  r the database..
23230 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
23240 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
23250 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 74 69 6f 6e  ram name="option
23260 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
23270 64 61 74 61 62 61 73 65 20 63 6f 6e 66 69 67 75  database configu
23280 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 74 6f  ration option to
23290 20 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20 2f 2f   change...    //
232a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
232b0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
232c0 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  "value">..    //
232d0 2f 20 54 68 65 20 6e 65 77 20 76 61 6c 75 65 20  / The new value 
232e0 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
232f0 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  d configuration 
23300 6f 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  option...    ///
23310 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70   </param>..    p
23320 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 43 6f  ublic void SetCo
23330 6e 66 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f  nfigurationOptio
23340 6e 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  n(..        SQLi
23350 74 65 43 6f 6e 66 69 67 44 62 4f 70 73 45 6e 75  teConfigDbOpsEnu
23360 6d 20 6f 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  m option,..     
23370 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d     object value.
23380 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
23390 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b  {..        Check
233a0 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
233b0 20 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20         if (_sql 
233c0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
233d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
233e0 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
233f0 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
23400 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
23410 20 20 20 20 20 20 20 22 44 61 74 61 62 61 73 65         "Database
23420 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20   connection not 
23430 76 61 6c 69 64 20 66 6f 72 20 63 68 61 6e 67 69  valid for changi
23440 6e 67 20 61 20 63 6f 6e 66 69 67 75 72 61 74 69  ng a configurati
23450 6f 6e 20 6f 70 74 69 6f 6e 2e 22 29 3b 0d 0a 20  on option.");.. 
23460 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
23470 20 20 20 20 69 66 20 28 28 6f 70 74 69 6f 6e 20      if ((option 
23480 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44  == SQLiteConfigD
23490 62 4f 70 73 45 6e 75 6d 2e 53 51 4c 49 54 45 5f  bOpsEnum.SQLITE_
234a0 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
234b0 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 29 20  LOAD_EXTENSION) 
234c0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
234d0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61  HelperMethods.Ha
234e0 73 46 6c 61 67 73 28 5f 66 6c 61 67 73 2c 20 53  sFlags(_flags, S
234f0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
23500 6c 61 67 73 2e 4e 6f 4c 6f 61 64 45 78 74 65 6e  lags.NoLoadExten
23510 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20 20  sion))..        
23520 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
23530 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45  hrow new SQLiteE
23540 78 63 65 70 74 69 6f 6e 28 22 4c 6f 61 64 69 6e  xception("Loadin
23550 67 20 65 78 74 65 6e 73 69 6f 6e 73 20 69 73 20  g extensions is 
23560 64 69 73 61 62 6c 65 64 20 66 6f 72 20 74 68 69  disabled for thi
23570 73 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  s database conne
23580 63 74 69 6f 6e 2e 22 29 3b 0d 0a 20 20 20 20 20  ction.");..     
23590 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
235a0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
235b0 72 63 20 3d 20 5f 73 71 6c 2e 53 65 74 43 6f 6e  rc = _sql.SetCon
235c0 66 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f 6e  figurationOption
235d0 28 6f 70 74 69 6f 6e 2c 20 76 61 6c 75 65 29 3b  (option, value);
235e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
235f0 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  rc != SQLiteErro
23600 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20  rCode.Ok)..     
23610 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
23620 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
23630 28 72 63 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20  (rc, null);..   
23640 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
23650 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
23660 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61   Enables or disa
23670 62 6c 65 64 20 65 78 74 65 6e 73 69 6f 6e 20 6c  bled extension l
23680 6f 61 64 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f  oading...    ///
23690 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
236a0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
236b0 3d 22 65 6e 61 62 6c 65 22 3e 0d 0a 20 20 20 20  ="enable">..    
236c0 2f 2f 2f 20 54 72 75 65 20 74 6f 20 65 6e 61 62  /// True to enab
236d0 6c 65 20 6c 6f 61 64 69 6e 67 20 6f 66 20 65 78  le loading of ex
236e0 74 65 6e 73 69 6f 6e 73 2c 20 66 61 6c 73 65 20  tensions, false 
236f0 74 6f 20 64 69 73 61 62 6c 65 2e 0d 0a 20 20 20  to disable...   
23700 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
23710 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 45     public void E
23720 6e 61 62 6c 65 45 78 74 65 6e 73 69 6f 6e 73 28  nableExtensions(
23730 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65  ..        bool e
23740 6e 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 29  nable..        )
23750 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
23760 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
23770 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
23780 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
23790 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
237a0 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
237b0 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
237c0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
237d0 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
237e0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
237f0 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
23800 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
23810 20 20 20 20 20 20 20 20 20 20 22 44 61 74 61 62            "Datab
23820 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e  ase connection n
23830 6f 74 20 76 61 6c 69 64 20 66 6f 72 20 7b 30 7d  ot valid for {0}
23840 20 65 78 74 65 6e 73 69 6f 6e 73 2e 22 2c 0d 0a   extensions.",..
23850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23860 65 6e 61 62 6c 65 20 3f 20 22 65 6e 61 62 6c 69  enable ? "enabli
23870 6e 67 22 20 3a 20 22 64 69 73 61 62 6c 69 6e 67  ng" : "disabling
23880 22 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  "));....        
23890 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64  if (HelperMethod
238a0 73 2e 48 61 73 46 6c 61 67 73 28 5f 66 6c 61 67  s.HasFlags(_flag
238b0 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  s, SQLiteConnect
238c0 69 6f 6e 46 6c 61 67 73 2e 4e 6f 4c 6f 61 64 45  ionFlags.NoLoadE
238d0 78 74 65 6e 73 69 6f 6e 29 29 0d 0a 20 20 20 20  xtension))..    
238e0 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
238f0 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
23900 6e 28 22 4c 6f 61 64 69 6e 67 20 65 78 74 65 6e  n("Loading exten
23910 73 69 6f 6e 73 20 69 73 20 64 69 73 61 62 6c 65  sions is disable
23920 64 20 66 6f 72 20 74 68 69 73 20 64 61 74 61 62  d for this datab
23930 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22  ase connection."
23940 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5f 73  );....        _s
23950 71 6c 2e 53 65 74 4c 6f 61 64 45 78 74 65 6e 73  ql.SetLoadExtens
23960 69 6f 6e 28 65 6e 61 62 6c 65 29 3b 0d 0a 20 20  ion(enable);..  
23970 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
23980 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
23990 2f 20 4c 6f 61 64 73 20 61 20 53 51 4c 69 74 65  / Loads a SQLite
239a0 20 65 78 74 65 6e 73 69 6f 6e 20 6c 69 62 72 61   extension libra
239b0 72 79 20 66 72 6f 6d 20 74 68 65 20 6e 61 6d 65  ry from the name
239c0 64 20 64 79 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c  d dynamic link l
239d0 69 62 72 61 72 79 20 66 69 6c 65 2e 0d 0a 20 20  ibrary file...  
239e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
239f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
23a00 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d 65 22   name="fileName"
23a10 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  >..    /// The n
23a20 61 6d 65 20 6f 66 20 74 68 65 20 64 79 6e 61 6d  ame of the dynam
23a30 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72 79 20  ic link library 
23a40 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  file containing 
23a50 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a  the extension...
23a60 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
23a70 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
23a80 64 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28  d LoadExtension(
23a90 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
23aa0 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20   fileName..     
23ab0 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
23ac0 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
23ad0 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
23ae0 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28 66   LoadExtension(f
23af0 69 6c 65 4e 61 6d 65 2c 20 6e 75 6c 6c 29 3b 0d  ileName, null);.
23b00 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
23b10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
23b20 20 2f 2f 2f 20 4c 6f 61 64 73 20 61 20 53 51 4c   /// Loads a SQL
23b30 69 74 65 20 65 78 74 65 6e 73 69 6f 6e 20 6c 69  ite extension li
23b40 62 72 61 72 79 20 66 72 6f 6d 20 74 68 65 20 6e  brary from the n
23b50 61 6d 65 64 20 64 79 6e 61 6d 69 63 20 6c 69 6e  amed dynamic lin
23b60 6b 20 6c 69 62 72 61 72 79 20 66 69 6c 65 2e 0d  k library file..
23b70 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
23b80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
23b90 72 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61  ram name="fileNa
23ba0 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  me">..    /// Th
23bb0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 79  e name of the dy
23bc0 6e 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61  namic link libra
23bd0 72 79 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69  ry file containi
23be0 6e 67 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e  ng the extension
23bf0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
23c00 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
23c10 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 4e 61  ram name="procNa
23c20 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  me">..    /// Th
23c30 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78  e name of the ex
23c40 70 6f 72 74 65 64 20 66 75 6e 63 74 69 6f 6e 20  ported function 
23c50 75 73 65 64 20 74 6f 20 69 6e 69 74 69 61 6c 69  used to initiali
23c60 7a 65 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e  ze the extension
23c70 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 6e 75  ...    /// If nu
23c80 6c 6c 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20  ll, the default 
23c90 22 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69  "sqlite3_extensi
23ca0 6f 6e 5f 69 6e 69 74 22 20 77 69 6c 6c 20 62 65  on_init" will be
23cb0 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20   used...    /// 
23cc0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75  </param>..    pu
23cd0 62 6c 69 63 20 76 6f 69 64 20 4c 6f 61 64 45 78  blic void LoadEx
23ce0 74 65 6e 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20  tension(..      
23cf0 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
23d00 65 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e,..        stri
23d10 6e 67 20 70 72 6f 63 4e 61 6d 65 0d 0a 20 20 20  ng procName..   
23d20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
23d30 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
23d40 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
23d50 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e     if (_sql == n
23d60 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
23d70 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
23d80 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
23d90 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
23da0 20 20 20 20 20 20 20 20 22 44 61 74 61 62 61 73          "Databas
23db0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74  e connection not
23dc0 20 76 61 6c 69 64 20 66 6f 72 20 6c 6f 61 64 69   valid for loadi
23dd0 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73 2e 22 29  ng extensions.")
23de0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
23df0 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48  (HelperMethods.H
23e00 61 73 46 6c 61 67 73 28 5f 66 6c 61 67 73 2c 20  asFlags(_flags, 
23e10 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
23e20 46 6c 61 67 73 2e 4e 6f 4c 6f 61 64 45 78 74 65  Flags.NoLoadExte
23e30 6e 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20  nsion))..       
23e40 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53       throw new S
23e50 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 22  QLiteException("
23e60 4c 6f 61 64 69 6e 67 20 65 78 74 65 6e 73 69 6f  Loading extensio
23e70 6e 73 20 69 73 20 64 69 73 61 62 6c 65 64 20 66  ns is disabled f
23e80 6f 72 20 74 68 69 73 20 64 61 74 61 62 61 73 65  or this database
23e90 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 29 3b 0d   connection.");.
23ea0 0a 0d 0a 20 20 20 20 20 20 20 20 5f 73 71 6c 2e  ...        _sql.
23eb0 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28 66 69  LoadExtension(fi
23ec0 6c 65 4e 61 6d 65 2c 20 70 72 6f 63 4e 61 6d 65  leName, procName
23ed0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69 66  );..    }....#if
23ee0 20 49 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c   INTEROP_VIRTUAL
23ef0 5f 54 41 42 4c 45 0d 0a 20 20 20 20 2f 2f 2f 20  _TABLE..    /// 
23f00 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
23f10 2f 2f 20 43 72 65 61 74 65 73 20 61 20 64 69 73  // Creates a dis
23f20 70 6f 73 61 62 6c 65 20 6d 6f 64 75 6c 65 20 63  posable module c
23f30 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 69 6d  ontaining the im
23f40 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
23f50 61 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 2f  a virtual..    /
23f60 2f 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  // table...    /
23f70 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
23f80 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
23f90 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20  me="module">..  
23fa0 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65    /// The module
23fb0 20 6f 62 6a 65 63 74 20 74 6f 20 62 65 20 75 73   object to be us
23fc0 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67  ed when creating
23fd0 20 74 68 65 20 64 69 73 70 6f 73 61 62 6c 65 20   the disposable 
23fe0 6d 6f 64 75 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  module...    ///
23ff0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70   </param>..    p
24000 75 62 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74  ublic void Creat
24010 65 4d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20  eModule(..      
24020 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d    SQLiteModule m
24030 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 29  odule..        )
24040 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
24050 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
24060 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
24070 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
24080 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
24090 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
240a0 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
240b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
240c0 20 20 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e    "Database conn
240d0 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64  ection not valid
240e0 20 66 6f 72 20 63 72 65 61 74 69 6e 67 20 6d 6f   for creating mo
240f0 64 75 6c 65 73 2e 22 29 3b 0d 0a 0d 0a 20 20 20  dules.");....   
24100 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d       if (HelperM
24110 65 74 68 6f 64 73 2e 48 61 73 46 6c 61 67 73 28  ethods.HasFlags(
24120 5f 66 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f  _flags, SQLiteCo
24130 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
24140 43 72 65 61 74 65 4d 6f 64 75 6c 65 29 29 0d 0a  CreateModule))..
24150 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
24160 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
24170 70 74 69 6f 6e 28 22 43 72 65 61 74 69 6e 67 20  ption("Creating 
24180 6d 6f 64 75 6c 65 73 20 69 73 20 64 69 73 61 62  modules is disab
24190 6c 65 64 20 66 6f 72 20 74 68 69 73 20 64 61 74  led for this dat
241a0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
241b0 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  .");....        
241c0 5f 73 71 6c 2e 43 72 65 61 74 65 4d 6f 64 75 6c  _sql.CreateModul
241d0 65 28 6d 6f 64 75 6c 65 2c 20 5f 66 6c 61 67 73  e(module, _flags
241e0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69  );..    }..#endi
241f0 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  f....    /// <su
24200 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
24210 50 61 72 73 65 73 20 61 20 73 74 72 69 6e 67 20  Parses a string 
24220 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 73 65 71  containing a seq
24230 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72  uence of zero or
24240 20 6d 6f 72 65 20 68 65 78 61 64 65 63 69 6d 61   more hexadecima
24250 6c 0d 0a 20 20 20 20 2f 2f 2f 20 65 6e 63 6f 64  l..    /// encod
24260 65 64 20 62 79 74 65 20 76 61 6c 75 65 73 20 61  ed byte values a
24270 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72  nd returns the r
24280 65 73 75 6c 74 69 6e 67 20 62 79 74 65 20 61 72  esulting byte ar
24290 72 61 79 2e 20 20 54 68 65 0d 0a 20 20 20 20 2f  ray.  The..    /
242a0 2f 2f 20 22 30 78 22 20 70 72 65 66 69 78 20 69  // "0x" prefix i
242b0 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e  s not allowed on
242c0 20 74 68 65 20 69 6e 70 75 74 20 73 74 72 69 6e   the input strin
242d0 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  g...    /// </su
242e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
242f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78  <param name="tex
24300 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
24310 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 63 6f   input string co
24320 6e 74 61 69 6e 69 6e 67 20 7a 65 72 6f 20 6f 72  ntaining zero or
24330 20 6d 6f 72 65 20 68 65 78 61 64 65 63 69 6d 61   more hexadecima
24340 6c 20 65 6e 63 6f 64 65 64 20 62 79 74 65 0d 0a  l encoded byte..
24350 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e 0d      /// values..
24360 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
24370 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
24380 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20  rns>..    /// A 
24390 62 79 74 65 20 61 72 72 61 79 20 63 6f 6e 74 61  byte array conta
243a0 69 6e 69 6e 67 20 74 68 65 20 70 61 72 73 65 64  ining the parsed
243b0 20 62 79 74 65 20 76 61 6c 75 65 73 20 6f 72 20   byte values or 
243c0 6e 75 6c 6c 20 69 66 20 61 6e 20 65 72 72 6f 72  null if an error
243d0 0d 0a 20 20 20 20 2f 2f 2f 20 77 61 73 20 65 6e  ..    /// was en
243e0 63 6f 75 6e 74 65 72 65 64 2e 0d 0a 20 20 20 20  countered...    
243f0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
24400 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
24410 74 69 63 20 62 79 74 65 5b 5d 20 46 72 6f 6d 48  tic byte[] FromH
24420 65 78 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  exString(..     
24430 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a     string text..
24440 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
24450 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
24460 20 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a   error = null;..
24470 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
24480 20 46 72 6f 6d 48 65 78 53 74 72 69 6e 67 28 74   FromHexString(t
24490 65 78 74 2c 20 72 65 66 20 65 72 72 6f 72 29 3b  ext, ref error);
244a0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
244b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
244c0 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61 6e    /// Creates an
244d0 64 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69  d returns a stri
244e0 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
244f0 65 20 68 65 78 61 64 65 63 69 6d 61 6c 20 65 6e  e hexadecimal en
24500 63 6f 64 65 64 20 62 79 74 65 0d 0a 20 20 20 20  coded byte..    
24510 2f 2f 2f 20 76 61 6c 75 65 73 20 66 72 6f 6d 20  /// values from 
24520 74 68 65 20 69 6e 70 75 74 20 61 72 72 61 79 2e  the input array.
24530 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
24540 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
24550 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 72 61 79  aram name="array
24560 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
24570 69 6e 70 75 74 20 61 72 72 61 79 20 6f 66 20 62  input array of b
24580 79 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ytes...    /// <
24590 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
245a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
245b0 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e  /// The resultin
245c0 67 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6c 6c  g string or null
245d0 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
245e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
245f0 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
24600 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
24610 6f 48 65 78 53 74 72 69 6e 67 28 0d 0a 20 20 20  oHexString(..   
24620 20 20 20 20 20 62 79 74 65 5b 5d 20 61 72 72 61       byte[] arra
24630 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  y..        )..  
24640 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
24650 28 61 72 72 61 79 20 3d 3d 20 6e 75 6c 6c 29 0d  (array == null).
24660 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
24670 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
24680 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
24690 65 72 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20  er result = new 
246a0 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b  StringBuilder();
246b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
246c0 6c 65 6e 67 74 68 20 3d 20 61 72 72 61 79 2e 4c  length = array.L
246d0 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  ength;....      
246e0 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78    for (int index
246f0 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 6c 65   = 0; index < le
24700 6e 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a  ngth; index++)..
24710 23 69 66 20 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  #if NET_COMPACT_
24720 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  20..            
24730 72 65 73 75 6c 74 2e 41 70 70 65 6e 64 28 48 65  result.Append(He
24740 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
24750 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
24760 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
24770 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
24780 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
24790 20 20 20 20 20 20 20 20 20 20 22 7b 30 3a 78 32            "{0:x2
247a0 7d 22 2c 20 61 72 72 61 79 5b 69 6e 64 65 78 5d  }", array[index]
247b0 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ));..#else..    
247c0 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 41          result.A
247d0 70 70 65 6e 64 46 6f 72 6d 61 74 28 22 7b 30 3a  ppendFormat("{0:
247e0 78 32 7d 22 2c 20 61 72 72 61 79 5b 69 6e 64 65  x2}", array[inde
247f0 78 5d 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  x]);..#endif....
24800 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
24810 65 73 75 6c 74 2e 54 6f 53 74 72 69 6e 67 28 29  esult.ToString()
24820 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
24830 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
24840 20 20 20 2f 2f 2f 20 50 61 72 73 65 73 20 61 20     /// Parses a 
24850 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e  string containin
24860 67 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20  g a sequence of 
24870 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 68 65 78  zero or more hex
24880 61 64 65 63 69 6d 61 6c 0d 0a 20 20 20 20 2f 2f  adecimal..    //
24890 2f 20 65 6e 63 6f 64 65 64 20 62 79 74 65 20 76  / encoded byte v
248a0 61 6c 75 65 73 20 61 6e 64 20 72 65 74 75 72 6e  alues and return
248b0 73 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  s the resulting 
248c0 62 79 74 65 20 61 72 72 61 79 2e 20 20 54 68 65  byte array.  The
248d0 0d 0a 20 20 20 20 2f 2f 2f 20 22 30 78 22 20 70  ..    /// "0x" p
248e0 72 65 66 69 78 20 69 73 20 6e 6f 74 20 61 6c 6c  refix is not all
248f0 6f 77 65 64 20 6f 6e 20 74 68 65 20 69 6e 70 75  owed on the inpu
24900 74 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f  t string...    /
24910 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
24920 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
24930 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20  me="text">..    
24940 2f 2f 2f 20 54 68 65 20 69 6e 70 75 74 20 73 74  /// The input st
24950 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
24960 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 68 65 78  zero or more hex
24970 61 64 65 63 69 6d 61 6c 20 65 6e 63 6f 64 65 64  adecimal encoded
24980 20 62 79 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 76   byte..    /// v
24990 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  alues...    /// 
249a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
249b0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
249c0 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  rror">..    /// 
249d0 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68  Upon failure, th
249e0 69 73 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e 20  is will contain 
249f0 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 65  an appropriate e
24a00 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20  rror message... 
24a10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
24a20 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
24a30 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 62 79  s>..    /// A by
24a40 74 65 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e  te array contain
24a50 69 6e 67 20 74 68 65 20 70 61 72 73 65 64 20 62  ing the parsed b
24a60 79 74 65 20 76 61 6c 75 65 73 20 6f 72 20 6e 75  yte values or nu
24a70 6c 6c 20 69 66 20 61 6e 20 65 72 72 6f 72 0d 0a  ll if an error..
24a80 20 20 20 20 2f 2f 2f 20 77 61 73 20 65 6e 63 6f      /// was enco
24a90 75 6e 74 65 72 65 64 2e 0d 0a 20 20 20 20 2f 2f  untered...    //
24aa0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
24ab0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
24ac0 20 62 79 74 65 5b 5d 20 46 72 6f 6d 48 65 78 53   byte[] FromHexS
24ad0 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
24ae0 73 74 72 69 6e 67 20 74 65 78 74 2c 0d 0a 20 20  string text,..  
24af0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
24b00 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
24b10 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
24b20 20 20 69 66 20 28 74 65 78 74 20 3d 3d 20 6e 75    if (text == nu
24b30 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
24b40 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
24b50 72 20 3d 20 22 73 74 72 69 6e 67 20 69 73 20 6e  r = "string is n
24b60 75 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull";..         
24b70 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
24b80 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
24b90 20 20 20 20 20 20 69 66 20 28 74 65 78 74 2e 4c        if (text.L
24ba0 65 6e 67 74 68 20 25 20 32 20 21 3d 20 30 29 0d  ength % 2 != 0).
24bb0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
24bc0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
24bd0 22 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 73  "string contains
24be0 20 61 6e 20 6f 64 64 20 6e 75 6d 62 65 72 20 6f   an odd number o
24bf0 66 20 63 68 61 72 61 63 74 65 72 73 22 3b 0d 0a  f characters";..
24c00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24c10 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
24c20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62    }....        b
24c30 79 74 65 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e  yte[] result = n
24c40 65 77 20 62 79 74 65 5b 74 65 78 74 2e 4c 65 6e  ew byte[text.Len
24c50 67 74 68 20 2f 20 32 5d 3b 0d 0a 0d 0a 20 20 20  gth / 2];....   
24c60 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e       for (int in
24c70 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c  dex = 0; index <
24c80 20 74 65 78 74 2e 4c 65 6e 67 74 68 3b 20 69 6e   text.Length; in
24c90 64 65 78 20 2b 3d 20 32 29 0d 0a 20 20 20 20 20  dex += 2)..     
24ca0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24cb0 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d    string value =
24cc0 20 74 65 78 74 2e 53 75 62 73 74 72 69 6e 67 28   text.Substring(
24cd0 69 6e 64 65 78 2c 20 32 29 3b 0d 0a 0d 0a 20 20  index, 2);....  
24ce0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 54            if (!T
24cf0 72 79 50 61 72 73 65 42 79 74 65 28 76 61 6c 75  ryParseByte(valu
24d00 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
24d10 20 20 20 20 20 20 20 20 4e 75 6d 62 65 72 53 74          NumberSt
24d20 79 6c 65 73 2e 48 65 78 4e 75 6d 62 65 72 2c 20  yles.HexNumber, 
24d30 6f 75 74 20 72 65 73 75 6c 74 5b 69 6e 64 65 78  out result[index
24d40 20 2f 20 32 5d 29 29 0d 0a 20 20 20 20 20 20 20   / 2]))..       
24d50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24d60 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
24d70 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
24d80 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
24d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24da0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
24db0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
24dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24dd0 20 20 22 73 74 72 69 6e 67 20 63 6f 6e 74 61 69    "string contai
24de0 6e 73 20 5c 22 7b 30 7d 5c 22 2c 20 77 68 69 63  ns \"{0}\", whic
24df0 68 20 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76  h cannot be conv
24e00 65 72 74 65 64 20 74 6f 20 61 20 62 79 74 65 20  erted to a byte 
24e10 76 61 6c 75 65 22 2c 0d 0a 20 20 20 20 20 20 20  value",..       
24e20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
24e30 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
24e40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
24e50 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
24e60 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
24e70 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
24e80 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 7d 0d   result;..    }.
24e90 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
24ea0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
24eb0 69 73 20 6d 65 74 68 6f 64 20 66 69 67 75 72 65  is method figure
24ec0 73 20 6f 75 74 20 77 68 61 74 20 74 68 65 20 64  s out what the d
24ed0 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63 74 69 6f  efault connectio
24ee0 6e 20 70 6f 6f 6c 20 73 65 74 74 69 6e 67 20 73  n pool setting s
24ef0 68 6f 75 6c 64 0d 0a 20 20 20 20 2f 2f 2f 20 62  hould..    /// b
24f00 65 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 63  e based on the c
24f10 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c 61 67 73 2e  onnection flags.
24f20 20 20 57 68 65 6e 20 70 72 65 73 65 6e 74 2c 20    When present, 
24f30 74 68 65 20 22 50 6f 6f 6c 69 6e 67 22 20 63 6f  the "Pooling" co
24f40 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  nnection..    //
24f50 2f 20 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74  / string propert
24f60 79 20 76 61 6c 75 65 20 61 6c 77 61 79 73 20 6f  y value always o
24f70 76 65 72 72 69 64 65 73 20 74 68 65 20 76 61 6c  verrides the val
24f80 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  ue returned by t
24f90 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  his method...   
24fa0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
24fb0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
24fc0 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  s>..    /// Non-
24fd0 7a 65 72 6f 20 69 66 20 74 68 65 20 63 6f 6e 6e  zero if the conn
24fe0 65 63 74 69 6f 6e 20 70 6f 6f 6c 20 73 68 6f 75  ection pool shou
24ff0 6c 64 20 62 65 20 65 6e 61 62 6c 65 64 20 62 79  ld be enabled by
25000 20 64 65 66 61 75 6c 74 3b 20 6f 74 68 65 72 77   default; otherw
25010 69 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65  ise,..    /// ze
25020 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ro...    /// </r
25030 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
25040 76 61 74 65 20 62 6f 6f 6c 20 47 65 74 44 65 66  vate bool GetDef
25050 61 75 6c 74 50 6f 6f 6c 69 6e 67 28 29 0d 0a 20  aultPooling().. 
25060 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 62 6f     {..        bo
25070 6f 6c 20 72 65 73 75 6c 74 20 3d 20 44 65 66 61  ol result = Defa
25080 75 6c 74 50 6f 6f 6c 69 6e 67 3b 0d 0a 0d 0a 20  ultPooling;.... 
25090 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
250a0 74 29 20 2f 2a 20 4e 4f 54 45 3a 20 54 72 75 65  t) /* NOTE: True
250b0 20 62 72 61 6e 63 68 20 6e 6f 74 20 72 65 61 63   branch not reac
250c0 68 65 64 20 69 6e 20 74 68 65 20 64 65 66 61 75  hed in the defau
250d0 6c 74 20 62 75 69 6c 64 2e 20 2a 2f 0d 0a 20 20  lt build. */..  
250e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
250f0 20 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d       if (HelperM
25100 65 74 68 6f 64 73 2e 48 61 73 46 6c 61 67 73 28  ethods.HasFlags(
25110 5f 66 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f  _flags, SQLiteCo
25120 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
25130 43 6f 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 29 29  ConnectionPool))
25140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25150 20 20 72 65 73 75 6c 74 20 3d 20 66 61 6c 73 65    result = false
25160 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25170 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
25180 64 73 2e 48 61 73 46 6c 61 67 73 28 5f 66 6c 61  ds.HasFlags(_fla
25190 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  gs, SQLiteConnec
251a0 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e  tionFlags.UseCon
251b0 6e 65 63 74 69 6f 6e 50 6f 6f 6c 29 29 0d 0a 20  nectionPool)).. 
251c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
251d0 65 73 75 6c 74 20 3d 20 74 72 75 65 3b 0d 0a 20  esult = true;.. 
251e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
251f0 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
25200 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
25210 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
25220 2e 48 61 73 46 6c 61 67 73 28 5f 66 6c 61 67 73  .HasFlags(_flags
25230 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
25240 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65  onFlags.UseConne
25250 63 74 69 6f 6e 50 6f 6f 6c 29 29 0d 0a 20 20 20  ctionPool))..   
25260 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
25270 75 6c 74 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20  ult = true;.... 
25280 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 48             if (H
25290 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73  elperMethods.Has
252a0 46 6c 61 67 73 28 5f 66 6c 61 67 73 2c 20 53 51  Flags(_flags, SQ
252b0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
252c0 61 67 73 2e 4e 6f 43 6f 6e 6e 65 63 74 69 6f 6e  ags.NoConnection
252d0 50 6f 6f 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  Pool))..        
252e0 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
252f0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
25300 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65   }....        re
25310 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
25320 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
25330 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
25340 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
25350 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f   transaction iso
25360 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 20 74 68 61  lation level tha
25370 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  t should be used
25380 20 62 79 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65   by..    /// the
25390 20 63 61 6c 6c 65 72 2c 20 70 72 69 6d 61 72 69   caller, primari
253a0 6c 79 20 62 61 73 65 64 20 75 70 6f 6e 20 74 68  ly based upon th
253b0 65 20 6f 6e 65 20 73 70 65 63 69 66 69 65 64 20  e one specified 
253c0 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 0d 0a  by the caller...
253d0 20 20 20 20 2f 2f 2f 20 49 66 20 6d 61 70 70 69      /// If mappi
253e0 6e 67 20 6f 66 20 74 72 61 6e 73 61 63 74 69 6f  ng of transactio
253f0 6e 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65  n isolation leve
25400 6c 73 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 74  ls is enabled, t
25410 68 65 20 72 65 74 75 72 6e 65 64 0d 0a 20 20 20  he returned..   
25420 20 2f 2f 2f 20 74 72 61 6e 73 61 63 74 69 6f 6e   /// transaction
25430 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c   isolation level
25440 20 6d 61 79 20 62 65 20 73 69 67 6e 69 66 69 63   may be signific
25450 61 6e 74 6c 79 20 64 69 66 66 65 72 65 6e 74 20  antly different 
25460 74 68 61 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f  than the..    //
25470 2f 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 70 65  / originally spe
25480 63 69 66 69 65 64 20 6f 6e 65 2e 0d 0a 20 20 20  cified one...   
25490 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
254a0 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
254b0 6e 61 6d 65 3d 22 69 73 6f 6c 61 74 69 6f 6e 4c  name="isolationL
254c0 65 76 65 6c 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  evel">..    /// 
254d0 54 68 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73  The originally s
254e0 70 65 63 69 66 69 65 64 20 74 72 61 6e 73 61 63  pecified transac
254f0 74 69 6f 6e 20 69 73 6f 6c 61 74 69 6f 6e 20 6c  tion isolation l
25500 65 76 65 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  evel...    /// <
25510 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
25520 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
25530 2f 2f 2f 20 54 68 65 20 74 72 61 6e 73 61 63 74  /// The transact
25540 69 6f 6e 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65  ion isolation le
25550 76 65 6c 20 74 68 61 74 20 73 68 6f 75 6c 64 20  vel that should 
25560 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f  be used...    //
25570 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
25580 20 20 70 72 69 76 61 74 65 20 49 73 6f 6c 61 74    private Isolat
25590 69 6f 6e 4c 65 76 65 6c 20 47 65 74 45 66 66 65  ionLevel GetEffe
255a0 63 74 69 76 65 49 73 6f 6c 61 74 69 6f 6e 4c 65  ctiveIsolationLe
255b0 76 65 6c 28 0d 0a 20 20 20 20 20 20 20 20 49 73  vel(..        Is
255c0 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 69 73 6f  olationLevel iso
255d0 6c 61 74 69 6f 6e 4c 65 76 65 6c 0d 0a 20 20 20  lationLevel..   
255e0 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
255f0 20 20 20 20 20 20 20 69 66 20 28 21 48 65 6c 70         if (!Help
25600 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c 61  erMethods.HasFla
25610 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs(..           
25620 20 20 20 20 20 5f 66 6c 61 67 73 2c 20 53 51 4c       _flags, SQL
25630 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
25640 67 73 2e 4d 61 70 49 73 6f 6c 61 74 69 6f 6e 4c  gs.MapIsolationL
25650 65 76 65 6c 73 29 29 0d 0a 20 20 20 20 20 20 20  evels))..       
25660 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25670 72 65 74 75 72 6e 20 69 73 6f 6c 61 74 69 6f 6e  return isolation
25680 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20 20  Level;..        
25690 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 77 69  }....        swi
256a0 74 63 68 20 28 69 73 6f 6c 61 74 69 6f 6e 4c 65  tch (isolationLe
256b0 76 65 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  vel)..        {.
256c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
256d0 65 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  e IsolationLevel
256e0 2e 55 6e 73 70 65 63 69 66 69 65 64 3a 0d 0a 20  .Unspecified:.. 
256f0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
25700 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 2e 43  IsolationLevel.C
25710 68 61 6f 73 3a 0d 0a 20 20 20 20 20 20 20 20 20  haos:..         
25720 20 20 20 63 61 73 65 20 49 73 6f 6c 61 74 69 6f     case Isolatio
25730 6e 4c 65 76 65 6c 2e 52 65 61 64 55 6e 63 6f 6d  nLevel.ReadUncom
25740 6d 69 74 74 65 64 3a 0d 0a 20 20 20 20 20 20 20  mitted:..       
25750 20 20 20 20 20 63 61 73 65 20 49 73 6f 6c 61 74       case Isolat
25760 69 6f 6e 4c 65 76 65 6c 2e 52 65 61 64 43 6f 6d  ionLevel.ReadCom
25770 6d 69 74 74 65 64 3a 0d 0a 20 20 20 20 20 20 20  mitted:..       
25780 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25790 44 65 66 65 72 72 65 64 49 73 6f 6c 61 74 69 6f  DeferredIsolatio
257a0 6e 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20  nLevel;..       
257b0 20 20 20 20 20 63 61 73 65 20 49 73 6f 6c 61 74       case Isolat
257c0 69 6f 6e 4c 65 76 65 6c 2e 52 65 70 65 61 74 61  ionLevel.Repeata
257d0 62 6c 65 52 65 61 64 3a 0d 0a 20 20 20 20 20 20  bleRead:..      
257e0 20 20 20 20 20 20 63 61 73 65 20 49 73 6f 6c 61        case Isola
257f0 74 69 6f 6e 4c 65 76 65 6c 2e 53 65 72 69 61 6c  tionLevel.Serial
25800 69 7a 61 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20  izable:..       
25810 20 20 20 20 20 63 61 73 65 20 49 73 6f 6c 61 74       case Isolat
25820 69 6f 6e 4c 65 76 65 6c 2e 53 6e 61 70 73 68 6f  ionLevel.Snapsho
25830 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
25840 20 20 20 20 72 65 74 75 72 6e 20 49 6d 6d 65 64      return Immed
25850 69 61 74 65 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  iateIsolationLev
25860 65 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  el;..           
25870 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
25880 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25890 6e 20 47 65 74 46 61 6c 6c 62 61 63 6b 44 65 66  n GetFallbackDef
258a0 61 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  aultIsolationLev
258b0 65 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  el();..        }
258c0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
258d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
258e0 20 20 2f 2f 2f 20 4f 70 65 6e 73 20 74 68 65 20    /// Opens the 
258f0 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67  connection using
25900 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20   the parameters 
25910 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 3c 73 65  found in the <se
25920 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69  e cref="Connecti
25930 6f 6e 53 74 72 69 6e 67 22 20 2f 3e 2e 0d 0a 20  onString" />... 
25940 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
25950 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  >..    public ov
25960 65 72 72 69 64 65 20 76 6f 69 64 20 4f 70 65 6e  erride void Open
25970 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
25980 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
25990 3b 0d 0a 0d 0a 20 20 20 20 20 20 5f 6c 61 73 74  ;....      _last
259a0 43 6f 6e 6e 65 63 74 69 6f 6e 49 6e 4f 70 65 6e  ConnectionInOpen
259b0 20 3d 20 74 68 69 73 3b 20 2f 2a 20 54 48 52 45   = this; /* THRE
259c0 41 44 2d 53 41 46 45 3a 20 70 65 72 2d 74 68 72  AD-SAFE: per-thr
259d0 65 61 64 20 64 61 74 75 6d 2e 20 2a 2f 0d 0a 0d  ead datum. */...
259e0 0a 20 20 20 20 20 20 4f 6e 43 68 61 6e 67 65 64  .      OnChanged
259f0 28 74 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e 65  (this, new Conne
25a00 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 28 0d  ctionEventArgs(.
25a10 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74  .          SQLit
25a20 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74  eConnectionEvent
25a30 54 79 70 65 2e 4f 70 65 6e 69 6e 67 2c 20 6e 75  Type.Opening, nu
25a40 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20  ll, null, null, 
25a50 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20  null, null,..   
25a60 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20 6e 75 6c         null, nul
25a70 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66  l));....      if
25a80 20 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61   (_connectionSta
25a90 74 65 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e  te != Connection
25aa0 53 74 61 74 65 2e 43 6c 6f 73 65 64 29 0d 0a 20  State.Closed).. 
25ab0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
25ac0 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
25ad0 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
25ae0 0a 20 20 20 20 20 20 43 6c 6f 73 65 28 29 3b 0d  .      Close();.
25af0 0a 0d 0a 20 20 20 20 20 20 53 6f 72 74 65 64 4c  ...      SortedL
25b00 69 73 74 3c 73 74 72 69 6e 67 2c 20 73 74 72 69  ist<string, stri
25b10 6e 67 3e 20 6f 70 74 73 20 3d 20 50 61 72 73 65  ng> opts = Parse
25b20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  ConnectionString
25b30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 69  (..          thi
25b40 73 2c 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74  s, _connectionSt
25b50 72 69 6e 67 2c 20 5f 70 61 72 73 65 56 69 61 46  ring, _parseViaF
25b60 72 61 6d 65 77 6f 72 6b 2c 20 66 61 6c 73 65 29  ramework, false)
25b70 3b 0d 0a 0d 0a 20 20 20 20 20 20 6f 62 6a 65 63  ;....      objec
25b80 74 20 65 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72  t enumValue = Tr
25b90 79 50 61 72 73 65 45 6e 75 6d 28 74 79 70 65 6f  yParseEnum(typeo
25ba0 66 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  f(SQLiteConnecti
25bb0 6f 6e 46 6c 61 67 73 29 2c 20 46 69 6e 64 4b 65  onFlags), FindKe
25bc0 79 28 6f 70 74 73 2c 20 22 46 6c 61 67 73 22 2c  y(opts, "Flags",
25bd0 20 6e 75 6c 6c 29 2c 20 74 72 75 65 29 3b 0d 0a   null), true);..
25be0 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
25bf0 20 20 2f 2f 20 42 55 47 46 49 58 3a 20 41 6c 77    // BUGFIX: Alw
25c00 61 79 73 20 70 72 65 73 65 72 76 65 20 74 68 65  ays preserve the
25c10 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20 69 6e   pre-existing in
25c20 73 74 61 6e 63 65 20 66 6c 61 67 73 2e 20 20 54  stance flags.  T
25c30 68 69 73 20 69 73 20 4f 4b 0d 0a 20 20 20 20 20  his is OK..     
25c40 20 2f 2f 20 20 20 20 20 20 20 20 20 62 65 63 61   //         beca
25c50 75 73 65 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  use when the con
25c60 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20 69  nection object i
25c70 73 20 69 6e 69 74 69 61 6c 6c 79 20 63 72 65 61  s initially crea
25c80 74 65 64 2c 20 74 68 65 79 0d 0a 20 20 20 20 20  ted, they..     
25c90 20 2f 2f 20 20 20 20 20 20 20 20 20 61 72 65 20   //         are 
25ca0 22 4e 6f 6e 65 22 3b 20 74 68 65 72 65 66 6f 72  "None"; therefor
25cb0 65 2c 20 4f 52 2d 69 6e 67 20 74 68 65 20 63 6f  e, OR-ing the co
25cc0 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
25cd0 70 72 6f 70 65 72 74 79 0d 0a 20 20 20 20 20 20  property..      
25ce0 2f 2f 20 20 20 20 20 20 20 20 20 66 6c 61 67 73  //         flags
25cf0 20 77 69 74 68 20 74 68 65 20 69 6e 73 74 61 6e   with the instan
25d00 63 65 20 66 6c 61 67 73 20 77 6f 75 6c 64 20 70  ce flags would p
25d10 72 6f 64 75 63 65 20 65 78 61 63 74 6c 79 20 74  roduce exactly t
25d20 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 2f  he same..      /
25d30 2f 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74  /         result
25d40 2e 20 20 49 66 20 74 68 65 20 22 46 6c 61 67 73  .  If the "Flags
25d50 22 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  " connection str
25d60 69 6e 67 20 70 72 6f 70 65 72 74 79 20 69 73 20  ing property is 
25d70 61 62 73 65 6e 74 2c 0d 0a 20 20 20 20 20 20 2f  absent,..      /
25d80 2f 20 20 20 20 20 20 20 20 20 4f 52 2d 69 6e 67  /         OR-ing
25d90 20 74 68 65 20 74 68 65 20 69 6e 73 74 61 6e 63   the the instanc
25da0 65 20 66 6c 61 67 73 20 77 69 74 68 20 74 68 65  e flags with the
25db0 20 73 74 61 74 69 63 20 44 65 66 61 75 6c 74 46   static DefaultF
25dc0 6c 61 67 73 20 69 73 0d 0a 20 20 20 20 20 20 2f  lags is..      /
25dd0 2f 20 20 20 20 20 20 20 20 20 64 6f 6e 65 20 69  /         done i
25de0 6e 73 74 65 61 64 2e 20 20 54 68 69 73 20 69 73  nstead.  This is
25df0 20 4f 4b 20 66 6f 72 20 74 68 65 20 73 61 6d 65   OK for the same
25e00 20 72 65 61 73 6f 6e 20 61 73 20 62 65 66 6f 72   reason as befor
25e10 65 3a 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f  e: when..      /
25e20 2f 20 20 20 20 20 20 20 20 20 74 68 65 20 63 6f  /         the co
25e30 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 20  nnection object 
25e40 69 73 20 69 6e 69 74 69 61 6c 6c 79 20 63 72 65  is initially cre
25e50 61 74 65 64 2c 20 74 68 65 79 20 61 72 65 20 22  ated, they are "
25e60 4e 6f 6e 65 22 0d 0a 20 20 20 20 20 20 2f 2f 20  None"..      // 
25e70 20 20 20 20 20 20 20 20 62 79 20 64 65 66 61 75          by defau
25e80 6c 74 2e 20 20 49 66 20 74 68 65 79 20 61 72 65  lt.  If they are
25e90 20 64 69 66 66 65 72 65 6e 74 20 6e 6f 77 2c 20   different now, 
25ea0 74 68 65 79 20 6d 75 73 74 20 68 61 76 65 20 62  they must have b
25eb0 65 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  een..      //   
25ec0 20 20 20 20 20 20 6d 61 6e 75 61 6c 6c 79 20 73        manually s
25ed0 65 74 20 62 79 20 74 68 65 20 61 70 70 6c 69 63  et by the applic
25ee0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ation...      //
25ef0 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 44  ..      bool noD
25f00 65 66 61 75 6c 74 46 6c 61 67 73 20 3d 20 53 51  efaultFlags = SQ
25f10 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f  LiteConvert.ToBo
25f20 6f 6c 65 61 6e 28 46 69 6e 64 4b 65 79 28 6f 70  olean(FindKey(op
25f30 74 73 2c 20 22 4e 6f 44 65 66 61 75 6c 74 46 6c  ts, "NoDefaultFl
25f40 61 67 73 22 2c 20 44 65 66 61 75 6c 74 4e 6f 44  ags", DefaultNoD
25f50 65 66 61 75 6c 74 46 6c 61 67 73 2e 54 6f 53 74  efaultFlags.ToSt
25f60 72 69 6e 67 28 29 29 29 3b 0d 0a 0d 0a 20 20 20  ring()));....   
25f70 20 20 20 69 66 20 28 65 6e 75 6d 56 61 6c 75 65     if (enumValue
25f80 20 69 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   is SQLiteConnec
25f90 74 69 6f 6e 46 6c 61 67 73 29 0d 0a 20 20 20 20  tionFlags)..    
25fa0 20 20 20 20 20 20 5f 66 6c 61 67 73 20 7c 3d 20        _flags |= 
25fb0 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
25fc0 6e 46 6c 61 67 73 29 65 6e 75 6d 56 61 6c 75 65  nFlags)enumValue
25fd0 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66  ;..      else if
25fe0 20 28 21 6e 6f 44 65 66 61 75 6c 74 46 6c 61 67   (!noDefaultFlag
25ff0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 5f 66  s)..          _f
26000 6c 61 67 73 20 7c 3d 20 44 65 66 61 75 6c 74 46  lags |= DefaultF
26010 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 62  lags;....      b
26020 6f 6f 6c 20 6e 6f 53 68 61 72 65 64 46 6c 61 67  ool noSharedFlag
26030 73 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  s = SQLiteConver
26040 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 46 69 6e 64  t.ToBoolean(Find
26050 4b 65 79 28 6f 70 74 73 2c 20 22 4e 6f 53 68 61  Key(opts, "NoSha
26060 72 65 64 46 6c 61 67 73 22 2c 20 44 65 66 61 75  redFlags", Defau
26070 6c 74 4e 6f 53 68 61 72 65 64 46 6c 61 67 73 2e  ltNoSharedFlags.
26080 54 6f 53 74 72 69 6e 67 28 29 29 29 3b 0d 0a 20  ToString()));.. 
26090 20 20 20 20 20 69 66 20 28 21 6e 6f 53 68 61 72       if (!noShar
260a0 65 64 46 6c 61 67 73 29 20 7b 20 6c 6f 63 6b 20  edFlags) { lock 
260b0 28 5f 73 79 6e 63 52 6f 6f 74 29 20 7b 20 5f 66  (_syncRoot) { _f
260c0 6c 61 67 73 20 7c 3d 20 5f 73 68 61 72 65 64 46  lags |= _sharedF
260d0 6c 61 67 73 3b 20 7d 20 7d 0d 0a 0d 0a 23 69 66  lags; } }....#if
260e0 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c   INTEROP_CODEC |
260f0 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  | INTEROP_INCLUD
26100 45 5f 53 45 45 0d 0a 20 20 20 20 20 20 62 6f 6f  E_SEE..      boo
26110 6c 20 68 69 64 65 50 61 73 73 77 6f 72 64 20 3d  l hidePassword =
26120 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48   HelperMethods.H
26130 61 73 46 6c 61 67 73 28 5f 66 6c 61 67 73 2c 20  asFlags(_flags, 
26140 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
26150 46 6c 61 67 73 2e 48 69 64 65 50 61 73 73 77 6f  Flags.HidePasswo
26160 72 64 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  rd);..#endif....
26170 20 20 20 20 20 20 53 6f 72 74 65 64 4c 69 73 74        SortedList
26180 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e  <string, string>
26190 20 65 76 65 6e 74 41 72 67 4f 70 74 73 20 3d 20   eventArgOpts = 
261a0 6f 70 74 73 3b 0d 0a 20 20 20 20 20 20 73 74 72  opts;..      str
261b0 69 6e 67 20 65 76 65 6e 74 41 72 67 43 6f 6e 6e  ing eventArgConn
261c0 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 5f  ectionString = _
261d0 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  connectionString
261e0 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50  ;....#if INTEROP
261f0 5f 43 4f 44 45 43 20 7c 7c 20 49 4e 54 45 52 4f  _CODEC || INTERO
26200 50 5f 49 4e 43 4c 55 44 45 5f 53 45 45 0d 0a 20  P_INCLUDE_SEE.. 
26210 20 20 20 20 20 69 66 20 28 68 69 64 65 50 61 73       if (hidePas
26220 73 77 6f 72 64 29 0d 0a 20 20 20 20 20 20 7b 0d  sword)..      {.
26230 0a 20 20 20 20 20 20 20 20 20 20 65 76 65 6e 74  .          event
26240 41 72 67 4f 70 74 73 20 3d 20 6e 65 77 20 53 6f  ArgOpts = new So
26250 72 74 65 64 4c 69 73 74 3c 73 74 72 69 6e 67 2c  rtedList<string,
26260 20 73 74 72 69 6e 67 3e 28 0d 0a 20 20 20 20 20   string>(..     
26270 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
26280 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49  omparer.OrdinalI
26290 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 0d 0a 20  gnoreCase);.... 
262a0 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
262b0 20 28 4b 65 79 56 61 6c 75 65 50 61 69 72 3c 73   (KeyValuePair<s
262c0 74 72 69 6e 67 2c 20 73 74 72 69 6e 67 3e 20 70  tring, string> p
262d0 61 69 72 20 69 6e 20 6f 70 74 73 29 0d 0a 20 20  air in opts)..  
262e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
262f0 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
26300 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20  ing.Equals(..   
26310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26320 20 70 61 69 72 2e 4b 65 79 2c 20 22 50 61 73 73   pair.Key, "Pass
26330 77 6f 72 64 22 2c 0d 0a 20 20 20 20 20 20 20 20  word",..        
26340 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
26350 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
26360 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 29  inalIgnoreCase))
26370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26380 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26390 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
263a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
263b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
263c0 20 69 66 20 28 53 74 72 69 6e 67 2e 45 71 75 61   if (String.Equa
263d0 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
263e0 20 20 20 20 20 20 20 20 20 70 61 69 72 2e 4b 65           pair.Ke
263f0 79 2c 20 22 48 65 78 50 61 73 73 77 6f 72 64 22  y, "HexPassword"
26400 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26410 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
26420 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
26430 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20  gnoreCase))..   
26440 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26460 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
26470 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
26480 20 20 20 20 20 20 20 20 20 20 20 20 65 76 65 6e              even
26490 74 41 72 67 4f 70 74 73 2e 41 64 64 28 70 61 69  tArgOpts.Add(pai
264a0 72 2e 4b 65 79 2c 20 70 61 69 72 2e 56 61 6c 75  r.Key, pair.Valu
264b0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  e);..          }
264c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 65 76  ....          ev
264d0 65 6e 74 41 72 67 43 6f 6e 6e 65 63 74 69 6f 6e  entArgConnection
264e0 53 74 72 69 6e 67 20 3d 20 42 75 69 6c 64 43 6f  String = BuildCo
264f0 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 28 0d  nnectionString(.
26500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
26510 76 65 6e 74 41 72 67 4f 70 74 73 29 3b 0d 0a 20  ventArgOpts);.. 
26520 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
26530 0d 0a 20 20 20 20 20 20 4f 6e 43 68 61 6e 67 65  ..      OnChange
26540 64 28 74 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e  d(this, new Conn
26550 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 28  ectionEventArgs(
26560 0d 0a 20 20 20 20 20 20 20 20 20 20 53 51 4c 69  ..          SQLi
26570 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  teConnectionEven
26580 74 54 79 70 65 2e 43 6f 6e 6e 65 63 74 69 6f 6e  tType.Connection
26590 53 74 72 69 6e 67 2c 20 6e 75 6c 6c 2c 20 6e 75  String, null, nu
265a0 6c 6c 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d  ll, null, null,.
265b0 0a 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c  .          null,
265c0 20 65 76 65 6e 74 41 72 67 43 6f 6e 6e 65 63 74   eventArgConnect
265d0 69 6f 6e 53 74 72 69 6e 67 2c 20 6e 65 77 20 6f  ionString, new o
265e0 62 6a 65 63 74 5b 5d 20 7b 20 65 76 65 6e 74 41  bject[] { eventA
265f0 72 67 4f 70 74 73 20 7d 29 29 3b 0d 0a 0d 0a 20  rgOpts }));.... 
26600 20 20 20 20 20 65 6e 75 6d 56 61 6c 75 65 20 3d       enumValue =
26610 20 54 72 79 50 61 72 73 65 45 6e 75 6d 28 74 79   TryParseEnum(ty
26620 70 65 6f 66 28 44 62 54 79 70 65 29 2c 20 46 69  peof(DbType), Fi
26630 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 65 66  ndKey(opts, "Def
26640 61 75 6c 74 44 62 54 79 70 65 22 2c 20 6e 75 6c  aultDbType", nul
26650 6c 29 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20  l), true);..    
26660 20 20 5f 64 65 66 61 75 6c 74 44 62 54 79 70 65    _defaultDbType
26670 20 3d 20 28 65 6e 75 6d 56 61 6c 75 65 20 69 73   = (enumValue is
26680 20 44 62 54 79 70 65 29 20 3f 20 28 44 62 54 79   DbType) ? (DbTy
26690 70 65 29 65 6e 75 6d 56 61 6c 75 65 20 3a 20 28  pe)enumValue : (
266a0 44 62 54 79 70 65 3f 29 6e 75 6c 6c 3b 0d 0a 0d  DbType?)null;...
266b0 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
266c0 20 2f 2f 20 4e 4f 54 45 3a 20 4e 75 6c 6c 61 62   // NOTE: Nullab
266d0 6c 65 20 76 61 6c 75 65 73 20 74 79 70 65 73 20  le values types 
266e0 61 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65  are not supporte
266f0 64 20 62 79 20 74 68 65 20 2e 4e 45 54 20 46 72  d by the .NET Fr
26700 61 6d 65 77 6f 72 6b 0d 0a 20 20 20 20 20 20 2f  amework..      /
26710 2f 20 20 20 20 20 20 20 41 44 4f 2e 4e 45 54 20  /       ADO.NET 
26720 73 75 70 70 6f 72 74 20 63 6f 6d 70 6f 6e 65 6e  support componen
26730 74 73 20 74 68 61 74 20 77 6f 72 6b 20 77 69 74  ts that work wit
26740 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  h the connection
26750 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 2f   string..      /
26760 2f 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 3b  /       builder;
26770 20 74 68 65 72 65 66 6f 72 65 2c 20 74 72 61 6e   therefore, tran
26780 73 6c 61 74 65 20 74 68 65 20 22 69 6e 76 61 6c  slate the "inval
26790 69 64 20 76 61 6c 75 65 22 20 75 73 65 64 20 62  id value" used b
267a0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20  y the..      // 
267b0 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
267c0 65 63 74 69 6f 6e 53 74 72 69 6e 67 42 75 69 6c  ectionStringBuil
267d0 64 65 72 2e 44 65 66 61 75 6c 74 44 62 54 79 70  der.DefaultDbTyp
267e0 65 20 70 72 6f 70 65 72 74 79 20 74 6f 20 6e 75  e property to nu
267f0 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  ll..      //    
26800 20 20 20 68 65 72 65 2e 0d 0a 20 20 20 20 20 20     here...      
26810 2f 2f 0d 0a 20 20 20 20 20 20 69 66 20 28 28 5f  //..      if ((_
26820 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 21 3d  defaultDbType !=
26830 20 6e 75 6c 6c 29 20 26 26 20 28 28 44 62 54 79   null) && ((DbTy
26840 70 65 29 5f 64 65 66 61 75 6c 74 44 62 54 79 70  pe)_defaultDbTyp
26850 65 20 3d 3d 20 42 61 64 44 62 54 79 70 65 29 29  e == BadDbType))
26860 0d 0a 20 20 20 20 20 20 20 20 5f 64 65 66 61 75  ..        _defau
26870 6c 74 44 62 54 79 70 65 20 3d 20 6e 75 6c 6c 3b  ltDbType = null;
26880 0d 0a 0d 0a 20 20 20 20 20 20 5f 64 65 66 61 75  ....      _defau
26890 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 46 69 6e  ltTypeName = Fin
268a0 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 65 66 61  dKey(opts, "Defa
268b0 75 6c 74 54 79 70 65 4e 61 6d 65 22 2c 20 6e 75  ultTypeName", nu
268c0 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 5f 76 66 73  ll);..      _vfs
268d0 4e 61 6d 65 20 3d 20 46 69 6e 64 4b 65 79 28 6f  Name = FindKey(o
268e0 70 74 73 2c 20 22 56 66 73 4e 61 6d 65 22 2c 20  pts, "VfsName", 
268f0 44 65 66 61 75 6c 74 56 66 73 4e 61 6d 65 29 3b  DefaultVfsName);
26900 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
26910 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
26920 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
26930 62 6f 6f 6c 20 75 72 69 20 3d 20 66 61 6c 73 65  bool uri = false
26940 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
26950 20 62 6f 6f 6c 20 66 75 6c 6c 55 72 69 20 3d 20   bool fullUri = 
26960 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 73 74  false;..      st
26970 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 3b 0d 0a  ring fileName;..
26980 0d 0a 20 20 20 20 20 20 69 66 20 28 43 6f 6e 76  ..      if (Conv
26990 65 72 74 2e 54 6f 49 6e 74 33 32 28 46 69 6e 64  ert.ToInt32(Find
269a0 4b 65 79 28 6f 70 74 73 2c 20 22 56 65 72 73 69  Key(opts, "Versi
269b0 6f 6e 22 2c 20 53 51 4c 69 74 65 43 6f 6e 76 65  on", SQLiteConve
269c0 72 74 2e 54 6f 53 74 72 69 6e 67 28 44 65 66 61  rt.ToString(Defa
269d0 75 6c 74 56 65 72 73 69 6f 6e 29 29 2c 20 43 75  ultVersion)), Cu
269e0 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
269f0 61 6e 74 43 75 6c 74 75 72 65 29 20 21 3d 20 44  antCulture) != D
26a00 65 66 61 75 6c 74 56 65 72 73 69 6f 6e 29 0d 0a  efaultVersion)..
26a10 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
26a20 77 20 4e 6f 74 53 75 70 70 6f 72 74 65 64 45 78  w NotSupportedEx
26a30 63 65 70 74 69 6f 6e 28 48 65 6c 70 65 72 4d 65  ception(HelperMe
26a40 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
26a50 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43  at(CultureInfo.C
26a60 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20 22  urrentCulture, "
26a70 4f 6e 6c 79 20 53 51 4c 69 74 65 20 56 65 72 73  Only SQLite Vers
26a80 69 6f 6e 20 7b 30 7d 20 69 73 20 73 75 70 70 6f  ion {0} is suppo
26a90 72 74 65 64 20 61 74 20 74 68 69 73 20 74 69 6d  rted at this tim
26aa0 65 22 2c 20 44 65 66 61 75 6c 74 56 65 72 73 69  e", DefaultVersi
26ab0 6f 6e 29 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  on));....#if INT
26ac0 45 52 4f 50 5f 49 4e 43 4c 55 44 45 5f 5a 49 50  EROP_INCLUDE_ZIP
26ad0 56 46 53 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20  VFS..      bool 
26ae0 75 73 65 5a 69 70 56 66 73 20 3d 20 66 61 6c 73  useZipVfs = fals
26af0 65 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  e;..      string
26b00 20 7a 69 70 56 66 73 56 65 72 73 69 6f 6e 20 3d   zipVfsVersion =
26b10 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22   FindKey(opts, "
26b20 5a 69 70 56 66 73 56 65 72 73 69 6f 6e 22 2c 20  ZipVfsVersion", 
26b30 44 65 66 61 75 6c 74 5a 69 70 56 66 73 56 65 72  DefaultZipVfsVer
26b40 73 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sion);....      
26b50 69 66 20 28 7a 69 70 56 66 73 56 65 72 73 69 6f  if (zipVfsVersio
26b60 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n != null)..    
26b70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
26b80 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72  f (String.Compar
26b90 65 28 7a 69 70 56 66 73 56 65 72 73 69 6f 6e 2c  e(zipVfsVersion,
26ba0 20 5a 69 70 56 66 73 5f 41 75 74 6f 6d 61 74 69   ZipVfs_Automati
26bb0 63 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  c) == 0)..      
26bc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26bd0 20 20 20 20 20 75 73 65 5a 69 70 56 66 73 20 3d       useZipVfs =
26be0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
26bf0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 65    }..          e
26c00 6c 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e 43  lse if (String.C
26c10 6f 6d 70 61 72 65 28 7a 69 70 56 66 73 56 65 72  ompare(zipVfsVer
26c20 73 69 6f 6e 2c 20 5a 69 70 56 66 73 5f 56 32 29  sion, ZipVfs_V2)
26c30 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
26c40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26c50 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
26c60 65 74 68 6f 64 73 2e 7a 69 70 76 66 73 49 6e 69  ethods.zipvfsIni
26c70 74 5f 76 32 28 29 3b 0d 0a 20 20 20 20 20 20 20  t_v2();..       
26c80 20 20 20 20 20 20 20 75 73 65 5a 69 70 56 66 73         useZipVfs
26c90 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
26ca0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26cb0 20 65 6c 73 65 20 69 66 20 28 53 74 72 69 6e 67   else if (String
26cc0 2e 43 6f 6d 70 61 72 65 28 7a 69 70 56 66 73 56  .Compare(zipVfsV
26cd0 65 72 73 69 6f 6e 2c 20 5a 69 70 56 66 73 5f 56  ersion, ZipVfs_V
26ce0 33 29 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  3) == 0)..      
26cf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26d00 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
26d10 65 4d 65 74 68 6f 64 73 2e 7a 69 70 76 66 73 49  eMethods.zipvfsI
26d20 6e 69 74 5f 76 33 28 30 29 3b 0d 0a 20 20 20 20  nit_v3(0);..    
26d30 20 20 20 20 20 20 20 20 20 20 75 73 65 5a 69 70            useZip
26d40 56 66 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  Vfs = true;..   
26d50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
26d60 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
26d70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26d80 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e       throw new N
26d90 6f 74 53 75 70 70 6f 72 74 65 64 45 78 63 65 70  otSupportedExcep
26da0 74 69 6f 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f  tion(HelperMetho
26db0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
26dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26dd0 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
26de0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
26df0 22 4f 6e 6c 79 20 5a 69 70 56 46 53 20 76 65 72  "Only ZipVFS ver
26e00 73 69 6f 6e 73 20 7b 30 7d 2c 20 7b 31 7d 2c 20  sions {0}, {1}, 
26e10 61 6e 64 20 7b 32 7d 20 61 72 65 20 73 75 70 70  and {2} are supp
26e20 6f 72 74 65 64 20 61 74 20 74 68 69 73 20 74 69  orted at this ti
26e30 6d 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  me",..          
26e40 20 20 20 20 20 20 20 20 5a 69 70 56 66 73 5f 41          ZipVfs_A
26e50 75 74 6f 6d 61 74 69 63 2c 20 5a 69 70 56 66 73  utomatic, ZipVfs
26e60 5f 56 32 2c 20 5a 69 70 56 66 73 5f 56 33 29 29  _V2, ZipVfs_V3))
26e70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
26e80 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
26e90 0a 0d 0a 20 20 20 20 20 20 66 69 6c 65 4e 61 6d  ...      fileNam
26ea0 65 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73  e = FindKey(opts
26eb0 2c 20 22 44 61 74 61 20 53 6f 75 72 63 65 22 2c  , "Data Source",
26ec0 20 44 65 66 61 75 6c 74 44 61 74 61 53 6f 75 72   DefaultDataSour
26ed0 63 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66  ce);....      if
26ee0 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f   (String.IsNullO
26ef0 72 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29  rEmpty(fileName)
26f00 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
26f10 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
26f20 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 55 72  indKey(opts, "Ur
26f30 69 22 2c 20 44 65 66 61 75 6c 74 55 72 69 29 3b  i", DefaultUri);
26f40 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 53 74  ..        if (St
26f50 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
26f60 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ty(fileName)).. 
26f70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
26f80 20 20 20 20 66 69 6c 65 4e 61 6d 65 20 3d 20 46      fileName = F
26f90 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 46 75  indKey(opts, "Fu
26fa0 6c 6c 55 72 69 22 2c 20 44 65 66 61 75 6c 74 46  llUri", DefaultF
26fb0 75 6c 6c 55 72 69 29 3b 0d 0a 20 20 20 20 20 20  ullUri);..      
26fc0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
26fd0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
26fe0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
26ff0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
27000 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e  rgumentException
27010 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
27020 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
27030 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
27040 75 6c 74 75 72 65 2c 20 22 44 61 74 61 20 53 6f  ulture, "Data So
27050 75 72 63 65 20 63 61 6e 6e 6f 74 20 62 65 20 65  urce cannot be e
27060 6d 70 74 79 2e 20 20 55 73 65 20 7b 30 7d 20 74  mpty.  Use {0} t
27070 6f 20 6f 70 65 6e 20 61 6e 20 69 6e 2d 6d 65 6d  o open an in-mem
27080 6f 72 79 20 64 61 74 61 62 61 73 65 22 2c 20 4d  ory database", M
27090 65 6d 6f 72 79 46 69 6c 65 4e 61 6d 65 29 29 3b  emoryFileName));
270a0 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6c 73 65  ..          else
270b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75  ..            fu
270c0 6c 6c 55 72 69 20 3d 20 74 72 75 65 3b 0d 0a 20  llUri = true;.. 
270d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
270e0 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
270f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66 69 6c  {..          fil
27100 65 4e 61 6d 65 20 3d 20 4d 61 70 55 72 69 50 61  eName = MapUriPa
27110 74 68 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 23  th(fileName);..#
27120 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
27130 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
27140 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 20 75  ING..          u
27150 72 69 20 3d 20 74 72 75 65 3b 0d 0a 23 65 6e 64  ri = true;..#end
27160 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  if..        }.. 
27170 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27180 62 6f 6f 6c 20 69 73 4d 65 6d 6f 72 79 20 3d 20  bool isMemory = 
27190 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28  (String.Compare(
271a0 66 69 6c 65 4e 61 6d 65 2c 20 4d 65 6d 6f 72 79  fileName, Memory
271b0 46 69 6c 65 4e 61 6d 65 2c 20 53 74 72 69 6e 67  FileName, String
271c0 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
271d0 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d  alIgnoreCase) ==
271e0 20 30 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54   0);....#if !NET
271f0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
27200 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20  RACE_WARNING..  
27210 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65      if (HelperMe
27220 74 68 6f 64 73 2e 48 61 73 46 6c 61 67 73 28 5f  thods.HasFlags(_
27230 66 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e  flags, SQLiteCon
27240 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61  nectionFlags.Tra
27250 63 65 57 61 72 6e 69 6e 67 29 29 0d 0a 20 20 20  ceWarning))..   
27260 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27270 69 66 20 28 21 75 72 69 20 26 26 20 21 66 75 6c  if (!uri && !ful
27280 6c 55 72 69 20 26 26 20 21 69 73 4d 65 6d 6f 72  lUri && !isMemor
27290 79 20 26 26 20 21 53 74 72 69 6e 67 2e 49 73 4e  y && !String.IsN
272a0 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c 65 4e  ullOrEmpty(fileN
272b0 61 6d 65 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ame) &&..       
272c0 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 2e         fileName.
272d0 53 74 61 72 74 73 57 69 74 68 28 22 5c 5c 22 2c  StartsWith("\\",
272e0 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
272f0 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43  n.OrdinalIgnoreC
27300 61 73 65 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ase) &&..       
27310 20 20 20 20 20 20 20 21 66 69 6c 65 4e 61 6d 65         !fileName
27320 2e 53 74 61 72 74 73 57 69 74 68 28 22 5c 5c 5c  .StartsWith("\\\
27330 5c 22 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  \", StringCompar
27340 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
27350 72 65 43 61 73 65 29 29 0d 0a 20 20 20 20 20 20  reCase))..      
27360 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
27370 20 20 20 20 20 53 79 73 74 65 6d 2e 44 69 61 67       System.Diag
27380 6e 6f 73 74 69 63 73 2e 54 72 61 63 65 2e 57 72  nostics.Trace.Wr
27390 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
273a0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
273b0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
273c0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
273d0 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
273e0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
273f0 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20        "WARNING: 
27400 44 65 74 65 63 74 65 64 20 61 20 70 6f 73 73 69  Detected a possi
27410 62 6c 79 20 6d 61 6c 66 6f 72 6d 65 64 20 55 4e  bly malformed UN
27420 43 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  C database file 
27430 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 20 74 68 61  name \"{0}\" tha
27440 74 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  t " +..         
27450 20 20 20 20 20 20 20 20 20 22 6d 61 79 20 68 61           "may ha
27460 76 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 74  ve originally st
27470 61 72 74 65 64 20 77 69 74 68 20 74 77 6f 20 62  arted with two b
27480 61 63 6b 73 6c 61 73 68 65 73 3b 20 68 6f 77 65  ackslashes; howe
27490 76 65 72 2c 20 66 6f 75 72 20 6c 65 61 64 69 6e  ver, four leadin
274a0 67 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  g " +..         
274b0 20 20 20 20 20 20 20 20 20 22 62 61 63 6b 73 6c           "backsl
274c0 61 73 68 65 73 20 6d 61 79 20 62 65 20 72 65 71  ashes may be req
274d0 75 69 72 65 64 2c 20 65 2e 67 2e 3a 20 5c 22 44  uired, e.g.: \"D
274e0 61 74 61 20 53 6f 75 72 63 65 3d 5c 5c 5c 5c 5c  ata Source=\\\\\
274f0 5c 7b 30 7d 3b 5c 22 22 2c 0d 0a 20 20 20 20 20  \{0};\"",..     
27500 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c               fil
27510 65 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20  eName));..      
27520 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
27530 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
27540 69 66 20 28 21 66 75 6c 6c 55 72 69 29 0d 0a 20  if (!fullUri).. 
27550 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27560 69 66 20 28 69 73 4d 65 6d 6f 72 79 29 0d 0a 20  if (isMemory).. 
27570 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d           fileNam
27580 65 20 3d 20 4d 65 6d 6f 72 79 46 69 6c 65 4e 61  e = MemoryFileNa
27590 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c 73  me;..        els
275a0 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  e..        {..#i
275b0 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
275c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
275d0 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 4e         if (fileN
275e0 61 6d 65 2e 53 74 61 72 74 73 57 69 74 68 28 22  ame.StartsWith("
275f0 2e 2f 22 29 20 7c 7c 20 66 69 6c 65 4e 61 6d 65  ./") || fileName
27600 2e 53 74 61 72 74 73 57 69 74 68 28 22 2e 5c 5c  .StartsWith(".\\
27610 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
27620 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68   fileName = Path
27630 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e 61 6d  .GetDirectoryNam
27640 65 28 41 73 73 65 6d 62 6c 79 2e 47 65 74 43 61  e(Assembly.GetCa
27650 6c 6c 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 2e  llingAssembly().
27660 47 65 74 4e 61 6d 65 28 29 2e 43 6f 64 65 42 61  GetName().CodeBa
27670 73 65 29 20 2b 20 66 69 6c 65 4e 61 6d 65 2e 53  se) + fileName.S
27680 75 62 73 74 72 69 6e 67 28 31 29 3b 0d 0a 23 65  ubstring(1);..#e
27690 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
276a0 62 6f 6f 6c 20 74 6f 46 75 6c 6c 50 61 74 68 20  bool toFullPath 
276b0 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  = SQLiteConvert.
276c0 54 6f 42 6f 6f 6c 65 61 6e 28 46 69 6e 64 4b 65  ToBoolean(FindKe
276d0 79 28 6f 70 74 73 2c 20 22 54 6f 46 75 6c 6c 50  y(opts, "ToFullP
276e0 61 74 68 22 2c 20 44 65 66 61 75 6c 74 54 6f 46  ath", DefaultToF
276f0 75 6c 6c 50 61 74 68 2e 54 6f 53 74 72 69 6e 67  ullPath.ToString
27700 28 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ()));..         
27710 20 66 69 6c 65 4e 61 6d 65 20 3d 20 45 78 70 61   fileName = Expa
27720 6e 64 46 69 6c 65 4e 61 6d 65 28 66 69 6c 65 4e  ndFileName(fileN
27730 61 6d 65 2c 20 74 6f 46 75 6c 6c 50 61 74 68 29  ame, toFullPath)
27740 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
27750 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 74      }....      t
27760 72 79 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ry..      {..   
27770 20 20 20 20 20 62 6f 6f 6c 20 75 73 65 50 6f 6f       bool usePoo
27780 6c 69 6e 67 20 3d 20 53 51 4c 69 74 65 43 6f 6e  ling = SQLiteCon
27790 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 46  vert.ToBoolean(F
277a0 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 50 6f  indKey(opts, "Po
277b0 6f 6c 69 6e 67 22 2c 20 47 65 74 44 65 66 61 75  oling", GetDefau
277c0 6c 74 50 6f 6f 6c 69 6e 67 28 29 2e 54 6f 53 74  ltPooling().ToSt
277d0 72 69 6e 67 28 29 29 29 3b 0d 0a 20 20 20 20 20  ring()));..     
277e0 20 20 20 69 6e 74 20 6d 61 78 50 6f 6f 6c 53 69     int maxPoolSi
277f0 7a 65 20 3d 20 43 6f 6e 76 65 72 74 2e 54 6f 49  ze = Convert.ToI
27800 6e 74 33 32 28 46 69 6e 64 4b 65 79 28 6f 70 74  nt32(FindKey(opt
27810 73 2c 20 22 4d 61 78 20 50 6f 6f 6c 20 53 69 7a  s, "Max Pool Siz
27820 65 22 2c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  e", SQLiteConver
27830 74 2e 54 6f 53 74 72 69 6e 67 28 44 65 66 61 75  t.ToString(Defau
27840 6c 74 4d 61 78 50 6f 6f 6c 53 69 7a 65 29 29 2c  ltMaxPoolSize)),
27850 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
27860 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
27870 0a 0d 0a 20 20 20 20 20 20 20 20 5f 64 65 66 61  ...        _defa
27880 75 6c 74 54 69 6d 65 6f 75 74 20 3d 20 43 6f 6e  ultTimeout = Con
27890 76 65 72 74 2e 54 6f 49 6e 74 33 32 28 46 69 6e  vert.ToInt32(Fin
278a0 64 4b 65 79 28 6f 70 74 73 2c 20 22 44 65 66 61  dKey(opts, "Defa
278b0 75 6c 74 20 54 69 6d 65 6f 75 74 22 2c 20 53 51  ult Timeout", SQ
278c0 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 53 74  LiteConvert.ToSt
278d0 72 69 6e 67 28 44 65 66 61 75 6c 74 43 6f 6e 6e  ring(DefaultConn
278e0 65 63 74 69 6f 6e 54 69 6d 65 6f 75 74 29 29 2c  ectionTimeout)),
278f0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
27900 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
27910 0a 20 20 20 20 20 20 20 20 5f 62 75 73 79 54 69  .        _busyTi
27920 6d 65 6f 75 74 20 3d 20 43 6f 6e 76 65 72 74 2e  meout = Convert.
27930 54 6f 49 6e 74 33 32 28 46 69 6e 64 4b 65 79 28  ToInt32(FindKey(
27940 6f 70 74 73 2c 20 22 42 75 73 79 54 69 6d 65 6f  opts, "BusyTimeo
27950 75 74 22 2c 20 53 51 4c 69 74 65 43 6f 6e 76 65  ut", SQLiteConve
27960 72 74 2e 54 6f 53 74 72 69 6e 67 28 44 65 66 61  rt.ToString(Defa
27970 75 6c 74 42 75 73 79 54 69 6d 65 6f 75 74 29 29  ultBusyTimeout))
27980 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  , CultureInfo.In
27990 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b  variantCulture);
279a0 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
279b0 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
279c0 52 4b 0d 0a 20 20 20 20 20 20 20 20 5f 77 61 69  RK..        _wai
279d0 74 54 69 6d 65 6f 75 74 20 3d 20 43 6f 6e 76 65  tTimeout = Conve
279e0 72 74 2e 54 6f 49 6e 74 33 32 28 46 69 6e 64 4b  rt.ToInt32(FindK
279f0 65 79 28 6f 70 74 73 2c 20 22 57 61 69 74 54 69  ey(opts, "WaitTi
27a00 6d 65 6f 75 74 22 2c 20 53 51 4c 69 74 65 43 6f  meout", SQLiteCo
27a10 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28 44  nvert.ToString(D
27a20 65 66 61 75 6c 74 57 61 69 74 54 69 6d 65 6f 75  efaultWaitTimeou
27a30 74 29 29 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  t)), CultureInfo
27a40 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
27a50 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
27a60 20 20 20 20 20 20 20 5f 70 72 65 70 61 72 65 52         _prepareR
27a70 65 74 72 69 65 73 20 3d 20 43 6f 6e 76 65 72 74  etries = Convert
27a80 2e 54 6f 49 6e 74 33 32 28 46 69 6e 64 4b 65 79  .ToInt32(FindKey
27a90 28 6f 70 74 73 2c 20 22 50 72 65 70 61 72 65 52  (opts, "PrepareR
27aa0 65 74 72 69 65 73 22 2c 20 53 51 4c 69 74 65 43  etries", SQLiteC
27ab0 6f 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28  onvert.ToString(
27ac0 44 65 66 61 75 6c 74 50 72 65 70 61 72 65 52 65  DefaultPrepareRe
27ad0 74 72 69 65 73 29 29 2c 20 43 75 6c 74 75 72 65  tries)), Culture
27ae0 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
27af0 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
27b00 20 5f 70 72 6f 67 72 65 73 73 4f 70 73 20 3d 20   _progressOps = 
27b10 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28  Convert.ToInt32(
27b20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 50  FindKey(opts, "P
27b30 72 6f 67 72 65 73 73 4f 70 73 22 2c 20 53 51 4c  rogressOps", SQL
27b40 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 53 74 72  iteConvert.ToStr
27b50 69 6e 67 28 44 65 66 61 75 6c 74 50 72 6f 67 72  ing(DefaultProgr
27b60 65 73 73 4f 70 73 29 29 2c 20 43 75 6c 74 75 72  essOps)), Cultur
27b70 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
27b80 75 6c 74 75 72 65 29 3b 0d 0a 0d 0a 20 20 20 20  ulture);....    
27b90 20 20 20 20 65 6e 75 6d 56 61 6c 75 65 20 3d 20      enumValue = 
27ba0 54 72 79 50 61 72 73 65 45 6e 75 6d 28 74 79 70  TryParseEnum(typ
27bb0 65 6f 66 28 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  eof(IsolationLev
27bc0 65 6c 29 2c 20 46 69 6e 64 4b 65 79 28 6f 70 74  el), FindKey(opt
27bd0 73 2c 20 22 44 65 66 61 75 6c 74 20 49 73 6f 6c  s, "Default Isol
27be0 61 74 69 6f 6e 4c 65 76 65 6c 22 2c 20 44 65 66  ationLevel", Def
27bf0 61 75 6c 74 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  aultIsolationLev
27c00 65 6c 2e 54 6f 53 74 72 69 6e 67 28 29 29 2c 20  el.ToString()), 
27c10 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
27c20 5f 64 65 66 61 75 6c 74 49 73 6f 6c 61 74 69 6f  _defaultIsolatio
27c30 6e 20 3d 20 28 65 6e 75 6d 56 61 6c 75 65 20 69  n = (enumValue i
27c40 73 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c  s IsolationLevel
27c50 29 20 3f 20 28 49 73 6f 6c 61 74 69 6f 6e 4c 65  ) ? (IsolationLe
27c60 76 65 6c 29 65 6e 75 6d 56 61 6c 75 65 20 3a 20  vel)enumValue : 
27c70 44 65 66 61 75 6c 74 49 73 6f 6c 61 74 69 6f 6e  DefaultIsolation
27c80 4c 65 76 65 6c 3b 0d 0a 20 20 20 20 20 20 20 20  Level;..        
27c90 5f 64 65 66 61 75 6c 74 49 73 6f 6c 61 74 69 6f  _defaultIsolatio
27ca0 6e 20 3d 20 47 65 74 45 66 66 65 63 74 69 76 65  n = GetEffective
27cb0 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 28 5f  IsolationLevel(_
27cc0 64 65 66 61 75 6c 74 49 73 6f 6c 61 74 69 6f 6e  defaultIsolation
27cd0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  );....        if
27ce0 20 28 5f 64 65 66 61 75 6c 74 49 73 6f 6c 61 74   (_defaultIsolat
27cf0 69 6f 6e 20 21 3d 20 49 6d 6d 65 64 69 61 74 65  ion != Immediate
27d00 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 20 26  IsolationLevel &
27d10 26 20 5f 64 65 66 61 75 6c 74 49 73 6f 6c 61 74  & _defaultIsolat
27d20 69 6f 6e 20 21 3d 20 44 65 66 65 72 72 65 64 49  ion != DeferredI
27d30 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 0d 0a  solationLevel)..
27d40 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
27d50 6e 65 77 20 4e 6f 74 53 75 70 70 6f 72 74 65 64  new NotSupported
27d60 45 78 63 65 70 74 69 6f 6e 28 22 49 6e 76 61 6c  Exception("Inval
27d70 69 64 20 44 65 66 61 75 6c 74 20 49 73 6f 6c 61  id Default Isola
27d80 74 69 6f 6e 4c 65 76 65 6c 20 73 70 65 63 69 66  tionLevel specif
27d90 69 65 64 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ied");....      
27da0 20 20 5f 62 61 73 65 53 63 68 65 6d 61 4e 61 6d    _baseSchemaNam
27db0 65 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73  e = FindKey(opts
27dc0 2c 20 22 42 61 73 65 53 63 68 65 6d 61 4e 61 6d  , "BaseSchemaNam
27dd0 65 22 2c 20 44 65 66 61 75 6c 74 42 61 73 65 53  e", DefaultBaseS
27de0 63 68 65 6d 61 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  chemaName);.... 
27df0 20 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20         if (_sql 
27e00 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
27e10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27e20 20 53 65 74 75 70 53 51 4c 69 74 65 42 61 73 65   SetupSQLiteBase
27e30 28 6f 70 74 73 29 3b 0d 0a 20 20 20 20 20 20 20  (opts);..       
27e40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 53 51   }....        SQ
27e50 4c 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75  LiteOpenFlagsEnu
27e60 6d 20 66 6c 61 67 73 20 3d 20 53 51 4c 69 74 65  m flags = SQLite
27e70 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 2e 4e 6f  OpenFlagsEnum.No
27e80 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ne;....        i
27e90 66 20 28 21 53 51 4c 69 74 65 43 6f 6e 76 65 72  f (!SQLiteConver
27ea0 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 46 69 6e 64  t.ToBoolean(Find
27eb0 4b 65 79 28 6f 70 74 73 2c 20 22 46 61 69 6c 49  Key(opts, "FailI
27ec0 66 4d 69 73 73 69 6e 67 22 2c 20 44 65 66 61 75  fMissing", Defau
27ed0 6c 74 46 61 69 6c 49 66 4d 69 73 73 69 6e 67 2e  ltFailIfMissing.
27ee0 54 6f 53 74 72 69 6e 67 28 29 29 29 29 0d 0a 20  ToString()))).. 
27ef0 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c           flags |
27f00 3d 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  = SQLiteOpenFlag
27f10 73 45 6e 75 6d 2e 43 72 65 61 74 65 3b 0d 0a 0d  sEnum.Create;...
27f20 0a 20 20 20 20 20 20 20 20 69 66 20 28 53 51 4c  .        if (SQL
27f30 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f  iteConvert.ToBoo
27f40 6c 65 61 6e 28 46 69 6e 64 4b 65 79 28 6f 70 74  lean(FindKey(opt
27f50 73 2c 20 22 52 65 61 64 20 4f 6e 6c 79 22 2c 20  s, "Read Only", 
27f60 44 65 66 61 75 6c 74 52 65 61 64 4f 6e 6c 79 2e  DefaultReadOnly.
27f70 54 6f 53 74 72 69 6e 67 28 29 29 29 29 0d 0a 20  ToString()))).. 
27f80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
27f90 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 53 51 4c      flags |= SQL
27fa0 69 74 65 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d  iteOpenFlagsEnum
27fb0 2e 52 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20  .ReadOnly;..    
27fc0 20 20 20 20 20 20 2f 2f 20 53 51 4c 69 74 65 20        // SQLite 
27fd0 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49  will return SQLI
27fe0 54 45 5f 4d 49 53 55 53 45 20 6f 6e 20 52 65 61  TE_MISUSE on Rea
27ff0 64 4f 6e 6c 79 20 61 6e 64 20 43 72 65 61 74 65  dOnly and Create
28000 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6c 61 67  ..          flag
28010 73 20 26 3d 20 7e 53 51 4c 69 74 65 4f 70 65 6e  s &= ~SQLiteOpen
28020 46 6c 61 67 73 45 6e 75 6d 2e 43 72 65 61 74 65  FlagsEnum.Create
28030 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
28040 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
28050 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28060 20 66 6c 61 67 73 20 7c 3d 20 53 51 4c 69 74 65   flags |= SQLite
28070 4f 70 65 6e 46 6c 61 67 73 45 6e 75 6d 2e 52 65  OpenFlagsEnum.Re
28080 61 64 57 72 69 74 65 3b 0d 0a 20 20 20 20 20 20  adWrite;..      
28090 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
280a0 66 20 28 66 75 6c 6c 55 72 69 29 0d 0a 20 20 20  f (fullUri)..   
280b0 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c           flags |
280c0 3d 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  = SQLiteOpenFlag
280d0 73 45 6e 75 6d 2e 55 72 69 3b 0d 0a 0d 0a 20 20  sEnum.Uri;....  
280e0 20 20 20 20 20 20 5f 73 71 6c 2e 4f 70 65 6e 28        _sql.Open(
280f0 66 69 6c 65 4e 61 6d 65 2c 20 5f 76 66 73 4e 61  fileName, _vfsNa
28100 6d 65 2c 20 5f 66 6c 61 67 73 2c 20 66 6c 61 67  me, _flags, flag
28110 73 2c 20 6d 61 78 50 6f 6f 6c 53 69 7a 65 2c 20  s, maxPoolSize, 
28120 75 73 65 50 6f 6f 6c 69 6e 67 29 3b 0d 0a 0d 0a  usePooling);....
28130 20 20 20 20 20 20 20 20 5f 62 69 6e 61 72 79 47          _binaryG
28140 75 69 64 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76  uid = SQLiteConv
28150 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 46 69  ert.ToBoolean(Fi
28160 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 42 69 6e  ndKey(opts, "Bin
28170 61 72 79 47 55 49 44 22 2c 20 44 65 66 61 75 6c  aryGUID", Defaul
28180 74 42 69 6e 61 72 79 47 55 49 44 2e 54 6f 53 74  tBinaryGUID.ToSt
28190 72 69 6e 67 28 29 29 29 3b 0d 0a 0d 0a 23 69 66  ring()));....#if
281a0 20 49 4e 54 45 52 4f 50 5f 43 4f 44 45 43 20 7c   INTEROP_CODEC |
281b0 7c 20 49 4e 54 45 52 4f 50 5f 49 4e 43 4c 55 44  | INTEROP_INCLUD
281c0 45 5f 53 45 45 0d 0a 20 20 20 20 20 20 20 20 73  E_SEE..        s
281d0 74 72 69 6e 67 20 68 65 78 50 61 73 73 77 6f 72  tring hexPasswor
281e0 64 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73  d = FindKey(opts
281f0 2c 20 22 48 65 78 50 61 73 73 77 6f 72 64 22 2c  , "HexPassword",
28200 20 44 65 66 61 75 6c 74 48 65 78 50 61 73 73 77   DefaultHexPassw
28210 6f 72 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ord);....       
28220 20 69 66 20 28 68 65 78 50 61 73 73 77 6f 72 64   if (hexPassword
28230 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
28240 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28250 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20 3d    string error =
28260 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
28270 20 20 20 20 62 79 74 65 5b 5d 20 68 65 78 50 61      byte[] hexPa
28280 73 73 77 6f 72 64 42 79 74 65 73 20 3d 20 46 72  sswordBytes = Fr
28290 6f 6d 48 65 78 53 74 72 69 6e 67 28 68 65 78 50  omHexString(hexP
282a0 61 73 73 77 6f 72 64 2c 20 72 65 66 20 65 72 72  assword, ref err
282b0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
282c0 20 20 20 20 69 66 20 28 68 65 78 50 61 73 73 77      if (hexPassw
282d0 6f 72 64 42 79 74 65 73 20 3d 3d 20 6e 75 6c 6c  ordBytes == null
282e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
282f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28300 20 20 74 68 72 6f 77 20 6e 65 77 20 46 6f 72 6d    throw new Form
28310 61 74 45 78 63 65 70 74 69 6f 6e 28 48 65 6c 70  atException(Help
28320 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67  erMethods.String
28330 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
28350 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
28360 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
28370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
28380 61 6e 6e 6f 74 20 70 61 72 73 65 20 27 48 65 78  annot parse 'Hex
28390 50 61 73 73 77 6f 72 64 27 20 70 72 6f 70 65 72  Password' proper
283a0 74 79 20 76 61 6c 75 65 20 69 6e 74 6f 20 62 79  ty value into by
283b0 74 65 20 76 61 6c 75 65 73 3a 20 7b 30 7d 22 2c  te values: {0}",
283c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
283d0 20 20 20 20 20 20 65 72 72 6f 72 29 29 3b 0d 0a        error));..
283e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
283f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 73 71  .            _sq
28400 6c 2e 53 65 74 50 61 73 73 77 6f 72 64 28 68 65  l.SetPassword(he
28410 78 50 61 73 73 77 6f 72 64 42 79 74 65 73 29 3b  xPasswordBytes);
28420 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
28430 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
28440 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28450 20 20 73 74 72 69 6e 67 20 70 61 73 73 77 6f 72    string passwor
28460 64 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73  d = FindKey(opts
28470 2c 20 22 50 61 73 73 77 6f 72 64 22 2c 20 44 65  , "Password", De
28480 66 61 75 6c 74 50 61 73 73 77 6f 72 64 29 3b 0d  faultPassword);.
28490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
284a0 66 20 28 70 61 73 73 77 6f 72 64 20 21 3d 20 6e  f (password != n
284b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
284c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
284d0 20 20 20 20 20 62 79 74 65 5b 5d 20 70 61 73 73       byte[] pass
284e0 77 6f 72 64 42 79 74 65 73 20 3d 20 55 54 46 38  wordBytes = UTF8
284f0 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47 65  Encoding.UTF8.Ge
28500 74 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20 20  tBytes(..       
28510 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73               pas
28520 73 77 6f 72 64 29 3b 20 2f 2a 20 74 68 72 6f 77  sword); /* throw
28530 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
28540 20 20 20 20 20 20 20 5f 73 71 6c 2e 53 65 74 50         _sql.SetP
28550 61 73 73 77 6f 72 64 28 70 61 73 73 77 6f 72 64  assword(password
28560 42 79 74 65 73 29 3b 0d 0a 20 20 20 20 20 20 20  Bytes);..       
28570 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
28580 20 20 20 20 65 6c 73 65 20 69 66 20 28 5f 70 61      else if (_pa
28590 73 73 77 6f 72 64 20 21 3d 20 6e 75 6c 6c 29 0d  ssword != null).
285a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
285b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285c0 5f 73 71 6c 2e 53 65 74 50 61 73 73 77 6f 72 64  _sql.SetPassword
285d0 28 5f 70 61 73 73 77 6f 72 64 29 3b 0d 0a 20 20  (_password);..  
285e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
285f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28600 20 20 68 65 78 50 61 73 73 77 6f 72 64 20 3d 20    hexPassword = 
28610 6e 75 6c 6c 3b 20 2f 2a 20 49 4d 4d 55 54 41 42  null; /* IMMUTAB
28620 4c 45 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 5f  LE */..        _
28630 70 61 73 73 77 6f 72 64 20 3d 20 6e 75 6c 6c 3b  password = null;
28640 20 2f 2a 20 49 4d 4d 55 54 41 42 4c 45 20 2a 2f   /* IMMUTABLE */
28650 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
28660 68 69 64 65 50 61 73 73 77 6f 72 64 29 0d 0a 20  hidePassword).. 
28670 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28680 20 20 20 20 20 20 69 66 20 28 6f 70 74 73 2e 43        if (opts.C
28690 6f 6e 74 61 69 6e 73 4b 65 79 28 22 48 65 78 50  ontainsKey("HexP
286a0 61 73 73 77 6f 72 64 22 29 29 0d 0a 20 20 20 20  assword"))..    
286b0 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 74 73              opts
286c0 5b 22 48 65 78 50 61 73 73 77 6f 72 64 22 5d 20  ["HexPassword"] 
286d0 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
286e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
286f0 66 20 28 6f 70 74 73 2e 43 6f 6e 74 61 69 6e 73  f (opts.Contains
28700 4b 65 79 28 22 50 61 73 73 77 6f 72 64 22 29 29  Key("Password"))
28710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28720 20 20 6f 70 74 73 5b 22 50 61 73 73 77 6f 72 64    opts["Password
28730 22 5d 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  "] = String.Empt
28740 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
28750 20 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72    _connectionStr
28760 69 6e 67 20 3d 20 42 75 69 6c 64 43 6f 6e 6e 65  ing = BuildConne
28770 63 74 69 6f 6e 53 74 72 69 6e 67 28 6f 70 74 73  ctionString(opts
28780 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  );..        }..#
28790 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 69 66  else..        if
287a0 20 28 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20   (FindKey(opts, 
287b0 22 48 65 78 50 61 73 73 77 6f 72 64 22 2c 20 44  "HexPassword", D
287c0 65 66 61 75 6c 74 48 65 78 50 61 73 73 77 6f 72  efaultHexPasswor
287d0 64 29 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  d) != null)..   
287e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
287f0 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51      throw new SQ
28800 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 53 51  LiteException(SQ
28810 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
28820 72 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ror,..          
28830 20 20 20 20 20 20 22 43 61 6e 6e 6f 74 20 75 73        "Cannot us
28840 65 20 5c 22 48 65 78 50 61 73 73 77 6f 72 64 5c  e \"HexPassword\
28850 22 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  " connection str
28860 69 6e 67 20 70 72 6f 70 65 72 74 79 3a 20 22 20  ing property: " 
28870 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
28880 20 20 20 22 6c 69 62 72 61 72 79 20 77 61 73 20     "library was 
28890 6e 6f 74 20 62 75 69 6c 74 20 77 69 74 68 20 65  not built with e
288a0 6e 63 72 79 70 74 69 6f 6e 20 73 75 70 70 6f 72  ncryption suppor
288b0 74 2c 20 70 6c 65 61 73 65 20 22 20 2b 0d 0a 20  t, please " +.. 
288c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
288d0 73 65 65 20 5c 22 68 74 74 70 73 3a 2f 2f 77 77  see \"https://ww
288e0 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 65 65  w.sqlite.org/see
288f0 5c 22 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f  \" for more info
28900 72 6d 61 74 69 6f 6e 22 29 3b 0d 0a 20 20 20 20  rmation");..    
28910 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28920 20 69 66 20 28 46 69 6e 64 4b 65 79 28 6f 70 74   if (FindKey(opt
28930 73 2c 20 22 50 61 73 73 77 6f 72 64 22 2c 20 44  s, "Password", D
28940 65 66 61 75 6c 74 50 61 73 73 77 6f 72 64 29 20  efaultPassword) 
28950 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
28960 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28970 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
28980 65 45 78 63 65 70 74 69 6f 6e 28 53 51 4c 69 74  eException(SQLit
28990 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
289a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
289b0 20 20 20 22 43 61 6e 6e 6f 74 20 75 73 65 20 5c     "Cannot use \
289c0 22 50 61 73 73 77 6f 72 64 5c 22 20 63 6f 6e 6e  "Password\" conn
289d0 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72  ection string pr
289e0 6f 70 65 72 74 79 3a 20 22 20 2b 0d 0a 20 20 20  operty: " +..   
289f0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6c 69               "li
28a00 62 72 61 72 79 20 77 61 73 20 6e 6f 74 20 62 75  brary was not bu
28a10 69 6c 74 20 77 69 74 68 20 65 6e 63 72 79 70 74  ilt with encrypt
28a20 69 6f 6e 20 73 75 70 70 6f 72 74 2c 20 70 6c 65  ion support, ple
28a30 61 73 65 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  ase " +..       
28a40 20 20 20 20 20 20 20 20 20 22 73 65 65 20 5c 22           "see \"
28a50 68 74 74 70 73 3a 2f 2f 77 77 77 2e 73 71 6c 69  https://www.sqli
28a60 74 65 2e 6f 72 67 2f 73 65 65 5c 22 20 66 6f 72  te.org/see\" for
28a70 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f   more informatio
28a80 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  n");..        }.
28a90 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
28aa0 20 20 20 69 66 20 28 21 66 75 6c 6c 55 72 69 29     if (!fullUri)
28ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 5f 64 61 74  ..          _dat
28ac0 61 53 6f 75 72 63 65 20 3d 20 50 61 74 68 2e 47  aSource = Path.G
28ad0 65 74 46 69 6c 65 4e 61 6d 65 57 69 74 68 6f 75  etFileNameWithou
28ae0 74 45 78 74 65 6e 73 69 6f 6e 28 66 69 6c 65 4e  tExtension(fileN
28af0 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 65  ame);..        e
28b00 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 5f  lse..          _
28b10 64 61 74 61 53 6f 75 72 63 65 20 3d 20 66 69 6c  dataSource = fil
28b20 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
28b30 20 20 5f 76 65 72 73 69 6f 6e 2b 2b 3b 0d 0a 0d    _version++;...
28b40 0a 20 20 20 20 20 20 20 20 43 6f 6e 6e 65 63 74  .        Connect
28b50 69 6f 6e 53 74 61 74 65 20 6f 6c 64 73 74 61 74  ionState oldstat
28b60 65 20 3d 20 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53  e = _connectionS
28b70 74 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 5f  tate;..        _
28b80 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 20  connectionState 
28b90 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74  = ConnectionStat
28ba0 65 2e 4f 70 65 6e 3b 0d 0a 0d 0a 20 20 20 20 20  e.Open;....     
28bb0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
28bc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 73 74 72  {..          str
28bd0 69 6e 67 20 73 74 72 56 61 6c 75 65 3b 0d 0a 20  ing strValue;.. 
28be0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 62 6f           bool bo
28bf0 6f 6c 56 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  olValue;....    
28c00 20 20 20 20 20 20 73 74 72 56 61 6c 75 65 20 3d        strValue =
28c10 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22   FindKey(opts, "
28c20 53 65 74 44 65 66 61 75 6c 74 73 22 2c 20 44 65  SetDefaults", De
28c30 66 61 75 6c 74 53 65 74 44 65 66 61 75 6c 74 73  faultSetDefaults
28c40 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
28c50 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 56 61 6c           boolVal
28c60 75 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65  ue = SQLiteConve
28c70 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 73 74 72  rt.ToBoolean(str
28c80 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  Value);....     
28c90 20 20 20 20 20 69 66 20 28 62 6f 6f 6c 56 61 6c       if (boolVal
28ca0 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  ue)..          {
28cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28cc0 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d  using (SQLiteCom
28cd0 6d 61 6e 64 20 63 6d 64 20 3d 20 43 72 65 61 74  mand cmd = Creat
28ce0 65 43 6f 6d 6d 61 6e 64 28 29 29 0d 0a 20 20 20  eCommand())..   
28cf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d10 69 66 20 28 5f 62 75 73 79 54 69 6d 65 6f 75 74  if (_busyTimeout
28d20 20 21 3d 20 44 65 66 61 75 6c 74 42 75 73 79 54   != DefaultBusyT
28d30 69 6d 65 6f 75 74 29 0d 0a 20 20 20 20 20 20 20  imeout)..       
28d40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d60 20 20 20 20 63 6d 64 2e 43 6f 6d 6d 61 6e 64 54      cmd.CommandT
28d70 65 78 74 20 3d 20 48 65 6c 70 65 72 4d 65 74 68  ext = HelperMeth
28d80 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
28d90 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
28da0 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 22  ariantCulture, "
28db0 50 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65  PRAGMA busy_time
28dc0 6f 75 74 3d 7b 30 7d 22 2c 20 5f 62 75 73 79 54  out={0}", _busyT
28dd0 69 6d 65 6f 75 74 29 3b 0d 0a 20 20 20 20 20 20  imeout);..      
28de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28df0 63 6d 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75  cmd.ExecuteNonQu
28e00 65 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ery();..        
28e10 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
28e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e30 20 69 6e 74 20 69 6e 74 56 61 6c 75 65 3b 0d 0a   int intValue;..
28e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28e50 20 20 20 20 69 66 20 28 21 66 75 6c 6c 55 72 69      if (!fullUri
28e60 20 26 26 20 21 69 73 4d 65 6d 6f 72 79 29 0d 0a   && !isMemory)..
28e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28e90 20 20 20 20 20 20 20 20 20 20 20 73 74 72 56 61             strVa
28ea0 6c 75 65 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70  lue = FindKey(op
28eb0 74 73 2c 20 22 50 61 67 65 20 53 69 7a 65 22 2c  ts, "Page Size",
28ec0 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54   SQLiteConvert.T
28ed0 6f 53 74 72 69 6e 67 28 44 65 66 61 75 6c 74 50  oString(DefaultP
28ee0 61 67 65 53 69 7a 65 29 29 3b 0d 0a 20 20 20 20  ageSize));..    
28ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f00 20 20 69 6e 74 56 61 6c 75 65 20 3d 20 43 6f 6e    intValue = Con
28f10 76 65 72 74 2e 54 6f 49 6e 74 33 32 28 73 74 72  vert.ToInt32(str
28f20 56 61 6c 75 65 2c 20 43 75 6c 74 75 72 65 49 6e  Value, CultureIn
28f30 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
28f40 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ure);..         
28f50 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
28f60 28 69 6e 74 56 61 6c 75 65 20 21 3d 20 44 65 66  (intValue != Def
28f70 61 75 6c 74 50 61 67 65 53 69 7a 65 29 0d 0a 20  aultPageSize).. 
28f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fb0 20 20 63 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78    cmd.CommandTex
28fc0 74 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64  t = HelperMethod
28fd0 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
28fe0 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
28ff0 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 50 52  iantCulture, "PR
29000 41 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 3d 7b  AGMA page_size={
29010 30 7d 22 2c 20 69 6e 74 56 61 6c 75 65 29 3b 0d  0}", intValue);.
29020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29030 20 20 20 20 20 20 20 20 20 20 20 63 6d 64 2e 45             cmd.E
29040 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29  xecuteNonQuery()
29050 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29060 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
29080 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29090 20 20 20 20 20 73 74 72 56 61 6c 75 65 20 3d 20       strValue = 
290a0 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 4d  FindKey(opts, "M
290b0 61 78 20 50 61 67 65 20 43 6f 75 6e 74 22 2c 20  ax Page Count", 
290c0 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f  SQLiteConvert.To
290d0 53 74 72 69 6e 67 28 44 65 66 61 75 6c 74 4d 61  String(DefaultMa
290e0 78 50 61 67 65 43 6f 75 6e 74 29 29 3b 0d 0a 20  xPageCount));.. 
290f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29100 20 69 6e 74 56 61 6c 75 65 20 3d 20 43 6f 6e 76   intValue = Conv
29110 65 72 74 2e 54 6f 49 6e 74 33 32 28 73 74 72 56  ert.ToInt32(strV
29120 61 6c 75 65 2c 20 43 75 6c 74 75 72 65 49 6e 66  alue, CultureInf
29130 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
29140 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  re);..          
29150 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 74 56          if (intV
29160 61 6c 75 65 20 21 3d 20 44 65 66 61 75 6c 74 4d  alue != DefaultM
29170 61 78 50 61 67 65 43 6f 75 6e 74 29 0d 0a 20 20  axPageCount)..  
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29190 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
291a0 20 20 20 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d           cmd.Com
291b0 6d 61 6e 64 54 65 78 74 20 3d 20 48 65 6c 70 65  mandText = Helpe
291c0 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
291d0 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66  ormat(CultureInf
291e0 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
291f0 72 65 2c 20 22 50 52 41 47 4d 41 20 6d 61 78 5f  re, "PRAGMA max_
29200 70 61 67 65 5f 63 6f 75 6e 74 3d 7b 30 7d 22 2c  page_count={0}",
29210 20 69 6e 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20   intValue);..   
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29230 20 20 20 63 6d 64 2e 45 78 65 63 75 74 65 4e 6f     cmd.ExecuteNo
29240 6e 51 75 65 72 79 28 29 3b 0d 0a 20 20 20 20 20  nQuery();..     
29250 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
29260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29270 20 20 20 20 73 74 72 56 61 6c 75 65 20 3d 20 46      strValue = F
29280 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 4c 65  indKey(opts, "Le
29290 67 61 63 79 20 46 6f 72 6d 61 74 22 2c 20 44 65  gacy Format", De
292a0 66 61 75 6c 74 4c 65 67 61 63 79 46 6f 72 6d 61  faultLegacyForma
292b0 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a  t.ToString());..
292c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292d0 20 20 62 6f 6f 6c 56 61 6c 75 65 20 3d 20 53 51    boolValue = SQ
292e0 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f  LiteConvert.ToBo
292f0 6f 6c 65 61 6e 28 73 74 72 56 61 6c 75 65 29 3b  olean(strValue);
29300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29310 20 20 20 20 69 66 20 28 62 6f 6f 6c 56 61 6c 75      if (boolValu
29320 65 20 21 3d 20 44 65 66 61 75 6c 74 4c 65 67 61  e != DefaultLega
29330 63 79 46 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20  cyFormat)..     
29340 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29360 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d 6d 61 6e        cmd.Comman
29370 64 54 65 78 74 20 3d 20 48 65 6c 70 65 72 4d 65  dText = HelperMe
29380 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
29390 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  at(CultureInfo.I
293a0 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
293b0 20 22 50 52 41 47 4d 41 20 6c 65 67 61 63 79 5f   "PRAGMA legacy_
293c0 66 69 6c 65 5f 66 6f 72 6d 61 74 3d 7b 30 7d 22  file_format={0}"
293d0 2c 20 62 6f 6f 6c 56 61 6c 75 65 20 3f 20 22 4f  , boolValue ? "O
293e0 4e 22 20 3a 20 22 4f 46 46 22 29 3b 0d 0a 20 20  N" : "OFF");..  
293f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29400 20 20 20 20 63 6d 64 2e 45 78 65 63 75 74 65 4e      cmd.ExecuteN
29410 6f 6e 51 75 65 72 79 28 29 3b 0d 0a 20 20 20 20  onQuery();..    
29420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
29430 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
29440 20 20 20 20 20 73 74 72 56 61 6c 75 65 20 3d 20       strValue = 
29450 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20 22 53  FindKey(opts, "S
29460 79 6e 63 68 72 6f 6e 6f 75 73 22 2c 20 44 65 66  ynchronous", Def
29470 61 75 6c 74 53 79 6e 63 68 72 6f 6e 6f 75 73 2e  aultSynchronous.
29480 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
29490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294a0 65 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50  enumValue = TryP
294b0 61 72 73 65 45 6e 75 6d 28 74 79 70 65 6f 66 28  arseEnum(typeof(
294c0 53 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e 6f 75  SQLiteSynchronou
294d0 73 45 6e 75 6d 29 2c 20 73 74 72 56 61 6c 75 65  sEnum), strValue
294e0 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  , true);..      
294f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
29500 21 28 65 6e 75 6d 56 61 6c 75 65 20 69 73 20 53  !(enumValue is S
29510 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e 6f 75 73  QLiteSynchronous
29520 45 6e 75 6d 29 20 7c 7c 20 28 28 53 51 4c 69 74  Enum) || ((SQLit
29530 65 53 79 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d  eSynchronousEnum
29540 29 65 6e 75 6d 56 61 6c 75 65 20 21 3d 20 44 65  )enumValue != De
29550 66 61 75 6c 74 53 79 6e 63 68 72 6f 6e 6f 75 73  faultSynchronous
29560 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
29570 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
29580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29590 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d  md.CommandText =
295a0 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
295b0 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
295c0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
295d0 74 43 75 6c 74 75 72 65 2c 20 22 50 52 41 47 4d  tCulture, "PRAGM
295e0 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 7b 30  A synchronous={0
295f0 7d 22 2c 20 73 74 72 56 61 6c 75 65 29 3b 0d 0a  }", strValue);..
29600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29610 20 20 20 20 20 20 63 6d 64 2e 45 78 65 63 75 74        cmd.Execut
29620 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0d 0a 20 20  eNonQuery();..  
29630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29640 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
29650 20 20 20 20 20 20 20 73 74 72 56 61 6c 75 65 20         strValue 
29660 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c 20  = FindKey(opts, 
29670 22 43 61 63 68 65 20 53 69 7a 65 22 2c 20 53 51  "Cache Size", SQ
29680 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 53 74  LiteConvert.ToSt
29690 72 69 6e 67 28 44 65 66 61 75 6c 74 43 61 63 68  ring(DefaultCach
296a0 65 53 69 7a 65 29 29 3b 0d 0a 20 20 20 20 20 20  eSize));..      
296b0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 56              intV
296c0 61 6c 75 65 20 3d 20 43 6f 6e 76 65 72 74 2e 54  alue = Convert.T
296d0 6f 49 6e 74 33 32 28 73 74 72 56 61 6c 75 65 2c  oInt32(strValue,
296e0 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
296f0 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
29700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29710 20 20 20 69 66 20 28 69 6e 74 56 61 6c 75 65 20     if (intValue 
29720 21 3d 20 44 65 66 61 75 6c 74 43 61 63 68 65 53  != DefaultCacheS
29730 69 7a 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ize)..          
29740 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29760 20 63 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74   cmd.CommandText
29770 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73   = HelperMethods
29780 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
29790 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
297a0 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 50 52 41  antCulture, "PRA
297b0 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3d 7b  GMA cache_size={
297c0 30 7d 22 2c 20 69 6e 74 56 61 6c 75 65 29 3b 0d  0}", intValue);.
297d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
297e0 20 20 20 20 20 20 20 63 6d 64 2e 45 78 65 63 75         cmd.Execu
297f0 74 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0d 0a 20  teNonQuery();.. 
29800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29810 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29820 20 20 20 20 20 20 20 20 73 74 72 56 61 6c 75 65          strValue
29830 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c   = FindKey(opts,
29840 20 22 4a 6f 75 72 6e 61 6c 20 4d 6f 64 65 22 2c   "Journal Mode",
29850 20 44 65 66 61 75 6c 74 4a 6f 75 72 6e 61 6c 4d   DefaultJournalM
29860 6f 64 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  ode.ToString());
29870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29880 20 20 20 20 65 6e 75 6d 56 61 6c 75 65 20 3d 20      enumValue = 
29890 54 72 79 50 61 72 73 65 45 6e 75 6d 28 74 79 70  TryParseEnum(typ
298a0 65 6f 66 28 53 51 4c 69 74 65 4a 6f 75 72 6e 61  eof(SQLiteJourna
298b0 6c 4d 6f 64 65 45 6e 75 6d 29 2c 20 73 74 72 56  lModeEnum), strV
298c0 61 6c 75 65 2c 20 74 72 75 65 29 3b 0d 0a 20 20  alue, true);..  
298d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298e0 69 66 20 28 21 28 65 6e 75 6d 56 61 6c 75 65 20  if (!(enumValue 
298f0 69 73 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c  is SQLiteJournal
29900 4d 6f 64 65 45 6e 75 6d 29 20 7c 7c 20 28 28 53  ModeEnum) || ((S
29910 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65  QLiteJournalMode
29920 45 6e 75 6d 29 65 6e 75 6d 56 61 6c 75 65 20 21  Enum)enumValue !
29930 3d 20 44 65 66 61 75 6c 74 4a 6f 75 72 6e 61 6c  = DefaultJournal
29940 4d 6f 64 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Mode))..        
29950 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29970 20 20 20 73 74 72 69 6e 67 20 70 72 61 67 6d 61     string pragma
29980 53 74 72 20 3d 20 22 50 52 41 47 4d 41 20 6a 6f  Str = "PRAGMA jo
29990 75 72 6e 61 6c 5f 6d 6f 64 65 3d 7b 30 7d 22 3b  urnal_mode={0}";
299a0 0d 0a 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f  ....#if INTEROP_
299b0 49 4e 43 4c 55 44 45 5f 5a 49 50 56 46 53 0d 0a  INCLUDE_ZIPVFS..
299c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299d0 20 20 20 20 20 20 69 66 20 28 75 73 65 5a 69 70        if (useZip
299e0 56 66 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  Vfs)..          
299f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a00 70 72 61 67 6d 61 53 74 72 20 3d 20 22 50 52 41  pragmaStr = "PRA
29a10 47 4d 41 20 7a 69 70 76 66 73 5f 6a 6f 75 72 6e  GMA zipvfs_journ
29a20 61 6c 5f 6d 6f 64 65 3d 7b 30 7d 22 3b 0d 0a 23  al_mode={0}";..#
29a30 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
29a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29a50 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d  md.CommandText =
29a60 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
29a70 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
29a80 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
29a90 74 43 75 6c 74 75 72 65 2c 20 70 72 61 67 6d 61  tCulture, pragma
29aa0 53 74 72 2c 20 73 74 72 56 61 6c 75 65 29 3b 0d  Str, strValue);.
29ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29ac0 20 20 20 20 20 20 20 63 6d 64 2e 45 78 65 63 75         cmd.Execu
29ad0 74 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0d 0a 20  teNonQuery();.. 
29ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29af0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29b00 20 20 20 20 20 20 20 20 73 74 72 56 61 6c 75 65          strValue
29b10 20 3d 20 46 69 6e 64 4b 65 79 28 6f 70 74 73 2c   = FindKey(opts,
29b20 20 22 46 6f 72 65 69 67 6e 20 4b 65 79 73 22 2c   "Foreign Keys",
29b30 20 44 65 66 61 75 6c 74 46 6f 72 65 69 67 6e 4b   DefaultForeignK
29b40 65 79 73 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  eys.ToString());
29b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29b60 20 20 20 20 62 6f 6f 6c 56 61 6c 75 65 20 3d 20      boolValue = 
29b70 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f  SQLiteConvert.To
29b80 42 6f 6f 6c 65 61 6e 28 73 74 72 56 61 6c 75 65  Boolean(strValue
29b90 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
29ba0 20 20 20 20 20 20 69 66 20 28 62 6f 6f 6c 56 61        if (boolVa
29bb0 6c 75 65 20 21 3d 20 44 65 66 61 75 6c 74 46 6f  lue != DefaultFo
29bc0 72 65 69 67 6e 4b 65 79 73 29 0d 0a 20 20 20 20  reignKeys)..    
29bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
29be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29bf0 20 20 20 20 20 20 20 63 6d 64 2e 43 6f 6d 6d 61         cmd.Comma
29c00 6e 64 54 65 78 74 20 3d 20 48 65 6c 70 65 72 4d  ndText = HelperM
29c10 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
29c20 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
29c30 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
29c40 2c 20 22 50 52 41 47 4d 41 20 66 6f 72 65 69 67  , "PRAGMA foreig
29c50 6e 5f 6b 65 79 73 3d 7b 30 7d 22 2c 20 62 6f 6f  n_keys={0}", boo
29c60 6c 56 61 6c 75 65 20 3f 20 22 4f 4e 22 20 3a 20  lValue ? "ON" : 
29c70 22 4f 46 46 22 29 3b 0d 0a 20 20 20 20 20 20 20  "OFF");..       
29c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29c90 6d 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  md.ExecuteNonQue
29ca0 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
29cb0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
29cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29cd0 73 74 72 56 61 6c 75 65 20 3d 20 46 69 6e 64 4b  strValue = FindK
29ce0 65 79 28 6f 70 74 73 2c 20 22 52 65 63 75 72 73  ey(opts, "Recurs
29cf0 69 76 65 20 54 72 69 67 67 65 72 73 22 2c 20 44  ive Triggers", D
29d00 65 66 61 75 6c 74 52 65 63 75 72 73 69 76 65 54  efaultRecursiveT
29d10 72 69 67 67 65 72 73 2e 54 6f 53 74 72 69 6e 67  riggers.ToString
29d20 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
29d30 20 20 20 20 20 20 20 20 62 6f 6f 6c 56 61 6c 75          boolValu
29d40 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  e = SQLiteConver
29d50 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 73 74 72 56  t.ToBoolean(strV
29d60 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
29d70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6f            if (bo
29d80 6f 6c 56 61 6c 75 65 20 21 3d 20 44 65 66 61 75  olValue != Defau
29d90 6c 74 52 65 63 75 72 73 69 76 65 54 72 69 67 67  ltRecursiveTrigg
29da0 65 72 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ers)..          
29db0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29dd0 20 63 6d 64 2e 43 6f 6d 6d 61 6e 64 54 65 78 74   cmd.CommandText
29de0 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73   = HelperMethods
29df0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
29e00 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
29e10 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 50 52 41  antCulture, "PRA
29e20 47 4d 41 20 72 65 63 75 72 73 69 76 65 5f 74 72  GMA recursive_tr
29e30 69 67 67 65 72 73 3d 7b 30 7d 22 2c 20 62 6f 6f  iggers={0}", boo
29e40 6c 56 61 6c 75 65 20 3f 20 22 4f 4e 22 20 3a 20  lValue ? "ON" : 
29e50 22 4f 46 46 22 29 3b 0d 0a 20 20 20 20 20 20 20  "OFF");..       
29e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29e70 6d 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  md.ExecuteNonQue
29e80 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
29e90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29ea0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
29eb0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29ec0 20 20 20 20 20 20 69 66 20 28 5f 70 72 6f 67 72        if (_progr
29ed0 65 73 73 48 61 6e 64 6c 65 72 20 21 3d 20 6e 75  essHandler != nu
29ee0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
29ef0 20 20 20 5f 73 71 6c 2e 53 65 74 50 72 6f 67 72     _sql.SetProgr
29f00 65 73 73 48 6f 6f 6b 28 5f 70 72 6f 67 72 65 73  essHook(_progres
29f10 73 4f 70 73 2c 20 5f 70 72 6f 67 72 65 73 73 43  sOps, _progressC
29f20 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  allback);....   
29f30 20 20 20 20 20 20 20 69 66 20 28 5f 61 75 74 68         if (_auth
29f40 6f 72 69 7a 65 72 48 61 6e 64 6c 65 72 20 21 3d  orizerHandler !=
29f50 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
29f60 20 20 20 20 20 20 5f 73 71 6c 2e 53 65 74 41 75        _sql.SetAu
29f70 74 68 6f 72 69 7a 65 72 48 6f 6f 6b 28 5f 61 75  thorizerHook(_au
29f80 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61 63 6b  thorizerCallback
29f90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
29fa0 69 66 20 28 5f 63 6f 6d 6d 69 74 48 61 6e 64 6c  if (_commitHandl
29fb0 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  er != null)..   
29fc0 20 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 53 65           _sql.Se
29fd0 74 43 6f 6d 6d 69 74 48 6f 6f 6b 28 5f 63 6f 6d  tCommitHook(_com
29fe0 6d 69 74 43 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  mitCallback);...
29ff0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f  .          if (_
2a000 75 70 64 61 74 65 48 61 6e 64 6c 65 72 20 21 3d  updateHandler !=
2a010 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2a020 20 20 20 20 5f 73 71 6c 2e 53 65 74 55 70 64 61      _sql.SetUpda
2a030 74 65 48 6f 6f 6b 28 5f 75 70 64 61 74 65 43 61  teHook(_updateCa
2a040 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20  llback);....    
2a050 20 20 20 20 20 20 69 66 20 28 5f 72 6f 6c 6c 62        if (_rollb
2a060 61 63 6b 48 61 6e 64 6c 65 72 20 21 3d 20 6e 75  ackHandler != nu
2a070 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a080 20 5f 73 71 6c 2e 53 65 74 52 6f 6c 6c 62 61 63   _sql.SetRollbac
2a090 6b 48 6f 6f 6b 28 5f 72 6f 6c 6c 62 61 63 6b 43  kHook(_rollbackC
2a0a0 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 23 69 66  allback);....#if
2a0b0 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
2a0c0 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
2a0d0 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 54 72         System.Tr
2a0e0 61 6e 73 61 63 74 69 6f 6e 73 2e 54 72 61 6e 73  ansactions.Trans
2a0f0 61 63 74 69 6f 6e 20 74 72 61 6e 73 61 63 74 69  action transacti
2a100 6f 6e 20 3d 20 54 72 61 6e 73 61 63 74 69 6f 6e  on = Transaction
2a110 73 2e 54 72 61 6e 73 61 63 74 69 6f 6e 2e 43 75  s.Transaction.Cu
2a120 72 72 65 6e 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  rrent;....      
2a130 20 20 20 20 69 66 20 28 74 72 61 6e 73 61 63 74      if (transact
2a140 69 6f 6e 20 21 3d 20 6e 75 6c 6c 20 26 26 0d 0a  ion != null &&..
2a150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
2a160 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f  LiteConvert.ToBo
2a170 6f 6c 65 61 6e 28 46 69 6e 64 4b 65 79 28 6f 70  olean(FindKey(op
2a180 74 73 2c 20 22 45 6e 6c 69 73 74 22 2c 20 44 65  ts, "Enlist", De
2a190 66 61 75 6c 74 45 6e 6c 69 73 74 2e 54 6f 53 74  faultEnlist.ToSt
2a1a0 72 69 6e 67 28 29 29 29 29 0d 0a 20 20 20 20 20  ring())))..     
2a1b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a1c0 20 20 20 20 20 20 45 6e 6c 69 73 74 54 72 61 6e        EnlistTran
2a1d0 73 61 63 74 69 6f 6e 28 74 72 61 6e 73 61 63 74  saction(transact
2a1e0 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ion);..         
2a1f0 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
2a200 20 20 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74          _connect
2a210 69 6f 6e 53 74 61 74 65 20 3d 20 6f 6c 64 73 74  ionState = oldst
2a220 61 74 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ate;....        
2a230 20 20 53 74 61 74 65 43 68 61 6e 67 65 45 76 65    StateChangeEve
2a240 6e 74 41 72 67 73 20 65 76 65 6e 74 41 72 67 73  ntArgs eventArgs
2a250 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
2a260 20 20 20 20 4f 6e 53 74 61 74 65 43 68 61 6e 67      OnStateChang
2a270 65 28 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74  e(ConnectionStat
2a280 65 2e 4f 70 65 6e 2c 20 72 65 66 20 65 76 65 6e  e.Open, ref even
2a290 74 41 72 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 20  tArgs);....     
2a2a0 20 20 20 20 20 4f 6e 43 68 61 6e 67 65 64 28 74       OnChanged(t
2a2b0 68 69 73 2c 20 6e 65 77 20 43 6f 6e 6e 65 63 74  his, new Connect
2a2c0 69 6f 6e 45 76 65 6e 74 41 72 67 73 28 0d 0a 20  ionEventArgs(.. 
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c               SQL
2a2e0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  iteConnectionEve
2a2f0 6e 74 54 79 70 65 2e 4f 70 65 6e 65 64 2c 20 65  ntType.Opened, e
2a300 76 65 6e 74 41 72 67 73 2c 20 6e 75 6c 6c 2c 20  ventArgs, null, 
2a310 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20  null, null,..   
2a320 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c             null,
2a330 20 65 76 65 6e 74 41 72 67 43 6f 6e 6e 65 63 74   eventArgConnect
2a340 69 6f 6e 53 74 72 69 6e 67 2c 20 6e 65 77 20 6f  ionString, new o
2a350 62 6a 65 63 74 5b 5d 20 7b 20 65 76 65 6e 74 41  bject[] { eventA
2a360 72 67 4f 70 74 73 20 7d 29 29 3b 0d 0a 0d 0a 23  rgOpts }));....#
2a370 69 66 20 44 45 42 55 47 0d 0a 20 20 20 20 20 20  if DEBUG..      
2a380 20 20 20 20 5f 64 65 62 75 67 53 74 72 69 6e 67      _debugString
2a390 20 3d 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73   = HelperMethods
2a3a0 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
2a3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2a3c0 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
2a3d0 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
2a3e0 20 20 20 20 20 20 20 20 20 20 20 22 6f 70 65 6e             "open
2a3f0 54 68 72 65 61 64 49 64 20 3d 20 7b 30 7d 2c 20  ThreadId = {0}, 
2a400 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  connectionString
2a410 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20   = {1}",..      
2a420 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65          HelperMe
2a430 74 68 6f 64 73 2e 47 65 74 54 68 72 65 61 64 49  thods.GetThreadI
2a440 64 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  d(),..          
2a450 20 20 20 20 65 76 65 6e 74 41 72 67 43 6f 6e 6e      eventArgConn
2a460 65 63 74 69 6f 6e 53 74 72 69 6e 67 29 3b 0d 0a  ectionString);..
2a470 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
2a480 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
2a490 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2a4a0 20 20 20 20 20 20 20 5f 63 6f 6e 6e 65 63 74 69         _connecti
2a4b0 6f 6e 53 74 61 74 65 20 3d 20 6f 6c 64 73 74 61  onState = oldsta
2a4c0 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 74  te;..          t
2a4d0 68 72 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 7d  hrow;..        }
2a4e0 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
2a4f0 20 63 61 74 63 68 20 28 53 51 4c 69 74 65 45 78   catch (SQLiteEx
2a500 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  ception)..      
2a510 7b 0d 0a 20 20 20 20 20 20 20 20 43 6c 6f 73 65  {..        Close
2a520 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 72  ();..        thr
2a530 6f 77 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ow;..      }..  
2a540 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
2a550 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2a560 2f 20 4f 70 65 6e 73 20 74 68 65 20 63 6f 6e 6e  / Opens the conn
2a570 65 63 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65  ection using the
2a580 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 75 6e   parameters foun
2a590 64 20 69 6e 20 74 68 65 20 3c 73 65 65 20 63 72  d in the <see cr
2a5a0 65 66 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  ef="ConnectionSt
2a5b0 72 69 6e 67 22 20 2f 3e 20 61 6e 64 20 74 68 65  ring" /> and the
2a5c0 6e 20 72 65 74 75 72 6e 73 20 69 74 2e 0d 0a 20  n returns it... 
2a5d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2a5e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
2a5f0 72 6e 73 3e 54 68 65 20 63 75 72 72 65 6e 74 20  rns>The current 
2a600 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
2a610 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  t.</returns>..  
2a620 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 43    public SQLiteC
2a630 6f 6e 6e 65 63 74 69 6f 6e 20 4f 70 65 6e 41 6e  onnection OpenAn
2a640 64 52 65 74 75 72 6e 28 29 0d 0a 20 20 20 20 7b  dReturn()..    {
2a650 0d 0a 20 20 20 20 20 20 20 20 43 68 65 63 6b 44  ..        CheckD
2a660 69 73 70 6f 73 65 64 28 29 3b 20 4f 70 65 6e 28  isposed(); Open(
2a670 29 3b 20 72 65 74 75 72 6e 20 74 68 69 73 3b 0d  ); return this;.
2a680 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2a690 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2a6a0 20 2f 2f 2f 20 47 65 74 73 2f 73 65 74 73 20 74   /// Gets/sets t
2a6b0 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61  he default comma
2a6c0 6e 64 20 74 69 6d 65 6f 75 74 20 66 6f 72 20 6e  nd timeout for n
2a6d0 65 77 6c 79 2d 63 72 65 61 74 65 64 20 63 6f 6d  ewly-created com
2a6e0 6d 61 6e 64 73 2e 20 20 54 68 69 73 20 69 73 20  mands.  This is 
2a6f0 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75  especially usefu
2a700 6c 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 63  l for..    /// c
2a710 6f 6d 6d 61 6e 64 73 20 75 73 65 64 20 69 6e 74  ommands used int
2a720 65 72 6e 61 6c 6c 79 20 73 75 63 68 20 61 73 20  ernally such as 
2a730 69 6e 73 69 64 65 20 61 20 53 51 4c 69 74 65 54  inside a SQLiteT
2a740 72 61 6e 73 61 63 74 69 6f 6e 2c 20 77 68 65 72  ransaction, wher
2a750 65 20 73 65 74 74 69 6e 67 20 74 68 65 20 74 69  e setting the ti
2a760 6d 65 6f 75 74 20 69 73 20 6e 6f 74 20 70 6f 73  meout is not pos
2a770 73 69 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  sible...    /// 
2a780 54 68 69 73 20 63 61 6e 20 61 6c 73 6f 20 62 65  This can also be
2a790 20 73 65 74 20 69 6e 20 74 68 65 20 43 6f 6e 6e   set in the Conn
2a7a0 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 77 69 74  ectionString wit
2a7b0 68 20 22 44 65 66 61 75 6c 74 20 54 69 6d 65 6f  h "Default Timeo
2a7c0 75 74 22 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ut"..    /// </s
2a7d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
2a7e0 6c 69 63 20 69 6e 74 20 44 65 66 61 75 6c 74 54  lic int DefaultT
2a7f0 69 6d 65 6f 75 74 0d 0a 20 20 20 20 7b 0d 0a 20  imeout..    {.. 
2a800 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
2a810 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
2a820 72 6e 20 5f 64 65 66 61 75 6c 74 54 69 6d 65 6f  rn _defaultTimeo
2a830 75 74 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65 74  ut; }..      set
2a840 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
2a850 28 29 3b 20 5f 64 65 66 61 75 6c 74 54 69 6d 65  (); _defaultTime
2a860 6f 75 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  out = value; }..
2a870 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2a880 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2a890 2f 2f 2f 20 47 65 74 73 2f 73 65 74 73 20 74 68  /// Gets/sets th
2a8a0 65 20 64 65 66 61 75 6c 74 20 62 75 73 79 20 74  e default busy t
2a8b0 69 6d 65 6f 75 74 20 74 6f 20 75 73 65 20 77 69  imeout to use wi
2a8c0 74 68 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  th the SQLite co
2a8d0 72 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68 69  re library.  Thi
2a8e0 73 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20 77  s is only used w
2a8f0 68 65 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 70 65  hen..    /// ope
2a900 6e 69 6e 67 20 61 20 63 6f 6e 6e 65 63 74 69 6f  ning a connectio
2a910 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  n...    /// </su
2a920 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
2a930 69 63 20 69 6e 74 20 42 75 73 79 54 69 6d 65 6f  ic int BusyTimeo
2a940 75 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ut..    {..     
2a950 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
2a960 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
2a970 20 5f 62 75 73 79 54 69 6d 65 6f 75 74 3b 20 7d   _busyTimeout; }
2a980 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 7b 20  ..        set { 
2a990 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2a9a0 20 5f 62 75 73 79 54 69 6d 65 6f 75 74 20 3d 20   _busyTimeout = 
2a9b0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d  value; }..    }.
2a9c0 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
2a9d0 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
2a9e0 4b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  K..    /// <summ
2a9f0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62  ary>..    /// <b
2aa00 3e 45 58 50 45 52 49 4d 45 4e 54 41 4c 3c 2f 62  >EXPERIMENTAL</b
2aa10 3e 20 2d 2d 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  > --..    /// Th
2aa20 65 20 77 61 69 74 20 74 69 6d 65 6f 75 74 20 74  e wait timeout t
2aa30 6f 20 75 73 65 20 77 69 74 68 20 3c 73 65 65 20  o use with <see 
2aa40 63 72 65 66 3d 22 57 61 69 74 46 6f 72 45 6e 6c  cref="WaitForEnl
2aa50 69 73 74 6d 65 6e 74 52 65 73 65 74 22 20 2f 3e  istmentReset" />
2aa60 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
2aa70 2f 20 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 75  / This is only u
2aa80 73 65 64 20 77 68 65 6e 20 77 61 69 74 69 6e 67  sed when waiting
2aa90 20 66 6f 72 20 74 68 65 20 65 6e 6c 69 73 74 6d   for the enlistm
2aaa0 65 6e 74 20 74 6f 20 62 65 20 72 65 73 65 74 20  ent to be reset 
2aab0 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 2f 2f  prior to..    //
2aac0 2f 20 65 6e 6c 69 73 74 69 6e 67 20 69 6e 20 61  / enlisting in a
2aad0 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e   transaction, an
2aae0 64 20 74 68 65 6e 20 6f 6e 6c 79 20 77 68 65 6e  d then only when
2aaf0 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65   the appropriate
2ab00 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
2ab10 20 2f 2f 2f 20 66 6c 61 67 20 69 73 20 73 65 74   /// flag is set
2ab20 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2ab30 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
2ab40 63 20 69 6e 74 20 57 61 69 74 54 69 6d 65 6f 75  c int WaitTimeou
2ab50 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
2ab60 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
2ab70 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
2ab80 5f 77 61 69 74 54 69 6d 65 6f 75 74 3b 20 7d 0d  _waitTimeout; }.
2ab90 0a 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43  .        set { C
2aba0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2abb0 5f 77 61 69 74 54 69 6d 65 6f 75 74 20 3d 20 76  _waitTimeout = v
2abc0 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  alue; }..    }..
2abd0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f  #endif....    //
2abe0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2abf0 20 2f 2f 2f 20 54 68 65 20 6d 61 78 69 6d 75 6d   /// The maximum
2ac00 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 74 72 69   number of retri
2ac10 65 73 20 77 68 65 6e 20 70 72 65 70 61 72 69 6e  es when preparin
2ac20 67 20 53 51 4c 20 74 6f 20 62 65 20 65 78 65 63  g SQL to be exec
2ac30 75 74 65 64 2e 20 20 54 68 69 73 0d 0a 20 20 20  uted.  This..   
2ac40 20 2f 2f 2f 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e   /// normally on
2ac50 6c 79 20 61 70 70 6c 69 65 73 20 74 6f 20 70 72  ly applies to pr
2ac60 65 70 61 72 61 74 69 6f 6e 20 65 72 72 6f 72 73  eparation errors
2ac70 20 72 65 73 75 6c 74 69 6e 67 20 66 72 6f 6d 20   resulting from 
2ac80 74 68 65 20 64 61 74 61 62 61 73 65 0d 0a 20 20  the database..  
2ac90 20 20 2f 2f 2f 20 73 63 68 65 6d 61 20 62 65 69    /// schema bei
2aca0 6e 67 20 63 68 61 6e 67 65 64 2e 0d 0a 20 20 20  ng changed...   
2acb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2acc0 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20  .    public int 
2acd0 50 72 65 70 61 72 65 52 65 74 72 69 65 73 0d 0a  PrepareRetries..
2ace0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67      {..        g
2acf0 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
2ad00 65 64 28 29 3b 20 72 65 74 75 72 6e 20 5f 70 72  ed(); return _pr
2ad10 65 70 61 72 65 52 65 74 72 69 65 73 3b 20 7d 0d  epareRetries; }.
2ad20 0a 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43  .        set { C
2ad30 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
2ad40 5f 70 72 65 70 61 72 65 52 65 74 72 69 65 73 20  _prepareRetries 
2ad50 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
2ad60 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
2ad70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2ad80 54 68 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20  The approximate 
2ad90 6e 75 6d 62 65 72 20 6f 66 20 76 69 72 74 75 61  number of virtua
2ada0 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
2adb0 63 74 69 6f 6e 73 20 62 65 74 77 65 65 6e 20 70  ctions between p
2adc0 72 6f 67 72 65 73 73 0d 0a 20 20 20 20 2f 2f 2f  rogress..    ///
2add0 20 65 76 65 6e 74 73 2e 20 20 49 6e 20 6f 72 64   events.  In ord
2ade0 65 72 20 66 6f 72 20 70 72 6f 67 72 65 73 73 20  er for progress 
2adf0 65 76 65 6e 74 73 20 74 6f 20 61 63 74 75 61 6c  events to actual
2ae00 6c 79 20 66 69 72 65 2c 20 74 68 65 20 65 76 65  ly fire, the eve
2ae10 6e 74 20 68 61 6e 64 6c 65 72 0d 0a 20 20 20 20  nt handler..    
2ae20 2f 2f 2f 20 6d 75 73 74 20 62 65 20 61 64 64 65  /// must be adde
2ae30 64 20 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72  d to the <see cr
2ae40 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
2ae50 74 69 6f 6e 2e 50 72 6f 67 72 65 73 73 22 20 2f  tion.Progress" /
2ae60 3e 20 65 76 65 6e 74 20 61 73 0d 0a 20 20 20 20  > event as..    
2ae70 2f 2f 2f 20 77 65 6c 6c 2e 20 20 54 68 69 73 20  /// well.  This 
2ae80 76 61 6c 75 65 20 77 69 6c 6c 20 6f 6e 6c 79 20  value will only 
2ae90 62 65 20 75 73 65 64 20 77 68 65 6e 20 74 68 65  be used when the
2aea0 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74 69   underlying nati
2aeb0 76 65 20 70 72 6f 67 72 65 73 73 0d 0a 20 20 20  ve progress..   
2aec0 20 2f 2f 2f 20 63 61 6c 6c 62 61 63 6b 20 6e 65   /// callback ne
2aed0 65 64 73 20 74 6f 20 62 65 20 63 68 61 6e 67 65  eds to be change
2aee0 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
2aef0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c  mmary>..    publ
2af00 69 63 20 69 6e 74 20 50 72 6f 67 72 65 73 73 4f  ic int ProgressO
2af10 70 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ps..    {..     
2af20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
2af30 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
2af40 20 5f 70 72 6f 67 72 65 73 73 4f 70 73 3b 20 7d   _progressOps; }
2af50 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 7b 20  ..        set { 
2af60 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
2af70 20 5f 70 72 6f 67 72 65 73 73 4f 70 73 20 3d 20   _progressOps = 
2af80 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d  value; }..    }.
2af90 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2afa0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  ary>..    /// No
2afb0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 62 75  n-zero if the bu
2afc0 69 6c 74 2d 69 6e 20 28 69 2e 65 2e 20 66 72 61  ilt-in (i.e. fra
2afd0 6d 65 77 6f 72 6b 20 70 72 6f 76 69 64 65 64 29  mework provided)
2afe0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
2aff0 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 70 61 72 73  ng..    /// pars
2b000 65 72 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  er should be use
2b010 64 20 77 68 65 6e 20 6f 70 65 6e 69 6e 67 20 74  d when opening t
2b020 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
2b030 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b040 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  y>..    public b
2b050 6f 6f 6c 20 50 61 72 73 65 56 69 61 46 72 61 6d  ool ParseViaFram
2b060 65 77 6f 72 6b 0d 0a 20 20 20 20 7b 0d 0a 20 20  ework..    {..  
2b070 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
2b080 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
2b090 75 72 6e 20 5f 70 61 72 73 65 56 69 61 46 72 61  urn _parseViaFra
2b0a0 6d 65 77 6f 72 6b 3b 20 7d 0d 0a 20 20 20 20 20  mework; }..     
2b0b0 20 20 20 73 65 74 20 7b 20 43 68 65 63 6b 44 69     set { CheckDi
2b0c0 73 70 6f 73 65 64 28 29 3b 20 5f 70 61 72 73 65  sposed(); _parse
2b0d0 56 69 61 46 72 61 6d 65 77 6f 72 6b 20 3d 20 76  ViaFramework = v
2b0e0 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a  alue; }..    }..
2b0f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
2b100 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ry>..    /// Get
2b110 73 2f 73 65 74 73 20 74 68 65 20 65 78 74 72 61  s/sets the extra
2b120 20 62 65 68 61 76 69 6f 72 61 6c 20 66 6c 61 67   behavioral flag
2b130 73 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65  s for this conne
2b140 63 74 69 6f 6e 2e 20 20 53 65 65 20 74 68 65 0d  ction.  See the.
2b150 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
2b160 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
2b170 74 69 6f 6e 46 6c 61 67 73 22 20 2f 3e 20 65 6e  tionFlags" /> en
2b180 75 6d 65 72 61 74 69 6f 6e 20 66 6f 72 20 61 20  umeration for a 
2b190 6c 69 73 74 20 6f 66 0d 0a 20 20 20 20 2f 2f 2f  list of..    ///
2b1a0 20 70 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73   possible values
2b1b0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2b1c0 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
2b1d0 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  c SQLiteConnecti
2b1e0 6f 6e 46 6c 61 67 73 20 46 6c 61 67 73 0d 0a 20  onFlags Flags.. 
2b1f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
2b200 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
2b210 29 3b 20 72 65 74 75 72 6e 20 5f 66 6c 61 67 73  ); return _flags
2b220 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 20 7b  ; }..      set {
2b230 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2b240 3b 20 5f 66 6c 61 67 73 20 3d 20 76 61 6c 75 65  ; _flags = value
2b250 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
2b260 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b270 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65  .    /// Gets/se
2b280 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 64  ts the default d
2b290 61 74 61 62 61 73 65 20 74 79 70 65 20 66 6f 72  atabase type for
2b2a0 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
2b2b0 2e 20 20 54 68 69 73 20 76 61 6c 75 65 0d 0a 20  .  This value.. 
2b2c0 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 6f 6e 6c 79     /// will only
2b2d0 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 6e 6f   be used when no
2b2e0 74 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f  t null...    ///
2b2f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2b300 20 70 75 62 6c 69 63 20 44 62 54 79 70 65 3f 20   public DbType? 
2b310 44 65 66 61 75 6c 74 44 62 54 79 70 65 0d 0a 20  DefaultDbType.. 
2b320 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20     {..      get 
2b330 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
2b340 29 3b 20 72 65 74 75 72 6e 20 5f 64 65 66 61 75  ); return _defau
2b350 6c 74 44 62 54 79 70 65 3b 20 7d 0d 0a 20 20 20  ltDbType; }..   
2b360 20 20 20 73 65 74 20 7b 20 43 68 65 63 6b 44 69     set { CheckDi
2b370 73 70 6f 73 65 64 28 29 3b 20 5f 64 65 66 61 75  sposed(); _defau
2b380 6c 74 44 62 54 79 70 65 20 3d 20 76 61 6c 75 65  ltDbType = value
2b390 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
2b3a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2b3b0 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65  .    /// Gets/se
2b3c0 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 64  ts the default d
2b3d0 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
2b3e0 65 20 66 6f 72 20 74 68 69 73 20 63 6f 6e 6e 65  e for this conne
2b3f0 63 74 69 6f 6e 2e 20 20 54 68 69 73 0d 0a 20 20  ction.  This..  
2b400 20 20 2f 2f 2f 20 76 61 6c 75 65 20 77 69 6c 6c    /// value will
2b410 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 77 68   only be used wh
2b420 65 6e 20 6e 6f 74 20 6e 75 6c 6c 2e 0d 0a 20 20  en not null...  
2b430 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2b440 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 72  ..    public str
2b450 69 6e 67 20 44 65 66 61 75 6c 74 54 79 70 65 4e  ing DefaultTypeN
2b460 61 6d 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ame..    {..    
2b470 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
2b480 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
2b490 5f 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65  _defaultTypeName
2b4a0 3b 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 20 7b  ; }..      set {
2b4b0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
2b4c0 3b 20 5f 64 65 66 61 75 6c 74 54 79 70 65 4e 61  ; _defaultTypeNa
2b4d0 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  me = value; }.. 
2b4e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
2b4f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2b500 2f 2f 20 47 65 74 73 2f 73 65 74 73 20 74 68 65  // Gets/sets the
2b510 20 56 46 53 20 6e 61 6d 65 20 66 6f 72 20 74 68   VFS name for th
2b520 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  is connection.  
2b530 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  This value will 
2b540 6f 6e 6c 79 20 62 65 0d 0a 20 20 20 20 2f 2f 2f  only be..    ///
2b550 20 75 73 65 64 20 77 68 65 6e 20 6f 70 65 6e 69   used when openi
2b560 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ng the database.
2b570 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2b580 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
2b590 20 73 74 72 69 6e 67 20 56 66 73 4e 61 6d 65 0d   string VfsName.
2b5a0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
2b5b0 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
2b5c0 64 28 29 3b 20 72 65 74 75 72 6e 20 5f 76 66 73  d(); return _vfs
2b5d0 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 73  Name; }..      s
2b5e0 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
2b5f0 65 64 28 29 3b 20 5f 76 66 73 4e 61 6d 65 20 3d  ed(); _vfsName =
2b600 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 7d   value; }..    }
2b610 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2b620 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
2b630 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20  eturns non-zero 
2b640 69 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  if the underlyin
2b650 67 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63 74  g native connect
2b660 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 0d 0a 20  ion handle is.. 
2b670 20 20 20 2f 2f 2f 20 6f 77 6e 65 64 20 62 79 20     /// owned by 
2b680 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  this instance...
2b690 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b6a0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  y>..    public b
2b6b0 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65 0d 0a 20  ool OwnHandle.. 
2b6c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65     {..        ge
2b6d0 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
2b6e0 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
2b6f0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
2b700 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 73            if (_s
2b710 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ql == null)..   
2b720 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
2b730 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
2b740 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
2b750 28 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  ("Database conne
2b760 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20  ction not valid 
2b770 66 6f 72 20 63 68 65 63 6b 69 6e 67 20 68 61 6e  for checking han
2b780 64 6c 65 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  dle.");....     
2b790 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 73         return _s
2b7a0 71 6c 2e 4f 77 6e 48 61 6e 64 6c 65 3b 0d 0a 20  ql.OwnHandle;.. 
2b7b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
2b7c0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2b7d0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
2b7e0 74 75 72 6e 73 20 74 68 65 20 76 65 72 73 69 6f  turns the versio
2b7f0 6e 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79  n of the underly
2b800 69 6e 67 20 53 51 4c 69 74 65 20 64 61 74 61 62  ing SQLite datab
2b810 61 73 65 20 65 6e 67 69 6e 65 0d 0a 20 20 20 20  ase engine..    
2b820 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2b830 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
2b840 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
2b850 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 66      [Browsable(f
2b860 61 6c 73 65 29 2c 20 44 65 73 69 67 6e 65 72 53  alse), DesignerS
2b870 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69  erializationVisi
2b880 62 69 6c 69 74 79 28 44 65 73 69 67 6e 65 72 53  bility(DesignerS
2b890 65 72 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69  erializationVisi
2b8a0 62 69 6c 69 74 79 2e 48 69 64 64 65 6e 29 5d 0d  bility.Hidden)].
2b8b0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62  .#endif..    pub
2b8c0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72  lic override str
2b8d0 69 6e 67 20 53 65 72 76 65 72 56 65 72 73 69 6f  ing ServerVersio
2b8e0 6e 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  n..    {..      
2b8f0 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  get..      {..  
2b900 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
2b910 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  sed();..        
2b920 72 65 74 75 72 6e 20 53 51 4c 69 74 65 56 65 72  return SQLiteVer
2b930 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 2f  sion;..        /
2b940 2f 69 66 20 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e  /if (_connection
2b950 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e 65 63 74  State != Connect
2b960 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e 29 0d 0a  ionState.Open)..
2b970 20 20 20 20 20 20 20 20 2f 2f 20 20 74 68 72 6f          //  thro
2b980 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
2b990 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
2b9a0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
2b9b0 72 65 74 75 72 6e 20 5f 73 71 6c 2e 56 65 72 73  return _sql.Vers
2b9c0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ion;..      }.. 
2b9d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
2b9e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2b9f0 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 72  // Returns the r
2ba00 6f 77 69 64 20 6f 66 20 74 68 65 20 6d 6f 73 74  owid of the most
2ba10 20 72 65 63 65 6e 74 20 73 75 63 63 65 73 73 66   recent successf
2ba20 75 6c 20 49 4e 53 45 52 54 20 69 6e 74 6f 20 74  ul INSERT into t
2ba30 68 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d  he database from
2ba40 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
2ba50 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2ba60 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54  mary>..#if !PLAT
2ba70 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2ba80 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42 72 6f 77  EWORK..    [Brow
2ba90 73 61 62 6c 65 28 66 61 6c 73 65 29 2c 20 44 65  sable(false), De
2baa0 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74  signerSerializat
2bab0 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 28 44 65  ionVisibility(De
2bac0 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74  signerSerializat
2bad0 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 2e 48 69  ionVisibility.Hi
2bae0 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  dden)]..#endif..
2baf0 20 20 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20      public long 
2bb00 4c 61 73 74 49 6e 73 65 72 74 52 6f 77 49 64 0d  LastInsertRowId.
2bb10 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
2bb20 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
2bb30 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
2bb40 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
2bb50 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c  if (_sql == null
2bb60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 72  )..          thr
2bb70 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
2bb80 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
2bb90 28 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  ("Database conne
2bba0 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20  ction not valid 
2bbb0 66 6f 72 20 67 65 74 74 69 6e 67 20 6c 61 73 74  for getting last
2bbc0 20 69 6e 73 65 72 74 20 72 6f 77 69 64 2e 22 29   insert rowid.")
2bbd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ;....        ret
2bbe0 75 72 6e 20 5f 73 71 6c 2e 4c 61 73 74 49 6e 73  urn _sql.LastIns
2bbf0 65 72 74 52 6f 77 49 64 3b 0d 0a 20 20 20 20 20  ertRowId;..     
2bc00 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2bc10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2bc20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
2bc30 68 6f 64 20 63 61 75 73 65 73 20 61 6e 79 20 70  hod causes any p
2bc40 65 6e 64 69 6e 67 20 64 61 74 61 62 61 73 65 20  ending database 
2bc50 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 61 62 6f  operation to abo
2bc60 72 74 20 61 6e 64 20 72 65 74 75 72 6e 20 61 74  rt and return at
2bc70 0d 0a 20 20 20 20 2f 2f 2f 20 69 74 73 20 65 61  ..    /// its ea
2bc80 72 6c 69 65 73 74 20 6f 70 70 6f 72 74 75 6e 69  rliest opportuni
2bc90 74 79 2e 20 20 54 68 69 73 20 72 6f 75 74 69 6e  ty.  This routin
2bca0 65 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 63  e is typically c
2bcb0 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
2bcc0 65 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61 20  e..    /// to a 
2bcd0 75 73 65 72 20 61 63 74 69 6f 6e 20 73 75 63 68  user action such
2bce0 20 61 73 20 70 72 65 73 73 69 6e 67 20 22 43 61   as pressing "Ca
2bcf0 6e 63 65 6c 22 20 6f 72 20 43 74 72 6c 2d 43 20  ncel" or Ctrl-C 
2bd00 77 68 65 72 65 20 74 68 65 20 75 73 65 72 20 77  where the user w
2bd10 61 6e 74 73 0d 0a 20 20 20 20 2f 2f 2f 20 61 20  ants..    /// a 
2bd20 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70 65 72 61  long query opera
2bd30 74 69 6f 6e 20 74 6f 20 68 61 6c 74 20 69 6d 6d  tion to halt imm
2bd40 65 64 69 61 74 65 6c 79 2e 20 20 49 74 20 69 73  ediately.  It is
2bd50 20 73 61 66 65 20 74 6f 20 63 61 6c 6c 20 74 68   safe to call th
2bd60 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 6f 75 74  is..    /// rout
2bd70 69 6e 65 20 66 72 6f 6d 20 61 6e 79 20 74 68 72  ine from any thr
2bd80 65 61 64 2e 20 20 48 6f 77 65 76 65 72 2c 20 69  ead.  However, i
2bd90 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f  t is not safe to
2bda0 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75 74 69   call this routi
2bdb0 6e 65 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 74 68  ne..    /// with
2bdc0 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e   a database conn
2bdd0 65 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  ection that is c
2bde0 6c 6f 73 65 64 20 6f 72 20 6d 69 67 68 74 20 63  losed or might c
2bdf0 6c 6f 73 65 20 62 65 66 6f 72 65 20 74 68 69 73  lose before this
2be00 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f 2f 2f   method..    ///
2be10 20 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20 20 2f   returns...    /
2be20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2be30 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 43     public void C
2be40 61 6e 63 65 6c 28 29 0d 0a 20 20 20 20 7b 0d 0a  ancel()..    {..
2be50 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
2be60 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
2be70 20 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20      if (_sql == 
2be80 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2be90 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
2bea0 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
2beb0 65 70 74 69 6f 6e 28 22 44 61 74 61 62 61 73 65  eption("Database
2bec0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20   connection not 
2bed0 76 61 6c 69 64 20 66 6f 72 20 71 75 65 72 79 20  valid for query 
2bee0 63 61 6e 63 65 6c 6c 61 74 69 6f 6e 2e 22 29 3b  cancellation.");
2bef0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 5f 73 71 6c  ....        _sql
2bf00 2e 43 61 6e 63 65 6c 28 29 3b 20 2f 2a 20 74 68  .Cancel(); /* th
2bf10 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d  row */..    }...
2bf20 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2bf30 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
2bf40 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  rns the number o
2bf50 66 20 72 6f 77 73 20 63 68 61 6e 67 65 64 20 62  f rows changed b
2bf60 79 20 74 68 65 20 6c 61 73 74 20 49 4e 53 45 52  y the last INSER
2bf70 54 2c 20 55 50 44 41 54 45 2c 20 6f 72 20 44 45  T, UPDATE, or DE
2bf80 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 65  LETE statement e
2bf90 78 65 63 75 74 65 64 20 6f 6e 0d 0a 20 20 20 20  xecuted on..    
2bfa0 2f 2f 2f 20 74 68 69 73 20 63 6f 6e 6e 65 63 74  /// this connect
2bfb0 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
2bfc0 73 75 6d 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50  summary>..#if !P
2bfd0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
2bfe0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42  RAMEWORK..    [B
2bff0 72 6f 77 73 61 62 6c 65 28 66 61 6c 73 65 29 2c  rowsable(false),
2c000 20 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69   DesignerSeriali
2c010 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
2c020 28 44 65 73 69 67 6e 65 72 53 65 72 69 61 6c 69  (DesignerSeriali
2c030 7a 61 74 69 6f 6e 56 69 73 69 62 69 6c 69 74 79  zationVisibility
2c040 2e 48 69 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69  .Hidden)]..#endi
2c050 66 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e  f..    public in
2c060 74 20 43 68 61 6e 67 65 73 0d 0a 20 20 20 20 7b  t Changes..    {
2c070 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20  ..      get..   
2c080 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68     {..        Ch
2c090 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
2c0a0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 73  ..        if (_s
2c0b0 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ql == null)..   
2c0c0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
2c0d0 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
2c0e0 6e 45 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61  nException("Data
2c0f0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2c100 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72 20 67 65  not valid for ge
2c110 74 74 69 6e 67 20 6e 75 6d 62 65 72 20 6f 66 20  tting number of 
2c120 63 68 61 6e 67 65 73 2e 22 29 3b 0d 0a 0d 0a 20  changes.");.... 
2c130 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 73         return _s
2c140 71 6c 2e 43 68 61 6e 67 65 73 3b 0d 0a 20 20 20  ql.Changes;..   
2c150 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
2c160 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2c170 0d 0a 20 20 20 20 2f 2f 2f 20 43 68 65 63 6b 73  ..    /// Checks
2c180 20 69 66 20 74 68 69 73 20 63 6f 6e 6e 65 63 74   if this connect
2c190 69 6f 6e 20 74 6f 20 74 68 65 20 73 70 65 63 69  ion to the speci
2c1a0 66 69 65 64 20 64 61 74 61 62 61 73 65 20 73 68  fied database sh
2c1b0 6f 75 6c 64 20 62 65 20 63 6f 6e 73 69 64 65 72  ould be consider
2c1c0 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 61 64  ed..    /// read
2c1d0 2d 6f 6e 6c 79 2e 20 20 41 6e 20 65 78 63 65 70  -only.  An excep
2c1e0 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72  tion will be thr
2c1f0 6f 77 6e 20 69 66 20 74 68 65 20 64 61 74 61 62  own if the datab
2c200 61 73 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69  ase name specifi
2c210 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 69 61 20  ed..    /// via 
2c220 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
2c230 6e 61 6d 65 22 20 2f 3e 20 63 61 6e 6e 6f 74 20  name" /> cannot 
2c240 62 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 2f  be found...    /
2c250 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2c260 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2c270 6d 65 3d 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20  me="name">..    
2c280 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  /// The name of 
2c290 61 20 64 61 74 61 62 61 73 65 20 61 73 73 6f 63  a database assoc
2c2a0 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
2c2b0 63 6f 6e 6e 65 63 74 69 6f 6e 20 2d 4f 52 2d 20  connection -OR- 
2c2c0 6e 75 6c 6c 20 66 6f 72 20 74 68 65 0d 0a 20 20  null for the..  
2c2d0 20 20 2f 2f 2f 20 6d 61 69 6e 20 64 61 74 61 62    /// main datab
2c2e0 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ase...    /// </
2c2f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
2c300 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
2c310 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
2c320 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  his connection t
2c330 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
2c340 64 61 74 61 62 61 73 65 20 73 68 6f 75 6c 64 20  database should 
2c350 62 65 20 63 6f 6e 73 69 64 65 72 65 64 0d 0a 20  be considered.. 
2c360 20 20 20 2f 2f 2f 20 72 65 61 64 2d 6f 6e 6c 79     /// read-only
2c370 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
2c380 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
2c390 63 20 62 6f 6f 6c 20 49 73 52 65 61 64 4f 6e 6c  c bool IsReadOnl
2c3a0 79 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  y(..        stri
2c3b0 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ng name..       
2c3c0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
2c3d0 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
2c3e0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ();....        i
2c3f0 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29  f (_sql == null)
2c400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2c410 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
2c420 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
2c430 6e 28 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e  n("Database conn
2c440 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64  ection not valid
2c450 20 66 6f 72 20 63 68 65 63 6b 69 6e 67 20 72 65   for checking re
2c460 61 64 2d 6f 6e 6c 79 20 73 74 61 74 75 73 2e 22  ad-only status."
2c470 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  );....        re
2c480 74 75 72 6e 20 5f 73 71 6c 2e 49 73 52 65 61 64  turn _sql.IsRead
2c490 4f 6e 6c 79 28 6e 61 6d 65 29 3b 0d 0a 20 20 20  Only(name);..   
2c4a0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
2c4b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2c4c0 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   Returns non-zer
2c4d0 6f 20 69 66 20 74 68 65 20 67 69 76 65 6e 20 64  o if the given d
2c4e0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2c4f0 6f 6e 20 69 73 20 69 6e 20 61 75 74 6f 63 6f 6d  on is in autocom
2c500 6d 69 74 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 2f  mit mode...    /
2c510 2f 2f 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f  // Autocommit mo
2c520 64 65 20 69 73 20 6f 6e 20 62 79 20 64 65 66 61  de is on by defa
2c530 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6d 6d 69 74  ult.  Autocommit
2c540 20 6d 6f 64 65 20 69 73 20 64 69 73 61 62 6c 65   mode is disable
2c550 64 20 62 79 20 61 20 42 45 47 49 4e 0d 0a 20 20  d by a BEGIN..  
2c560 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e    /// statement.
2c570 20 20 41 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64    Autocommit mod
2c580 65 20 69 73 20 72 65 2d 65 6e 61 62 6c 65 64 20  e is re-enabled 
2c590 62 79 20 61 20 43 4f 4d 4d 49 54 20 6f 72 20 52  by a COMMIT or R
2c5a0 4f 4c 4c 42 41 43 4b 2e 0d 0a 20 20 20 20 2f 2f  OLLBACK...    //
2c5b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 69  / </summary>..#i
2c5c0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
2c5d0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
2c5e0 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 66 61 6c    [Browsable(fal
2c5f0 73 65 29 2c 20 44 65 73 69 67 6e 65 72 53 65 72  se), DesignerSer
2c600 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69  ializationVisibi
2c610 6c 69 74 79 28 44 65 73 69 67 6e 65 72 53 65 72  lity(DesignerSer
2c620 69 61 6c 69 7a 61 74 69 6f 6e 56 69 73 69 62 69  ializationVisibi
2c630 6c 69 74 79 2e 48 69 64 64 65 6e 29 5d 0d 0a 23  lity.Hidden)]..#
2c640 65 6e 64 69 66 0d 0a 20 20 20 20 70 75 62 6c 69  endif..    publi
2c650 63 20 62 6f 6f 6c 20 41 75 74 6f 43 6f 6d 6d 69  c bool AutoCommi
2c660 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  t..    {..      
2c670 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    get..        {
2c680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
2c690 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
2c6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2c6b0 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d   (_sql == null).
2c6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c6d0 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
2c6e0 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
2c6f0 74 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20 63  tion("Database c
2c700 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76 61  onnection not va
2c710 6c 69 64 20 66 6f 72 20 67 65 74 74 69 6e 67 20  lid for getting 
2c720 61 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 2e  autocommit mode.
2c730 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
2c740 20 20 20 72 65 74 75 72 6e 20 5f 73 71 6c 2e 41     return _sql.A
2c750 75 74 6f 43 6f 6d 6d 69 74 3b 0d 0a 20 20 20 20  utoCommit;..    
2c760 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
2c770 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2c780 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
2c790 6e 73 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  ns the amount of
2c7a0 20 6d 65 6d 6f 72 79 20 28 69 6e 20 62 79 74 65   memory (in byte
2c7b0 73 29 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20  s) currently in 
2c7c0 75 73 65 20 62 79 20 74 68 65 20 53 51 4c 69 74  use by the SQLit
2c7d0 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
2c7e0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
2c7f0 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
2c800 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2c810 4f 52 4b 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ORK..    [Browsa
2c820 62 6c 65 28 66 61 6c 73 65 29 2c 20 44 65 73 69  ble(false), Desi
2c830 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f  gnerSerializatio
2c840 6e 56 69 73 69 62 69 6c 69 74 79 28 44 65 73 69  nVisibility(Desi
2c850 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f  gnerSerializatio
2c860 6e 56 69 73 69 62 69 6c 69 74 79 2e 48 69 64 64  nVisibility.Hidd
2c870 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  en)]..#endif..  
2c880 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 4d 65    public long Me
2c890 6d 6f 72 79 55 73 65 64 0d 0a 20 20 20 20 7b 0d  moryUsed..    {.
2c8a0 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20  .      get..    
2c8b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68 65    {..        Che
2c8c0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
2c8d0 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 73 71  .        if (_sq
2c8e0 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  l == null)..    
2c8f0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2c900 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
2c910 45 78 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62  Exception("Datab
2c920 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e  ase connection n
2c930 6f 74 20 76 61 6c 69 64 20 66 6f 72 20 67 65 74  ot valid for get
2c940 74 69 6e 67 20 6d 65 6d 6f 72 79 20 75 73 65 64  ting memory used
2c950 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  .");....        
2c960 72 65 74 75 72 6e 20 5f 73 71 6c 2e 4d 65 6d 6f  return _sql.Memo
2c970 72 79 55 73 65 64 3b 0d 0a 20 20 20 20 20 20 7d  ryUsed;..      }
2c980 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2c990 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2c9a0 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
2c9b0 65 20 6d 61 78 69 6d 75 6d 20 61 6d 6f 75 6e 74  e maximum amount
2c9c0 20 6f 66 20 6d 65 6d 6f 72 79 20 28 69 6e 20 62   of memory (in b
2c9d0 79 74 65 73 29 20 75 73 65 64 20 62 79 20 74 68  ytes) used by th
2c9e0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
2c9f0 62 72 61 72 79 20 73 69 6e 63 65 20 74 68 65 20  brary since the 
2ca00 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 20  high-water mark 
2ca10 77 61 73 20 6c 61 73 74 20 72 65 73 65 74 2e 0d  was last reset..
2ca20 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
2ca30 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ry>..#if !PLATFO
2ca40 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
2ca50 4f 52 4b 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ORK..    [Browsa
2ca60 62 6c 65 28 66 61 6c 73 65 29 2c 20 44 65 73 69  ble(false), Desi
2ca70 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f  gnerSerializatio
2ca80 6e 56 69 73 69 62 69 6c 69 74 79 28 44 65 73 69  nVisibility(Desi
2ca90 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74 69 6f  gnerSerializatio
2caa0 6e 56 69 73 69 62 69 6c 69 74 79 2e 48 69 64 64  nVisibility.Hidd
2cab0 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  en)]..#endif..  
2cac0 20 20 70 75 62 6c 69 63 20 6c 6f 6e 67 20 4d 65    public long Me
2cad0 6d 6f 72 79 48 69 67 68 77 61 74 65 72 0d 0a 20  moryHighwater.. 
2cae0 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d     {..      get.
2caf0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
2cb00 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
2cb10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  );....        if
2cb20 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d   (_sql == null).
2cb30 0a 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77  .          throw
2cb40 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72   new InvalidOper
2cb50 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22  ationException("
2cb60 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  Database connect
2cb70 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f  ion not valid fo
2cb80 72 20 67 65 74 74 69 6e 67 20 6d 61 78 69 6d 75  r getting maximu
2cb90 6d 20 6d 65 6d 6f 72 79 20 75 73 65 64 2e 22 29  m memory used.")
2cba0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
2cbb0 65 74 75 72 6e 20 5f 73 71 6c 2e 4d 65 6d 6f 72  eturn _sql.Memor
2cbc0 79 48 69 67 68 77 61 74 65 72 3b 0d 0a 20 20 20  yHighwater;..   
2cbd0 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
2cbe0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2cbf0 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
2cc00 73 20 76 61 72 69 6f 75 73 20 67 6c 6f 62 61 6c  s various global
2cc10 20 6d 65 6d 6f 72 79 20 73 74 61 74 69 73 74 69   memory statisti
2cc20 63 73 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74  cs for the SQLit
2cc30 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 76  e core library v
2cc40 69 61 0d 0a 20 20 20 20 2f 2f 2f 20 61 20 64 69  ia..    /// a di
2cc50 63 74 69 6f 6e 61 72 79 20 6f 66 20 6b 65 79 2f  ctionary of key/
2cc60 76 61 6c 75 65 20 70 61 69 72 73 2e 20 20 43 75  value pairs.  Cu
2cc70 72 72 65 6e 74 6c 79 2c 20 6f 6e 6c 79 20 74 68  rrently, only th
2cc80 65 20 22 4d 65 6d 6f 72 79 55 73 65 64 22 20 61  e "MemoryUsed" a
2cc90 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 22 4d 65 6d  nd..    /// "Mem
2cca0 6f 72 79 48 69 67 68 77 61 74 65 72 22 20 6b 65  oryHighwater" ke
2ccb0 79 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 20  ys are returned 
2ccc0 61 6e 64 20 74 68 65 79 20 68 61 76 65 20 76 61  and they have va
2ccd0 6c 75 65 73 20 74 68 61 74 20 63 6f 72 72 65 73  lues that corres
2cce0 70 6f 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f  pond..    /// to
2ccf0 20 74 68 65 20 76 61 6c 75 65 73 20 74 68 61 74   the values that
2cd00 20 63 6f 75 6c 64 20 62 65 20 6f 62 74 61 69 6e   could be obtain
2cd10 65 64 20 76 69 61 20 74 68 65 20 3c 73 65 65 20  ed via the <see 
2cd20 63 72 65 66 3d 22 4d 65 6d 6f 72 79 55 73 65 64  cref="MemoryUsed
2cd30 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  " />..    /// an
2cd40 64 20 3c 73 65 65 20 63 72 65 66 3d 22 4d 65 6d  d <see cref="Mem
2cd50 6f 72 79 48 69 67 68 77 61 74 65 72 22 20 2f 3e  oryHighwater" />
2cd60 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 6f 70   connection prop
2cd70 65 72 74 69 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  erties...    ///
2cd80 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2cd90 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2cda0 3d 22 73 74 61 74 69 73 74 69 63 73 22 3e 0d 0a  ="statistics">..
2cdb0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 64 69 63      /// This dic
2cdc0 74 69 6f 6e 61 72 79 20 77 69 6c 6c 20 62 65 20  tionary will be 
2cdd0 70 6f 70 75 6c 61 74 65 64 20 77 69 74 68 20 74  populated with t
2cde0 68 65 20 67 6c 6f 62 61 6c 20 6d 65 6d 6f 72 79  he global memory
2cdf0 20 73 74 61 74 69 73 74 69 63 73 2e 20 20 49 74   statistics.  It
2ce00 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62  ..    /// will b
2ce10 65 20 63 72 65 61 74 65 64 20 69 66 20 6e 65 63  e created if nec
2ce20 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  essary...    ///
2ce30 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70   </param>..    p
2ce40 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
2ce50 64 20 47 65 74 4d 65 6d 6f 72 79 53 74 61 74 69  d GetMemoryStati
2ce60 73 74 69 63 73 28 0d 0a 20 20 20 20 20 20 20 20  stics(..        
2ce70 72 65 66 20 49 44 69 63 74 69 6f 6e 61 72 79 3c  ref IDictionary<
2ce80 73 74 72 69 6e 67 2c 20 6c 6f 6e 67 3e 20 73 74  string, long> st
2ce90 61 74 69 73 74 69 63 73 0d 0a 20 20 20 20 20 20  atistics..      
2cea0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
2ceb0 20 20 20 20 69 66 20 28 73 74 61 74 69 73 74 69      if (statisti
2cec0 63 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  cs == null)..   
2ced0 20 20 20 20 20 20 20 20 20 73 74 61 74 69 73 74           statist
2cee0 69 63 73 20 3d 20 6e 65 77 20 44 69 63 74 69 6f  ics = new Dictio
2cef0 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 6c 6f 6e  nary<string, lon
2cf00 67 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  g>();....       
2cf10 20 73 74 61 74 69 73 74 69 63 73 5b 22 4d 65 6d   statistics["Mem
2cf20 6f 72 79 55 73 65 64 22 5d 20 3d 20 53 51 4c 69  oryUsed"] = SQLi
2cf30 74 65 33 2e 53 74 61 74 69 63 4d 65 6d 6f 72 79  te3.StaticMemory
2cf40 55 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 73  Used;..        s
2cf50 74 61 74 69 73 74 69 63 73 5b 22 4d 65 6d 6f 72  tatistics["Memor
2cf60 79 48 69 67 68 77 61 74 65 72 22 5d 20 3d 20 53  yHighwater"] = S
2cf70 51 4c 69 74 65 33 2e 53 74 61 74 69 63 4d 65 6d  QLite3.StaticMem
2cf80 6f 72 79 48 69 67 68 77 61 74 65 72 3b 0d 0a 20  oryHighwater;.. 
2cf90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
2cfa0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2cfb0 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 66  // Attempts to f
2cfc0 72 65 65 20 61 73 20 6d 75 63 68 20 68 65 61 70  ree as much heap
2cfd0 20 6d 65 6d 6f 72 79 20 61 73 20 70 6f 73 73 69   memory as possi
2cfe0 62 6c 65 20 66 6f 72 20 74 68 69 73 20 64 61 74  ble for this dat
2cff0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2d000 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2d010 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
2d020 63 20 76 6f 69 64 20 52 65 6c 65 61 73 65 4d 65  c void ReleaseMe
2d030 6d 6f 72 79 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  mory()..    {.. 
2d040 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
2d050 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
2d060 20 20 20 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e     if (_sql == n
2d070 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2d080 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
2d090 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
2d0a0 70 74 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20  ption("Database 
2d0b0 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76  connection not v
2d0c0 61 6c 69 64 20 66 6f 72 20 72 65 6c 65 61 73 69  alid for releasi
2d0d0 6e 67 20 6d 65 6d 6f 72 79 2e 22 29 3b 0d 0a 0d  ng memory.");...
2d0e0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
2d0f0 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 5f 73  rrorCode rc = _s
2d100 71 6c 2e 52 65 6c 65 61 73 65 4d 65 6d 6f 72 79  ql.ReleaseMemory
2d110 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ();....        i
2d120 66 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45  f (rc != SQLiteE
2d130 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
2d140 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d150 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53       throw new S
2d160 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 72  QLiteException(r
2d170 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
2d180 20 20 20 20 5f 73 71 6c 2e 47 65 74 4c 61 73 74      _sql.GetLast
2d190 45 72 72 6f 72 28 22 43 6f 75 6c 64 20 6e 6f 74  Error("Could not
2d1a0 20 72 65 6c 65 61 73 65 20 63 6f 6e 6e 65 63 74   release connect
2d1b0 69 6f 6e 20 6d 65 6d 6f 72 79 2e 22 29 29 3b 0d  ion memory."));.
2d1c0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2d1d0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
2d1e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2d1f0 41 74 74 65 6d 70 74 73 20 74 6f 20 66 72 65 65  Attempts to free
2d200 20 4e 20 62 79 74 65 73 20 6f 66 20 68 65 61 70   N bytes of heap
2d210 20 6d 65 6d 6f 72 79 20 62 79 20 64 65 61 6c 6c   memory by deall
2d220 6f 63 61 74 69 6e 67 20 6e 6f 6e 2d 65 73 73 65  ocating non-esse
2d230 6e 74 69 61 6c 20 6d 65 6d 6f 72 79 0d 0a 20 20  ntial memory..  
2d240 20 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 69 6f 6e    /// allocation
2d250 73 20 68 65 6c 64 20 62 79 20 74 68 65 20 64 61  s held by the da
2d260 74 61 62 61 73 65 20 6c 69 62 72 61 72 79 2e 20  tabase library. 
2d270 4d 65 6d 6f 72 79 20 75 73 65 64 20 74 6f 20 63  Memory used to c
2d280 61 63 68 65 20 64 61 74 61 62 61 73 65 20 70 61  ache database pa
2d290 67 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20  ges..    /// to 
2d2a0 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61  improve performa
2d2b0 6e 63 65 20 69 73 20 61 6e 20 65 78 61 6d 70 6c  nce is an exampl
2d2c0 65 20 6f 66 20 6e 6f 6e 2d 65 73 73 65 6e 74 69  e of non-essenti
2d2d0 61 6c 20 6d 65 6d 6f 72 79 2e 20 20 54 68 69 73  al memory.  This
2d2e0 20 69 73 20 61 20 6e 6f 2d 6f 70 0d 0a 20 20 20   is a no-op..   
2d2f0 20 2f 2f 2f 20 72 65 74 75 72 6e 69 6e 67 20 7a   /// returning z
2d300 65 72 6f 20 69 66 20 74 68 65 20 53 51 4c 69 74  ero if the SQLit
2d310 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 77  e core library w
2d320 61 73 20 6e 6f 74 20 63 6f 6d 70 69 6c 65 64 20  as not compiled 
2d330 77 69 74 68 20 74 68 65 20 63 6f 6d 70 69 6c 65  with the compile
2d340 2d 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f  -time..    /// o
2d350 70 74 69 6f 6e 20 53 51 4c 49 54 45 5f 45 4e 41  ption SQLITE_ENA
2d360 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47  BLE_MEMORY_MANAG
2d370 45 4d 45 4e 54 2e 20 20 4f 70 74 69 6f 6e 61 6c  EMENT.  Optional
2d380 6c 79 2c 20 61 74 74 65 6d 70 74 73 20 74 6f 20  ly, attempts to 
2d390 72 65 73 65 74 20 61 6e 64 2f 6f 72 0d 0a 20 20  reset and/or..  
2d3a0 20 20 2f 2f 2f 20 63 6f 6d 70 61 63 74 20 74 68    /// compact th
2d3b0 65 20 57 69 6e 33 32 20 6e 61 74 69 76 65 20 68  e Win32 native h
2d3c0 65 61 70 2c 20 69 66 20 61 70 70 6c 69 63 61 62  eap, if applicab
2d3d0 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  le...    /// </s
2d3e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2d3f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 42   <param name="nB
2d400 79 74 65 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ytes">..    /// 
2d410 54 68 65 20 72 65 71 75 65 73 74 65 64 20 6e 75  The requested nu
2d420 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f  mber of bytes to
2d430 20 66 72 65 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   free...    /// 
2d440 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2d450 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
2d460 65 73 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  eset">..    /// 
2d470 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 61 74 74 65  Non-zero to atte
2d480 6d 70 74 20 61 20 68 65 61 70 20 72 65 73 65 74  mpt a heap reset
2d490 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2d4a0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
2d4b0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6d 70 61 63  ram name="compac
2d4c0 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e  t">..    /// Non
2d4d0 2d 7a 65 72 6f 20 74 6f 20 61 74 74 65 6d 70 74  -zero to attempt
2d4e0 20 68 65 61 70 20 63 6f 6d 70 61 63 74 69 6f 6e   heap compaction
2d4f0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2d500 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
2d510 72 61 6d 20 6e 61 6d 65 3d 22 6e 46 72 65 65 22  ram name="nFree"
2d520 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  >..    /// The n
2d530 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
2d540 63 74 75 61 6c 6c 79 20 66 72 65 65 64 2e 20 20  ctually freed.  
2d550 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62  This value may b
2d560 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f  e zero...    ///
2d570 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2d580 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2d590 72 65 73 65 74 4f 6b 22 3e 0d 0a 20 20 20 20 2f  resetOk">..    /
2d5a0 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 77 69  // This value wi
2d5b0 6c 6c 20 62 65 20 6e 6f 6e 2d 7a 65 72 6f 20 69  ll be non-zero i
2d5c0 66 20 74 68 65 20 68 65 61 70 20 72 65 73 65 74  f the heap reset
2d5d0 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6c 2e   was successful.
2d5e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2d5f0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2d600 61 6d 20 6e 61 6d 65 3d 22 6e 4c 61 72 67 65 73  am name="nLarges
2d610 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
2d620 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6c 61 72   size of the lar
2d630 67 65 73 74 20 63 6f 6d 6d 69 74 74 65 64 20 66  gest committed f
2d640 72 65 65 20 62 6c 6f 63 6b 20 69 6e 20 74 68 65  ree block in the
2d650 20 68 65 61 70 2c 20 69 6e 20 62 79 74 65 73 2e   heap, in bytes.
2d660 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76  ..    /// This v
2d670 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 7a 65 72  alue will be zer
2d680 6f 20 75 6e 6c 65 73 73 20 68 65 61 70 20 63 6f  o unless heap co
2d690 6d 70 61 63 74 69 6f 6e 20 69 73 20 65 6e 61 62  mpaction is enab
2d6a0 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  led...    /// </
2d6b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
2d6c0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
2d6d0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
2d6e0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
2d6f0 20 28 69 2e 65 2e 20 7a 65 72 6f 20 66 6f 72 20   (i.e. zero for 
2d700 73 75 63 63 65 73 73 20 61 6e 64 20 6e 6f 6e 2d  success and non-
2d710 7a 65 72 6f 0d 0a 20 20 20 20 2f 2f 2f 20 66 6f  zero..    /// fo
2d720 72 20 66 61 69 6c 75 72 65 29 2e 0d 0a 20 20 20  r failure)...   
2d730 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2d740 0a 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72  .    #pragma war
2d750 6e 69 6e 67 20 64 69 73 61 62 6c 65 20 33 30 30  ning disable 300
2d760 31 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  1..    public st
2d770 61 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  atic SQLiteError
2d780 43 6f 64 65 20 52 65 6c 65 61 73 65 4d 65 6d 6f  Code ReleaseMemo
2d790 72 79 28 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ry(..        int
2d7a0 20 6e 42 79 74 65 73 2c 0d 0a 20 20 20 20 20 20   nBytes,..      
2d7b0 20 20 62 6f 6f 6c 20 72 65 73 65 74 2c 0d 0a 20    bool reset,.. 
2d7c0 20 20 20 20 20 20 20 62 6f 6f 6c 20 63 6f 6d 70         bool comp
2d7d0 61 63 74 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  act,..        re
2d7e0 66 20 69 6e 74 20 6e 46 72 65 65 2c 0d 0a 20 20  f int nFree,..  
2d7f0 20 20 20 20 20 20 72 65 66 20 62 6f 6f 6c 20 72        ref bool r
2d800 65 73 65 74 4f 6b 2c 0d 0a 20 20 20 20 20 20 20  esetOk,..       
2d810 20 72 65 66 20 75 69 6e 74 20 6e 4c 61 72 67 65   ref uint nLarge
2d820 73 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  st..        ).. 
2d830 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
2d840 74 75 72 6e 20 53 51 4c 69 74 65 33 2e 53 74 61  turn SQLite3.Sta
2d850 74 69 63 52 65 6c 65 61 73 65 4d 65 6d 6f 72 79  ticReleaseMemory
2d860 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  (..            n
2d870 42 79 74 65 73 2c 20 72 65 73 65 74 2c 20 63 6f  Bytes, reset, co
2d880 6d 70 61 63 74 2c 20 72 65 66 20 6e 46 72 65 65  mpact, ref nFree
2d890 2c 20 72 65 66 20 72 65 73 65 74 4f 6b 2c 20 72  , ref resetOk, r
2d8a0 65 66 20 6e 4c 61 72 67 65 73 74 29 3b 0d 0a 20  ef nLargest);.. 
2d8b0 20 20 20 7d 0d 0a 20 20 20 20 23 70 72 61 67 6d     }..    #pragm
2d8c0 61 20 77 61 72 6e 69 6e 67 20 72 65 73 74 6f 72  a warning restor
2d8d0 65 20 33 30 30 31 0d 0a 0d 0a 20 20 20 20 2f 2f  e 3001....    //
2d8e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2d8f0 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 73 74   /// Sets the st
2d900 61 74 75 73 20 6f 66 20 74 68 65 20 6d 65 6d 6f  atus of the memo
2d910 72 79 20 75 73 61 67 65 20 74 72 61 63 6b 69 6e  ry usage trackin
2d920 67 20 73 75 62 73 79 73 74 65 6d 20 69 6e 20 74  g subsystem in t
2d930 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
2d940 69 62 72 61 72 79 2e 20 20 42 79 20 64 65 66 61  ibrary.  By defa
2d950 75 6c 74 2c 20 74 68 69 73 20 69 73 20 65 6e 61  ult, this is ena
2d960 62 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  bled...    /// I
2d970 66 20 74 68 69 73 20 69 73 20 64 69 73 61 62 6c  f this is disabl
2d980 65 64 2c 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  ed, memory usage
2d990 20 74 72 61 63 6b 69 6e 67 20 77 69 6c 6c 20 6e   tracking will n
2d9a0 6f 74 20 62 65 20 70 65 72 66 6f 72 6d 65 64 2e  ot be performed.
2d9b0 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 72 65    This is not re
2d9c0 61 6c 6c 79 20 61 20 70 65 72 2d 63 6f 6e 6e 65  ally a per-conne
2d9d0 63 74 69 6f 6e 20 76 61 6c 75 65 2c 20 69 74 20  ction value, it 
2d9e0 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 67 6c 6f 62  is..    /// glob
2d9f0 61 6c 20 74 6f 20 74 68 65 20 70 72 6f 63 65 73  al to the proces
2da00 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
2da10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2da20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
2da30 75 65 22 3e 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20  ue">Non-zero to 
2da40 65 6e 61 62 6c 65 20 6d 65 6d 6f 72 79 20 75 73  enable memory us
2da50 61 67 65 20 74 72 61 63 6b 69 6e 67 2c 20 7a 65  age tracking, ze
2da60 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 3c 2f 70  ro otherwise.</p
2da70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
2da80 72 65 74 75 72 6e 73 3e 41 20 73 74 61 6e 64 61  returns>A standa
2da90 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
2daa0 20 63 6f 64 65 20 28 69 2e 65 2e 20 7a 65 72 6f   code (i.e. zero
2dab0 20 66 6f 72 20 73 75 63 63 65 73 73 20 61 6e 64   for success and
2dac0 20 6e 6f 6e 2d 7a 65 72 6f 20 66 6f 72 20 66 61   non-zero for fa
2dad0 69 6c 75 72 65 29 2e 3c 2f 72 65 74 75 72 6e 73  ilure).</returns
2dae0 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
2daf0 61 74 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72  atic SQLiteError
2db00 43 6f 64 65 20 53 65 74 4d 65 6d 6f 72 79 53 74  Code SetMemorySt
2db10 61 74 75 73 28 62 6f 6f 6c 20 76 61 6c 75 65 29  atus(bool value)
2db20 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2db30 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 33 2e   return SQLite3.
2db40 53 74 61 74 69 63 53 65 74 4d 65 6d 6f 72 79 53  StaticSetMemoryS
2db50 74 61 74 75 73 28 76 61 6c 75 65 29 3b 0d 0a 20  tatus(value);.. 
2db60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
2db70 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2db80 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 73 74 72  // Returns a str
2db90 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ing containing t
2dba0 68 65 20 64 65 66 69 6e 65 20 63 6f 6e 73 74 61  he define consta
2dbb0 6e 74 73 20 28 69 2e 65 2e 20 63 6f 6d 70 69 6c  nts (i.e. compil
2dbc0 65 2d 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20  e-time..    /// 
2dbd0 6f 70 74 69 6f 6e 73 29 20 75 73 65 64 20 74 6f  options) used to
2dbe0 20 63 6f 6d 70 69 6c 65 20 74 68 65 20 63 6f 72   compile the cor
2dbf0 65 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62  e managed assemb
2dc00 6c 79 2c 20 64 65 6c 69 6d 69 74 65 64 20 77 69  ly, delimited wi
2dc10 74 68 0d 0a 20 20 20 20 2f 2f 2f 20 73 70 61 63  th..    /// spac
2dc20 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  es...    /// </s
2dc30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
2dc40 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
2dc50 67 20 44 65 66 69 6e 65 43 6f 6e 73 74 61 6e 74  g DefineConstant
2dc60 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
2dc70 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 53    get { return S
2dc80 51 4c 69 74 65 33 2e 44 65 66 69 6e 65 43 6f 6e  QLite3.DefineCon
2dc90 73 74 61 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 7d  stants; }..    }
2dca0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2dcb0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
2dcc0 65 74 75 72 6e 73 20 74 68 65 20 76 65 72 73 69  eturns the versi
2dcd0 6f 6e 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c  on of the underl
2dce0 79 69 6e 67 20 53 51 4c 69 74 65 20 63 6f 72 65  ying SQLite core
2dcf0 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f   library...    /
2dd00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2dd10 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
2dd20 20 73 74 72 69 6e 67 20 53 51 4c 69 74 65 56 65   string SQLiteVe
2dd30 72 73 69 6f 6e 0d 0a 20 20 20 20 7b 0d 0a 20 20  rsion..    {..  
2dd40 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
2dd50 20 53 51 4c 69 74 65 33 2e 53 51 4c 69 74 65 56   SQLite3.SQLiteV
2dd60 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20 20 20 7d  ersion; }..    }
2dd70 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2dd80 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
2dd90 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72  his method retur
2dda0 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 77 68  ns the string wh
2ddb0 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65  ose value is the
2ddc0 20 73 61 6d 65 20 61 73 20 74 68 65 0d 0a 20 20   same as the..  
2ddd0 20 20 2f 2f 2f 20 53 51 4c 49 54 45 5f 53 4f 55    /// SQLITE_SOU
2dde0 52 43 45 5f 49 44 20 43 20 70 72 65 70 72 6f 63  RCE_ID C preproc
2ddf0 65 73 73 6f 72 20 6d 61 63 72 6f 20 75 73 65 64  essor macro used
2de00 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20   when compiling 
2de10 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  the..    /// SQL
2de20 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
2de30 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2de40 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
2de50 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
2de60 53 51 4c 69 74 65 53 6f 75 72 63 65 49 64 0d 0a  SQLiteSourceId..
2de70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
2de80 20 7b 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65   { return SQLite
2de90 33 2e 53 51 4c 69 74 65 53 6f 75 72 63 65 49 64  3.SQLiteSourceId
2dea0 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
2deb0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2dec0 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
2ded0 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69   a string contai
2dee0 6e 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 65  ning the compile
2def0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 20 75 73  -time options us
2df00 65 64 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 63  ed to..    /// c
2df10 6f 6d 70 69 6c 65 20 74 68 65 20 53 51 4c 69 74  ompile the SQLit
2df20 65 20 63 6f 72 65 20 6e 61 74 69 76 65 20 6c 69  e core native li
2df30 62 72 61 72 79 2c 20 64 65 6c 69 6d 69 74 65 64  brary, delimited
2df40 20 77 69 74 68 20 73 70 61 63 65 73 2e 0d 0a 20   with spaces... 
2df50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2df60 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
2df70 61 74 69 63 20 73 74 72 69 6e 67 20 53 51 4c 69  atic string SQLi
2df80 74 65 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73  teCompileOptions
2df90 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
2dfa0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 53 51   get { return SQ
2dfb0 4c 69 74 65 33 2e 53 51 4c 69 74 65 43 6f 6d 70  Lite3.SQLiteComp
2dfc0 69 6c 65 4f 70 74 69 6f 6e 73 3b 20 7d 0d 0a 20  ileOptions; }.. 
2dfd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
2dfe0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2dff0 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 72  // This method r
2e000 65 74 75 72 6e 73 20 74 68 65 20 76 65 72 73 69  eturns the versi
2e010 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 65 72 6f  on of the intero
2e020 70 20 53 51 4c 69 74 65 20 61 73 73 65 6d 62 6c  p SQLite assembl
2e030 79 0d 0a 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e  y..    /// used.
2e040 20 20 49 66 20 74 68 65 20 53 51 4c 69 74 65 20    If the SQLite 
2e050 69 6e 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79  interop assembly
2e060 20 69 73 20 6e 6f 74 20 69 6e 20 75 73 65 20 6f   is not in use o
2e070 72 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 6e  r the..    /// n
2e080 65 63 65 73 73 61 72 79 20 69 6e 66 6f 72 6d 61  ecessary informa
2e090 74 69 6f 6e 20 63 61 6e 6e 6f 74 20 62 65 20 6f  tion cannot be o
2e0a0 62 74 61 69 6e 65 64 20 66 6f 72 20 61 6e 79 20  btained for any 
2e0b0 72 65 61 73 6f 6e 2c 20 61 20 6e 75 6c 6c 0d 0a  reason, a null..
2e0c0 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 6d 61      /// value ma
2e0d0 79 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a  y be returned...
2e0e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2e0f0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  y>..    public s
2e100 74 61 74 69 63 20 73 74 72 69 6e 67 20 49 6e 74  tatic string Int
2e110 65 72 6f 70 56 65 72 73 69 6f 6e 0d 0a 20 20 20  eropVersion..   
2e120 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20   {..      get { 
2e130 72 65 74 75 72 6e 20 53 51 4c 69 74 65 33 2e 49  return SQLite3.I
2e140 6e 74 65 72 6f 70 56 65 72 73 69 6f 6e 3b 20 7d  nteropVersion; }
2e150 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2e160 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2e170 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
2e180 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 74  d returns the st
2e190 72 69 6e 67 20 77 68 6f 73 65 20 76 61 6c 75 65  ring whose value
2e1a0 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 75 6e   contains the un
2e1b0 69 71 75 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 64  ique..    /// id
2e1c0 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74 68 65  entifier for the
2e1d0 20 73 6f 75 72 63 65 20 63 68 65 63 6b 6f 75 74   source checkout
2e1e0 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64 20 74   used to build t
2e1f0 68 65 20 69 6e 74 65 72 6f 70 0d 0a 20 20 20 20  he interop..    
2e200 2f 2f 2f 20 61 73 73 65 6d 62 6c 79 2e 20 20 49  /// assembly.  I
2e210 66 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74  f the SQLite int
2e220 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 20 69 73  erop assembly is
2e230 20 6e 6f 74 20 69 6e 20 75 73 65 20 6f 72 20 74   not in use or t
2e240 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 6e 65 63 65  he..    /// nece
2e250 73 73 61 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f  ssary informatio
2e260 6e 20 63 61 6e 6e 6f 74 20 62 65 20 6f 62 74 61  n cannot be obta
2e270 69 6e 65 64 20 66 6f 72 20 61 6e 79 20 72 65 61  ined for any rea
2e280 73 6f 6e 2c 20 61 20 6e 75 6c 6c 0d 0a 20 20 20  son, a null..   
2e290 20 2f 2f 2f 20 76 61 6c 75 65 20 6d 61 79 20 62   /// value may b
2e2a0 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
2e2b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
2e2c0 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
2e2d0 69 63 20 73 74 72 69 6e 67 20 49 6e 74 65 72 6f  ic string Intero
2e2e0 70 53 6f 75 72 63 65 49 64 0d 0a 20 20 20 20 7b  pSourceId..    {
2e2f0 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
2e300 74 75 72 6e 20 53 51 4c 69 74 65 33 2e 49 6e 74  turn SQLite3.Int
2e310 65 72 6f 70 53 6f 75 72 63 65 49 64 3b 20 7d 0d  eropSourceId; }.
2e320 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2e330 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2e340 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 61 20 73   /// Returns a s
2e350 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
2e360 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   the compile-tim
2e370 65 20 6f 70 74 69 6f 6e 73 20 75 73 65 64 20 74  e options used t
2e380 6f 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6d 70 69  o..    /// compi
2e390 6c 65 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e  le the SQLite in
2e3a0 74 65 72 6f 70 20 61 73 73 65 6d 62 6c 79 2c 20  terop assembly, 
2e3b0 64 65 6c 69 6d 69 74 65 64 20 77 69 74 68 20 73  delimited with s
2e3c0 70 61 63 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  paces...    /// 
2e3d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2e3e0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
2e3f0 72 69 6e 67 20 49 6e 74 65 72 6f 70 43 6f 6d 70  ring InteropComp
2e400 69 6c 65 4f 70 74 69 6f 6e 73 0d 0a 20 20 20 20  ileOptions..    
2e410 7b 0d 0a 20 20 20 20 20 20 20 20 67 65 74 20 7b  {..        get {
2e420 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 33 2e   return SQLite3.
2e430 49 6e 74 65 72 6f 70 43 6f 6d 70 69 6c 65 4f 70  InteropCompileOp
2e440 74 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20 20 7d 0d  tions; }..    }.
2e450 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2e460 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
2e470 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  is method return
2e480 73 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6f 66  s the version of
2e490 20 74 68 65 20 6d 61 6e 61 67 65 64 20 63 6f 6d   the managed com
2e4a0 70 6f 6e 65 6e 74 73 20 75 73 65 64 0d 0a 20 20  ponents used..  
2e4b0 20 20 2f 2f 2f 20 74 6f 20 69 6e 74 65 72 61 63    /// to interac
2e4c0 74 20 77 69 74 68 20 74 68 65 20 53 51 4c 69 74  t with the SQLit
2e4d0 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20  e core library. 
2e4e0 20 49 66 20 74 68 65 20 6e 65 63 65 73 73 61 72   If the necessar
2e4f0 79 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 66 6f 72  y..    /// infor
2e500 6d 61 74 69 6f 6e 20 63 61 6e 6e 6f 74 20 62 65  mation cannot be
2e510 20 6f 62 74 61 69 6e 65 64 20 66 6f 72 20 61 6e   obtained for an
2e520 79 20 72 65 61 73 6f 6e 2c 20 61 20 6e 75 6c 6c  y reason, a null
2e530 20 76 61 6c 75 65 20 6d 61 79 0d 0a 20 20 20 20   value may..    
2e540 2f 2f 2f 20 62 65 20 72 65 74 75 72 6e 65 64 2e  /// be returned.
2e550 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2e560 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
2e570 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 50   static string P
2e580 72 6f 76 69 64 65 72 56 65 72 73 69 6f 6e 0d 0a  roviderVersion..
2e590 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67      {..        g
2e5a0 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  et..        {.. 
2e5b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e5c0 6e 20 28 5f 61 73 73 65 6d 62 6c 79 20 21 3d 20  n (_assembly != 
2e5d0 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20  null) ?..       
2e5e0 20 20 20 20 20 20 20 20 20 5f 61 73 73 65 6d 62           _assemb
2e5f0 6c 79 2e 47 65 74 4e 61 6d 65 28 29 2e 56 65 72  ly.GetName().Ver
2e600 73 69 6f 6e 2e 54 6f 53 74 72 69 6e 67 28 29 20  sion.ToString() 
2e610 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
2e620 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2e630 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2e640 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
2e650 68 6f 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  hod returns the 
2e660 73 74 72 69 6e 67 20 77 68 6f 73 65 20 76 61 6c  string whose val
2e670 75 65 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20  ue contains the 
2e680 75 6e 69 71 75 65 0d 0a 20 20 20 20 2f 2f 2f 20  unique..    /// 
2e690 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74  identifier for t
2e6a0 68 65 20 73 6f 75 72 63 65 20 63 68 65 63 6b 6f  he source checko
2e6b0 75 74 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64  ut used to build
2e6c0 20 74 68 65 20 6d 61 6e 61 67 65 64 0d 0a 20 20   the managed..  
2e6d0 20 20 2f 2f 2f 20 63 6f 6d 70 6f 6e 65 6e 74 73    /// components
2e6e0 20 63 75 72 72 65 6e 74 6c 79 20 65 78 65 63 75   currently execu
2e6f0 74 69 6e 67 2e 20 20 49 66 20 74 68 65 20 6e 65  ting.  If the ne
2e700 63 65 73 73 61 72 79 20 69 6e 66 6f 72 6d 61 74  cessary informat
2e710 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 63 61 6e  ion..    /// can
2e720 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64 20  not be obtained 
2e730 66 6f 72 20 61 6e 79 20 72 65 61 73 6f 6e 2c 20  for any reason, 
2e740 61 20 6e 75 6c 6c 20 76 61 6c 75 65 20 6d 61 79  a null value may
2e750 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20   be returned... 
2e760 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2e770 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
2e780 61 74 69 63 20 73 74 72 69 6e 67 20 50 72 6f 76  atic string Prov
2e790 69 64 65 72 53 6f 75 72 63 65 49 64 0d 0a 20 20  iderSourceId..  
2e7a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65 74    {..        get
2e7b0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2e7c0 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 61 73           if (_as
2e7d0 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d  sembly == null).
2e7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e7f0 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
2e800 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
2e810 69 6e 67 20 73 6f 75 72 63 65 49 64 20 3d 20 6e  ing sourceId = n
2e820 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
2e830 20 20 20 20 69 66 20 28 5f 61 73 73 65 6d 62 6c      if (_assembl
2e840 79 2e 49 73 44 65 66 69 6e 65 64 28 74 79 70 65  y.IsDefined(type
2e850 6f 66 28 41 73 73 65 6d 62 6c 79 53 6f 75 72 63  of(AssemblySourc
2e860 65 49 64 41 74 74 72 69 62 75 74 65 29 2c 20 66  eIdAttribute), f
2e870 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alse))..        
2e880 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e890 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 53         AssemblyS
2e8a0 6f 75 72 63 65 49 64 41 74 74 72 69 62 75 74 65  ourceIdAttribute
2e8b0 20 61 74 74 72 69 62 75 74 65 20 3d 0d 0a 20 20   attribute =..  
2e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8d0 20 20 28 41 73 73 65 6d 62 6c 79 53 6f 75 72 63    (AssemblySourc
2e8e0 65 49 64 41 74 74 72 69 62 75 74 65 29 5f 61 73  eIdAttribute)_as
2e8f0 73 65 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d  sembly.GetCustom
2e900 41 74 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20  Attributes(..   
2e910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e920 20 20 20 20 20 74 79 70 65 6f 66 28 41 73 73 65       typeof(Asse
2e930 6d 62 6c 79 53 6f 75 72 63 65 49 64 41 74 74 72  mblySourceIdAttr
2e940 69 62 75 74 65 29 2c 20 66 61 6c 73 65 29 5b 30  ibute), false)[0
2e950 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
2e960 20 20 20 20 20 20 73 6f 75 72 63 65 49 64 20 3d        sourceId =
2e970 20 61 74 74 72 69 62 75 74 65 2e 53 6f 75 72 63   attribute.Sourc
2e980 65 49 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eId;..          
2e990 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2e9a0 20 20 20 73 74 72 69 6e 67 20 73 6f 75 72 63 65     string source
2e9b0 54 69 6d 65 53 74 61 6d 70 20 3d 20 6e 75 6c 6c  TimeStamp = null
2e9c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e9d0 20 69 66 20 28 5f 61 73 73 65 6d 62 6c 79 2e 49   if (_assembly.I
2e9e0 73 44 65 66 69 6e 65 64 28 74 79 70 65 6f 66 28  sDefined(typeof(
2e9f0 41 73 73 65 6d 62 6c 79 53 6f 75 72 63 65 54 69  AssemblySourceTi
2ea00 6d 65 53 74 61 6d 70 41 74 74 72 69 62 75 74 65  meStampAttribute
2ea10 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20  ), false))..    
2ea20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ea30 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
2ea40 62 6c 79 53 6f 75 72 63 65 54 69 6d 65 53 74 61  blySourceTimeSta
2ea50 6d 70 41 74 74 72 69 62 75 74 65 20 61 74 74 72  mpAttribute attr
2ea60 69 62 75 74 65 20 3d 0d 0a 20 20 20 20 20 20 20  ibute =..       
2ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 28 41 73               (As
2ea80 73 65 6d 62 6c 79 53 6f 75 72 63 65 54 69 6d 65  semblySourceTime
2ea90 53 74 61 6d 70 41 74 74 72 69 62 75 74 65 29 5f  StampAttribute)_
2eaa0 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73 74  assembly.GetCust
2eab0 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a 20  omAttributes(.. 
2eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ead0 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 41 73         typeof(As
2eae0 73 65 6d 62 6c 79 53 6f 75 72 63 65 54 69 6d 65  semblySourceTime
2eaf0 53 74 61 6d 70 41 74 74 72 69 62 75 74 65 29 2c  StampAttribute),
2eb00 20 66 61 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20   false)[0];.... 
2eb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2eb20 6f 75 72 63 65 54 69 6d 65 53 74 61 6d 70 20 3d  ourceTimeStamp =
2eb30 20 61 74 74 72 69 62 75 74 65 2e 53 6f 75 72 63   attribute.Sourc
2eb40 65 54 69 6d 65 53 74 61 6d 70 3b 0d 0a 20 20 20  eTimeStamp;..   
2eb50 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2eb60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 73            if ((s
2eb70 6f 75 72 63 65 49 64 20 21 3d 20 6e 75 6c 6c 29  ourceId != null)
2eb80 20 7c 7c 20 28 73 6f 75 72 63 65 54 69 6d 65 53   || (sourceTimeS
2eb90 74 61 6d 70 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a  tamp != null))..
2eba0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2ebb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2ebc0 66 20 28 73 6f 75 72 63 65 49 64 20 3d 3d 20 6e  f (sourceId == n
2ebd0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2ebe0 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65            source
2ebf0 49 64 20 3d 20 22 30 30 30 30 30 30 30 30 30 30  Id = "0000000000
2ec00 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
2ec10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 22 3b  00000000000000";
2ec20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ec30 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 54 69      if (sourceTi
2ec40 6d 65 53 74 61 6d 70 20 3d 3d 20 6e 75 6c 6c 29  meStamp == null)
2ec50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ec60 20 20 20 20 20 20 73 6f 75 72 63 65 54 69 6d 65        sourceTime
2ec70 53 74 61 6d 70 20 3d 20 22 30 30 30 30 2d 30 30  Stamp = "0000-00
2ec80 2d 30 30 20 30 30 3a 30 30 3a 30 30 20 55 54 43  -00 00:00:00 UTC
2ec90 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ";....          
2eca0 20 20 20 20 20 20 72 65 74 75 72 6e 20 48 65 6c        return Hel
2ecb0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
2ecc0 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
2ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
2ece0 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
2ecf0 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
2ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed10 20 22 7b 30 7d 20 7b 31 7d 22 2c 20 73 6f 75 72   "{0} {1}", sour
2ed20 63 65 49 64 2c 20 73 6f 75 72 63 65 54 69 6d 65  ceId, sourceTime
2ed30 53 74 61 6d 70 29 3b 0d 0a 20 20 20 20 20 20 20  Stamp);..       
2ed40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ed50 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
2ed60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ed70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ed80 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
2ed90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
2eda0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2edb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ede0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2edf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ee10 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2ee20 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 51 75 65 72  y>..    /// Quer
2ee30 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ies and returns 
2ee40 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
2ee50 20 73 70 65 63 69 66 69 65 64 20 73 65 74 74 69   specified setti
2ee60 6e 67 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20  ng, using the.. 
2ee70 20 20 20 2f 2f 2f 20 63 61 63 68 65 64 20 73 65     /// cached se
2ee80 74 74 69 6e 67 20 6e 61 6d 65 73 20 61 6e 64 20  tting names and 
2ee90 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 6c  values for the l
2eea0 61 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  ast connection t
2eeb0 68 61 74 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f  hat used..    //
2eec0 2f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / the <see cref=
2eed0 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
2eee0 6e 2e 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f  n.Open" /> metho
2eef0 64 2c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c  d, when availabl
2ef00 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
2ef10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2ef20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
2ef30 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
2ef40 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 65 74   name of the set
2ef50 74 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ting...    /// <
2ef60 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
2ef70 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65   <param name="de
2ef80 66 61 75 6c 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  fault">..    ///
2ef90 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62 65   The value to be
2efa0 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
2efb0 20 73 65 74 74 69 6e 67 20 68 61 73 20 6e 6f 74   setting has not
2efc0 20 62 65 65 6e 20 73 65 74 20 65 78 70 6c 69 63   been set explic
2efd0 69 74 6c 79 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72  itly..    /// or
2efe0 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
2eff0 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  mined...    /// 
2f000 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2f010 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
2f020 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
2f030 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  The value of the
2f040 20 63 61 63 68 65 64 20 73 65 74 74 69 6e 67 20   cached setting 
2f050 69 73 20 73 74 6f 72 65 64 20 68 65 72 65 20 69  is stored here i
2f060 66 20 66 6f 75 6e 64 3b 20 6f 74 68 65 72 77 69  f found; otherwi
2f070 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65  se,..    /// the
2f080 20 76 61 6c 75 65 20 6f 66 20 3c 70 61 72 61 6d   value of <param
2f090 72 65 66 20 6e 61 6d 65 3d 22 64 65 66 61 75 6c  ref name="defaul
2f0a0 74 22 20 2f 3e 20 69 73 20 73 74 6f 72 65 64 20  t" /> is stored 
2f0b0 68 65 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  here...    /// <
2f0c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
2f0d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2f0e0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
2f0f0 74 68 65 20 63 61 63 68 65 64 20 73 65 74 74 69  the cached setti
2f100 6e 67 20 77 61 73 20 66 6f 75 6e 64 3b 20 6f 74  ng was found; ot
2f110 68 65 72 77 69 73 65 2c 20 7a 65 72 6f 2e 0d 0a  herwise, zero...
2f120 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
2f130 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  s>..    private 
2f140 73 74 61 74 69 63 20 62 6f 6f 6c 20 54 72 79 47  static bool TryG
2f150 65 74 4c 61 73 74 43 61 63 68 65 64 53 65 74 74  etLastCachedSett
2f160 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ing(..        st
2f170 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20  ring name,..    
2f180 20 20 20 20 6f 62 6a 65 63 74 20 40 64 65 66 61      object @defa
2f190 75 6c 74 2c 0d 0a 20 20 20 20 20 20 20 20 6f 75  ult,..        ou
2f1a0 74 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a  t object value..
2f1b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
2f1c0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 6c  ..        if (_l
2f1d0 61 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 49 6e 4f  astConnectionInO
2f1e0 70 65 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  pen == null)..  
2f1f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f200 20 20 20 20 20 76 61 6c 75 65 20 3d 20 40 64 65       value = @de
2f210 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  fault;..        
2f220 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2f230 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
2f240 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f          return _
2f250 6c 61 73 74 43 6f 6e 6e 65 63 74 69 6f 6e 49 6e  lastConnectionIn
2f260 4f 70 65 6e 2e 54 72 79 47 65 74 43 61 63 68 65  Open.TryGetCache
2f270 64 53 65 74 74 69 6e 67 28 0d 0a 20 20 20 20 20  dSetting(..     
2f280 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 40 64 65         name, @de
2f290 66 61 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65  fault, out value
2f2a0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
2f2b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2f2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f310 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2f320 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
2f330 64 64 73 20 6f 72 20 73 65 74 73 20 74 68 65 20  dds or sets the 
2f340 63 61 63 68 65 64 20 73 65 74 74 69 6e 67 20 73  cached setting s
2f350 70 65 63 69 66 69 65 64 20 62 79 20 3c 70 61 72  pecified by <par
2f360 61 6d 72 65 66 20 6e 61 6d 65 3d 22 6e 61 6d 65  amref name="name
2f370 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f  " />..    /// to
2f380 20 74 68 65 20 76 61 6c 75 65 20 73 70 65 63 69   the value speci
2f390 66 69 65 64 20 62 79 20 3c 70 61 72 61 6d 72 65  fied by <paramre
2f3a0 66 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 20 2f  f name="value" /
2f3b0 3e 20 75 73 69 6e 67 20 74 68 65 20 63 61 63 68  > using the cach
2f3c0 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 74 74  ed..    /// sett
2f3d0 69 6e 67 20 6e 61 6d 65 73 20 61 6e 64 20 76 61  ing names and va
2f3e0 6c 75 65 73 20 66 6f 72 20 74 68 65 20 6c 61 73  lues for the las
2f3f0 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61  t connection tha
2f400 74 20 75 73 65 64 20 74 68 65 0d 0a 20 20 20 20  t used the..    
2f410 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
2f420 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e  QLiteConnection.
2f430 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2c  Open" /> method,
2f440 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e   when available.
2f450 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2f460 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2f470 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65 22  aram name="name"
2f480 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  >..    /// The n
2f490 61 6d 65 20 6f 66 20 74 68 65 20 63 61 63 68 65  ame of the cache
2f4a0 64 20 73 65 74 74 69 6e 67 20 74 6f 20 61 64 64  d setting to add
2f4b0 20 6f 72 20 72 65 70 6c 61 63 65 2e 0d 0a 20 20   or replace...  
2f4c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2f4d0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2f4e0 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
2f4f0 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 76 61    /// The new va
2f500 6c 75 65 20 6f 66 20 74 68 65 20 63 61 63 68 65  lue of the cache
2f510 64 20 73 65 74 74 69 6e 67 2e 0d 0a 20 20 20 20  d setting...    
2f520 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2f530 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2f540 20 76 6f 69 64 20 53 65 74 4c 61 73 74 43 61 63   void SetLastCac
2f550 68 65 64 53 65 74 74 69 6e 67 28 0d 0a 20 20 20  hedSetting(..   
2f560 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
2f570 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20  , /* in */..    
2f580 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
2f590 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
2f5a0 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
2f5b0 20 20 20 20 20 69 66 20 28 5f 6c 61 73 74 43 6f       if (_lastCo
2f5c0 6e 6e 65 63 74 69 6f 6e 49 6e 4f 70 65 6e 20 3d  nnectionInOpen =
2f5d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
2f5e0 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
2f5f0 20 20 20 20 20 20 20 20 5f 6c 61 73 74 43 6f 6e          _lastCon
2f600 6e 65 63 74 69 6f 6e 49 6e 4f 70 65 6e 2e 53 65  nectionInOpen.Se
2f610 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e  tCachedSetting(n
2f620 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
2f630 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
2f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2f6a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2f6b0 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
2f6c0 61 75 6c 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ault connection 
2f6d0 66 6c 61 67 73 20 74 6f 20 62 65 20 75 73 65 64  flags to be used
2f6e0 20 66 6f 72 20 61 6c 6c 20 6f 70 65 6e 65 64 20   for all opened 
2f6f0 63 6f 6e 6e 65 63 74 69 6f 6e 73 0d 0a 20 20 20  connections..   
2f700 20 2f 2f 2f 20 77 68 65 6e 20 74 68 65 79 20 61   /// when they a
2f710 72 65 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 69  re not present i
2f720 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  n the connection
2f730 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
2f740 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f750 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
2f760 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2f770 46 6c 61 67 73 20 44 65 66 61 75 6c 74 46 6c 61  Flags DefaultFla
2f780 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  gs..    {..     
2f790 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
2f7a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  {..            s
2f7b0 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 44 65  tring name = "De
2f7c0 66 61 75 6c 74 46 6c 61 67 73 5f 53 51 4c 69 74  faultFlags_SQLit
2f7d0 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20  eConnection";.. 
2f7e0 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
2f7f0 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  t value;....    
2f800 20 20 20 20 20 20 20 20 69 66 20 28 21 54 72 79          if (!Try
2f810 47 65 74 4c 61 73 74 43 61 63 68 65 64 53 65 74  GetLastCachedSet
2f820 74 69 6e 67 28 6e 61 6d 65 2c 20 6e 75 6c 6c 2c  ting(name, null,
2f830 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
2f840 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2f850 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
2f860 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  ue = UnsafeNativ
2f870 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74  eMethods.GetSett
2f880 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6e  ingValue(name, n
2f890 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull);..         
2f8a0 20 20 20 20 20 20 20 53 65 74 4c 61 73 74 43 61         SetLastCa
2f8b0 63 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65  chedSetting(name
2f8c0 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  , value);..     
2f8d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2f8e0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
2f8f0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2f900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f910 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75  rn FallbackDefau
2f920 6c 74 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20  ltFlags;....    
2f930 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 65          object e
2f940 6e 75 6d 56 61 6c 75 65 20 3d 20 54 72 79 50 61  numValue = TryPa
2f950 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20  rseEnum(..      
2f960 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
2f970 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
2f980 6e 46 6c 61 67 73 29 2c 20 76 61 6c 75 65 2e 54  nFlags), value.T
2f990 6f 53 74 72 69 6e 67 28 29 2c 20 74 72 75 65 29  oString(), true)
2f9a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f9b0 20 69 66 20 28 65 6e 75 6d 56 61 6c 75 65 20 69   if (enumValue i
2f9c0 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
2f9d0 6f 6e 46 6c 61 67 73 29 0d 0a 20 20 20 20 20 20  onFlags)..      
2f9e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f9f0 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69   (SQLiteConnecti
2fa00 6f 6e 46 6c 61 67 73 29 65 6e 75 6d 56 61 6c 75  onFlags)enumValu
2fa10 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
2fa20 20 20 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63    return Fallbac
2fa30 6b 44 65 66 61 75 6c 74 46 6c 61 67 73 3b 0d 0a  kDefaultFlags;..
2fa40 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
2fa50 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  ......    //////
2fa60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2fac0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2fad0 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 78 74 72      /// The extr
2fae0 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c 61  a connection fla
2faf0 67 73 20 74 6f 20 62 65 20 75 73 65 64 20 66 6f  gs to be used fo
2fb00 72 20 61 6c 6c 20 6f 70 65 6e 65 64 20 63 6f 6e  r all opened con
2fb10 6e 65 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 2f  nections...    /
2fb20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2fb30 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
2fb40 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2fb50 6e 46 6c 61 67 73 20 53 68 61 72 65 64 46 6c 61  nFlags SharedFla
2fb60 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  gs..    {..     
2fb70 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b 20 28 5f     get { lock (_
2fb80 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72 65 74 75  syncRoot) { retu
2fb90 72 6e 20 5f 73 68 61 72 65 64 46 6c 61 67 73 3b  rn _sharedFlags;
2fba0 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65   } }..        se
2fbb0 74 20 7b 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52  t { lock (_syncR
2fbc0 6f 6f 74 29 20 7b 20 5f 73 68 61 72 65 64 46 6c  oot) { _sharedFl
2fbd0 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d 20 7d  ags = value; } }
2fbe0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2fbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2fc50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
2fc60 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
2fc70 75 72 6e 73 20 74 68 65 20 73 74 61 74 65 20 6f  urns the state o
2fc80 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  f the connection
2fc90 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2fca0 6d 61 72 79 3e 0d 0a 23 69 66 20 21 50 4c 41 54  mary>..#if !PLAT
2fcb0 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
2fcc0 45 57 4f 52 4b 0d 0a 20 20 20 20 5b 42 72 6f 77  EWORK..    [Brow
2fcd0 73 61 62 6c 65 28 66 61 6c 73 65 29 2c 20 44 65  sable(false), De
2fce0 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74  signerSerializat
2fcf0 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 28 44 65  ionVisibility(De
2fd00 73 69 67 6e 65 72 53 65 72 69 61 6c 69 7a 61 74  signerSerializat
2fd10 69 6f 6e 56 69 73 69 62 69 6c 69 74 79 2e 48 69  ionVisibility.Hi
2fd20 64 64 65 6e 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a  dden)]..#endif..
2fd30 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
2fd40 69 64 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  ide ConnectionSt
2fd50 61 74 65 20 53 74 61 74 65 0d 0a 20 20 20 20 7b  ate State..    {
2fd60 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20  ..      get..   
2fd70 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68     {..        Ch
2fd80 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
2fd90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f          return _
2fda0 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 3b  connectionState;
2fdb0 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
2fdc0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
2fdd0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50  mary>..    /// P
2fde0 61 73 73 65 73 20 61 20 73 68 75 74 64 6f 77 6e  asses a shutdown
2fdf0 20 72 65 71 75 65 73 74 20 74 6f 20 74 68 65 20   request to the 
2fe00 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
2fe10 61 72 79 2e 20 20 44 6f 65 73 20 6e 6f 74 20 74  ary.  Does not t
2fe20 68 72 6f 77 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  hrow..    /// an
2fe30 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68   exception if th
2fe40 65 20 73 68 75 74 64 6f 77 6e 20 72 65 71 75 65  e shutdown reque
2fe50 73 74 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 2f  st fails...    /
2fe60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2fe70 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2fe80 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e  ..    /// A stan
2fe90 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
2fea0 72 6e 20 63 6f 64 65 20 28 69 2e 65 2e 20 7a 65  rn code (i.e. ze
2feb0 72 6f 20 66 6f 72 20 73 75 63 63 65 73 73 20 61  ro for success a
2fec0 6e 64 20 6e 6f 6e 2d 7a 65 72 6f 20 66 6f 72 0d  nd non-zero for.
2fed0 0a 20 20 20 20 2f 2f 2f 20 66 61 69 6c 75 72 65  .    /// failure
2fee0 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  )...    /// </re
2fef0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
2ff00 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
2ff10 64 65 20 53 68 75 74 64 6f 77 6e 28 29 0d 0a 20  de Shutdown().. 
2ff20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 43 68     {..        Ch
2ff30 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
2ff40 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 5f 73  ..        if (_s
2ff50 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ql == null)..   
2ff60 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
2ff70 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  ew InvalidOperat
2ff80 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 44 61  ionException("Da
2ff90 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2ffa0 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72 20  n not valid for 
2ffb0 73 68 75 74 64 6f 77 6e 2e 22 29 3b 0d 0a 0d 0a  shutdown.");....
2ffc0 20 20 20 20 20 20 20 20 5f 73 71 6c 2e 43 6c 6f          _sql.Clo
2ffd0 73 65 28 66 61 6c 73 65 29 3b 20 2f 2a 20 4e 4f  se(false); /* NO
2ffe0 54 45 3a 20 4d 55 53 54 20 62 65 20 63 6c 6f 73  TE: MUST be clos
2fff0 65 64 20 62 65 66 6f 72 65 20 73 68 75 74 64 6f  ed before shutdo
30000 77 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  wn. */..        
30010 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
30020 72 63 20 3d 20 5f 73 71 6c 2e 53 68 75 74 64 6f  rc = _sql.Shutdo
30030 77 6e 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  wn();....#if !NE
30040 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
30050 54 52 41 43 45 5f 43 4f 4e 4e 45 43 54 49 4f 4e  TRACE_CONNECTION
30060 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 72 63  ..        if (rc
30070 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
30080 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
30090 20 20 20 20 20 53 79 73 74 65 6d 2e 44 69 61 67       System.Diag
300a0 6e 6f 73 74 69 63 73 2e 54 72 61 63 65 2e 57 72  nostics.Trace.Wr
300b0 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
300c0 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
300d0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
300e0 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
300f0 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
30100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30110 20 20 22 53 68 75 74 64 6f 77 6e 20 28 49 6e 73    "Shutdown (Ins
30120 74 61 6e 63 65 29 20 46 61 69 6c 65 64 3a 20 7b  tance) Failed: {
30130 30 7d 22 2c 20 72 63 29 29 3b 0d 0a 23 65 6e 64  0}", rc));..#end
30140 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  if....        re
30150 74 75 72 6e 20 72 63 3b 0d 0a 20 20 20 20 7d 0d  turn rc;..    }.
30160 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
30170 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50 61  ary>..    /// Pa
30180 73 73 65 73 20 61 20 73 68 75 74 64 6f 77 6e 20  sses a shutdown 
30190 72 65 71 75 65 73 74 20 74 6f 20 74 68 65 20 53  request to the S
301a0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
301b0 72 79 2e 20 20 54 68 72 6f 77 73 20 61 6e 0d 0a  ry.  Throws an..
301c0 20 20 20 20 2f 2f 2f 20 65 78 63 65 70 74 69 6f      /// exceptio
301d0 6e 20 69 66 20 74 68 65 20 73 68 75 74 64 6f 77  n if the shutdow
301e0 6e 20 72 65 71 75 65 73 74 20 66 61 69 6c 73 20  n request fails 
301f0 61 6e 64 20 74 68 65 20 6e 6f 2d 74 68 72 6f 77  and the no-throw
30200 20 70 61 72 61 6d 65 74 65 72 0d 0a 20 20 20 20   parameter..    
30210 2f 2f 2f 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2e  /// is non-zero.
30220 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
30230 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
30240 61 72 61 6d 20 6e 61 6d 65 3d 22 64 69 72 65 63  aram name="direc
30250 74 6f 72 69 65 73 22 3e 0d 0a 20 20 20 20 2f 2f  tories">..    //
30260 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 72 65  / Non-zero to re
30270 73 65 74 20 74 68 65 20 64 61 74 61 62 61 73 65  set the database
30280 20 61 6e 64 20 74 65 6d 70 6f 72 61 72 79 20 64   and temporary d
30290 69 72 65 63 74 6f 72 69 65 73 20 74 6f 20 74 68  irectories to th
302a0 65 69 72 0d 0a 20 20 20 20 2f 2f 2f 20 64 65 66  eir..    /// def
302b0 61 75 6c 74 20 76 61 6c 75 65 73 2c 20 77 68 69  ault values, whi
302c0 63 68 20 73 68 6f 75 6c 64 20 62 65 20 6e 75 6c  ch should be nul
302d0 6c 20 66 6f 72 20 62 6f 74 68 2e 0d 0a 20 20 20  l for both...   
302e0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
302f0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30300 6d 65 3d 22 6e 6f 54 68 72 6f 77 22 3e 0d 0a 20  me="noThrow">.. 
30310 20 20 20 2f 2f 2f 20 57 68 65 6e 20 6e 6f 6e 2d     /// When non-
30320 7a 65 72 6f 2c 20 74 68 72 6f 77 20 61 6e 20 65  zero, throw an e
30330 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20  xception if the 
30340 73 68 75 74 64 6f 77 6e 20 72 65 71 75 65 73 74  shutdown request
30350 20 66 61 69 6c 73 2e 0d 0a 20 20 20 20 2f 2f 2f   fails...    ///
30360 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70   </param>..    p
30370 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
30380 64 20 53 68 75 74 64 6f 77 6e 28 0d 0a 20 20 20  d Shutdown(..   
30390 20 20 20 20 20 62 6f 6f 6c 20 64 69 72 65 63 74       bool direct
303a0 6f 72 69 65 73 2c 0d 0a 20 20 20 20 20 20 20 20  ories,..        
303b0 62 6f 6f 6c 20 6e 6f 54 68 72 6f 77 0d 0a 20 20  bool noThrow..  
303c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
303d0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
303e0 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 53 51 4c  rorCode rc = SQL
303f0 69 74 65 33 2e 53 74 61 74 69 63 53 68 75 74 64  ite3.StaticShutd
30400 6f 77 6e 28 64 69 72 65 63 74 6f 72 69 65 73 29  own(directories)
30410 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
30420 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
30430 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
30440 20 20 20 20 7b 0d 0a 23 69 66 20 21 4e 45 54 5f      {..#if !NET_
30450 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
30460 41 43 45 5f 43 4f 4e 4e 45 43 54 49 4f 4e 0d 0a  ACE_CONNECTION..
30470 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74              Syst
30480 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 2e 54  em.Diagnostics.T
30490 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48  race.WriteLine(H
304a0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72  elperMethods.Str
304b0 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
304c0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
304d0 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
304e0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
304f0 20 20 20 20 20 20 20 20 20 22 53 68 75 74 64 6f           "Shutdo
30500 77 6e 20 28 53 74 61 74 69 63 29 20 46 61 69 6c  wn (Static) Fail
30510 65 64 3a 20 7b 30 7d 22 2c 20 72 63 29 29 3b 0d  ed: {0}", rc));.
30520 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
30530 20 20 20 20 20 20 20 69 66 20 28 21 6e 6f 54 68         if (!noTh
30540 72 6f 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20  row)..          
30550 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
30560 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
30570 72 63 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  rc, null);..    
30580 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
30590 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20      /// Enables 
305a0 6f 72 20 64 69 73 61 62 6c 65 64 20 65 78 74 65  or disabled exte
305b0 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
305c0 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 53 51  s returned by SQ
305d0 4c 69 74 65 0d 0a 20 20 20 20 70 75 62 6c 69 63  Lite..    public
305e0 20 76 6f 69 64 20 53 65 74 45 78 74 65 6e 64 65   void SetExtende
305f0 64 52 65 73 75 6c 74 43 6f 64 65 73 28 62 6f 6f  dResultCodes(boo
30600 6c 20 62 4f 6e 4f 66 66 29 0d 0a 20 20 20 20 7b  l bOnOff)..    {
30610 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44 69 73  ..      CheckDis
30620 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
30630 20 20 69 66 20 28 5f 73 71 6c 20 21 3d 20 6e 75    if (_sql != nu
30640 6c 6c 29 20 5f 73 71 6c 2e 53 65 74 45 78 74 65  ll) _sql.SetExte
30650 6e 64 65 64 52 65 73 75 6c 74 43 6f 64 65 73 28  ndedResultCodes(
30660 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20 20 20 7d 0d  bOnOff);..    }.
30670 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73  .    /// Enables
30680 20 6f 72 20 64 69 73 61 62 6c 65 64 20 65 78 74   or disabled ext
30690 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
306a0 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 53  es returned by S
306b0 51 4c 69 74 65 0d 0a 20 20 20 20 70 75 62 6c 69  QLite..    publi
306c0 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
306d0 65 20 52 65 73 75 6c 74 43 6f 64 65 28 29 0d 0a  e ResultCode()..
306e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65      {..      Che
306f0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
30700 0a 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c 20  .      if (_sql 
30710 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
30720 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
30730 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
30740 70 74 69 6f 6e 28 22 44 61 74 61 62 61 73 65 20  ption("Database 
30750 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20 76  connection not v
30760 61 6c 69 64 20 66 6f 72 20 67 65 74 74 69 6e 67  alid for getting
30770 20 72 65 73 75 6c 74 20 63 6f 64 65 2e 22 29 3b   result code.");
30780 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
30790 73 71 6c 2e 52 65 73 75 6c 74 43 6f 64 65 28 29  sql.ResultCode()
307a0 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 2f 2f  ;..    }..    //
307b0 2f 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69 73  / Enables or dis
307c0 61 62 6c 65 64 20 65 78 74 65 6e 64 65 64 20 72  abled extended r
307d0 65 73 75 6c 74 20 63 6f 64 65 73 20 72 65 74 75  esult codes retu
307e0 72 6e 65 64 20 62 79 20 53 51 4c 69 74 65 0d 0a  rned by SQLite..
307f0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
30800 65 45 72 72 6f 72 43 6f 64 65 20 45 78 74 65 6e  eErrorCode Exten
30810 64 65 64 52 65 73 75 6c 74 43 6f 64 65 28 29 0d  dedResultCode().
30820 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68  .    {..      Ch
30830 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
30840 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 73 71 6c  ..      if (_sql
30850 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
30860 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76     throw new Inv
30870 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63  alidOperationExc
30880 65 70 74 69 6f 6e 28 22 44 61 74 61 62 61 73 65  eption("Database
30890 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6e 6f 74 20   connection not 
308a0 76 61 6c 69 64 20 66 6f 72 20 67 65 74 74 69 6e  valid for gettin
308b0 67 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c  g extended resul
308c0 74 20 63 6f 64 65 2e 22 29 3b 0d 0a 20 20 20 20  t code.");..    
308d0 20 20 72 65 74 75 72 6e 20 5f 73 71 6c 2e 45 78    return _sql.Ex
308e0 74 65 6e 64 65 64 52 65 73 75 6c 74 43 6f 64 65  tendedResultCode
308f0 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ();..    }....  
30900 20 20 2f 2f 2f 20 41 64 64 20 61 20 6c 6f 67 20    /// Add a log 
30910 6d 65 73 73 61 67 65 20 76 69 61 20 74 68 65 20  message via the 
30920 53 51 4c 69 74 65 20 73 71 6c 69 74 65 33 5f 6c  SQLite sqlite3_l
30930 6f 67 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20  og interface... 
30940 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 4c     public void L
30950 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65  ogMessage(SQLite
30960 45 72 72 6f 72 43 6f 64 65 20 69 45 72 72 43 6f  ErrorCode iErrCo
30970 64 65 2c 20 73 74 72 69 6e 67 20 7a 4d 65 73 73  de, string zMess
30980 61 67 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  age)..    {..   
30990 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
309a0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20  ();....      if 
309b0 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (_sql == null)..
309c0 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
309d0 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
309e0 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 22 44  tionException("D
309f0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
30a00 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20 66 6f 72  on not valid for
30a10 20 6c 6f 67 67 69 6e 67 20 6d 65 73 73 61 67 65   logging message
30a20 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 5f 73  .");....      _s
30a30 71 6c 2e 4c 6f 67 4d 65 73 73 61 67 65 28 69 45  ql.LogMessage(iE
30a40 72 72 43 6f 64 65 2c 20 7a 4d 65 73 73 61 67 65  rrCode, zMessage
30a50 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
30a60 20 2f 2f 2f 20 41 64 64 20 61 20 6c 6f 67 20 6d   /// Add a log m
30a70 65 73 73 61 67 65 20 76 69 61 20 74 68 65 20 53  essage via the S
30a80 51 4c 69 74 65 20 73 71 6c 69 74 65 33 5f 6c 6f  QLite sqlite3_lo
30a90 67 20 69 6e 74 65 72 66 61 63 65 2e 0d 0a 20 20  g interface...  
30aa0 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 4c 6f    public void Lo
30ab0 67 4d 65 73 73 61 67 65 28 69 6e 74 20 69 45 72  gMessage(int iEr
30ac0 72 43 6f 64 65 2c 20 73 74 72 69 6e 67 20 7a 4d  rCode, string zM
30ad0 65 73 73 61 67 65 29 0d 0a 20 20 20 20 7b 0d 0a  essage)..    {..
30ae0 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
30af0 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
30b00 69 66 20 28 5f 73 71 6c 20 3d 3d 20 6e 75 6c 6c  if (_sql == null
30b10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68 72  )..          thr
30b20 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
30b30 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
30b40 28 22 44 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  ("Database conne
30b50 63 74 69 6f 6e 20 6e 6f 74 20 76 61 6c 69 64 20  ction not valid 
30b60 66 6f 72 20 6c 6f 67 67 69 6e 67 20 6d 65 73 73  for logging mess
30b70 61 67 65 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  age.");....     
30b80 20 5f 73 71 6c 2e 4c 6f 67 4d 65 73 73 61 67 65   _sql.LogMessage
30b90 28 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  ((SQLiteErrorCod
30ba0 65 29 69 45 72 72 43 6f 64 65 2c 20 7a 4d 65 73  e)iErrCode, zMes
30bb0 73 61 67 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  sage);..    }...
30bc0 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
30bd0 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
30be0 43 4c 55 44 45 5f 53 45 45 0d 0a 20 20 20 20 2f  CLUDE_SEE..    /
30bf0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
30c00 20 20 2f 2f 2f 20 43 68 61 6e 67 65 20 74 68 65    /// Change the
30c10 20 70 61 73 73 77 6f 72 64 20 28 6f 72 20 61 73   password (or as
30c20 73 69 67 6e 20 61 20 70 61 73 73 77 6f 72 64 29  sign a password)
30c30 20 74 6f 20 61 6e 20 6f 70 65 6e 20 64 61 74 61   to an open data
30c40 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  base...    /// <
30c50 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
30c60 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  // <remarks>..  
30c70 20 20 2f 2f 2f 20 4e 6f 20 72 65 61 64 65 72 73    /// No readers
30c80 20 6f 72 20 77 72 69 74 65 72 73 20 6d 61 79 20   or writers may 
30c90 62 65 20 61 63 74 69 76 65 20 66 6f 72 20 74 68  be active for th
30ca0 69 73 20 70 72 6f 63 65 73 73 2e 20 20 54 68 65  is process.  The
30cb0 20 64 61 74 61 62 61 73 65 20 6d 75 73 74 20 61   database must a
30cc0 6c 72 65 61 64 79 20 62 65 20 6f 70 65 6e 0d 0a  lready be open..
30cd0 20 20 20 20 2f 2f 2f 20 61 6e 64 20 69 66 20 69      /// and if i
30ce0 74 20 61 6c 72 65 61 64 79 20 77 61 73 20 70 61  t already was pa
30cf0 73 73 77 6f 72 64 20 70 72 6f 74 65 63 74 65 64  ssword protected
30d00 2c 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 70  , the existing p
30d10 61 73 73 77 6f 72 64 20 6d 75 73 74 20 61 6c 72  assword must alr
30d20 65 61 64 79 20 68 61 76 65 20 62 65 65 6e 20 73  eady have been s
30d30 75 70 70 6c 69 65 64 2e 0d 0a 20 20 20 20 2f 2f  upplied...    //
30d40 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
30d50 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
30d60 65 3d 22 6e 65 77 50 61 73 73 77 6f 72 64 22 3e  e="newPassword">
30d70 54 68 65 20 6e 65 77 20 70 61 73 73 77 6f 72 64  The new password
30d80 20 74 6f 20 61 73 73 69 67 6e 20 74 6f 20 74 68   to assign to th
30d90 65 20 64 61 74 61 62 61 73 65 3c 2f 70 61 72 61  e database</para
30da0 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76  m>..    public v
30db0 6f 69 64 20 43 68 61 6e 67 65 50 61 73 73 77 6f  oid ChangePasswo
30dc0 72 64 28 73 74 72 69 6e 67 20 6e 65 77 50 61 73  rd(string newPas
30dd0 73 77 6f 72 64 29 0d 0a 20 20 20 20 7b 0d 0a 20  sword)..    {.. 
30de0 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
30df0 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
30e00 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
30e10 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6e 65 77  sNullOrEmpty(new
30e20 50 61 73 73 77 6f 72 64 29 29 0d 0a 20 20 20 20  Password))..    
30e30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30e40 20 20 20 62 79 74 65 5b 5d 20 6e 65 77 50 61 73     byte[] newPas
30e50 73 77 6f 72 64 42 79 74 65 73 20 3d 20 55 54 46  swordBytes = UTF
30e60 38 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 2e 47  8Encoding.UTF8.G
30e70 65 74 42 79 74 65 73 28 0d 0a 20 20 20 20 20 20  etBytes(..      
30e80 20 20 20 20 20 20 20 20 20 20 6e 65 77 50 61 73            newPas
30e90 73 77 6f 72 64 29 3b 20 2f 2a 20 74 68 72 6f 77  sword); /* throw
30ea0 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   */....         
30eb0 20 20 20 43 68 61 6e 67 65 50 61 73 73 77 6f 72     ChangePasswor
30ec0 64 28 6e 65 77 50 61 73 73 77 6f 72 64 42 79 74  d(newPasswordByt
30ed0 65 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  es);..        }.
30ee0 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
30ef0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30f00 20 20 20 20 20 20 43 68 61 6e 67 65 50 61 73 73        ChangePass
30f10 77 6f 72 64 28 28 62 79 74 65 5b 5d 29 6e 75 6c  word((byte[])nul
30f20 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  l);..        }..
30f30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
30f40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
30f50 2f 2f 2f 20 43 68 61 6e 67 65 20 74 68 65 20 70  /// Change the p
30f60 61 73 73 77 6f 72 64 20 28 6f 72 20 61 73 73 69  assword (or assi
30f70 67 6e 20 61 20 70 61 73 73 77 6f 72 64 29 20 74  gn a password) t
30f80 6f 20 61 6e 20 6f 70 65 6e 20 64 61 74 61 62 61  o an open databa
30f90 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
30fa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
30fb0 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
30fc0 2f 2f 2f 20 4e 6f 20 72 65 61 64 65 72 73 20 6f  /// No readers o
30fd0 72 20 77 72 69 74 65 72 73 20 6d 61 79 20 62 65  r writers may be
30fe0 20 61 63 74 69 76 65 20 66 6f 72 20 74 68 69 73   active for this
30ff0 20 70 72 6f 63 65 73 73 2e 20 20 54 68 65 20 64   process.  The d
31000 61 74 61 62 61 73 65 20 6d 75 73 74 20 61 6c 72  atabase must alr
31010 65 61 64 79 20 62 65 20 6f 70 65 6e 0d 0a 20 20  eady be open..  
31020 20 20 2f 2f 2f 20 61 6e 64 20 69 66 20 69 74 20    /// and if it 
31030 61 6c 72 65 61 64 79 20 77 61 73 20 70 61 73 73  already was pass
31040 77 6f 72 64 20 70 72 6f 74 65 63 74 65 64 2c 20  word protected, 
31050 74 68 65 20 65 78 69 73 74 69 6e 67 20 70 61 73  the existing pas
31060 73 77 6f 72 64 20 6d 75 73 74 20 61 6c 72 65 61  sword must alrea
31070 64 79 20 68 61 76 65 20 62 65 65 6e 20 73 75 70  dy have been sup
31080 70 6c 69 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  plied...    /// 
31090 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20  </remarks>..    
310a0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
310b0 22 6e 65 77 50 61 73 73 77 6f 72 64 22 3e 54 68  "newPassword">Th
310c0 65 20 6e 65 77 20 70 61 73 73 77 6f 72 64 20 74  e new password t
310d0 6f 20 61 73 73 69 67 6e 20 74 6f 20 74 68 65 20  o assign to the 
310e0 64 61 74 61 62 61 73 65 3c 2f 70 61 72 61 6d 3e  database</param>
310f0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
31100 64 20 43 68 61 6e 67 65 50 61 73 73 77 6f 72 64  d ChangePassword
31110 28 62 79 74 65 5b 5d 20 6e 65 77 50 61 73 73 77  (byte[] newPassw
31120 6f 72 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ord)..    {..   
31130 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
31140 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20  ();....      if 
31150 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74  (_connectionStat
31160 65 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 53  e != ConnectionS
31170 74 61 74 65 2e 4f 70 65 6e 29 0d 0a 20 20 20 20  tate.Open)..    
31180 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
31190 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
311a0 63 65 70 74 69 6f 6e 28 22 44 61 74 61 62 61 73  ception("Databas
311b0 65 20 6d 75 73 74 20 62 65 20 6f 70 65 6e 65 64  e must be opened
311c0 20 62 65 66 6f 72 65 20 63 68 61 6e 67 69 6e 67   before changing
311d0 20 74 68 65 20 70 61 73 73 77 6f 72 64 2e 22 29   the password.")
311e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 5f 73 71 6c 2e  ;....      _sql.
311f0 43 68 61 6e 67 65 50 61 73 73 77 6f 72 64 28 6e  ChangePassword(n
31200 65 77 50 61 73 73 77 6f 72 64 29 3b 0d 0a 20 20  ewPassword);..  
31210 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
31220 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
31230 2f 20 53 65 74 73 20 74 68 65 20 70 61 73 73 77  / Sets the passw
31240 6f 72 64 20 66 6f 72 20 61 20 70 61 73 73 77 6f  ord for a passwo
31250 72 64 2d 70 72 6f 74 65 63 74 65 64 20 64 61 74  rd-protected dat
31260 61 62 61 73 65 2e 20 20 41 20 70 61 73 73 77 6f  abase.  A passwo
31270 72 64 2d 70 72 6f 74 65 63 74 65 64 20 64 61 74  rd-protected dat
31280 61 62 61 73 65 20 69 73 0d 0a 20 20 20 20 2f 2f  abase is..    //
31290 2f 20 75 6e 75 73 61 62 6c 65 20 66 6f 72 20 61  / unusable for a
312a0 6e 79 20 6f 70 65 72 61 74 69 6f 6e 20 75 6e 74  ny operation unt
312b0 69 6c 20 74 68 65 20 70 61 73 73 77 6f 72 64 20  il the password 
312c0 68 61 73 20 62 65 65 6e 20 73 65 74 2e 0d 0a 20  has been set... 
312d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
312e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
312f0 6d 20 6e 61 6d 65 3d 22 64 61 74 61 62 61 73 65  m name="database
31300 50 61 73 73 77 6f 72 64 22 3e 54 68 65 20 70 61  Password">The pa
31310 73 73 77 6f 72 64 20 66 6f 72 20 74 68 65 20 64  ssword for the d
31320 61 74 61 62 61 73 65 3c 2f 70 61 72 61 6d 3e 0d  atabase</param>.
31330 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64  .    public void
31340 20 53 65 74 50 61 73 73 77 6f 72 64 28 73 74 72   SetPassword(str
31350 69 6e 67 20 64 61 74 61 62 61 73 65 50 61 73 73  ing databasePass
31360 77 6f 72 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  word)..    {..  
31370 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
31380 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
31390 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
313a0 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 61 74 61  NullOrEmpty(data
313b0 62 61 73 65 50 61 73 73 77 6f 72 64 29 29 0d 0a  basePassword))..
313c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
313d0 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 64 61         byte[] da
313e0 74 61 62 61 73 65 50 61 73 73 77 6f 72 64 42 79  tabasePasswordBy
313f0 74 65 73 20 3d 20 55 54 46 38 45 6e 63 6f 64 69  tes = UTF8Encodi
31400 6e 67 2e 55 54 46 38 2e 47 65 74 42 79 74 65 73  ng.UTF8.GetBytes
31410 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31420 20 20 20 64 61 74 61 62 61 73 65 50 61 73 73 77     databasePassw
31430 6f 72 64 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a  ord); /* throw *
31440 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
31450 20 53 65 74 50 61 73 73 77 6f 72 64 28 64 61 74   SetPassword(dat
31460 61 62 61 73 65 50 61 73 73 77 6f 72 64 42 79 74  abasePasswordByt
31470 65 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  es);..        }.
31480 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
31490 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
314a0 20 20 20 20 20 20 53 65 74 50 61 73 73 77 6f 72        SetPasswor
314b0 64 28 28 62 79 74 65 5b 5d 29 6e 75 6c 6c 29 3b  d((byte[])null);
314c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
314d0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
314e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
314f0 20 53 65 74 73 20 74 68 65 20 70 61 73 73 77 6f   Sets the passwo
31500 72 64 20 66 6f 72 20 61 20 70 61 73 73 77 6f 72  rd for a passwor
31510 64 2d 70 72 6f 74 65 63 74 65 64 20 64 61 74 61  d-protected data
31520 62 61 73 65 2e 20 20 41 20 70 61 73 73 77 6f 72  base.  A passwor
31530 64 2d 70 72 6f 74 65 63 74 65 64 20 64 61 74 61  d-protected data
31540 62 61 73 65 20 69 73 0d 0a 20 20 20 20 2f 2f 2f  base is..    ///
31550 20 75 6e 75 73 61 62 6c 65 20 66 6f 72 20 61 6e   unusable for an
31560 79 20 6f 70 65 72 61 74 69 6f 6e 20 75 6e 74 69  y operation unti
31570 6c 20 74 68 65 20 70 61 73 73 77 6f 72 64 20 68  l the password h
31580 61 73 20 62 65 65 6e 20 73 65 74 2e 0d 0a 20 20  as been set...  
31590 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
315a0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
315b0 20 6e 61 6d 65 3d 22 64 61 74 61 62 61 73 65 50   name="databaseP
315c0 61 73 73 77 6f 72 64 22 3e 54 68 65 20 70 61 73  assword">The pas
315d0 73 77 6f 72 64 20 66 6f 72 20 74 68 65 20 64 61  sword for the da
315e0 74 61 62 61 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a  tabase</param>..
315f0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
31600 53 65 74 50 61 73 73 77 6f 72 64 28 62 79 74 65  SetPassword(byte
31610 5b 5d 20 64 61 74 61 62 61 73 65 50 61 73 73 77  [] databasePassw
31620 6f 72 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ord)..    {..   
31630 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
31640 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20  ();....      if 
31650 28 5f 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74  (_connectionStat
31660 65 20 21 3d 20 43 6f 6e 6e 65 63 74 69 6f 6e 53  e != ConnectionS
31670 74 61 74 65 2e 43 6c 6f 73 65 64 29 0d 0a 20 20  tate.Closed)..  
31680 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
31690 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
316a0 45 78 63 65 70 74 69 6f 6e 28 22 50 61 73 73 77  Exception("Passw
316b0 6f 72 64 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20  ord can only be 
316c0 73 65 74 20 62 65 66 6f 72 65 20 74 68 65 20 64  set before the d
316d0 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
316e0 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69  d.");....      i
316f0 66 20 28 64 61 74 61 62 61 73 65 50 61 73 73 77  f (databasePassw
31700 6f 72 64 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ord != null)..  
31710 20 20 20 20 20 20 69 66 20 28 64 61 74 61 62 61        if (databa
31720 73 65 50 61 73 73 77 6f 72 64 2e 4c 65 6e 67 74  sePassword.Lengt
31730 68 20 3d 3d 20 30 29 20 64 61 74 61 62 61 73 65  h == 0) database
31740 50 61 73 73 77 6f 72 64 20 3d 20 6e 75 6c 6c 3b  Password = null;
31750 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28 28 64  ....      if ((d
31760 61 74 61 62 61 73 65 50 61 73 73 77 6f 72 64 20  atabasePassword 
31770 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20  != null) &&..   
31780 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d 65 74         HelperMet
31790 68 6f 64 73 2e 48 61 73 46 6c 61 67 73 28 5f 66  hods.HasFlags(_f
317a0 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  lags, SQLiteConn
317b0 65 63 74 69 6f 6e 46 6c 61 67 73 2e 48 69 64 65  ectionFlags.Hide
317c0 50 61 73 73 77 6f 72 64 29 29 0d 0a 20 20 20 20  Password))..    
317d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 74    {..          t
317e0 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
317f0 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
31800 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
31810 20 20 20 22 57 69 74 68 20 27 48 69 64 65 50 61     "With 'HidePa
31820 73 73 77 6f 72 64 27 20 65 6e 61 62 6c 65 64 2c  ssword' enabled,
31830 20 70 61 73 73 77 6f 72 64 73 20 63 61 6e 20 6f   passwords can o
31840 6e 6c 79 20 62 65 20 73 65 74 20 76 69 61 20 74  nly be set via t
31850 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  he connection st
31860 72 69 6e 67 2e 22 29 3b 0d 0a 20 20 20 20 20 20  ring.");..      
31870 7d 0d 0a 0d 0a 20 20 20 20 20 20 5f 70 61 73 73  }....      _pass
31880 77 6f 72 64 20 3d 20 64 61 74 61 62 61 73 65 50  word = databaseP
31890 61 73 73 77 6f 72 64 3b 0d 0a 20 20 20 20 7d 0d  assword;..    }.
318a0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
318b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
318c0 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 6f 72    /// Queries or
318d0 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 6e 75   modifies the nu
318e0 6d 62 65 72 20 6f 66 20 72 65 74 72 69 65 73 20  mber of retries 
318f0 6f 72 20 74 68 65 20 72 65 74 72 79 20 69 6e 74  or the retry int
31900 65 72 76 61 6c 20 28 69 6e 20 6d 69 6c 6c 69 73  erval (in millis
31910 65 63 6f 6e 64 73 29 20 66 6f 72 0d 0a 20 20 20  econds) for..   
31920 20 2f 2f 2f 20 63 65 72 74 61 69 6e 20 49 2f 4f   /// certain I/O
31930 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 68 61 74   operations that
31940 20 6d 61 79 20 66 61 69 6c 20 64 75 65 20 74 6f   may fail due to
31950 20 61 6e 74 69 2d 76 69 72 75 73 20 73 6f 66 74   anti-virus soft
31960 77 61 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ware...    /// <
31970 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
31980 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
31990 63 6f 75 6e 74 22 3e 54 68 65 20 6e 75 6d 62 65  count">The numbe
319a0 72 20 6f 66 20 74 69 6d 65 73 20 74 6f 20 72 65  r of times to re
319b0 74 72 79 20 74 68 65 20 49 2f 4f 20 6f 70 65 72  try the I/O oper
319c0 61 74 69 6f 6e 2e 20 20 41 20 6e 65 67 61 74 69  ation.  A negati
319d0 76 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 2f 2f  ve value..    //
319e0 2f 20 77 69 6c 6c 20 63 61 75 73 65 20 74 68 65  / will cause the
319f0 20 63 75 72 72 65 6e 74 20 63 6f 75 6e 74 20 74   current count t
31a00 6f 20 62 65 20 71 75 65 72 69 65 64 20 61 6e 64  o be queried and
31a10 20 72 65 70 6c 61 63 65 20 74 68 61 74 20 6e 65   replace that ne
31a20 67 61 74 69 76 65 20 76 61 6c 75 65 2e 3c 2f 70  gative value.</p
31a30 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
31a40 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 74 65  param name="inte
31a50 72 76 61 6c 22 3e 54 68 65 20 6e 75 6d 62 65 72  rval">The number
31a60 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   of milliseconds
31a70 20 74 6f 20 77 61 69 74 20 62 65 66 6f 72 65 20   to wait before 
31a80 72 65 74 72 79 69 6e 67 20 74 68 65 20 49 2f 4f  retrying the I/O
31a90 0d 0a 20 20 20 20 2f 2f 2f 20 6f 70 65 72 61 74  ..    /// operat
31aa0 69 6f 6e 2e 20 20 54 68 69 73 20 6e 75 6d 62 65  ion.  This numbe
31ab0 72 20 69 73 20 6d 75 6c 74 69 70 6c 69 65 64 20  r is multiplied 
31ac0 62 79 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  by the number of
31ad0 20 72 65 74 72 79 20 61 74 74 65 6d 70 74 73 20   retry attempts 
31ae0 73 6f 20 66 61 72 20 74 6f 20 63 6f 6d 65 0d 0a  so far to come..
31af0 20 20 20 20 2f 2f 2f 20 75 70 20 77 69 74 68 20      /// up with 
31b00 74 68 65 20 66 69 6e 61 6c 20 6e 75 6d 62 65 72  the final number
31b10 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   of milliseconds
31b20 20 74 6f 20 77 61 69 74 2e 20 20 41 20 6e 65 67   to wait.  A neg
31b30 61 74 69 76 65 20 76 61 6c 75 65 20 77 69 6c 6c  ative value will
31b40 20 63 61 75 73 65 20 74 68 65 0d 0a 20 20 20 20   cause the..    
31b50 2f 2f 2f 20 63 75 72 72 65 6e 74 20 69 6e 74 65  /// current inte
31b60 72 76 61 6c 20 74 6f 20 62 65 20 71 75 65 72 69  rval to be queri
31b70 65 64 20 61 6e 64 20 72 65 70 6c 61 63 65 20 74  ed and replace t
31b80 68 61 74 20 6e 65 67 61 74 69 76 65 20 76 61 6c  hat negative val
31b90 75 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ue.</param>..   
31ba0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 5a 65   /// <returns>Ze
31bb0 72 6f 20 66 6f 72 20 73 75 63 63 65 73 73 2c 20  ro for success, 
31bc0 6e 6f 6e 2d 7a 65 72 6f 20 66 6f 72 20 65 72 72  non-zero for err
31bd0 6f 72 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  or.</returns>.. 
31be0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
31bf0 45 72 72 6f 72 43 6f 64 65 20 53 65 74 41 76 52  ErrorCode SetAvR
31c00 65 74 72 79 28 72 65 66 20 69 6e 74 20 63 6f 75  etry(ref int cou
31c10 6e 74 2c 20 72 65 66 20 69 6e 74 20 69 6e 74 65  nt, ref int inte
31c20 72 76 61 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  rval)..    {..  
31c30 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
31c40 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
31c50 20 20 69 66 20 28 5f 63 6f 6e 6e 65 63 74 69 6f    if (_connectio
31c60 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e 65 63  nState != Connec
31c70 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e 29 0d  tionState.Open).
31c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72  .            thr
31c90 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
31ca0 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
31cb0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
31cc0 20 20 20 22 44 61 74 61 62 61 73 65 20 6d 75 73     "Database mus
31cd0 74 20 62 65 20 6f 70 65 6e 65 64 20 62 65 66 6f  t be opened befo
31ce0 72 65 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20  re changing the 
31cf0 41 56 20 72 65 74 72 79 20 70 61 72 61 6d 65 74  AV retry paramet
31d00 65 72 73 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  ers.");....     
31d10 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
31d20 64 65 20 72 63 3b 0d 0a 20 20 20 20 20 20 20 20  de rc;..        
31d30 49 6e 74 50 74 72 20 70 41 72 67 20 3d 20 49 6e  IntPtr pArg = In
31d40 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20  tPtr.Zero;....  
31d50 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
31d60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31d70 20 20 70 41 72 67 20 3d 20 4d 61 72 73 68 61 6c    pArg = Marshal
31d80 2e 41 6c 6c 6f 63 48 47 6c 6f 62 61 6c 28 73 69  .AllocHGlobal(si
31d90 7a 65 6f 66 28 69 6e 74 29 20 2a 20 32 29 3b 0d  zeof(int) * 2);.
31da0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  ...            M
31db0 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33  arshal.WriteInt3
31dc0 32 28 70 41 72 67 2c 20 30 2c 20 63 6f 75 6e 74  2(pArg, 0, count
31dd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31de0 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74  Marshal.WriteInt
31df0 33 32 28 70 41 72 67 2c 20 73 69 7a 65 6f 66 28  32(pArg, sizeof(
31e00 69 6e 74 29 2c 20 69 6e 74 65 72 76 61 6c 29 3b  int), interval);
31e10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31e20 72 63 20 3d 20 5f 73 71 6c 2e 46 69 6c 65 43 6f  rc = _sql.FileCo
31e30 6e 74 72 6f 6c 28 6e 75 6c 6c 2c 20 53 51 4c 49  ntrol(null, SQLI
31e40 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41  TE_FCNTL_WIN32_A
31e50 56 5f 52 45 54 52 59 2c 20 70 41 72 67 29 3b 0d  V_RETRY, pArg);.
31e60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
31e70 66 20 28 72 63 20 3d 3d 20 53 51 4c 69 74 65 45  f (rc == SQLiteE
31e80 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
31e90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 75               cou
31eb0 6e 74 20 3d 20 4d 61 72 73 68 61 6c 2e 52 65 61  nt = Marshal.Rea
31ec0 64 49 6e 74 33 32 28 70 41 72 67 2c 20 30 29 3b  dInt32(pArg, 0);
31ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31ee0 20 20 69 6e 74 65 72 76 61 6c 20 3d 20 4d 61 72    interval = Mar
31ef0 73 68 61 6c 2e 52 65 61 64 49 6e 74 33 32 28 70  shal.ReadInt32(p
31f00 41 72 67 2c 20 73 69 7a 65 6f 66 28 69 6e 74 29  Arg, sizeof(int)
31f10 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
31f20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
31f30 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
31f40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31f50 20 20 20 20 20 20 69 66 20 28 70 41 72 67 20 21        if (pArg !
31f60 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
31f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f80 4d 61 72 73 68 61 6c 2e 46 72 65 65 48 47 6c 6f  Marshal.FreeHGlo
31f90 62 61 6c 28 70 41 72 67 29 3b 0d 0a 20 20 20 20  bal(pArg);..    
31fa0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31fb0 20 72 65 74 75 72 6e 20 72 63 3b 0d 0a 20 20 20   return rc;..   
31fc0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
31fd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
31fe0 20 53 65 74 73 20 74 68 65 20 63 68 75 6e 6b 20   Sets the chunk 
31ff0 73 69 7a 65 20 66 6f 72 20 74 68 65 20 70 72 69  size for the pri
32000 6d 61 72 79 20 66 69 6c 65 20 61 73 73 6f 63 69  mary file associ
32010 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 64  ated with this d
32020 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
32030 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
32040 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
32050 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
32060 20 6e 61 6d 65 3d 22 73 69 7a 65 22 3e 0d 0a 20   name="size">.. 
32070 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 63     /// The new c
32080 68 75 6e 6b 20 73 69 7a 65 20 66 6f 72 20 74 68  hunk size for th
32090 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2c  e main database,
320a0 20 69 6e 20 62 79 74 65 73 2e 0d 0a 20 20 20 20   in bytes...    
320b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
320c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
320d0 0a 20 20 20 20 2f 2f 2f 20 5a 65 72 6f 20 66 6f  .    /// Zero fo
320e0 72 20 73 75 63 63 65 73 73 2c 20 6e 6f 6e 2d 7a  r success, non-z
320f0 65 72 6f 20 66 6f 72 20 65 72 72 6f 72 2e 0d 0a  ero for error...
32100 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
32110 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53  s>..    public S
32120 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53  QLiteErrorCode S
32130 65 74 43 68 75 6e 6b 53 69 7a 65 28 69 6e 74 20  etChunkSize(int 
32140 73 69 7a 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  size)..    {..  
32150 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
32160 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
32170 20 20 69 66 20 28 5f 63 6f 6e 6e 65 63 74 69 6f    if (_connectio
32180 6e 53 74 61 74 65 20 21 3d 20 43 6f 6e 6e 65 63  nState != Connec
32190 74 69 6f 6e 53 74 61 74 65 2e 4f 70 65 6e 29 0d  tionState.Open).
321a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72  .            thr
321b0 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
321c0 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
321d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
321e0 20 20 20 22 44 61 74 61 62 61 73 65 20 6d 75 73     "Database mus
321f0 74 20 62 65 20 6f 70 65 6e 65 64 20 62 65 66 6f  t be opened befo
32200 72 65 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20  re changing the 
32210 63 68 75 6e 6b 20 73 69 7a 65 2e 22 29 3b 0d 0a  chunk size.");..
32220 0d 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72  ..        IntPtr
32230 20 70 41 72 67 20 3d 20 49 6e 74 50 74 72 2e 5a   pArg = IntPtr.Z
32240 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
32250 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
32260 20 20 20 20 20 20 20 20 20 20 20 20 70 41 72 67              pArg
32270 20 3d 20 4d 61 72 73 68 61 6c 2e 41 6c 6c 6f 63   = Marshal.Alloc
32280 48 47 6c 6f 62 61 6c 28 73 69 7a 65 6f 66 28 69  HGlobal(sizeof(i
32290 6e 74 29 20 2a 20 31 29 3b 0d 0a 0d 0a 20 20 20  nt) * 1);....   
322a0 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
322b0 2e 57 72 69 74 65 49 6e 74 33 32 28 70 41 72 67  .WriteInt32(pArg
322c0 2c 20 30 2c 20 73 69 7a 65 29 3b 0d 0a 0d 0a 20  , 0, size);.... 
322d0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
322e0 6e 20 5f 73 71 6c 2e 46 69 6c 65 43 6f 6e 74 72  n _sql.FileContr
322f0 6f 6c 28 6e 75 6c 6c 2c 20 53 51 4c 49 54 45 5f  ol(null, SQLITE_
32300 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45  FCNTL_CHUNK_SIZE
32310 2c 20 70 41 72 67 29 3b 0d 0a 20 20 20 20 20 20  , pArg);..      
32320 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e    }..        fin
32330 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ally..        {.
32340 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
32350 28 70 41 72 67 20 21 3d 20 49 6e 74 50 74 72 2e  (pArg != IntPtr.
32360 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
32370 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 46         Marshal.F
32380 72 65 65 48 47 6c 6f 62 61 6c 28 70 41 72 67 29  reeHGlobal(pArg)
32390 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
323a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
323b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
323c0 2f 20 52 65 6d 6f 76 65 73 20 6f 6e 65 20 73 65  / Removes one se
323d0 74 20 6f 66 20 73 75 72 72 6f 75 6e 64 69 6e 67  t of surrounding
323e0 20 73 69 6e 67 6c 65 20 2d 4f 52 2d 20 64 6f 75   single -OR- dou
323f0 62 6c 65 20 71 75 6f 74 65 73 20 66 72 6f 6d 20  ble quotes from 
32400 74 68 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  the string..    
32410 2f 2f 2f 20 76 61 6c 75 65 20 61 6e 64 20 72 65  /// value and re
32420 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74  turns the result
32430 69 6e 67 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ing string value
32440 2e 20 20 49 66 20 74 68 65 20 73 74 72 69 6e 67  .  If the string
32450 20 69 73 20 6e 75 6c 6c 2c 20 65 6d 70 74 79 2c   is null, empty,
32460 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72 20 63 6f 6e  ..    /// or con
32470 74 61 69 6e 73 20 71 75 6f 74 65 73 20 74 68 61  tains quotes tha
32480 74 20 61 72 65 20 6e 6f 74 20 62 61 6c 61 6e 63  t are not balanc
32490 65 64 2c 20 6e 6f 74 68 69 6e 67 20 69 73 20 64  ed, nothing is d
324a0 6f 6e 65 20 61 6e 64 20 74 68 65 20 6f 72 69 67  one and the orig
324b0 69 6e 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 73 74  inal..    /// st
324c0 72 69 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 20  ring value will 
324d0 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
324e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
324f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
32500 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68   name="value">Th
32510 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 74  e string value t
32520 6f 20 70 72 6f 63 65 73 73 2e 3c 2f 70 61 72 61  o process.</para
32530 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
32540 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
32550 68 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c  he string value,
32560 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 6d   modified to rem
32570 6f 76 65 20 6f 6e 65 20 73 65 74 20 6f 66 20 73  ove one set of s
32580 75 72 72 6f 75 6e 64 69 6e 67 20 73 69 6e 67 6c  urrounding singl
32590 65 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20  e -OR-..    /// 
325a0 64 6f 75 62 6c 65 20 71 75 6f 74 65 73 2c 20 69  double quotes, i
325b0 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 0d 0a 20  f applicable... 
325c0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
325d0 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
325e0 74 61 74 69 63 20 73 74 72 69 6e 67 20 55 6e 77  tatic string Unw
325f0 72 61 70 53 74 72 69 6e 67 28 73 74 72 69 6e 67  rapString(string
32600 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a   value)..    {..
32610 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69          if (Stri
32620 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
32630 28 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  (value))..      
32640 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32650 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
32660 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 73 74   // NOTE: The st
32670 72 69 6e 67 20 69 73 20 6e 75 6c 6c 20 6f 72 20  ring is null or 
32680 65 6d 70 74 79 2c 20 72 65 74 75 72 6e 20 69 74  empty, return it
32690 20 76 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20 20   verbatim...    
326a0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
326b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
326c0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alue;..        }
326d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
326e0 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c  length = value.L
326f0 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  ength;....      
32700 20 20 69 66 20 28 28 76 61 6c 75 65 5b 30 5d 20    if ((value[0] 
32710 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  == SQLiteConvert
32720 2e 51 75 6f 74 65 43 68 61 72 29 20 26 26 0d 0a  .QuoteChar) &&..
32730 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c              (val
32740 75 65 5b 6c 65 6e 67 74 68 20 2d 20 31 5d 20 3d  ue[length - 1] =
32750 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  = SQLiteConvert.
32760 51 75 6f 74 65 43 68 61 72 29 29 0d 0a 20 20 20  QuoteChar))..   
32770 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32780 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
32790 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 6d      // NOTE: Rem
327a0 6f 76 65 20 74 68 65 20 66 69 72 73 74 20 61 6e  ove the first an
327b0 64 20 6c 61 73 74 20 63 68 61 72 61 63 74 65 72  d last character
327c0 2c 20 77 68 69 63 68 20 61 72 65 0d 0a 20 20 20  , which are..   
327d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
327e0 20 20 62 6f 74 68 20 64 6f 75 62 6c 65 20 71 75    both double qu
327f0 6f 74 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  otes...         
32800 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
32810 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
32820 53 75 62 73 74 72 69 6e 67 28 31 2c 20 6c 65 6e  Substring(1, len
32830 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 20 20 20  gth - 2);..     
32840 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32850 69 66 20 28 28 76 61 6c 75 65 5b 30 5d 20 3d 3d  if ((value[0] ==
32860 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 41   SQLiteConvert.A
32870 6c 74 51 75 6f 74 65 43 68 61 72 29 20 26 26 0d  ltQuoteChar) &&.
32880 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61  .            (va
32890 6c 75 65 5b 6c 65 6e 67 74 68 20 2d 20 31 5d 20  lue[length - 1] 
328a0 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  == SQLiteConvert
328b0 2e 41 6c 74 51 75 6f 74 65 43 68 61 72 29 29 0d  .AltQuoteChar)).
328c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
328d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
328e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
328f0 20 52 65 6d 6f 76 65 20 74 68 65 20 66 69 72 73   Remove the firs
32900 74 20 61 6e 64 20 6c 61 73 74 20 63 68 61 72 61  t and last chara
32910 63 74 65 72 2c 20 77 68 69 63 68 20 61 72 65 0d  cter, which are.
32920 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
32930 20 20 20 20 20 20 62 6f 74 68 20 73 69 6e 67 6c        both singl
32940 65 20 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20 20  e quotes...     
32950 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
32960 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
32970 6c 75 65 2e 53 75 62 73 74 72 69 6e 67 28 31 2c  lue.Substring(1,
32980 20 6c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 20   length - 2);.. 
32990 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
329a0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
329b0 2f 2f 20 4e 4f 54 45 3a 20 4e 6f 20 6d 61 74 63  // NOTE: No matc
329c0 68 2c 20 72 65 74 75 72 6e 20 74 68 65 20 69 6e  h, return the in
329d0 70 75 74 20 73 74 72 69 6e 67 20 76 65 72 62 61  put string verba
329e0 74 69 6d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tim...        //
329f0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
32a00 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a   value;..    }..
32a10 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
32a20 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
32a30 65 72 6d 69 6e 65 73 20 74 68 65 20 64 69 72 65  ermines the dire
32a40 63 74 6f 72 79 20 74 6f 20 62 65 20 75 73 65 64  ctory to be used
32a50 20 77 68 65 6e 20 64 65 61 6c 69 6e 67 20 77 69   when dealing wi
32a60 74 68 20 74 68 65 20 22 7c 44 61 74 61 44 69 72  th the "|DataDir
32a70 65 63 74 6f 72 79 7c 22 0d 0a 20 20 20 20 2f 2f  ectory|"..    //
32a80 2f 20 6d 61 63 72 6f 20 69 6e 20 61 20 64 61 74  / macro in a dat
32a90 61 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 2e  abase file name.
32aa0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
32ab0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
32ac0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
32ad0 20 54 68 65 20 64 69 72 65 63 74 6f 72 79 20 74   The directory t
32ae0 6f 20 75 73 65 20 69 6e 20 70 6c 61 63 65 20 6f  o use in place o
32af0 66 20 74 68 65 20 22 7c 44 61 74 61 44 69 72 65  f the "|DataDire
32b00 63 74 6f 72 79 7c 22 20 6d 61 63 72 6f 20 2d 4f  ctory|" macro -O
32b10 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20  R- null if it.. 
32b20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65     /// cannot be
32b30 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20   determined...  
32b40 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
32b50 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
32b60 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
32b70 61 74 61 44 69 72 65 63 74 6f 72 79 28 29 0d 0a  ataDirectory()..
32b80 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
32b90 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
32ba0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 73 74  WORK..        st
32bb0 72 69 6e 67 20 72 65 73 75 6c 74 20 3d 20 50 61  ring result = Pa
32bc0 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
32bd0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
32be0 20 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 43 61    Assembly.GetCa
32bf0 6c 6c 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 2e  llingAssembly().
32c00 47 65 74 4e 61 6d 65 28 29 2e 43 6f 64 65 42 61  GetName().CodeBa
32c10 73 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  se);..#else..   
32c20 20 20 20 20 20 73 74 72 69 6e 67 20 72 65 73 75       string resu
32c30 6c 74 20 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43  lt = AppDomain.C
32c40 75 72 72 65 6e 74 44 6f 6d 61 69 6e 2e 47 65 74  urrentDomain.Get
32c50 44 61 74 61 28 0d 0a 20 20 20 20 20 20 20 20 20  Data(..         
32c60 20 20 20 22 44 61 74 61 44 69 72 65 63 74 6f 72     "DataDirector
32c70 79 22 29 20 61 73 20 73 74 72 69 6e 67 3b 0d 0a  y") as string;..
32c80 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 53 74  ..        if (St
32c90 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
32ca0 74 79 28 72 65 73 75 6c 74 29 29 0d 0a 20 20 20  ty(result))..   
32cb0 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
32cc0 3d 20 41 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72  = AppDomain.Curr
32cd0 65 6e 74 44 6f 6d 61 69 6e 2e 42 61 73 65 44 69  entDomain.BaseDi
32ce0 72 65 63 74 6f 72 79 3b 0d 0a 23 65 6e 64 69 66  rectory;..#endif
32cf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
32d00 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
32d10 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
32d20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
32d30 45 78 70 61 6e 64 20 74 68 65 20 66 69 6c 65 6e  Expand the filen
32d40 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 20  ame of the data 
32d50 73 6f 75 72 63 65 2c 20 72 65 73 6f 6c 76 69 6e  source, resolvin
32d60 67 20 74 68 65 20 7c 44 61 74 61 44 69 72 65 63  g the |DataDirec
32d70 74 6f 72 79 7c 0d 0a 20 20 20 20 2f 2f 2f 20 6d  tory|..    /// m
32d80 61 63 72 6f 20 61 73 20 61 70 70 72 6f 70 72 69  acro as appropri
32d90 61 74 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ate...    /// </
32da0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
32db0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
32dc0 6f 75 72 63 65 46 69 6c 65 22 3e 54 68 65 20 64  ourceFile">The d
32dd0 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65  atabase filename
32de0 20 74 6f 20 65 78 70 61 6e 64 3c 2f 70 61 72 61   to expand</para
32df0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
32e00 61 6d 20 6e 61 6d 65 3d 22 74 6f 46 75 6c 6c 50  am name="toFullP
32e10 61 74 68 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  ath">..    /// N
32e20 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 72  on-zero if the r
32e30 65 74 75 72 6e 65 64 20 66 69 6c 65 20 6e 61 6d  eturned file nam
32e40 65 20 73 68 6f 75 6c 64 20 62 65 20 63 6f 6e 76  e should be conv
32e50 65 72 74 65 64 20 74 6f 20 61 20 66 75 6c 6c 20  erted to a full 
32e60 70 61 74 68 0d 0a 20 20 20 20 2f 2f 2f 20 28 65  path..    /// (e
32e70 78 63 65 70 74 20 77 68 65 6e 20 75 73 69 6e 67  xcept when using
32e80 20 74 68 65 20 2e 4e 45 54 20 43 6f 6d 70 61 63   the .NET Compac
32e90 74 20 46 72 61 6d 65 77 6f 72 6b 29 2e 0d 0a 20  t Framework)... 
32ea0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
32eb0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
32ec0 73 3e 54 68 65 20 65 78 70 61 6e 64 65 64 20 70  s>The expanded p
32ed0 61 74 68 20 61 6e 64 20 66 69 6c 65 6e 61 6d 65  ath and filename
32ee0 20 6f 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65   of the filename
32ef0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
32f00 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
32f10 74 72 69 6e 67 20 45 78 70 61 6e 64 46 69 6c 65  tring ExpandFile
32f20 4e 61 6d 65 28 73 74 72 69 6e 67 20 73 6f 75 72  Name(string sour
32f30 63 65 46 69 6c 65 2c 20 62 6f 6f 6c 20 74 6f 46  ceFile, bool toF
32f40 75 6c 6c 50 61 74 68 29 0d 0a 20 20 20 20 7b 0d  ullPath)..    {.
32f50 0a 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72  .        if (Str
32f60 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
32f70 79 28 73 6f 75 72 63 65 46 69 6c 65 29 29 20 72  y(sourceFile)) r
32f80 65 74 75 72 6e 20 73 6f 75 72 63 65 46 69 6c 65  eturn sourceFile
32f90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
32fa0 28 73 6f 75 72 63 65 46 69 6c 65 2e 53 74 61 72  (sourceFile.Star
32fb0 74 73 57 69 74 68 28 5f 64 61 74 61 44 69 72 65  tsWith(_dataDire
32fc0 63 74 6f 72 79 2c 20 53 74 72 69 6e 67 43 6f 6d  ctory, StringCom
32fd0 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
32fe0 67 6e 6f 72 65 43 61 73 65 29 29 0d 0a 20 20 20  gnoreCase))..   
32ff0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
33000 20 20 20 20 73 74 72 69 6e 67 20 64 61 74 61 44      string dataD
33010 69 72 65 63 74 6f 72 79 20 3d 20 47 65 74 44 61  irectory = GetDa
33020 74 61 44 69 72 65 63 74 6f 72 79 28 29 3b 0d 0a  taDirectory();..
33030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
33040 20 28 73 6f 75 72 63 65 46 69 6c 65 2e 4c 65 6e   (sourceFile.Len
33050 67 74 68 20 3e 20 5f 64 61 74 61 44 69 72 65 63  gth > _dataDirec
33060 74 6f 72 79 2e 4c 65 6e 67 74 68 29 0d 0a 20 20  tory.Length)..  
33070 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33080 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
33090 28 73 6f 75 72 63 65 46 69 6c 65 5b 5f 64 61 74  (sourceFile[_dat
330a0 61 44 69 72 65 63 74 6f 72 79 2e 4c 65 6e 67 74  aDirectory.Lengt
330b0 68 5d 20 3d 3d 20 50 61 74 68 2e 44 69 72 65 63  h] == Path.Direc
330c0 74 6f 72 79 53 65 70 61 72 61 74 6f 72 43 68 61  torySeparatorCha
330d0 72 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  r ||..          
330e0 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65            source
330f0 46 69 6c 65 5b 5f 64 61 74 61 44 69 72 65 63 74  File[_dataDirect
33100 6f 72 79 2e 4c 65 6e 67 74 68 5d 20 3d 3d 20 50  ory.Length] == P
33110 61 74 68 2e 41 6c 74 44 69 72 65 63 74 6f 72 79  ath.AltDirectory
33120 53 65 70 61 72 61 74 6f 72 43 68 61 72 29 0d 0a  SeparatorChar)..
33130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33140 20 20 20 20 73 6f 75 72 63 65 46 69 6c 65 20 3d      sourceFile =
33150 20 73 6f 75 72 63 65 46 69 6c 65 2e 52 65 6d 6f   sourceFile.Remo
33160 76 65 28 5f 64 61 74 61 44 69 72 65 63 74 6f 72  ve(_dataDirector
33170 79 2e 4c 65 6e 67 74 68 2c 20 31 29 3b 0d 0a 20  y.Length, 1);.. 
33180 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33190 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65            source
331a0 46 69 6c 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62  File = Path.Comb
331b0 69 6e 65 28 64 61 74 61 44 69 72 65 63 74 6f 72  ine(dataDirector
331c0 79 2c 20 73 6f 75 72 63 65 46 69 6c 65 2e 53 75  y, sourceFile.Su
331d0 62 73 74 72 69 6e 67 28 5f 64 61 74 61 44 69 72  bstring(_dataDir
331e0 65 63 74 6f 72 79 2e 4c 65 6e 67 74 68 29 29 3b  ectory.Length));
331f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 23  ..        }....#
33200 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
33210 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
33220 20 20 20 20 20 20 20 69 66 20 28 74 6f 46 75 6c         if (toFul
33230 6c 50 61 74 68 29 0d 0a 20 20 20 20 20 20 20 20  lPath)..        
33240 20 20 20 20 73 6f 75 72 63 65 46 69 6c 65 20 3d      sourceFile =
33250 20 50 61 74 68 2e 47 65 74 46 75 6c 6c 50 61 74   Path.GetFullPat
33260 68 28 73 6f 75 72 63 65 46 69 6c 65 29 3b 0d 0a  h(sourceFile);..
33270 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
33280 20 20 72 65 74 75 72 6e 20 73 6f 75 72 63 65 46    return sourceF
33290 69 6c 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ile;..    }.... 
332a0 20 20 20 2f 2f 2f 3c 6f 76 65 72 6c 6f 61 64 73     ///<overloads
332b0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  >..    /// The f
332c0 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64  ollowing command
332d0 73 20 61 72 65 20 75 73 65 64 20 74 6f 20 65 78  s are used to ex
332e0 74 72 61 63 74 20 73 63 68 65 6d 61 20 69 6e 66  tract schema inf
332f0 6f 72 6d 61 74 69 6f 6e 20 6f 75 74 20 6f 66 20  ormation out of 
33300 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 56  the database.  V
33310 61 6c 69 64 20 73 63 68 65 6d 61 20 74 79 70 65  alid schema type
33320 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20  s are:..    /// 
33330 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c  <list type="bull
33340 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  et">..    /// <i
33350 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64  tem>..    /// <d
33360 65 73 63 72 69 70 74 69 6f 6e 3e 4d 65 74 61 44  escription>MetaD
33370 61 74 61 43 6f 6c 6c 65 63 74 69 6f 6e 73 3c 2f  ataCollections</
33380 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
33390 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20    /// </item>.. 
333a0 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20     /// <item>.. 
333b0 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74     /// <descript
333c0 69 6f 6e 3e 44 61 74 61 53 6f 75 72 63 65 49 6e  ion>DataSourceIn
333d0 66 6f 72 6d 61 74 69 6f 6e 3c 2f 64 65 73 63 72  formation</descr
333e0 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f  iption>..    ///
333f0 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f   </item>..    //
33400 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  / <item>..    //
33410 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 43  / <description>C
33420 61 74 61 6c 6f 67 73 3c 2f 64 65 73 63 72 69 70  atalogs</descrip
33430 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion>..    /// <
33440 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
33450 3c 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  <item>..    /// 
33460 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 43 6f 6c  <description>Col
33470 75 6d 6e 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  umns</descriptio
33480 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74  n>..    /// </it
33490 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
334a0 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65  em>..    /// <de
334b0 73 63 72 69 70 74 69 6f 6e 3e 46 6f 72 65 69 67  scription>Foreig
334c0 6e 4b 65 79 73 3c 2f 64 65 73 63 72 69 70 74 69  nKeys</descripti
334d0 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69  on>..    /// </i
334e0 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
334f0 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64  tem>..    /// <d
33500 65 73 63 72 69 70 74 69 6f 6e 3e 49 6e 64 65 78  escription>Index
33510 65 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  es</description>
33520 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d  ..    /// </item
33530 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
33540 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63  >..    /// <desc
33550 72 69 70 74 69 6f 6e 3e 49 6e 64 65 78 43 6f 6c  ription>IndexCol
33560 75 6d 6e 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  umns</descriptio
33570 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74  n>..    /// </it
33580 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
33590 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65  em>..    /// <de
335a0 73 63 72 69 70 74 69 6f 6e 3e 54 61 62 6c 65 73  scription>Tables
335b0 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a  </description>..
335c0 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d      /// </item>.
335d0 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d  .    /// <item>.
335e0 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69  .    /// <descri
335f0 70 74 69 6f 6e 3e 56 69 65 77 73 3c 2f 64 65 73  ption>Views</des
33600 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f  cription>..    /
33610 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  // </item>..    
33620 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 20 20  /// <item>..    
33630 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
33640 3e 56 69 65 77 43 6f 6c 75 6d 6e 73 3c 2f 64 65  >ViewColumns</de
33650 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20  scription>..    
33660 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  /// </item>..   
33670 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20   /// </list>..  
33680 20 20 2f 2f 2f 20 3c 2f 6f 76 65 72 6c 6f 61 64    /// </overload
33690 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  s>..    /// <sum
336a0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
336b0 65 74 75 72 6e 73 20 74 68 65 20 4d 65 74 61 44  eturns the MetaD
336c0 61 74 61 43 6f 6c 6c 65 63 74 69 6f 6e 73 20 73  ataCollections s
336d0 63 68 65 6d 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c  chema..    /// <
336e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
336f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 44 61  // <returns>A Da
33700 74 61 54 61 62 6c 65 20 6f 66 20 74 68 65 20 4d  taTable of the M
33710 65 74 61 44 61 74 61 43 6f 6c 6c 65 63 74 69 6f  etaDataCollectio
33720 6e 73 20 73 63 68 65 6d 61 3c 2f 72 65 74 75 72  ns schema</retur
33730 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
33740 6f 76 65 72 72 69 64 65 20 44 61 74 61 54 61 62  override DataTab
33750 6c 65 20 47 65 74 53 63 68 65 6d 61 28 29 0d 0a  le GetSchema()..
33760 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65      {..      Che
33770 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
33780 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 53       return GetS
33790 63 68 65 6d 61 28 22 4d 65 74 61 44 61 74 61 43  chema("MetaDataC
337a0 6f 6c 6c 65 63 74 69 6f 6e 73 22 2c 20 6e 75 6c  ollections", nul
337b0 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  l);..    }....  
337c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
337d0 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
337e0 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61 74   schema informat
337f0 69 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69  ion of the speci
33800 66 69 65 64 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d  fied collection.
33810 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
33820 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
33830 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6c 6c 65 63  ram name="collec
33840 74 69 6f 6e 4e 61 6d 65 22 3e 54 68 65 20 73 63  tionName">The sc
33850 68 65 6d 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20  hema collection 
33860 74 6f 20 72 65 74 72 69 65 76 65 3c 2f 70 61 72  to retrieve</par
33870 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
33880 74 75 72 6e 73 3e 41 20 44 61 74 61 54 61 62 6c  turns>A DataTabl
33890 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
338a0 65 64 20 63 6f 6c 6c 65 63 74 69 6f 6e 3c 2f 72  ed collection</r
338b0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
338c0 6c 69 63 20 6f 76 65 72 72 69 64 65 20 44 61 74  lic override Dat
338d0 61 54 61 62 6c 65 20 47 65 74 53 63 68 65 6d 61  aTable GetSchema
338e0 28 73 74 72 69 6e 67 20 63 6f 6c 6c 65 63 74 69  (string collecti
338f0 6f 6e 4e 61 6d 65 29 0d 0a 20 20 20 20 7b 0d 0a  onName)..    {..
33900 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
33910 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 72 65  sed();..      re
33920 74 75 72 6e 20 47 65 74 53 63 68 65 6d 61 28 63  turn GetSchema(c
33930 6f 6c 6c 65 63 74 69 6f 6e 4e 61 6d 65 2c 20 6e  ollectionName, n
33940 65 77 20 73 74 72 69 6e 67 5b 30 5d 29 3b 0d 0a  ew string[0]);..
33950 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
33960 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
33970 2f 2f 2f 20 52 65 74 72 69 65 76 65 73 20 73 63  /// Retrieves sc
33980 68 65 6d 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  hema information
33990 20 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69   using the speci
339a0 66 69 65 64 20 63 6f 6e 73 74 72 61 69 6e 74 28  fied constraint(
339b0 73 29 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  s) for the speci
339c0 66 69 65 64 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d  fied collection.
339d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
339e0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
339f0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6c 6c 65 63  ram name="collec
33a00 74 69 6f 6e 4e 61 6d 65 22 3e 54 68 65 20 63 6f  tionName">The co
33a10 6c 6c 65 63 74 69 6f 6e 20 74 6f 20 72 65 74 72  llection to retr
33a20 69 65 76 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ieve.</param>.. 
33a30 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
33a40 6d 65 3d 22 72 65 73 74 72 69 63 74 69 6f 6e 56  me="restrictionV
33a50 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f  alues">..    ///
33a60 20 54 68 65 20 72 65 73 74 72 69 63 74 69 6f 6e   The restriction
33a70 73 20 74 6f 20 69 6d 70 6f 73 65 2e 20 20 54 79  s to impose.  Ty
33a80 70 69 63 61 6c 6c 79 2c 20 74 68 69 73 20 6d 61  pically, this ma
33a90 79 20 69 6e 63 6c 75 64 65 3a 0d 0a 20 20 20 20  y include:..    
33aa0 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22  /// <list type="
33ab0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  table">..    ///
33ac0 20 3c 6c 69 73 74 68 65 61 64 65 72 3e 0d 0a 20   <listheader>.. 
33ad0 20 20 20 2f 2f 2f 20 3c 74 65 72 6d 3e 72 65 73     /// <term>res
33ae0 74 72 69 63 74 69 6f 6e 56 61 6c 75 65 73 20 65  trictionValues e
33af0 6c 65 6d 65 6e 74 20 69 6e 64 65 78 3c 2f 74 65  lement index</te
33b00 72 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 74 65  rm>..    /// <te
33b10 72 6d 3e 75 73 61 67 65 3c 2f 74 65 72 6d 3e 0d  rm>usage</term>.
33b20 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 68  .    /// </listh
33b30 65 61 64 65 72 3e 0d 0a 20 20 20 20 2f 2f 2f 20  eader>..    /// 
33b40 3c 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  <item>..    /// 
33b50 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 30 3c 2f  <description>0</
33b60 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20  description>..  
33b70 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69    /// <descripti
33b80 6f 6e 3e 54 68 65 20 64 61 74 61 62 61 73 65 20  on>The database 
33b90 28 6f 72 20 63 61 74 61 6c 6f 67 29 20 6e 61 6d  (or catalog) nam
33ba0 65 2c 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  e, if applicable
33bb0 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  .</description>.
33bc0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e  .    /// </item>
33bd0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
33be0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72  ..    /// <descr
33bf0 69 70 74 69 6f 6e 3e 31 3c 2f 64 65 73 63 72 69  iption>1</descri
33c00 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ption>..    /// 
33c10 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 68 65  <description>The
33c20 20 73 63 68 65 6d 61 20 6e 61 6d 65 2e 20 20 54   schema name.  T
33c30 68 69 73 20 69 73 20 6e 6f 74 20 75 73 65 64 20  his is not used 
33c40 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72  by this provider
33c50 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d  .</description>.
33c60 0a 20 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e  .    /// </item>
33c70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
33c80 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72  ..    /// <descr
33c90 69 70 74 69 6f 6e 3e 32 3c 2f 64 65 73 63 72 69  iption>2</descri
33ca0 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ption>..    /// 
33cb0 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 68 65  <description>The
33cc0 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 69 66 20   table name, if 
33cd0 61 70 70 6c 69 63 61 62 6c 65 2e 3c 2f 64 65 73  applicable.</des
33ce0 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f  cription>..    /
33cf0 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  // </item>..    
33d00 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a 20 20 20 20  /// <item>..    
33d10 2f 2f 2f 20 3c 64 65 73 63 72 69 70 74 69 6f 6e  /// <description
33d20 3e 33 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  >3</description>
33d30 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72  ..    /// <descr
33d40 69 70 74 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f  iption>..    ///
33d50 20 44 65 70 65 6e 64 73 20 6f 6e 20 3c 70 61 72   Depends on <par
33d60 61 6d 72 65 66 20 6e 61 6d 65 3d 22 63 6f 6c 6c  amref name="coll
33d70 65 63 74 69 6f 6e 4e 61 6d 65 22 20 2f 3e 2e 0d  ectionName" />..
33d80 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 22 49  .    /// When "I
33d90 6e 64 65 78 43 6f 6c 75 6d 6e 73 22 2c 20 69 74  ndexColumns", it
33da0 20 69 73 20 74 68 65 20 69 6e 64 65 78 20 6e 61   is the index na
33db0 6d 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 69  me; otherwise, i
33dc0 74 20 69 73 20 74 68 65 20 63 6f 6c 75 6d 6e 20  t is the column 
33dd0 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  name...    /// <
33de0 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20  /description>.. 
33df0 20 20 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a     /// </item>..
33e00 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 0d 0a      /// <item>..
33e10 20 20 20 20 2f 2f 2f 20 3c 64 65 73 63 72 69 70      /// <descrip
33e20 74 69 6f 6e 3e 34 3c 2f 64 65 73 63 72 69 70 74  tion>4</descript
33e30 69 6f 6e 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 64  ion>..    /// <d
33e40 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20  escription>..   
33e50 20 2f 2f 2f 20 44 65 70 65 6e 64 73 20 6f 6e 20   /// Depends on 
33e60 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
33e70 63 6f 6c 6c 65 63 74 69 6f 6e 4e 61 6d 65 22 20  collectionName" 
33e80 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65  />...    /// Whe
33e90 6e 20 22 49 6e 64 65 78 43 6f 6c 75 6d 6e 73 22  n "IndexColumns"
33ea0 2c 20 69 74 20 69 73 20 74 68 65 20 63 6f 6c 75  , it is the colu
33eb0 6d 6e 20 6e 61 6d 65 3b 20 6f 74 68 65 72 77 69  mn name; otherwi
33ec0 73 65 2c 20 69 74 20 69 73 20 6e 6f 74 20 75 73  se, it is not us
33ed0 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 64  ed...    /// </d
33ee0 65 73 63 72 69 70 74 69 6f 6e 3e 0d 0a 20 20 20  escription>..   
33ef0 20 2f 2f 2f 20 3c 2f 69 74 65 6d 3e 0d 0a 20 20   /// </item>..  
33f00 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20    /// </list>.. 
33f10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
33f20 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
33f30 73 3e 41 20 44 61 74 61 54 61 62 6c 65 20 6f 66  s>A DataTable of
33f40 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
33f50 6f 6c 6c 65 63 74 69 6f 6e 3c 2f 72 65 74 75 72  ollection</retur
33f60 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
33f70 6f 76 65 72 72 69 64 65 20 44 61 74 61 54 61 62  override DataTab
33f80 6c 65 20 47 65 74 53 63 68 65 6d 61 28 73 74 72  le GetSchema(str
33f90 69 6e 67 20 63 6f 6c 6c 65 63 74 69 6f 6e 4e 61  ing collectionNa
33fa0 6d 65 2c 20 73 74 72 69 6e 67 5b 5d 20 72 65 73  me, string[] res
33fb0 74 72 69 63 74 69 6f 6e 56 61 6c 75 65 73 29 0d  trictionValues).
33fc0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68  .    {..      Ch
33fd0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
33fe0 0d 0a 20 20 20 20 20 20 69 66 20 28 5f 63 6f 6e  ..      if (_con
33ff0 6e 65 63 74 69 6f 6e 53 74 61 74 65 20 21 3d 20  nectionState != 
34000 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 61 74 65 2e  ConnectionState.
34010 4f 70 65 6e 29 0d 0a 20 20 20 20 20 20 20 20 74  Open)..        t
34020 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
34030 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
34040 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 73  on();....      s
34050 74 72 69 6e 67 5b 5d 20 70 61 72 6d 73 20 3d 20  tring[] parms = 
34060 6e 65 77 20 73 74 72 69 6e 67 5b 35 5d 3b 0d 0a  new string[5];..
34070 0d 0a 20 20 20 20 20 20 69 66 20 28 72 65 73 74  ..      if (rest
34080 72 69 63 74 69 6f 6e 56 61 6c 75 65 73 20 3d 3d  rictionValues ==
34090 20 6e 75 6c 6c 29 20 72 65 73 74 72 69 63 74 69   null) restricti
340a0 6f 6e 56 61 6c 75 65 73 20 3d 20 6e 65 77 20 73  onValues = new s
340b0 74 72 69 6e 67 5b 30 5d 3b 0d 0a 20 20 20 20 20  tring[0];..     
340c0 20 72 65 73 74 72 69 63 74 69 6f 6e 56 61 6c 75   restrictionValu
340d0 65 73 2e 43 6f 70 79 54 6f 28 70 61 72 6d 73 2c  es.CopyTo(parms,
340e0 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 73 77   0);....      sw
340f0 69 74 63 68 20 28 63 6f 6c 6c 65 63 74 69 6f 6e  itch (collection
34100 4e 61 6d 65 2e 54 6f 55 70 70 65 72 28 43 75 6c  Name.ToUpper(Cul
34110 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
34120 6e 74 43 75 6c 74 75 72 65 29 29 0d 0a 20 20 20  ntCulture))..   
34130 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61     {..        ca
34140 73 65 20 22 4d 45 54 41 44 41 54 41 43 4f 4c 4c  se "METADATACOLL
34150 45 43 54 49 4f 4e 53 22 3a 0d 0a 20 20 20 20 20  ECTIONS":..     
34160 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68 65       return Sche
34170 6d 61 5f 4d 65 74 61 44 61 74 61 43 6f 6c 6c 65  ma_MetaDataColle
34180 63 74 69 6f 6e 73 28 29 3b 0d 0a 20 20 20 20 20  ctions();..     
34190 20 20 20 63 61 73 65 20 22 44 41 54 41 53 4f 55     case "DATASOU
341a0 52 43 45 49 4e 46 4f 52 4d 41 54 49 4f 4e 22 3a  RCEINFORMATION":
341b0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
341c0 72 6e 20 53 63 68 65 6d 61 5f 44 61 74 61 53 6f  rn Schema_DataSo
341d0 75 72 63 65 49 6e 66 6f 72 6d 61 74 69 6f 6e 28  urceInformation(
341e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65  );..        case
341f0 20 22 44 41 54 41 54 59 50 45 53 22 3a 0d 0a 20   "DATATYPES":.. 
34200 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34210 53 63 68 65 6d 61 5f 44 61 74 61 54 79 70 65 73  Schema_DataTypes
34220 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73  ();..        cas
34230 65 20 22 43 4f 4c 55 4d 4e 53 22 3a 0d 0a 20 20  e "COLUMNS":..  
34240 20 20 20 20 20 20 63 61 73 65 20 22 54 41 42 4c        case "TABL
34250 45 43 4f 4c 55 4d 4e 53 22 3a 0d 0a 20 20 20 20  ECOLUMNS":..    
34260 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68        return Sch
34270 65 6d 61 5f 43 6f 6c 75 6d 6e 73 28 70 61 72 6d  ema_Columns(parm
34280 73 5b 30 5d 2c 20 70 61 72 6d 73 5b 32 5d 2c 20  s[0], parms[2], 
34290 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a 20 20 20 20  parms[3]);..    
342a0 20 20 20 20 63 61 73 65 20 22 49 4e 44 45 58 45      case "INDEXE
342b0 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  S":..          r
342c0 65 74 75 72 6e 20 53 63 68 65 6d 61 5f 49 6e 64  eturn Schema_Ind
342d0 65 78 65 73 28 70 61 72 6d 73 5b 30 5d 2c 20 70  exes(parms[0], p
342e0 61 72 6d 73 5b 32 5d 2c 20 70 61 72 6d 73 5b 33  arms[2], parms[3
342f0 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73  ]);..        cas
34300 65 20 22 54 52 49 47 47 45 52 53 22 3a 0d 0a 20  e "TRIGGERS":.. 
34310 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
34320 53 63 68 65 6d 61 5f 54 72 69 67 67 65 72 73 28  Schema_Triggers(
34330 70 61 72 6d 73 5b 30 5d 2c 20 70 61 72 6d 73 5b  parms[0], parms[
34340 32 5d 2c 20 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a  2], parms[3]);..
34350 20 20 20 20 20 20 20 20 63 61 73 65 20 22 49 4e          case "IN
34360 44 45 58 43 4f 4c 55 4d 4e 53 22 3a 0d 0a 20 20  DEXCOLUMNS":..  
34370 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
34380 63 68 65 6d 61 5f 49 6e 64 65 78 43 6f 6c 75 6d  chema_IndexColum
34390 6e 73 28 70 61 72 6d 73 5b 30 5d 2c 20 70 61 72  ns(parms[0], par
343a0 6d 73 5b 32 5d 2c 20 70 61 72 6d 73 5b 33 5d 2c  ms[2], parms[3],
343b0 20 70 61 72 6d 73 5b 34 5d 29 3b 0d 0a 20 20 20   parms[4]);..   
343c0 20 20 20 20 20 63 61 73 65 20 22 54 41 42 4c 45       case "TABLE
343d0 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  S":..          r
343e0 65 74 75 72 6e 20 53 63 68 65 6d 61 5f 54 61 62  eturn Schema_Tab
343f0 6c 65 73 28 70 61 72 6d 73 5b 30 5d 2c 20 70 61  les(parms[0], pa
34400 72 6d 73 5b 32 5d 2c 20 70 61 72 6d 73 5b 33 5d  rms[2], parms[3]
34410 29 3b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65  );..        case
34420 20 22 56 49 45 57 53 22 3a 0d 0a 20 20 20 20 20   "VIEWS":..     
34430 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68 65       return Sche
34440 6d 61 5f 56 69 65 77 73 28 70 61 72 6d 73 5b 30  ma_Views(parms[0
34450 5d 2c 20 70 61 72 6d 73 5b 32 5d 29 3b 0d 0a 20  ], parms[2]);.. 
34460 20 20 20 20 20 20 20 63 61 73 65 20 22 56 49 45         case "VIE
34470 57 43 4f 4c 55 4d 4e 53 22 3a 0d 0a 20 20 20 20  WCOLUMNS":..    
34480 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68        return Sch
34490 65 6d 61 5f 56 69 65 77 43 6f 6c 75 6d 6e 73 28  ema_ViewColumns(
344a0 70 61 72 6d 73 5b 30 5d 2c 20 70 61 72 6d 73 5b  parms[0], parms[
344b0 32 5d 2c 20 70 61 72 6d 73 5b 33 5d 29 3b 0d 0a  2], parms[3]);..
344c0 20 20 20 20 20 20 20 20 63 61 73 65 20 22 46 4f          case "FO
344d0 52 45 49 47 4e 4b 45 59 53 22 3a 0d 0a 20 20 20  REIGNKEYS":..   
344e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 63         return Sc
344f0 68 65 6d 61 5f 46 6f 72 65 69 67 6e 4b 65 79 73  hema_ForeignKeys
34500 28 70 61 72 6d 73 5b 30 5d 2c 20 70 61 72 6d 73  (parms[0], parms
34510 5b 32 5d 2c 20 70 61 72 6d 73 5b 33 5d 29 3b 0d  [2], parms[3]);.
34520 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 43  .        case "C
34530 41 54 41 4c 4f 47 53 22 3a 0d 0a 20 20 20 20 20  ATALOGS":..     
34540 20 20 20 20 20 72 65 74 75 72 6e 20 53 63 68 65       return Sche
34550 6d 61 5f 43 61 74 61 6c 6f 67 73 28 70 61 72 6d  ma_Catalogs(parm
34560 73 5b 30 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20  s[0]);..        
34570 63 61 73 65 20 22 52 45 53 45 52 56 45 44 57 4f  case "RESERVEDWO
34580 52 44 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  RDS":..         
34590 20 72 65 74 75 72 6e 20 53 63 68 65 6d 61 5f 52   return Schema_R
345a0 65 73 65 72 76 65 64 57 6f 72 64 73 28 29 3b 0d  eservedWords();.
345b0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
345c0 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 53 75 70  throw new NotSup
345d0 70 6f 72 74 65 64 45 78 63 65 70 74 69 6f 6e 28  portedException(
345e0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
345f0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
34600 44 61 74 61 54 61 62 6c 65 20 53 63 68 65 6d 61  DataTable Schema
34610 5f 52 65 73 65 72 76 65 64 57 6f 72 64 73 28 29  _ReservedWords()
34620 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44  ..    {..      D
34630 61 74 61 54 61 62 6c 65 20 74 62 6c 20 3d 20 6e  ataTable tbl = n
34640 65 77 20 44 61 74 61 54 61 62 6c 65 28 22 52 65  ew DataTable("Re
34650 73 65 72 76 65 64 57 6f 72 64 73 22 29 3b 0d 0a  servedWords");..
34660 0d 0a 20 20 20 20 20 20 74 62 6c 2e 4c 6f 63 61  ..      tbl.Loca
34670 6c 65 20 3d 20 43 75 6c 74 75 72 65 49 6e 66 6f  le = CultureInfo
34680 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
34690 65 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  e;..      tbl.Co
346a0 6c 75 6d 6e 73 2e 41 64 64 28 22 52 65 73 65 72  lumns.Add("Reser
346b0 76 65 64 57 6f 72 64 22 2c 20 74 79 70 65 6f 66  vedWord", typeof
346c0 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20  (string));..    
346d0 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
346e0 64 28 22 4d 61 78 69 6d 75 6d 56 65 72 73 69 6f  d("MaximumVersio
346f0 6e 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e  n", typeof(strin
34700 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  g));..      tbl.
34710 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 4d 69 6e  Columns.Add("Min
34720 69 6d 75 6d 56 65 72 73 69 6f 6e 22 2c 20 74 79  imumVersion", ty
34730 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a  peof(string));..
34740 0d 0a 20 20 20 20 20 20 74 62 6c 2e 42 65 67 69  ..      tbl.Begi
34750 6e 4c 6f 61 64 44 61 74 61 28 29 3b 0d 0a 20 20  nLoadData();..  
34760 20 20 20 20 44 61 74 61 52 6f 77 20 72 6f 77 3b      DataRow row;
34770 0d 0a 20 20 20 20 20 20 66 6f 72 65 61 63 68 20  ..      foreach 
34780 28 73 74 72 69 6e 67 20 77 6f 72 64 20 69 6e 20  (string word in 
34790 53 52 2e 4b 65 79 77 6f 72 64 73 2e 53 70 6c 69  SR.Keywords.Spli
347a0 74 28 6e 65 77 20 63 68 61 72 5b 5d 20 7b 20 27  t(new char[] { '
347b0 2c 27 20 7d 29 29 0d 0a 20 20 20 20 20 20 7b 0d  ,' }))..      {.
347c0 0a 20 20 20 20 20 20 20 20 72 6f 77 20 3d 20 74  .        row = t
347d0 62 6c 2e 4e 65 77 52 6f 77 28 29 3b 0d 0a 20 20  bl.NewRow();..  
347e0 20 20 20 20 20 20 72 6f 77 5b 30 5d 20 3d 20 77        row[0] = w
347f0 6f 72 64 3b 0d 0a 20 20 20 20 20 20 20 20 74 62  ord;..        tb
34800 6c 2e 52 6f 77 73 2e 41 64 64 28 72 6f 77 29 3b  l.Rows.Add(row);
34810 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
34820 20 20 20 74 62 6c 2e 41 63 63 65 70 74 43 68 61     tbl.AcceptCha
34830 6e 67 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 74  nges();..      t
34840 62 6c 2e 45 6e 64 4c 6f 61 64 44 61 74 61 28 29  bl.EndLoadData()
34850 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
34860 6e 20 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  n tbl;..    }...
34870 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
34880 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c  y>..    /// Buil
34890 64 73 20 61 20 4d 65 74 61 44 61 74 61 43 6f 6c  ds a MetaDataCol
348a0 6c 65 63 74 69 6f 6e 73 20 73 63 68 65 6d 61 20  lections schema 
348b0 64 61 74 61 74 61 62 6c 65 0d 0a 20 20 20 20 2f  datatable..    /
348c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
348d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
348e0 44 61 74 61 54 61 62 6c 65 3c 2f 72 65 74 75 72  DataTable</retur
348f0 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
34900 20 73 74 61 74 69 63 20 44 61 74 61 54 61 62 6c   static DataTabl
34910 65 20 53 63 68 65 6d 61 5f 4d 65 74 61 44 61 74  e Schema_MetaDat
34920 61 43 6f 6c 6c 65 63 74 69 6f 6e 73 28 29 0d 0a  aCollections()..
34930 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 44 61 74      {..      Dat
34940 61 54 61 62 6c 65 20 74 62 6c 20 3d 20 6e 65 77  aTable tbl = new
34950 20 44 61 74 61 54 61 62 6c 65 28 22 4d 65 74 61   DataTable("Meta
34960 44 61 74 61 43 6f 6c 6c 65 63 74 69 6f 6e 73 22  DataCollections"
34970 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 62 6c 2e  );....      tbl.
34980 4c 6f 63 61 6c 65 20 3d 20 43 75 6c 74 75 72 65  Locale = Culture
34990 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
349a0 6c 74 75 72 65 3b 0d 0a 20 20 20 20 20 20 74 62  lture;..      tb
349b0 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
349c0 6f 6c 6c 65 63 74 69 6f 6e 4e 61 6d 65 22 2c 20  ollectionName", 
349d0 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
349e0 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
349f0 6d 6e 73 2e 41 64 64 28 22 4e 75 6d 62 65 72 4f  mns.Add("NumberO
34a00 66 52 65 73 74 72 69 63 74 69 6f 6e 73 22 2c 20  fRestrictions", 
34a10 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20  typeof(int));.. 
34a20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
34a30 2e 41 64 64 28 22 4e 75 6d 62 65 72 4f 66 49 64  .Add("NumberOfId
34a40 65 6e 74 69 66 69 65 72 50 61 72 74 73 22 2c 20  entifierParts", 
34a50 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 0d  typeof(int));...
34a60 0a 20 20 20 20 20 20 74 62 6c 2e 42 65 67 69 6e  .      tbl.Begin
34a70 4c 6f 61 64 44 61 74 61 28 29 3b 0d 0a 0d 0a 20  LoadData();.... 
34a80 20 20 20 20 20 53 74 72 69 6e 67 52 65 61 64 65       StringReade
34a90 72 20 72 65 61 64 65 72 20 3d 20 6e 65 77 20 53  r reader = new S
34aa0 74 72 69 6e 67 52 65 61 64 65 72 28 53 52 2e 4d  tringReader(SR.M
34ab0 65 74 61 44 61 74 61 43 6f 6c 6c 65 63 74 69 6f  etaDataCollectio
34ac0 6e 73 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  ns);..      tbl.
34ad0 52 65 61 64 58 6d 6c 28 72 65 61 64 65 72 29 3b  ReadXml(reader);
34ae0 0d 0a 20 20 20 20 20 20 72 65 61 64 65 72 2e 43  ..      reader.C
34af0 6c 6f 73 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  lose();....     
34b00 20 74 62 6c 2e 41 63 63 65 70 74 43 68 61 6e 67   tbl.AcceptChang
34b10 65 73 28 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  es();..      tbl
34b20 2e 45 6e 64 4c 6f 61 64 44 61 74 61 28 29 3b 0d  .EndLoadData();.
34b30 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
34b40 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  tbl;..    }.... 
34b50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
34b60 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c 64 73  ..    /// Builds
34b70 20 61 20 44 61 74 61 53 6f 75 72 63 65 49 6e 66   a DataSourceInf
34b80 6f 72 6d 61 74 69 6f 6e 20 64 61 74 61 74 61 62  ormation datatab
34b90 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  le..    /// </su
34ba0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
34bb0 3c 72 65 74 75 72 6e 73 3e 44 61 74 61 54 61 62  <returns>DataTab
34bc0 6c 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  le</returns>..  
34bd0 20 20 70 72 69 76 61 74 65 20 44 61 74 61 54 61    private DataTa
34be0 62 6c 65 20 53 63 68 65 6d 61 5f 44 61 74 61 53  ble Schema_DataS
34bf0 6f 75 72 63 65 49 6e 66 6f 72 6d 61 74 69 6f 6e  ourceInformation
34c00 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
34c10 20 44 61 74 61 54 61 62 6c 65 20 74 62 6c 20 3d   DataTable tbl =
34c20 20 6e 65 77 20 44 61 74 61 54 61 62 6c 65 28 22   new DataTable("
34c30 44 61 74 61 53 6f 75 72 63 65 49 6e 66 6f 72 6d  DataSourceInform
34c40 61 74 69 6f 6e 22 29 3b 0d 0a 20 20 20 20 20 20  ation");..      
34c50 44 61 74 61 52 6f 77 20 72 6f 77 3b 0d 0a 0d 0a  DataRow row;....
34c60 20 20 20 20 20 20 74 62 6c 2e 4c 6f 63 61 6c 65        tbl.Locale
34c70 20 3d 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49   = CultureInfo.I
34c80 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3b  nvariantCulture;
34c90 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
34ca0 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61  mns.Add(DbMetaDa
34cb0 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 43 6f  taColumnNames.Co
34cc0 6d 70 6f 73 69 74 65 49 64 65 6e 74 69 66 69 65  mpositeIdentifie
34cd0 72 53 65 70 61 72 61 74 6f 72 50 61 74 74 65 72  rSeparatorPatter
34ce0 6e 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67  n, typeof(string
34cf0 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  ));..      tbl.C
34d00 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74  olumns.Add(DbMet
34d10 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73  aDataColumnNames
34d20 2e 44 61 74 61 53 6f 75 72 63 65 50 72 6f 64 75  .DataSourceProdu
34d30 63 74 4e 61 6d 65 2c 20 74 79 70 65 6f 66 28 73  ctName, typeof(s
34d40 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
34d50 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
34d60 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e  DbMetaDataColumn
34d70 4e 61 6d 65 73 2e 44 61 74 61 53 6f 75 72 63 65  Names.DataSource
34d80 50 72 6f 64 75 63 74 56 65 72 73 69 6f 6e 2c 20  ProductVersion, 
34d90 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
34da0 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
34db0 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61  mns.Add(DbMetaDa
34dc0 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 44 61  taColumnNames.Da
34dd0 74 61 53 6f 75 72 63 65 50 72 6f 64 75 63 74 56  taSourceProductV
34de0 65 72 73 69 6f 6e 4e 6f 72 6d 61 6c 69 7a 65 64  ersionNormalized
34df0 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29  , typeof(string)
34e00 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
34e10 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74 61  lumns.Add(DbMeta
34e20 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e  DataColumnNames.
34e30 47 72 6f 75 70 42 79 42 65 68 61 76 69 6f 72 2c  GroupByBehavior,
34e40 20 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   typeof(int));..
34e50 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
34e60 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74 61  s.Add(DbMetaData
34e70 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 49 64 65 6e  ColumnNames.Iden
34e80 74 69 66 69 65 72 50 61 74 74 65 72 6e 2c 20 74  tifierPattern, t
34e90 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d  ypeof(string));.
34ea0 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
34eb0 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74  ns.Add(DbMetaDat
34ec0 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 49 64 65  aColumnNames.Ide
34ed0 6e 74 69 66 69 65 72 43 61 73 65 2c 20 74 79 70  ntifierCase, typ
34ee0 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20  eof(int));..    
34ef0 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
34f00 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75  d(DbMetaDataColu
34f10 6d 6e 4e 61 6d 65 73 2e 4f 72 64 65 72 42 79 43  mnNames.OrderByC
34f20 6f 6c 75 6d 6e 73 49 6e 53 65 6c 65 63 74 2c 20  olumnsInSelect, 
34f30 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29 3b 0d 0a  typeof(bool));..
34f40 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
34f50 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61 74 61  s.Add(DbMetaData
34f60 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 50 61 72 61  ColumnNames.Para
34f70 6d 65 74 65 72 4d 61 72 6b 65 72 46 6f 72 6d 61  meterMarkerForma
34f80 74 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67  t, typeof(string
34f90 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  ));..      tbl.C
34fa0 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74  olumns.Add(DbMet
34fb0 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73  aDataColumnNames
34fc0 2e 50 61 72 61 6d 65 74 65 72 4d 61 72 6b 65 72  .ParameterMarker
34fd0 50 61 74 74 65 72 6e 2c 20 74 79 70 65 6f 66 28  Pattern, typeof(
34fe0 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20  string));..     
34ff0 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
35000 28 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75 6d  (DbMetaDataColum
35010 6e 4e 61 6d 65 73 2e 50 61 72 61 6d 65 74 65 72  nNames.Parameter
35020 4e 61 6d 65 4d 61 78 4c 65 6e 67 74 68 2c 20 74  NameMaxLength, t
35030 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20  ypeof(int));..  
35040 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
35050 41 64 64 28 44 62 4d 65 74 61 44 61 74 61 43 6f  Add(DbMetaDataCo
35060 6c 75 6d 6e 4e 61 6d 65 73 2e 50 61 72 61 6d 65  lumnNames.Parame
35070 74 65 72 4e 61 6d 65 50 61 74 74 65 72 6e 2c 20  terNamePattern, 
35080 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
35090 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
350a0 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44 61  mns.Add(DbMetaDa
350b0 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 51 75  taColumnNames.Qu
350c0 6f 74 65 64 49 64 65 6e 74 69 66 69 65 72 50 61  otedIdentifierPa
350d0 74 74 65 72 6e 2c 20 74 79 70 65 6f 66 28 73 74  ttern, typeof(st
350e0 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74  ring));..      t
350f0 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 44  bl.Columns.Add(D
35100 62 4d 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e 4e  bMetaDataColumnN
35110 61 6d 65 73 2e 51 75 6f 74 65 64 49 64 65 6e 74  ames.QuotedIdent
35120 69 66 69 65 72 43 61 73 65 2c 20 74 79 70 65 6f  ifierCase, typeo
35130 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20  f(int));..      
35140 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
35150 44 62 4d 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e  DbMetaDataColumn
35160 4e 61 6d 65 73 2e 53 74 61 74 65 6d 65 6e 74 53  Names.StatementS
35170 65 70 61 72 61 74 6f 72 50 61 74 74 65 72 6e 2c  eparatorPattern,
35180 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29   typeof(string))
35190 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
351a0 75 6d 6e 73 2e 41 64 64 28 44 62 4d 65 74 61 44  umns.Add(DbMetaD
351b0 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d 65 73 2e 53  ataColumnNames.S
351c0 74 72 69 6e 67 4c 69 74 65 72 61 6c 50 61 74 74  tringLiteralPatt
351d0 65 72 6e 2c 20 74 79 70 65 6f 66 28 73 74 72 69  ern, typeof(stri
351e0 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  ng));..      tbl
351f0 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 44 62 4d  .Columns.Add(DbM
35200 65 74 61 44 61 74 61 43 6f 6c 75 6d 6e 4e 61 6d  etaDataColumnNam
35210 65 73 2e 53 75 70 70 6f 72 74 65 64 4a 6f 69 6e  es.SupportedJoin
35220 4f 70 65 72 61 74 6f 72 73 2c 20 74 79 70 65 6f  Operators, typeo
35230 66 28 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20  f(int));....    
35240 20 20 74 62 6c 2e 42 65 67 69 6e 4c 6f 61 64 44    tbl.BeginLoadD
35250 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ata();....      
35260 72 6f 77 20 3d 20 74 62 6c 2e 4e 65 77 52 6f 77  row = tbl.NewRow
35270 28 29 3b 0d 0a 20 20 20 20 20 20 72 6f 77 2e 49  ();..      row.I
35280 74 65 6d 41 72 72 61 79 20 3d 20 6e 65 77 20 6f  temArray = new o
35290 62 6a 65 63 74 5b 5d 20 7b 0d 0a 20 20 20 20 20  bject[] {..     
352a0 20 20 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20     null,..      
352b0 20 20 22 53 51 4c 69 74 65 22 2c 0d 0a 20 20 20    "SQLite",..   
352c0 20 20 20 20 20 5f 73 71 6c 2e 56 65 72 73 69 6f       _sql.Versio
352d0 6e 2c 0d 0a 20 20 20 20 20 20 20 20 5f 73 71 6c  n,..        _sql
352e0 2e 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20 20 20  .Version,..     
352f0 20 20 20 33 2c 0d 0a 20 20 20 20 20 20 20 20 40     3,..        @
35300 22 28 5e 5c 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75  "(^\[\p{Lo}\p{Lu
35310 7d 5c 70 7b 4c 6c 7d 5f 40 23 5d 5b 5c 70 7b 4c  }\p{Ll}_@#][\p{L
35320 6f 7d 5c 70 7b 4c 75 7d 5c 70 7b 4c 6c 7d 5c 70  o}\p{Lu}\p{Ll}\p
35330 7b 4e 64 7d 40 24 23 5f 5d 2a 24 29 7c 28 5e 5c  {Nd}@$#_]*$)|(^\
35340 5b 5b 5e 5c 5d 5c 30 5d 7c 5c 5d 5c 5d 2b 5c 5d  [[^\]\0]|\]\]+\]
35350 24 29 7c 28 5e 5c 22 22 5b 5e 5c 22 22 5c 30 5d  $)|(^\""[^\""\0]
35360 7c 5c 22 22 5c 22 22 2b 5c 22 22 24 29 22 2c 0d  |\""\""+\""$)",.
35370 0a 20 20 20 20 20 20 20 20 31 2c 0d 0a 20 20 20  .        1,..   
35380 20 20 20 20 20 66 61 6c 73 65 2c 0d 0a 20 20 20       false,..   
35390 20 20 20 20 20 22 7b 30 7d 22 2c 0d 0a 20 20 20       "{0}",..   
353a0 20 20 20 20 20 40 22 40 5b 5c 70 7b 4c 6f 7d 5c       @"@[\p{Lo}\
353b0 70 7b 4c 75 7d 5c 70 7b 4c 6c 7d 5c 70 7b 4c 6d  p{Lu}\p{Ll}\p{Lm
353c0 7d 5f 40 23 5d 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c  }_@#][\p{Lo}\p{L
353d0 75 7d 5c 70 7b 4c 6c 7d 5c 70 7b 4c 6d 7d 5c 70  u}\p{Ll}\p{Lm}\p
353e0 7b 4e 64 7d 5c 75 66 66 33 66 5f 40 23 5c 24 5d  {Nd}\uff3f_@#\$]
353f0 2a 28 3f 3d 5c 73 2b 7c 24 29 22 2c 0d 0a 20 20  *(?=\s+|$)",..  
35400 20 20 20 20 20 20 32 35 35 2c 0d 0a 20 20 20 20        255,..    
35410 20 20 20 20 40 22 5e 5b 5c 70 7b 4c 6f 7d 5c 70      @"^[\p{Lo}\p
35420 7b 4c 75 7d 5c 70 7b 4c 6c 7d 5c 70 7b 4c 6d 7d  {Lu}\p{Ll}\p{Lm}
35430 5f 40 23 5d 5b 5c 70 7b 4c 6f 7d 5c 70 7b 4c 75  _@#][\p{Lo}\p{Lu
35440 7d 5c 70 7b 4c 6c 7d 5c 70 7b 4c 6d 7d 5c 70 7b  }\p{Ll}\p{Lm}\p{
35450 4e 64 7d 5c 75 66 66 33 66 5f 40 23 5c 24 5d 2a  Nd}\uff3f_@#\$]*
35460 28 3f 3d 5c 73 2b 7c 24 29 22 2c 0d 0a 20 20 20  (?=\s+|$)",..   
35470 20 20 20 20 20 40 22 28 28 5b 5e 5c 5b 5d 7c 5c       @"(([^\[]|\
35480 5d 5c 5d 29 2a 29 22 2c 0d 0a 20 20 20 20 20 20  ]\])*)",..      
35490 20 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 22 3b    1,..        ";
354a0 22 2c 0d 0a 20 20 20 20 20 20 20 20 40 22 27 28  ",..        @"'(
354b0 28 5b 5e 27 5d 7c 27 27 29 2a 29 27 22 2c 0d 0a  ([^']|'')*)'",..
354c0 20 20 20 20 20 20 20 20 31 35 0d 0a 20 20 20 20          15..    
354d0 20 20 7d 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e    };..      tbl.
354e0 52 6f 77 73 2e 41 64 64 28 72 6f 77 29 3b 0d 0a  Rows.Add(row);..
354f0 0d 0a 20 20 20 20 20 20 74 62 6c 2e 41 63 63 65  ..      tbl.Acce
35500 70 74 43 68 61 6e 67 65 73 28 29 3b 0d 0a 20 20  ptChanges();..  
35510 20 20 20 20 74 62 6c 2e 45 6e 64 4c 6f 61 64 44      tbl.EndLoadD
35520 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ata();....      
35530 72 65 74 75 72 6e 20 74 62 6c 3b 0d 0a 20 20 20  return tbl;..   
35540 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
35550 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
35560 20 42 75 69 6c 64 20 61 20 43 6f 6c 75 6d 6e 73   Build a Columns
35570 20 73 63 68 65 6d 61 0d 0a 20 20 20 20 2f 2f 2f   schema..    ///
35580 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
35590 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
355a0 3d 22 73 74 72 43 61 74 61 6c 6f 67 22 3e 54 68  ="strCatalog">Th
355b0 65 20 63 61 74 61 6c 6f 67 20 28 61 74 74 61 63  e catalog (attac
355c0 68 65 64 20 64 61 74 61 62 61 73 65 29 20 74 6f  hed database) to
355d0 20 71 75 65 72 79 2c 20 63 61 6e 20 62 65 20 6e   query, can be n
355e0 75 6c 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ull</param>..   
355f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
35600 3d 22 73 74 72 54 61 62 6c 65 22 3e 54 68 65 20  ="strTable">The 
35610 74 61 62 6c 65 20 74 6f 20 72 65 74 72 69 65 76  table to retriev
35620 65 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61  e schema informa
35630 74 69 6f 6e 20 66 6f 72 2c 20 63 61 6e 20 62 65  tion for, can be
35640 20 6e 75 6c 6c 3c 2f 70 61 72 61 6d 3e 0d 0a 20   null</param>.. 
35650 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
35660 6d 65 3d 22 73 74 72 43 6f 6c 75 6d 6e 22 3e 54  me="strColumn">T
35670 68 65 20 63 6f 6c 75 6d 6e 20 74 6f 20 72 65 74  he column to ret
35680 72 69 65 76 65 20 73 63 68 65 6d 61 20 69 6e 66  rieve schema inf
35690 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 2c 20 63 61  ormation for, ca
356a0 6e 20 62 65 20 6e 75 6c 6c 3c 2f 70 61 72 61 6d  n be null</param
356b0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
356c0 72 6e 73 3e 44 61 74 61 54 61 62 6c 65 3c 2f 72  rns>DataTable</r
356d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
356e0 76 61 74 65 20 44 61 74 61 54 61 62 6c 65 20 53  vate DataTable S
356f0 63 68 65 6d 61 5f 43 6f 6c 75 6d 6e 73 28 73 74  chema_Columns(st
35700 72 69 6e 67 20 73 74 72 43 61 74 61 6c 6f 67 2c  ring strCatalog,
35710 20 73 74 72 69 6e 67 20 73 74 72 54 61 62 6c 65   string strTable
35720 2c 20 73 74 72 69 6e 67 20 73 74 72 43 6f 6c 75  , string strColu
35730 6d 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  mn)..    {..    
35740 20 20 44 61 74 61 54 61 62 6c 65 20 74 62 6c 20    DataTable tbl 
35750 3d 20 6e 65 77 20 44 61 74 61 54 61 62 6c 65 28  = new DataTable(
35760 22 43 6f 6c 75 6d 6e 73 22 29 3b 0d 0a 20 20 20  "Columns");..   
35770 20 20 20 44 61 74 61 52 6f 77 20 72 6f 77 3b 0d     DataRow row;.
35780 0a 0d 0a 20 20 20 20 20 20 74 62 6c 2e 4c 6f 63  ...      tbl.Loc
35790 61 6c 65 20 3d 20 43 75 6c 74 75 72 65 49 6e 66  ale = CultureInf
357a0 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
357b0 72 65 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  re;..      tbl.C
357c0 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c  olumns.Add("TABL
357d0 45 5f 43 41 54 41 4c 4f 47 22 2c 20 74 79 70 65  E_CATALOG", type
357e0 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20  of(string));..  
357f0 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
35800 41 64 64 28 22 54 41 42 4c 45 5f 53 43 48 45 4d  Add("TABLE_SCHEM
35810 41 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e  A", typeof(strin
35820 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  g));..      tbl.
35830 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 54 41 42  Columns.Add("TAB
35840 4c 45 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66  LE_NAME", typeof
35850 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20  (string));..    
35860 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
35870 64 28 22 43 4f 4c 55 4d 4e 5f 4e 41 4d 45 22 2c  d("COLUMN_NAME",
35880 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29   typeof(string))
35890 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
358a0 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 55 4d 4e  umns.Add("COLUMN
358b0 5f 47 55 49 44 22 2c 20 74 79 70 65 6f 66 28 47  _GUID", typeof(G
358c0 75 69 64 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  uid));..      tb
358d0 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
358e0 4f 4c 55 4d 4e 5f 50 52 4f 50 49 44 22 2c 20 74  OLUMN_PROPID", t
358f0 79 70 65 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 20  ypeof(long));.. 
35900 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
35910 2e 41 64 64 28 22 4f 52 44 49 4e 41 4c 5f 50 4f  .Add("ORDINAL_PO
35920 53 49 54 49 4f 4e 22 2c 20 74 79 70 65 6f 66 28  SITION", typeof(
35930 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  int));..      tb
35940 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
35950 4f 4c 55 4d 4e 5f 48 41 53 44 45 46 41 55 4c 54  OLUMN_HASDEFAULT
35960 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29  ", typeof(bool))
35970 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
35980 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 55 4d 4e  umns.Add("COLUMN
35990 5f 44 45 46 41 55 4c 54 22 2c 20 74 79 70 65 6f  _DEFAULT", typeo
359a0 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
359b0 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
359c0 64 64 28 22 43 4f 4c 55 4d 4e 5f 46 4c 41 47 53  dd("COLUMN_FLAGS
359d0 22 2c 20 74 79 70 65 6f 66 28 6c 6f 6e 67 29 29  ", typeof(long))
359e0 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
359f0 75 6d 6e 73 2e 41 64 64 28 22 49 53 5f 4e 55 4c  umns.Add("IS_NUL
35a00 4c 41 42 4c 45 22 2c 20 74 79 70 65 6f 66 28 62  LABLE", typeof(b
35a10 6f 6f 6c 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ool));..      tb
35a20 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 44  l.Columns.Add("D
35a30 41 54 41 5f 54 59 50 45 22 2c 20 74 79 70 65 6f  ATA_TYPE", typeo
35a40 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
35a50 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
35a60 64 64 28 22 54 59 50 45 5f 47 55 49 44 22 2c 20  dd("TYPE_GUID", 
35a70 74 79 70 65 6f 66 28 47 75 69 64 29 29 3b 0d 0a  typeof(Guid));..
35a80 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
35a90 73 2e 41 64 64 28 22 43 48 41 52 41 43 54 45 52  s.Add("CHARACTER
35aa0 5f 4d 41 58 49 4d 55 4d 5f 4c 45 4e 47 54 48 22  _MAXIMUM_LENGTH"
35ab0 2c 20 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d  , typeof(int));.
35ac0 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
35ad0 6e 73 2e 41 64 64 28 22 43 48 41 52 41 43 54 45  ns.Add("CHARACTE
35ae0 52 5f 4f 43 54 45 54 5f 4c 45 4e 47 54 48 22 2c  R_OCTET_LENGTH",
35af0 20 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   typeof(int));..
35b00 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
35b10 73 2e 41 64 64 28 22 4e 55 4d 45 52 49 43 5f 50  s.Add("NUMERIC_P
35b20 52 45 43 49 53 49 4f 4e 22 2c 20 74 79 70 65 6f  RECISION", typeo
35b30 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20  f(int));..      
35b40 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
35b50 22 4e 55 4d 45 52 49 43 5f 53 43 41 4c 45 22 2c  "NUMERIC_SCALE",
35b60 20 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a   typeof(int));..
35b70 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e        tbl.Column
35b80 73 2e 41 64 64 28 22 44 41 54 45 54 49 4d 45 5f  s.Add("DATETIME_
35b90 50 52 45 43 49 53 49 4f 4e 22 2c 20 74 79 70 65  PRECISION", type
35ba0 6f 66 28 6c 6f 6e 67 29 29 3b 0d 0a 20 20 20 20  of(long));..    
35bb0 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64    tbl.Columns.Ad
35bc0 64 28 22 43 48 41 52 41 43 54 45 52 5f 53 45 54  d("CHARACTER_SET
35bd0 5f 43 41 54 41 4c 4f 47 22 2c 20 74 79 70 65 6f  _CATALOG", typeo
35be0 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
35bf0 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
35c00 64 64 28 22 43 48 41 52 41 43 54 45 52 5f 53 45  dd("CHARACTER_SE
35c10 54 5f 53 43 48 45 4d 41 22 2c 20 74 79 70 65 6f  T_SCHEMA", typeo
35c20 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20  f(string));..   
35c30 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
35c40 64 64 28 22 43 48 41 52 41 43 54 45 52 5f 53 45  dd("CHARACTER_SE
35c50 54 5f 4e 41 4d 45 22 2c 20 74 79 70 65 6f 66 28  T_NAME", typeof(
35c60 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20  string));..     
35c70 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
35c80 28 22 43 4f 4c 4c 41 54 49 4f 4e 5f 43 41 54 41  ("COLLATION_CATA
35c90 4c 4f 47 22 2c 20 74 79 70 65 6f 66 28 73 74 72  LOG", typeof(str
35ca0 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ing));..      tb
35cb0 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
35cc0 4f 4c 4c 41 54 49 4f 4e 5f 53 43 48 45 4d 41 22  OLLATION_SCHEMA"
35cd0 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29  , typeof(string)
35ce0 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
35cf0 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 4c 41  lumns.Add("COLLA
35d00 54 49 4f 4e 5f 4e 41 4d 45 22 2c 20 74 79 70 65  TION_NAME", type
35d10 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20 20  of(string));..  
35d20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e      tbl.Columns.
35d30 41 64 64 28 22 44 4f 4d 41 49 4e 5f 43 41 54 41  Add("DOMAIN_CATA
35d40 4c 4f 47 22 2c 20 74 79 70 65 6f 66 28 73 74 72  LOG", typeof(str
35d50 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ing));..      tb
35d60 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 44  l.Columns.Add("D
35d70 4f 4d 41 49 4e 5f 4e 41 4d 45 22 2c 20 74 79 70  OMAIN_NAME", typ
35d80 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20  eof(string));.. 
35d90 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
35da0 2e 41 64 64 28 22 44 45 53 43 52 49 50 54 49 4f  .Add("DESCRIPTIO
35db0 4e 22 2c 20 74 79 70 65 6f 66 28 73 74 72 69 6e  N", typeof(strin
35dc0 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  g));..      tbl.
35dd0 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 50 52 49  Columns.Add("PRI
35de0 4d 41 52 59 5f 4b 45 59 22 2c 20 74 79 70 65 6f  MARY_KEY", typeo
35df0 66 28 62 6f 6f 6c 29 29 3b 0d 0a 20 20 20 20 20  f(bool));..     
35e00 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
35e10 28 22 45 44 4d 5f 54 59 50 45 22 2c 20 74 79 70  ("EDM_TYPE", typ
35e20 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20  eof(string));.. 
35e30 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
35e40 2e 41 64 64 28 22 41 55 54 4f 49 4e 43 52 45 4d  .Add("AUTOINCREM
35e50 45 4e 54 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f  ENT", typeof(boo
35e60 6c 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e  l));..      tbl.
35e70 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 55 4e 49  Columns.Add("UNI
35e80 51 55 45 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f  QUE", typeof(boo
35e90 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 74 62  l));....      tb
35ea0 6c 2e 42 65 67 69 6e 4c 6f 61 64 44 61 74 61 28  l.BeginLoadData(
35eb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 28  );....      if (
35ec0 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
35ed0 6d 70 74 79 28 73 74 72 43 61 74 61 6c 6f 67 29  mpty(strCatalog)
35ee0 29 20 73 74 72 43 61 74 61 6c 6f 67 20 3d 20 47  ) strCatalog = G
35ef0 65 74 44 65 66 61 75 6c 74 43 61 74 61 6c 6f 67  etDefaultCatalog
35f00 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Name();....     
35f10 20 73 74 72 69 6e 67 20 6d 61 73 74 65 72 20 3d   string master =
35f20 20 47 65 74 4d 61 73 74 65 72 54 61 62 6c 65 4e   GetMasterTableN
35f30 61 6d 65 28 49 73 54 65 6d 70 6f 72 61 72 79 43  ame(IsTemporaryC
35f40 61 74 61 6c 6f 67 4e 61 6d 65 28 73 74 72 43 61  atalogName(strCa
35f50 74 61 6c 6f 67 29 29 3b 0d 0a 0d 0a 20 20 20 20  talog));....    
35f60 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43    using (SQLiteC
35f70 6f 6d 6d 61 6e 64 20 63 6d 64 54 61 62 6c 65 73  ommand cmdTables
35f80 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d   = new SQLiteCom
35f90 6d 61 6e 64 28 48 65 6c 70 65 72 4d 65 74 68 6f  mand(HelperMetho
35fa0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
35fb0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
35fc0 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 53  riantCulture, "S
35fd0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 5b 7b 30  ELECT * FROM [{0
35fe0 7d 5d 2e 5b 7b 31 7d 5d 20 57 48 45 52 45 20 5b  }].[{1}] WHERE [
35ff0 74 79 70 65 5d 20 4c 49 4b 45 20 27 74 61 62 6c  type] LIKE 'tabl
36000 65 27 20 4f 52 20 5b 74 79 70 65 5d 20 4c 49 4b  e' OR [type] LIK
36010 45 20 27 76 69 65 77 27 22 2c 20 73 74 72 43 61  E 'view'", strCa
36020 74 61 6c 6f 67 2c 20 6d 61 73 74 65 72 29 2c 20  talog, master), 
36030 74 68 69 73 29 29 0d 0a 20 20 20 20 20 20 75 73  this))..      us
36040 69 6e 67 20 28 53 51 4c 69 74 65 44 61 74 61 52  ing (SQLiteDataR
36050 65 61 64 65 72 20 72 64 54 61 62 6c 65 73 20 3d  eader rdTables =
36060 20 63 6d 64 54 61 62 6c 65 73 2e 45 78 65 63 75   cmdTables.Execu
36070 74 65 52 65 61 64 65 72 28 29 29 0d 0a 20 20 20  teReader())..   
36080 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 77 68     {..        wh
36090 69 6c 65 20 28 72 64 54 61 62 6c 65 73 2e 52 65  ile (rdTables.Re
360a0 61 64 28 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  ad())..        {
360b0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
360c0 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
360d0 6d 70 74 79 28 73 74 72 54 61 62 6c 65 29 20 7c  mpty(strTable) |
360e0 7c 20 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65  | String.Compare
360f0 28 73 74 72 54 61 62 6c 65 2c 20 72 64 54 61 62  (strTable, rdTab
36100 6c 65 73 2e 47 65 74 53 74 72 69 6e 67 28 32 29  les.GetString(2)
36110 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73  , StringComparis
36120 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  on.OrdinalIgnore
36130 43 61 73 65 29 20 3d 3d 20 30 29 0d 0a 20 20 20  Case) == 0)..   
36140 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36150 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
36160 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36170 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 53          using (S
36180 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6d 64  QLiteCommand cmd
36190 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d   = new SQLiteCom
361a0 6d 61 6e 64 28 48 65 6c 70 65 72 4d 65 74 68 6f  mand(HelperMetho
361b0 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28  ds.StringFormat(
361c0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
361d0 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 22 53  riantCulture, "S
361e0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 5b 7b 30  ELECT * FROM [{0
361f0 7d 5d 2e 5b 7b 31 7d 5d 22 2c 20 73 74 72 43 61  }].[{1}]", strCa
36200 74 61 6c 6f 67 2c 20 72 64 54 61 62 6c 65 73 2e  talog, rdTables.
36210 47 65 74 53 74 72 69 6e 67 28 32 29 29 2c 20 74  GetString(2)), t
36220 68 69 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20  his))..         
36230 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
36240 74 65 44 61 74 61 52 65 61 64 65 72 20 72 64 20  teDataReader rd 
36250 3d 20 28 53 51 4c 69 74 65 44 61 74 61 52 65 61  = (SQLiteDataRea
36260 64 65 72 29 63 6d 64 2e 45 78 65 63 75 74 65 52  der)cmd.ExecuteR
36270 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68  eader(CommandBeh
36280 61 76 69 6f 72 2e 53 63 68 65 6d 61 4f 6e 6c 79  avior.SchemaOnly
36290 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
362a0 20 20 75 73 69 6e 67 20 28 44 61 74 61 54 61 62    using (DataTab
362b0 6c 65 20 74 62 6c 53 63 68 65 6d 61 20 3d 20 72  le tblSchema = r
362c0 64 2e 47 65 74 53 63 68 65 6d 61 54 61 62 6c 65  d.GetSchemaTable
362d0 28 74 72 75 65 2c 20 74 72 75 65 29 29 0d 0a 20  (true, true)).. 
362e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
362f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36300 66 6f 72 65 61 63 68 20 28 44 61 74 61 52 6f 77  foreach (DataRow
36310 20 73 63 68 65 6d 61 52 6f 77 20 69 6e 20 74 62   schemaRow in tb
36320 6c 53 63 68 65 6d 61 2e 52 6f 77 73 29 0d 0a 20  lSchema.Rows).. 
36330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
36340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36350 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 43      if (String.C
36360 6f 6d 70 61 72 65 28 73 63 68 65 6d 61 52 6f 77  ompare(schemaRow
36370 5b 53 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75  [SchemaTableColu
36380 6d 6e 2e 43 6f 6c 75 6d 6e 4e 61 6d 65 5d 2e 54  mn.ColumnName].T
36390 6f 53 74 72 69 6e 67 28 29 2c 20 73 74 72 43 6f  oString(), strCo
363a0 6c 75 6d 6e 2c 20 53 74 72 69 6e 67 43 6f 6d 70  lumn, StringComp
363b0 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
363c0 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 0d 0a  noreCase) == 0..
363d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
363e0 20 20 20 20 7c 7c 20 73 74 72 43 6f 6c 75 6d 6e      || strColumn
363f0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
36400 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
36410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36420 20 20 20 20 72 6f 77 20 3d 20 74 62 6c 2e 4e 65      row = tbl.Ne
36430 77 52 6f 77 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  wRow();....     
36440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
36450 6f 77 5b 22 4e 55 4d 45 52 49 43 5f 50 52 45 43  ow["NUMERIC_PREC
36460 49 53 49 4f 4e 22 5d 20 3d 20 73 63 68 65 6d 61  ISION"] = schema
36470 52 6f 77 5b 53 63 68 65 6d 61 54 61 62 6c 65 43  Row[SchemaTableC
36480 6f 6c 75 6d 6e 2e 4e 75 6d 65 72 69 63 50 72 65  olumn.NumericPre
36490 63 69 73 69 6f 6e 5d 3b 0d 0a 20 20 20 20 20 20  cision];..      
364a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f                ro
364b0 77 5b 22 4e 55 4d 45 52 49 43 5f 53 43 41 4c 45  w["NUMERIC_SCALE
364c0 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b 53  "] = schemaRow[S
364d0 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e  chemaTableColumn
364e0 2e 4e 75 6d 65 72 69 63 53 63 61 6c 65 5d 3b 0d  .NumericScale];.
364f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36500 20 20 20 20 20 72 6f 77 5b 22 54 41 42 4c 45 5f       row["TABLE_
36510 4e 41 4d 45 22 5d 20 3d 20 72 64 54 61 62 6c 65  NAME"] = rdTable
36520 73 2e 47 65 74 53 74 72 69 6e 67 28 32 29 3b 0d  s.GetString(2);.
36530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36540 20 20 20 20 20 72 6f 77 5b 22 43 4f 4c 55 4d 4e       row["COLUMN
36550 5f 4e 41 4d 45 22 5d 20 3d 20 73 63 68 65 6d 61  _NAME"] = schema
36560 52 6f 77 5b 53 63 68 65 6d 61 54 61 62 6c 65 43  Row[SchemaTableC
36570 6f 6c 75 6d 6e 2e 43 6f 6c 75 6d 6e 4e 61 6d 65  olumn.ColumnName
36580 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
36590 20 20 20 20 20 20 20 20 72 6f 77 5b 22 54 41 42          row["TAB
365a0 4c 45 5f 43 41 54 41 4c 4f 47 22 5d 20 3d 20 73  LE_CATALOG"] = s
365b0 74 72 43 61 74 61 6c 6f 67 3b 0d 0a 20 20 20 20  trCatalog;..    
365c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365d0 72 6f 77 5b 22 4f 52 44 49 4e 41 4c 5f 50 4f 53  row["ORDINAL_POS
365e0 49 54 49 4f 4e 22 5d 20 3d 20 73 63 68 65 6d 61  ITION"] = schema
365f0 52 6f 77 5b 53 63 68 65 6d 61 54 61 62 6c 65 43  Row[SchemaTableC
36600 6f 6c 75 6d 6e 2e 43 6f 6c 75 6d 6e 4f 72 64 69  olumn.ColumnOrdi
36610 6e 61 6c 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  nal];..         
36620 20 20 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22             row["
36630 43 4f 4c 55 4d 4e 5f 48 41 53 44 45 46 41 55 4c  COLUMN_HASDEFAUL
36640 54 22 5d 20 3d 20 28 73 63 68 65 6d 61 52 6f 77  T"] = (schemaRow
36650 5b 53 63 68 65 6d 61 54 61 62 6c 65 4f 70 74 69  [SchemaTableOpti
36660 6f 6e 61 6c 43 6f 6c 75 6d 6e 2e 44 65 66 61 75  onalColumn.Defau
36670 6c 74 56 61 6c 75 65 5d 20 21 3d 20 44 42 4e 75  ltValue] != DBNu
36680 6c 6c 2e 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ll.Value);..    
36690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
366a0 72 6f 77 5b 22 43 4f 4c 55 4d 4e 5f 44 45 46 41  row["COLUMN_DEFA
366b0 55 4c 54 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f  ULT"] = schemaRo
366c0 77 5b 53 63 68 65 6d 61 54 61 62 6c 65 4f 70 74  w[SchemaTableOpt
366d0 69 6f 6e 61 6c 43 6f 6c 75 6d 6e 2e 44 65 66 61  ionalColumn.Defa
366e0 75 6c 74 56 61 6c 75 65 5d 3b 0d 0a 20 20 20 20  ultValue];..    
366f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36700 72 6f 77 5b 22 49 53 5f 4e 55 4c 4c 41 42 4c 45  row["IS_NULLABLE
36710 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b 53  "] = schemaRow[S
36720 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e  chemaTableColumn
36730 2e 41 6c 6c 6f 77 44 42 4e 75 6c 6c 5d 3b 0d 0a  .AllowDBNull];..
36740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36750 20 20 20 20 72 6f 77 5b 22 44 41 54 41 5f 54 59      row["DATA_TY
36760 50 45 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77  PE"] = schemaRow
36770 5b 22 44 61 74 61 54 79 70 65 4e 61 6d 65 22 5d  ["DataTypeName"]
36780 2e 54 6f 53 74 72 69 6e 67 28 29 2e 54 6f 4c 6f  .ToString().ToLo
36790 77 65 72 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  wer(CultureInfo.
367a0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
367b0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
367c0 20 20 20 20 20 20 20 20 72 6f 77 5b 22 45 44 4d          row["EDM
367d0 5f 54 59 50 45 22 5d 20 3d 20 53 51 4c 69 74 65  _TYPE"] = SQLite
367e0 43 6f 6e 76 65 72 74 2e 44 62 54 79 70 65 54 6f  Convert.DbTypeTo
367f0 54 79 70 65 4e 61 6d 65 28 74 68 69 73 2c 20 28  TypeName(this, (
36800 44 62 54 79 70 65 29 73 63 68 65 6d 61 52 6f 77  DbType)schemaRow
36810 5b 53 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75  [SchemaTableColu
36820 6d 6e 2e 50 72 6f 76 69 64 65 72 54 79 70 65 5d  mn.ProviderType]
36830 2c 20 5f 66 6c 61 67 73 29 2e 54 6f 53 74 72 69  , _flags).ToStri
36840 6e 67 28 29 2e 54 6f 4c 6f 77 65 72 28 43 75 6c  ng().ToLower(Cul
36850 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
36860 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20  ntCulture);..   
36870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36880 20 72 6f 77 5b 22 43 48 41 52 41 43 54 45 52 5f   row["CHARACTER_
36890 4d 41 58 49 4d 55 4d 5f 4c 45 4e 47 54 48 22 5d  MAXIMUM_LENGTH"]
368a0 20 3d 20 73 63 68 65 6d 61 52 6f 77 5b 53 63 68   = schemaRow[Sch
368b0 65 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 43  emaTableColumn.C
368c0 6f 6c 75 6d 6e 53 69 7a 65 5d 3b 0d 0a 20 20 20  olumnSize];..   
368d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
368e0 20 72 6f 77 5b 22 54 41 42 4c 45 5f 53 43 48 45   row["TABLE_SCHE
368f0 4d 41 22 5d 20 3d 20 73 63 68 65 6d 61 52 6f 77  MA"] = schemaRow
36900 5b 53 63 68 65 6d 61 54 61 62 6c 65 43 6f 6c 75  [SchemaTableColu
36910 6d 6e 2e 42 61 73 65 53 63 68 65 6d 61 4e 61 6d  mn.BaseSchemaNam
36920 65 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e];..           
36930 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22 50 52           row["PR
36940 49 4d 41 52 59 5f 4b 45 59 22 5d 20 3d 20 73 63  IMARY_KEY"] = sc
36950 68 65 6d 61 52 6f 77 5b 53 63 68 65 6d 61 54 61  hemaRow[SchemaTa
36960 62 6c 65 43 6f 6c 75 6d 6e 2e 49 73 4b 65 79 5d  bleColumn.IsKey]
36970 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
36980 20 20 20 20 20 20 20 72 6f 77 5b 22 41 55 54 4f         row["AUTO
36990 49 4e 43 52 45 4d 45 4e 54 22 5d 20 3d 20 73 63  INCREMENT"] = sc
369a0 68 65 6d 61 52 6f 77 5b 53 63 68 65 6d 61 54 61  hemaRow[SchemaTa
369b0 62 6c 65 4f 70 74 69 6f 6e 61 6c 43 6f 6c 75 6d  bleOptionalColum
369c0 6e 2e 49 73 41 75 74 6f 49 6e 63 72 65 6d 65 6e  n.IsAutoIncremen
369d0 74 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t];..           
369e0 20 20 20 20 20 20 20 20 20 72 6f 77 5b 22 43 4f           row["CO
369f0 4c 4c 41 54 49 4f 4e 5f 4e 41 4d 45 22 5d 20 3d  LLATION_NAME"] =
36a00 20 73 63 68 65 6d 61 52 6f 77 5b 22 43 6f 6c 6c   schemaRow["Coll
36a10 61 74 69 6f 6e 54 79 70 65 22 5d 3b 0d 0a 20 20  ationType"];..  
36a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a30 20 20 72 6f 77 5b 22 55 4e 49 51 55 45 22 5d 20    row["UNIQUE"] 
36a40 3d 20 73 63 68 65 6d 61 52 6f 77 5b 53 63 68 65  = schemaRow[Sche
36a50 6d 61 54 61 62 6c 65 43 6f 6c 75 6d 6e 2e 49 73  maTableColumn.Is
36a60 55 6e 69 71 75 65 5d 3b 0d 0a 20 20 20 20 20 20  Unique];..      
36a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 62                tb
36a80 6c 2e 52 6f 77 73 2e 41 64 64 28 72 6f 77 29 3b  l.Rows.Add(row);
36a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36aa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
36ab0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
36ac0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36ad0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
36ae0 20 20 20 20 20 20 63 61 74 63 68 28 53 51 4c 69        catch(SQLi
36af0 74 65 45 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20  teException)..  
36b00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
36b10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
36b20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
36b30 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
36b40 20 20 20 20 20 74 62 6c 2e 41 63 63 65 70 74 43       tbl.AcceptC
36b50 68 61 6e 67 65 73 28 29 3b 0d 0a 20 20 20 20 20  hanges();..     
36b60 20 74 62 6c 2e 45 6e 64 4c 6f 61 64 44 61 74 61   tbl.EndLoadData
36b70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74  ();....      ret
36b80 75 72 6e 20 74 62 6c 3b 0d 0a 20 20 20 20 7d 0d  urn tbl;..    }.
36b90 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
36ba0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
36bb0 74 75 72 6e 73 20 69 6e 64 65 78 20 69 6e 66 6f  turns index info
36bc0 72 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  rmation for the 
36bd0 67 69 76 65 6e 20 64 61 74 61 62 61 73 65 20 61  given database a
36be0 6e 64 20 63 61 74 61 6c 6f 67 0d 0a 20 20 20 20  nd catalog..    
36bf0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
36c00 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
36c10 61 6d 65 3d 22 73 74 72 43 61 74 61 6c 6f 67 22  ame="strCatalog"
36c20 3e 54 68 65 20 63 61 74 61 6c 6f 67 20 28 61 74  >The catalog (at
36c30 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 29  tached database)
36c40 20 74 6f 20 71 75 65 72 79 2c 20 63 61 6e 20 62   to query, can b
36c50 65 20 6e 75 6c 6c 3c 2f 70 61 72 61 6d 3e 0d 0a  e null</param>..
36c60 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
36c70 61 6d 65 3d 22 73 74 72 49 6e 64 65 78 22 3e 54  ame="strIndex">T
36c80 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69  he name of the i
36c90 6e 64 65 78 20 74 6f 20 72 65 74 72 69 65 76 65  ndex to retrieve
36ca0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72   information for
36cb0 2c 20 63 61 6e 20 62 65 20 6e 75 6c 6c 3c 2f 70  , can be null</p
36cc0 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
36cd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 54  param name="strT
36ce0 61 62 6c 65 22 3e 54 68 65 20 74 61 62 6c 65 20  able">The table 
36cf0 74 6f 20 72 65 74 72 69 65 76 65 20 69 6e 64 65  to retrieve inde
36d00 78 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f  x information fo
36d10 72 2c 20 63 61 6e 20 62 65 20 6e 75 6c 6c 3c 2f  r, can be null</
36d20 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
36d30 3c 72 65 74 75 72 6e 73 3e 44 61 74 61 54 61 62  <returns>DataTab
36d40 6c 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  le</returns>..  
36d50 20 20 70 72 69 76 61 74 65 20 44 61 74 61 54 61    private DataTa
36d60 62 6c 65 20 53 63 68 65 6d 61 5f 49 6e 64 65 78  ble Schema_Index
36d70 65 73 28 73 74 72 69 6e 67 20 73 74 72 43 61 74  es(string strCat
36d80 61 6c 6f 67 2c 20 73 74 72 69 6e 67 20 73 74 72  alog, string str
36d90 54 61 62 6c 65 2c 20 73 74 72 69 6e 67 20 73 74  Table, string st
36da0 72 49 6e 64 65 78 29 0d 0a 20 20 20 20 7b 0d 0a  rIndex)..    {..
36db0 20 20 20 20 20 20 44 61 74 61 54 61 62 6c 65 20        DataTable 
36dc0 74 62 6c 20 3d 20 6e 65 77 20 44 61 74 61 54 61  tbl = new DataTa
36dd0 62 6c 65 28 22 49 6e 64 65 78 65 73 22 29 3b 0d  ble("Indexes");.
36de0 0a 20 20 20 20 20 20 44 61 74 61 52 6f 77 20 72  .      DataRow r
36df0 6f 77 3b 0d 0a 20 20 20 20 20 20 4c 69 73 74 3c  ow;..      List<
36e00 69 6e 74 3e 20 70 72 69 6d 61 72 79 4b 65 79 73  int> primaryKeys
36e10 20 3d 20 6e 65 77 20 4c 69 73 74 3c 69 6e 74 3e   = new List<int>
36e20 28 29 3b 0d 0a 20 20 20 20 20 20 62 6f 6f 6c 20  ();..      bool 
36e30 6d 61 79 62 65 52 6f 77 49 64 3b 0d 0a 0d 0a 20  maybeRowId;.... 
36e40 20 20 20 20 20 74 62 6c 2e 4c 6f 63 61 6c 65 20       tbl.Locale 
36e50 3d 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  = CultureInfo.In
36e60 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3b 0d  variantCulture;.
36e70 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
36e80 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 43 41  ns.Add("TABLE_CA
36e90 54 41 4c 4f 47 22 2c 20 74 79 70 65 6f 66 28 73  TALOG", typeof(s
36ea0 74 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20  tring));..      
36eb0 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28  tbl.Columns.Add(
36ec0 22 54 41 42 4c 45 5f 53 43 48 45 4d 41 22 2c 20  "TABLE_SCHEMA", 
36ed0 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b  typeof(string));
36ee0 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75  ..      tbl.Colu
36ef0 6d 6e 73 2e 41 64 64 28 22 54 41 42 4c 45 5f 4e  mns.Add("TABLE_N
36f00 41 4d 45 22 2c 20 74 79 70 65 6f 66 28 73 74 72  AME", typeof(str
36f10 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ing));..      tb
36f20 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 49  l.Columns.Add("I
36f30 4e 44 45 58 5f 43 41 54 41 4c 4f 47 22 2c 20 74  NDEX_CATALOG", t
36f40 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d  ypeof(string));.
36f50 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
36f60 6e 73 2e 41 64 64 28 22 49 4e 44 45 58 5f 53 43  ns.Add("INDEX_SC
36f70 48 45 4d 41 22 2c 20 74 79 70 65 6f 66 28 73 74  HEMA", typeof(st
36f80 72 69 6e 67 29 29 3b 0d 0a 20 20 20 20 20 20 74  ring));..      t
36f90 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22  bl.Columns.Add("
36fa0 49 4e 44 45 58 5f 4e 41 4d 45 22 2c 20 74 79 70  INDEX_NAME", typ
36fb0 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20  eof(string));.. 
36fc0 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
36fd0 2e 41 64 64 28 22 50 52 49 4d 41 52 59 5f 4b 45  .Add("PRIMARY_KE
36fe0 59 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29  Y", typeof(bool)
36ff0 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
37000 6c 75 6d 6e 73 2e 41 64 64 28 22 55 4e 49 51 55  lumns.Add("UNIQU
37010 45 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29  E", typeof(bool)
37020 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
37030 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4c 55 53 54  lumns.Add("CLUST
37040 45 52 45 44 22 2c 20 74 79 70 65 6f 66 28 62 6f  ERED", typeof(bo
37050 6f 6c 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  ol));..      tbl
37060 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 54 59  .Columns.Add("TY
37070 50 45 22 2c 20 74 79 70 65 6f 66 28 69 6e 74 29  PE", typeof(int)
37080 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
37090 6c 75 6d 6e 73 2e 41 64 64 28 22 46 49 4c 4c 5f  lumns.Add("FILL_
370a0 46 41 43 54 4f 52 22 2c 20 74 79 70 65 6f 66 28  FACTOR", typeof(
370b0 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  int));..      tb
370c0 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 49  l.Columns.Add("I
370d0 4e 49 54 49 41 4c 5f 53 49 5a 45 22 2c 20 74 79  NITIAL_SIZE", ty
370e0 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20  peof(int));..   
370f0 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41     tbl.Columns.A
37100 64 64 28 22 4e 55 4c 4c 53 22 2c 20 74 79 70 65  dd("NULLS", type
37110 6f 66 28 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20  of(int));..     
37120 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
37130 28 22 53 4f 52 54 5f 42 4f 4f 4b 4d 41 52 4b 53  ("SORT_BOOKMARKS
37140 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 29  ", typeof(bool))
37150 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c  ;..      tbl.Col
37160 75 6d 6e 73 2e 41 64 64 28 22 41 55 54 4f 5f 55  umns.Add("AUTO_U
37170 50 44 41 54 45 22 2c 20 74 79 70 65 6f 66 28 62  PDATE", typeof(b
37180 6f 6f 6c 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  ool));..      tb
37190 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 4e  l.Columns.Add("N
371a0 55 4c 4c 5f 43 4f 4c 4c 41 54 49 4f 4e 22 2c 20  ULL_COLLATION", 
371b0 74 79 70 65 6f 66 28 69 6e 74 29 29 3b 0d 0a 20  typeof(int));.. 
371c0 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
371d0 2e 41 64 64 28 22 4f 52 44 49 4e 41 4c 5f 50 4f  .Add("ORDINAL_PO
371e0 53 49 54 49 4f 4e 22 2c 20 74 79 70 65 6f 66 28  SITION", typeof(
371f0 69 6e 74 29 29 3b 0d 0a 20 20 20 20 20 20 74 62  int));..      tb
37200 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 43  l.Columns.Add("C
37210 4f 4c 55 4d 4e 5f 4e 41 4d 45 22 2c 20 74 79 70  OLUMN_NAME", typ
37220 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d 0a 20  eof(string));.. 
37230 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
37240 2e 41 64 64 28 22 43 4f 4c 55 4d 4e 5f 47 55 49  .Add("COLUMN_GUI
37250 44 22 2c 20 74 79 70 65 6f 66 28 47 75 69 64 29  D", typeof(Guid)
37260 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f  );..      tbl.Co
37270 6c 75 6d 6e 73 2e 41 64 64 28 22 43 4f 4c 55 4d  lumns.Add("COLUM
37280 4e 5f 50 52 4f 50 49 44 22 2c 20 74 79 70 65 6f  N_PROPID", typeo
37290 66 28 6c 6f 6e 67 29 29 3b 0d 0a 20 20 20 20 20  f(long));..     
372a0 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64   tbl.Columns.Add
372b0 28 22 43 4f 4c 4c 41 54 49 4f 4e 22 2c 20 74 79  ("COLLATION", ty
372c0 70 65 6f 66 28 73 68 6f 72 74 29 29 3b 0d 0a 20  peof(short));.. 
372d0 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d 6e 73       tbl.Columns
372e0 2e 41 64 64 28 22 43 41 52 44 49 4e 41 4c 49 54  .Add("CARDINALIT
372f0 59 22 2c 20 74 79 70 65 6f 66 28 44 65 63 69 6d  Y", typeof(Decim
37300 61 6c 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c  al));..      tbl
37310 2e 43 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 50 41  .Columns.Add("PA
37320 47 45 53 22 2c 20 74 79 70 65 6f 66 28 69 6e 74  GES", typeof(int
37330 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  ));..      tbl.C
37340 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 46 49 4c 54  olumns.Add("FILT
37350 45 52 5f 43 4f 4e 44 49 54 49 4f 4e 22 2c 20 74  ER_CONDITION", t
37360 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d  ypeof(string));.
37370 0a 20 20 20 20 20 20 74 62 6c 2e 43 6f 6c 75 6d  .      tbl.Colum
37380 6e 73 2e 41 64 64 28 22 49 4e 54 45 47 52 41 54  ns.Add("INTEGRAT
37390 45 44 22 2c 20 74 79 70 65 6f 66 28 62 6f 6f 6c  ED", typeof(bool
373a0 29 29 3b 0d 0a 20 20 20 20 20 20 74 62 6c 2e 43  ));..      tbl.C
373b0 6f 6c 75 6d 6e 73 2e 41 64 64 28 22 49 4e 44 45  olumns.Add("INDE
373c0 58 5f 44 45 46 49 4e 49 54 49 4f 4e 22 2c 20 74  X_DEFINITION", t
373d0 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 3b 0d  ypeof(string));.
373e0 0a 0d 0a 20 20 20 20 20 20 74 62 6c 2e 42 65 67  ...      tbl.Beg
373f0 69 6e 4c 6f 61 64 44 61 74 61 28 29 3b 0d 0a 0d  inLoadData();...
37400 0a 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e  .      if (Strin
37410 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
37420 73 74 72 43 61 74 61 6c 6f 67 29 29 20 73 74 72  strCatalog)) str
37430 43 61 74 61 6c 6f 67 20 3d 20 47 65 74 44 65 66  Catalog = GetDef
37440 61 75 6c 74 43 61 74 61 6c 6f 67 4e 61 6d 65 28  aultCatalogName(
37450 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72 69  );....      stri
37460 6e 67 20 6d 61 73 74 65 72 20 3d 20 47 65 74 4d  ng master = GetM
37470 61 73 74 65 72 54 61 62 6c 65 4e 61 6d 65 28 49  asterTableName(I
37480 73 54 65 6d 70 6f 72 61 72 79 43 61 74 61 6c 6f  sTemporaryCatalo
37490 67 4e 61 6d 65 28 73 74 72 43 61 74 61 6c 6f 67  gName(strCatalog
374a0 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 75 73 69  ));....      usi
374b0 6e 67 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ng (SQLiteComman
374c0 64 20 63 6d 64 54 61 62 6c 65 73 20 3d 20 6e 65  d cmdTables = ne
374d0 77 20 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 28  w SQLiteCommand(
374e0 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
374f0 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75  ringFormat(Cultu
37500 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
37510 43 75 6c 74 75 72 65 2c 20 22 53 45 4c 45 43 54  Culture, "SELECT
37520 20 2a 20 46 52 4f 4d 20 5b 7b 30 7d 5d 2e 5b 7b   * FROM [{0}].[{
37530 31 7d 5d 20 57 48 45 52 45 20 5b 74 79 70 65 5d  1}] WHERE [type]
37540 20 4c 49 4b 45 20 27 74 61 62 6c 65 27 22 2c 20   LIKE 'table'", 
37550 73 74 72 43 61 74 61 6c 6f 67 2c 20 6d 61 73 74  strCatalog, mast
37560 65 72 29 2c 20 74 68 69 73 29 29 0d 0a 20 20 20  er), this))..   
37570 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65     using (SQLite
37580 44 61 74 61 52 65 61 64 65 72 20 72 64 54 61 62  DataReader rdTab
37590 6c 65 73 20 3d 20 63 6d 64 54 61 62 6c 65 73 2e  les = cmdTables.
375a0 45 78 65 63 75 74 65 52 65 61 64 65 72 28 29 29  ExecuteReader())
375b0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
375c0 20 20 20 77 68 69 6c 65 20 28 72 64 54 61 62 6c     while (rdTabl
375d0 65 73 2e 52 65 61 64 28 29 29 0d 0a 20 20 20 20  es.Read())..    
375e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
375f0 20 6d 61 79 62 65 52 6f 77 49 64 20 3d 20 66 61   maybeRowId = fa
37600 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
37610 70 72 69 6d 61 72 79 4b 65 79 73 2e 43 6c 65 61  primaryKeys.Clea
37620 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
37630 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
37640 6c 4f 72 45 6d 70 74 79 28 73 74 72 54 61 62 6c  lOrEmpty(strTabl
37650 65 29 20 7c 7c 20 53 74 72 69 6e 67 2e 43 6f 6d  e) || String.Com
37660 70 61 72 65 28 72 64 54 61 62 6c 65 73 2e 47 65  pare(rdTables.Ge
37670 74 53 74 72 69 6e 67 28 32 29 2c 20 73 74 72 54  tString(2), strT
37680 61 62 6c 65 2c 20 53 74 72 69 6e 67 43 6f 6d 70  able, StringComp
37690 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
376a0 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29 0d  noreCase) == 0).
376b0 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
376c0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 69 72            // Fir
376d0 73 74 2c 20 6c 6f 6f 6b 20 66 6f 72 20 61 6e 79  st, look for any
376e0 20 72 6f 77 69 64 20 69 6e 64 65 78 65 73 20 2d   rowid indexes -
376f0 2d 20 77 68 69 63 68 20 73 71 6c 69 74 65 20 64  - which sqlite d
37700 65 66 69 6e 65 73 20 61 72 65 20 49 4e 54 45 47  efines are INTEG
37710 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
37720 6f 6c 75 6d 6e 73 2e 0d 0a 20 20 20 20 20 20 20  olumns...       
37730 20 20 20 20 20 2f 2f 20 53 75 63 68 20 69 6e 64       // Such ind
37740 65 78 65 73 20 61 72 65 20 6e 6f 74 20 6c 69 73  exes are not lis
37750 74 65 64 20 69 6e 20 74 68 65 20 69 6e 64 65 78  ted in the index
37760 65 73 20 6c 69 73 74 20 62 75 74 20 63 6f 75 6e  es list but coun
37770 74 20 61 73 20 69 6e 64 65 78 65 73 20 6a 75 73  t as indexes jus
37780 74 20 74 68 65 20 73 61 6d 65 2e 0d 0a 20 20 20  t the same...   
37790 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
377a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
377b0 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67             using
377c0 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20   (SQLiteCommand 
377d0 63 6d 64 54 61 62 6c 65 20 3d 20 6e 65 77 20 53  cmdTable = new S
377e0 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 28 48 65 6c  QLiteCommand(Hel
377f0 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
37800 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65 49  gFormat(CultureI
37810 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
37820 74 75 72 65 2c 20 22 50 52 41 47 4d 41 20 5b 7b  ture, "PRAGMA [{
37830 30 7d 5d 2e 74 61 62 6c 65 5f 69 6e 66 6f 28 5b  0}].table_info([
37840 7b 31 7d 5d 29 22 2c 20 73 74 72 43 61 74 61 6c  {1}])", strCatal
37850 6f 67 2c 20 72 64 54 61 62 6c 65 73 2e 47 65 74  og, rdTables.Get
37860 53 74 72 69 6e 67 28 32 29 29 2c 20 74 68 69 73  String(2)), this
37870 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
37880 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 44    using (SQLiteD
37890 61 74 61 52 65 61 64 65 72 20 72 64 54 61 62 6c  ataReader rdTabl
378a0 65 20 3d 20 63 6d 64 54 61 62 6c 65 2e 45 78 65  e = cmdTable.Exe
378b0 63 75 74 65 52 65 61 64 65 72 28 29 29 0d 0a 20  cuteReader()).. 
378c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
378d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
378e0 77 68 69 6c 65 20 28 72 64 54 61 62 6c 65 2e 52  while (rdTable.R
378f0 65 61 64 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ead())..        
37900 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37910 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
37920 28 72 64 54 61 62 6c 65 2e 47 65 74 49 6e 74 33  (rdTable.GetInt3
37930 32 28 35 29 20 21 3d 20 30 29 0d 0a 20 20 20 20  2(5) != 0)..    
37940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
37950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37960 20 20 20 20 20 70 72 69 6d 61 72 79 4b 65 79 73       primaryKeys
37970 2e 41 64 64 28 72 64 54 61 62 6c 65 2e 47 65 74  .Add(rdTable.Get
37980 49 6e 74 33 32 28 30 29 29 3b 0d 0a 0d 0a 20 20  Int32(0));....  
37990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
379a0 20 20 2f 2f 20 49 66 20 74 68 65 20 70 72 69 6d    // If the prim
379b0 61 72 79 20 6b 65 79 20 69 73 20 6f 66 20 74 79  ary key is of ty
379c0 70 65 20 49 4e 54 45 47 45 52 2c 20 74 68 65 6e  pe INTEGER, then
379d0 20 69 74 73 20 61 20 72 6f 77 69 64 20 61 6e 64   its a rowid and
379e0 20 77 65 20 6e 65 65 64 20 74 6f 20 6d 61 6b 65   we need to make
379f0 20 61 20 66 61 6b 65 20 69 6e 64 65 78 20 65 6e   a fake index en
37a00 74 72 79 20 66 6f 72 20 69 74 2e 0d 0a 20 20 20  try for it...   
37a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a20 20 69 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70   if (String.Comp
37a30 61 72 65 28 72 64 54 61 62 6c 65 2e 47 65 74 53  are(rdTable.GetS
37a40 74 72 69 6e 67 28 32 29 2c 20 22 49 4e 54 45 47  tring(2), "INTEG
37a50 45 52 22 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61  ER", StringCompa
37a60 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
37a70 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29 0d 0a  oreCase) == 0)..
37a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a90 20 20 20 20 20 20 6d 61 79 62 65 52 6f 77 49 64        maybeRowId
37aa0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
37ab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
37ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
37ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37ae0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
37af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
37b00 74 63 68 20 28 53 51 4c 69 74 65 45 78 63 65 70  tch (SQLiteExcep
37b10 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20  tion)..         
37b20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37b30 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
37b40 20 69 66 20 28 70 72 69 6d 61 72 79 4b 65 79 73