System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f98b313907b9ec4434c406ca3aff24d0a432c3e5:


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 20 0d 0a  soft.com).. * ..
00b0: 20 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74   * Released to t
00c0: 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e  he public domain
00d0: 2c 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77  , use at your ow
00e0: 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a  n 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 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65  **/....namespace
0130: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0140: 69 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20  ite..{..  using 
0150: 53 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67  System;..  using
0160: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 43 6f 6d   System.Data.Com
0170: 6d 6f 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79  mon;..  using Sy
0180: 73 74 65 6d 2e 43 6f 6d 70 6f 6e 65 6e 74 4d 6f  stem.ComponentMo
0190: 64 65 6c 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79  del;..  using Sy
01a0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
01b0: 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65  ;..  using Syste
01c0: 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b  m.Globalization;
01d0: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
01e0: 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a  .Reflection;....
01f0: 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
0200: 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
0210: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0220: 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6d  .  /// SQLite im
0230: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
0240: 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  DbConnectionStri
0250: 6e 67 42 75 69 6c 64 65 72 2e 0d 0a 20 20 2f 2f  ngBuilder...  //
0260: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0270: 5b 44 65 66 61 75 6c 74 50 72 6f 70 65 72 74 79  [DefaultProperty
0280: 28 22 44 61 74 61 53 6f 75 72 63 65 22 29 5d 0d  ("DataSource")].
0290: 0a 20 20 5b 44 65 66 61 75 6c 74 4d 65 6d 62 65  .  [DefaultMembe
02a0: 72 28 22 49 74 65 6d 22 29 5d 0d 0a 20 20 70 75  r("Item")]..  pu
02b0: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
02c0: 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  s SQLiteConnecti
02d0: 6f 6e 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20  onStringBuilder 
02e0: 3a 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  : DbConnectionSt
02f0: 72 69 6e 67 42 75 69 6c 64 65 72 0d 0a 20 20 7b  ringBuilder..  {
0300: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0310: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50 72 6f  ry>..    /// Pro
0320: 70 65 72 74 69 65 73 20 6f 66 20 74 68 69 73 20  perties of this 
0330: 63 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  class..    /// <
0340: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
0350: 72 69 76 61 74 65 20 48 61 73 68 74 61 62 6c 65  rivate Hashtable
0360: 20 5f 70 72 6f 70 65 72 74 69 65 73 3b 0d 0a 0d   _properties;...
0370: 0a 20 20 20 20 2f 2f 2f 20 3c 6f 76 65 72 6c 6f  .    /// <overlo
0380: 61 64 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ads>..    /// Co
0390: 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77 20 69  nstructs a new i
03a0: 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 63  nstance of the c
03b0: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lass..    /// </
03c0: 6f 76 65 72 6c 6f 61 64 73 3e 0d 0a 20 20 20 20  overloads>..    
03d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
03e0: 20 20 20 2f 2f 2f 20 44 65 66 61 75 6c 74 20 63     /// Default c
03f0: 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  onstructor..    
0400: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0410: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
0420: 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  eConnectionStrin
0430: 67 42 75 69 6c 64 65 72 28 29 0d 0a 20 20 20 20  gBuilder()..    
0440: 7b 0d 0a 20 20 20 20 20 20 49 6e 69 74 69 61 6c  {..      Initial
0450: 69 7a 65 28 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  ize(null);..    
0460: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
0470: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0480: 43 6f 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77  Constructs a new
0490: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
04a0: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
04b0: 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e 6e 65   specified conne
04c0: 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20  ction string... 
04d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
04e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
04f0: 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
0500: 6f 6e 53 74 72 69 6e 67 22 3e 54 68 65 20 63 6f  onString">The co
0510: 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
0520: 74 6f 20 70 61 72 73 65 3c 2f 70 61 72 61 6d 3e  to parse</param>
0530: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c  ..    public SQL
0540: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  iteConnectionStr
0550: 69 6e 67 42 75 69 6c 64 65 72 28 73 74 72 69 6e  ingBuilder(strin
0560: 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  g connectionStri
0570: 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ng)..    {..    
0580: 20 20 49 6e 69 74 69 61 6c 69 7a 65 28 63 6f 6e    Initialize(con
0590: 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 29 3b 0d  nectionString);.
05a0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
05b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
05c0: 20 2f 2f 2f 20 50 72 69 76 61 74 65 20 69 6e 69   /// Private ini
05d0: 74 69 61 6c 69 7a 65 72 2c 20 77 68 69 63 68 20  tializer, which 
05e0: 61 73 73 69 67 6e 73 20 74 68 65 20 63 6f 6e 6e  assigns the conn
05f0: 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 61 6e  ection string an
0600: 64 20 72 65 73 65 74 73 20 74 68 65 20 62 75 69  d resets the bui
0610: 6c 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lder..    /// </
0620: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0630: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
0640: 6e 6e 53 74 72 69 6e 67 22 3e 54 68 65 20 63 6f  nnString">The co
0650: 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
0660: 74 6f 20 61 73 73 69 67 6e 3c 2f 70 61 72 61 6d  to assign</param
0670: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76  >..    private v
0680: 6f 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 73  oid Initialize(s
0690: 74 72 69 6e 67 20 63 6e 6e 53 74 72 69 6e 67 29  tring cnnString)
06a0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
06b0: 70 72 6f 70 65 72 74 69 65 73 20 3d 20 6e 65 77  properties = new
06c0: 20 48 61 73 68 74 61 62 6c 65 28 53 74 72 69 6e   Hashtable(Strin
06d0: 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61  gComparer.Ordina
06e0: 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20  lIgnoreCase);.. 
06f0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
0700: 7b 0d 0a 20 20 20 20 20 20 20 20 62 61 73 65 2e  {..        base.
0710: 47 65 74 50 72 6f 70 65 72 74 69 65 73 28 5f 70  GetProperties(_p
0720: 72 6f 70 65 72 74 69 65 73 29 3b 0d 0a 20 20 20  roperties);..   
0730: 20 20 20 7d 0d 0a 20 20 20 20 20 20 63 61 74 63     }..      catc
0740: 68 28 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  h(NotImplemented
0750: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20  Exception)..    
0760: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 46 61 6c    {..        Fal
0770: 6c 62 61 63 6b 47 65 74 50 72 6f 70 65 72 74 69  lbackGetProperti
0780: 65 73 28 5f 70 72 6f 70 65 72 74 69 65 73 29 3b  es(_properties);
0790: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
07a0: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
07b0: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6e 6e 53  NullOrEmpty(cnnS
07c0: 74 72 69 6e 67 29 20 3d 3d 20 66 61 6c 73 65 29  tring) == false)
07d0: 0d 0a 20 20 20 20 20 20 20 20 43 6f 6e 6e 65 63  ..        Connec
07e0: 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 63 6e 6e  tionString = cnn
07f0: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 7d 0d 0a  String;..    }..
0800: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0810: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ry>..    /// Get
0820: 73 2f 53 65 74 73 20 74 68 65 20 64 65 66 61 75  s/Sets the defau
0830: 6c 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  lt version of th
0840: 65 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65 20  e SQLite engine 
0850: 74 6f 20 69 6e 73 74 61 6e 74 69 61 74 65 2e 20  to instantiate. 
0860: 20 43 75 72 72 65 6e 74 6c 79 20 74 68 65 20 6f   Currently the o
0870: 6e 6c 79 20 76 61 6c 69 64 20 76 61 6c 75 65 20  nly valid value 
0880: 69 73 20 33 2c 20 69 6e 64 69 63 61 74 69 6e 67  is 3, indicating
0890: 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68   version 3 of th
08a0: 65 20 73 71 6c 69 74 65 20 6c 69 62 72 61 72 79  e sqlite library
08b0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
08c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77  mary>..    [Brow
08d0: 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20  sable(true)]..  
08e0: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
08f0: 33 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  3)]..    public 
0900: 69 6e 74 20 56 65 72 73 69 6f 6e 0d 0a 20 20 20  int Version..   
0910: 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20   {..      get.. 
0920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0930: 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20  object value;.. 
0940: 20 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c         TryGetVal
0950: 75 65 28 22 76 65 72 73 69 6f 6e 22 2c 20 6f 75  ue("version", ou
0960: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
0970: 20 20 20 72 65 74 75 72 6e 20 43 6f 6e 76 65 72     return Conver
0980: 74 2e 54 6f 49 6e 74 33 32 28 76 61 6c 75 65 2c  t.ToInt32(value,
0990: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
09a0: 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20  rentCulture);.. 
09b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65       }..      se
09c0: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
09d0: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d      if (value !=
09e0: 20 33 29 0d 0a 20 20 20 20 20 20 20 20 20 20 74   3)..          t
09f0: 68 72 6f 77 20 6e 65 77 20 4e 6f 74 53 75 70 70  hrow new NotSupp
0a00: 6f 72 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29  ortedException()
0a10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 69  ;....        thi
0a20: 73 5b 22 76 65 72 73 69 6f 6e 22 5d 20 3d 20 76  s["version"] = v
0a30: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
0a40: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
0a50: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0a60: 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68  /// Gets/Sets th
0a70: 65 20 73 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f  e synchronizatio
0a80: 6e 20 6d 6f 64 65 20 28 66 69 6c 65 20 66 6c 75  n mode (file flu
0a90: 73 68 69 6e 67 29 20 6f 66 20 74 68 65 20 63 6f  shing) of the co
0aa0: 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e  nnection string.
0ab0: 20 20 44 65 66 61 75 6c 74 20 69 73 20 22 4e 6f    Default is "No
0ac0: 72 6d 61 6c 22 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rmal"...    /// 
0ad0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0ae0: 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 53 79  [DisplayName("Sy
0af0: 6e 63 68 72 6f 6e 6f 75 73 22 29 5d 0d 0a 20 20  nchronous")]..  
0b00: 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75    [Browsable(tru
0b10: 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c  e)]..    [Defaul
0b20: 74 56 61 6c 75 65 28 53 79 6e 63 68 72 6f 6e 69  tValue(Synchroni
0b30: 7a 61 74 69 6f 6e 4d 6f 64 65 73 2e 4e 6f 72 6d  zationModes.Norm
0b40: 61 6c 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63  al)]..    public
0b50: 20 53 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e   Synchronization
0b60: 4d 6f 64 65 73 20 53 79 6e 63 4d 6f 64 65 0d 0a  Modes SyncMode..
0b70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
0b80: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
0b90: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b     object value;
0ba0: 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47 65 74  ..        TryGet
0bb0: 56 61 6c 75 65 28 22 73 79 6e 63 68 72 6f 6e 6f  Value("synchrono
0bc0: 75 73 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b  us", out value);
0bd0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61  ..        if (va
0be0: 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a  lue is string)..
0bf0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
0c00: 20 28 53 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f   (Synchronizatio
0c10: 6e 4d 6f 64 65 73 29 54 79 70 65 44 65 73 63 72  nModes)TypeDescr
0c20: 69 70 74 6f 72 2e 47 65 74 43 6f 6e 76 65 72 74  iptor.GetConvert
0c30: 65 72 28 74 79 70 65 6f 66 28 53 79 6e 63 68 72  er(typeof(Synchr
0c40: 6f 6e 69 7a 61 74 69 6f 6e 4d 6f 64 65 73 29 29  onizationModes))
0c50: 2e 43 6f 6e 76 65 72 74 46 72 6f 6d 28 76 61 6c  .ConvertFrom(val
0c60: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c  ue);..        el
0c70: 73 65 20 72 65 74 75 72 6e 20 28 53 79 6e 63 68  se return (Synch
0c80: 72 6f 6e 69 7a 61 74 69 6f 6e 4d 6f 64 65 73 29  ronizationModes)
0c90: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
0ca0: 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20  .      set..    
0cb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69    {..        thi
0cc0: 73 5b 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 5d  s["synchronous"]
0cd0: 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20   = value;..     
0ce0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
0cf0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0d00: 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74      /// Gets/Set
0d10: 73 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 66  s the encoding f
0d20: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
0d30: 6e 20 73 74 72 69 6e 67 2e 20 20 54 68 65 20 64  n string.  The d
0d40: 65 66 61 75 6c 74 20 69 73 20 22 46 61 6c 73 65  efault is "False
0d50: 22 20 77 68 69 63 68 20 69 6e 64 69 63 61 74 65  " which indicate
0d60: 73 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67  s UTF-8 encoding
0d70: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
0d80: 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77  mary>..    [Brow
0d90: 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20  sable(true)]..  
0da0: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
0db0: 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75 62  false)]..    pub
0dc0: 6c 69 63 20 62 6f 6f 6c 20 55 73 65 55 54 46 31  lic bool UseUTF1
0dd0: 36 45 6e 63 6f 64 69 6e 67 0d 0a 20 20 20 20 7b  6Encoding..    {
0de0: 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20  ..      get..   
0df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62     {..        ob
0e00: 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
0e10: 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75 65       TryGetValue
0e20: 28 22 75 73 65 75 74 66 31 36 65 6e 63 6f 64 69  ("useutf16encodi
0e30: 6e 67 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b  ng", out value);
0e40: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
0e50: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54   SQLiteConvert.T
0e60: 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75 65 29 3b  oBoolean(value);
0e70: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
0e80: 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   set..      {.. 
0e90: 20 20 20 20 20 20 20 74 68 69 73 5b 22 75 73 65         this["use
0ea0: 75 74 66 31 36 65 6e 63 6f 64 69 6e 67 22 5d 20  utf16encoding"] 
0eb0: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
0ec0: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
0ed0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0ee0: 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73     /// Gets/Sets
0ef0: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
0f00: 74 6f 20 75 73 65 20 63 6f 6e 6e 65 63 74 69 6f  to use connectio
0f10: 6e 20 70 6f 6f 6c 69 6e 67 2e 20 20 54 68 65 20  n pooling.  The 
0f20: 64 65 66 61 75 6c 74 20 69 73 20 22 46 61 6c 73  default is "Fals
0f30: 65 22 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e"..    /// </su
0f40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f  mmary>..    [Bro
0f50: 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20  wsable(true)].. 
0f60: 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65     [DefaultValue
0f70: 28 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75  (false)]..    pu
0f80: 62 6c 69 63 20 62 6f 6f 6c 20 50 6f 6f 6c 69 6e  blic bool Poolin
0f90: 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  g..    {..      
0fa0: 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  get..      {..  
0fb0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
0fc0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79  ue;..        Try
0fd0: 47 65 74 56 61 6c 75 65 28 22 70 6f 6f 6c 69 6e  GetValue("poolin
0fe0: 67 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d  g", out value);.
0ff0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
1000: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f  SQLiteConvert.To
1010: 42 6f 6f 6c 65 61 6e 28 76 61 6c 75 65 29 3b 0d  Boolean(value);.
1020: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
1030: 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  set..      {..  
1040: 20 20 20 20 20 20 74 68 69 73 5b 22 70 6f 6f 6c        this["pool
1050: 69 6e 67 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a  ing"] = value;..
1060: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
1070: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1080: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ry>..    /// Get
1090: 73 2f 53 65 74 73 20 77 68 65 74 68 6f 72 20 6e  s/Sets whethor n
10a0: 6f 74 20 74 6f 20 73 74 6f 72 65 20 47 55 49 44  ot to store GUID
10b0: 27 73 20 69 6e 20 62 69 6e 61 72 79 20 66 6f 72  's in binary for
10c0: 6d 61 74 2e 20 20 54 68 65 20 64 65 66 61 75 6c  mat.  The defaul
10d0: 74 20 69 73 20 54 72 75 65 0d 0a 20 20 20 20 2f  t is True..    /
10e0: 2f 2f 20 77 68 69 63 68 20 73 61 76 65 73 20 73  // which saves s
10f0: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
1100: 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  base...    /// <
1110: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
1120: 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d  Browsable(true)]
1130: 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61  ..    [DefaultVa
1140: 6c 75 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  lue(true)]..    
1150: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 42 69 6e 61  public bool Bina
1160: 72 79 47 55 49 44 0d 0a 20 20 20 20 7b 0d 0a 20  ryGUID..    {.. 
1170: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1180: 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  {..        objec
1190: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
11a0: 20 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 62    TryGetValue("b
11b0: 69 6e 61 72 79 67 75 69 64 22 2c 20 6f 75 74 20  inaryguid", out 
11c0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
11d0: 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f   return SQLiteCo
11e0: 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28  nvert.ToBoolean(
11f0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d  value);..      }
1200: 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20  ..      set..   
1210: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
1220: 69 73 5b 22 62 69 6e 61 72 79 67 75 69 64 22 5d  is["binaryguid"]
1230: 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20   = value;..     
1240: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
1250: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1260: 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74      /// Gets/Set
1270: 73 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 74  s the filename t
1280: 6f 20 6f 70 65 6e 20 6f 6e 20 74 68 65 20 63 6f  o open on the co
1290: 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e  nnection string.
12a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
12b0: 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c  ary>..    [Displ
12c0: 61 79 4e 61 6d 65 28 22 44 61 74 61 20 53 6f 75  ayName("Data Sou
12d0: 72 63 65 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f  rce")]..    [Bro
12e0: 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20  wsable(true)].. 
12f0: 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65     [DefaultValue
1300: 28 22 22 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  ("")]..    publi
1310: 63 20 73 74 72 69 6e 67 20 44 61 74 61 53 6f 75  c string DataSou
1320: 72 63 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  rce..    {..    
1330: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a    get..      {..
1340: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
1350: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54  alue;..        T
1360: 72 79 47 65 74 56 61 6c 75 65 28 22 64 61 74 61  ryGetValue("data
1370: 20 73 6f 75 72 63 65 22 2c 20 6f 75 74 20 76 61   source", out va
1380: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72  lue);..        r
1390: 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74  eturn value.ToSt
13a0: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 7d  ring();..      }
13b0: 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20  ..      set..   
13c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
13d0: 69 73 5b 22 64 61 74 61 20 73 6f 75 72 63 65 22  is["data source"
13e0: 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ] = value;..    
13f0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
1400: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1410: 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 61 6c 74 65  .    /// An alte
1420: 72 6e 61 74 65 20 74 6f 20 74 68 65 20 64 61 74  rnate to the dat
1430: 61 20 73 6f 75 72 63 65 20 70 72 6f 70 65 72 74  a source propert
1440: 79 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  y..    /// </sum
1450: 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77  mary>..    [Brow
1460: 73 61 62 6c 65 28 66 61 6c 73 65 29 5d 0d 0a 20  sable(false)].. 
1470: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
1480: 20 55 72 69 0d 0a 20 20 20 20 7b 0d 0a 20 20 20   Uri..    {..   
1490: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d     get..      {.
14a0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
14b0: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
14c0: 54 72 79 47 65 74 56 61 6c 75 65 28 22 75 72 69  TryGetValue("uri
14d0: 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  ", out value);..
14e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
14f0: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
1500: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
1510: 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   set..      {.. 
1520: 20 20 20 20 20 20 20 74 68 69 73 5b 22 75 72 69         this["uri
1530: 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  "] = value;..   
1540: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
1550: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1560: 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 61 6c 74  ..    /// An alt
1570: 65 72 6e 61 74 65 20 74 6f 20 74 68 65 20 64 61  ernate to the da
1580: 74 61 20 73 6f 75 72 63 65 20 70 72 6f 70 65 72  ta source proper
1590: 74 79 20 74 68 61 74 20 75 73 65 73 20 74 68 65  ty that uses the
15a0: 20 53 51 4c 69 74 65 20 55 52 49 20 73 79 6e 74   SQLite URI synt
15b0: 61 78 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ax...    /// </s
15c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72  ummary>..    [Br
15d0: 6f 77 73 61 62 6c 65 28 66 61 6c 73 65 29 5d 0d  owsable(false)].
15e0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69  .    public stri
15f0: 6e 67 20 46 75 6c 6c 55 72 69 0d 0a 20 20 20 20  ng FullUri..    
1600: 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
1610: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f      {..        o
1620: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20  bject value;..  
1630: 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75        TryGetValu
1640: 65 28 22 66 75 6c 6c 75 72 69 22 2c 20 6f 75 74  e("fulluri", out
1650: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
1660: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54    return value.T
1670: 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
1680: 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a    }..      set..
1690: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16a0: 20 74 68 69 73 5b 22 66 75 6c 6c 75 72 69 22 5d   this["fulluri"]
16b0: 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20   = value;..     
16c0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
16d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16e0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65 74      /// Gets/set
16f0: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 6f  s the default co
1700: 6d 6d 61 6e 64 20 74 69 6d 65 6f 75 74 20 66 6f  mmand timeout fo
1710: 72 20 6e 65 77 6c 79 2d 63 72 65 61 74 65 64 20  r newly-created 
1720: 63 6f 6d 6d 61 6e 64 73 2e 20 20 54 68 69 73 20  commands.  This 
1730: 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73  is especially us
1740: 65 66 75 6c 20 66 6f 72 20 0d 0a 20 20 20 20 2f  eful for ..    /
1750: 2f 2f 20 63 6f 6d 6d 61 6e 64 73 20 75 73 65 64  // commands used
1760: 20 69 6e 74 65 72 6e 61 6c 6c 79 20 73 75 63 68   internally such
1770: 20 61 73 20 69 6e 73 69 64 65 20 61 20 53 51 4c   as inside a SQL
1780: 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 2c 20  iteTransaction, 
1790: 77 68 65 72 65 20 73 65 74 74 69 6e 67 20 74 68  where setting th
17a0: 65 20 74 69 6d 65 6f 75 74 20 69 73 20 6e 6f 74  e timeout is not
17b0: 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20   possible...    
17c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17d0: 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65      [DisplayName
17e0: 28 22 44 65 66 61 75 6c 74 20 54 69 6d 65 6f 75  ("Default Timeou
17f0: 74 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  t")]..    [Brows
1800: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
1810: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 33   [DefaultValue(3
1820: 30 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  0)]..    public 
1830: 69 6e 74 20 44 65 66 61 75 6c 74 54 69 6d 65 6f  int DefaultTimeo
1840: 75 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ut..    {..     
1850: 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
1860: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
1870: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72  lue;..        Tr
1880: 79 47 65 74 56 61 6c 75 65 28 22 64 65 66 61 75  yGetValue("defau
1890: 6c 74 20 74 69 6d 65 6f 75 74 22 2c 20 6f 75 74  lt timeout", out
18a0: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
18b0: 20 20 72 65 74 75 72 6e 20 43 6f 6e 76 65 72 74    return Convert
18c0: 2e 54 6f 49 6e 74 33 32 28 76 61 6c 75 65 2c 20  .ToInt32(value, 
18d0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
18e0: 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20  entCulture);..  
18f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74      }..      set
1900: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1910: 20 20 20 74 68 69 73 5b 22 64 65 66 61 75 6c 74     this["default
1920: 20 74 69 6d 65 6f 75 74 22 5d 20 3d 20 76 61 6c   timeout"] = val
1930: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ue;..      }..  
1940: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
1950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1960: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
1970: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
1980: 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 6c 6c 20  connection will 
1990: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 70 61  automatically pa
19a0: 72 74 69 63 69 70 61 74 65 0d 0a 20 20 20 20 2f  rticipate..    /
19b0: 2f 2f 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  // in the curren
19c0: 74 20 64 69 73 74 72 69 62 75 74 65 64 20 74 72  t distributed tr
19d0: 61 6e 73 61 63 74 69 6f 6e 20 28 69 66 20 6f 6e  ansaction (if on
19e0: 65 20 65 78 69 73 74 73 29 0d 0a 20 20 20 20 2f  e exists)..    /
19f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1a00: 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72     [Browsable(tr
1a10: 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75  ue)]..    [Defau
1a20: 6c 74 56 61 6c 75 65 28 74 72 75 65 29 5d 0d 0a  ltValue(true)]..
1a30: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
1a40: 45 6e 6c 69 73 74 0d 0a 20 20 20 20 7b 0d 0a 20  Enlist..    {.. 
1a50: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
1a60: 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  {..        objec
1a70: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
1a80: 20 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 65    TryGetValue("e
1a90: 6e 6c 69 73 74 22 2c 20 6f 75 74 20 76 61 6c 75  nlist", out valu
1aa0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  e);..        ret
1ab0: 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  urn SQLiteConver
1ac0: 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75  t.ToBoolean(valu
1ad0: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e);..      }..  
1ae0: 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b      set..      {
1af0: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b 22  ..        this["
1b00: 65 6e 6c 69 73 74 22 5d 20 3d 20 76 61 6c 75 65  enlist"] = value
1b10: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
1b20: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
1b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1b40: 49 66 20 73 65 74 20 74 6f 20 74 72 75 65 2c 20  If set to true, 
1b50: 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 65 78  will throw an ex
1b60: 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20 64  ception if the d
1b70: 61 74 61 62 61 73 65 20 73 70 65 63 69 66 69 65  atabase specifie
1b80: 64 20 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  d in the connect
1b90: 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  ion..    /// str
1ba0: 69 6e 67 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ing does not exi
1bb0: 73 74 2e 20 20 49 66 20 66 61 6c 73 65 2c 20 74  st.  If false, t
1bc0: 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c  he database will
1bd0: 20 62 65 20 63 72 65 61 74 65 64 20 61 75 74 6f   be created auto
1be0: 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20  matically...    
1bf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1c00: 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74      [Browsable(t
1c10: 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61  rue)]..    [Defa
1c20: 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65 29 5d  ultValue(false)]
1c30: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
1c40: 6c 20 46 61 69 6c 49 66 4d 69 73 73 69 6e 67 0d  l FailIfMissing.
1c50: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
1c60: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
1c70: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
1c80: 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47 65  ;..        TryGe
1c90: 74 56 61 6c 75 65 28 22 66 61 69 6c 69 66 6d 69  tValue("failifmi
1ca0: 73 73 69 6e 67 22 2c 20 6f 75 74 20 76 61 6c 75  ssing", out valu
1cb0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  e);..        ret
1cc0: 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  urn SQLiteConver
1cd0: 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75  t.ToBoolean(valu
1ce0: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e);..      }..  
1cf0: 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b      set..      {
1d00: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b 22  ..        this["
1d10: 66 61 69 6c 69 66 6d 69 73 73 69 6e 67 22 5d 20  failifmissing"] 
1d20: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
1d30: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
1d40: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d50: 20 20 20 2f 2f 2f 20 49 66 20 65 6e 61 62 6c 65     /// If enable
1d60: 64 2c 20 75 73 65 73 20 74 68 65 20 6c 65 67 61  d, uses the lega
1d70: 63 79 20 33 2e 78 78 20 66 6f 72 6d 61 74 20 66  cy 3.xx format f
1d80: 6f 72 20 6d 61 78 69 6d 75 6d 20 63 6f 6d 70 61  or maximum compa
1d90: 74 69 62 69 6c 69 74 79 2c 20 62 75 74 20 72 65  tibility, but re
1da0: 73 75 6c 74 73 20 69 6e 20 6c 61 72 67 65 72 0d  sults in larger.
1db0: 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
1dc0: 65 20 73 69 7a 65 73 2e 0d 0a 20 20 20 20 2f 2f  e sizes...    //
1dd0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1de0: 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28 22    [DisplayName("
1df0: 4c 65 67 61 63 79 20 46 6f 72 6d 61 74 22 29 5d  Legacy Format")]
1e00: 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65  ..    [Browsable
1e10: 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65  (true)]..    [De
1e20: 66 61 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65  faultValue(false
1e30: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  )]..    public b
1e40: 6f 6f 6c 20 4c 65 67 61 63 79 46 6f 72 6d 61 74  ool LegacyFormat
1e50: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
1e60: 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  et..      {..   
1e70: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
1e80: 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47  e;..        TryG
1e90: 65 74 56 61 6c 75 65 28 22 6c 65 67 61 63 79 20  etValue("legacy 
1ea0: 66 6f 72 6d 61 74 22 2c 20 6f 75 74 20 76 61 6c  format", out val
1eb0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  ue);..        re
1ec0: 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65  turn SQLiteConve
1ed0: 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c  rt.ToBoolean(val
1ee0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ue);..      }.. 
1ef0: 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20       set..      
1f00: 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b  {..        this[
1f10: 22 6c 65 67 61 63 79 20 66 6f 72 6d 61 74 22 5d  "legacy format"]
1f20: 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20   = value;..     
1f30: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
1f40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1f50: 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 65 6e 61      /// When ena
1f60: 62 6c 65 64 2c 20 74 68 65 20 64 61 74 61 62 61  bled, the databa
1f70: 73 65 20 77 69 6c 6c 20 62 65 20 6f 70 65 6e 65  se will be opene
1f80: 64 20 66 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20  d for read-only 
1f90: 61 63 63 65 73 73 20 61 6e 64 20 77 72 69 74 69  access and writi
1fa0: 6e 67 20 77 69 6c 6c 20 62 65 20 64 69 73 61 62  ng will be disab
1fb0: 6c 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  led...    /// </
1fc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44  summary>..    [D
1fd0: 69 73 70 6c 61 79 4e 61 6d 65 28 22 52 65 61 64  isplayName("Read
1fe0: 20 4f 6e 6c 79 22 29 5d 0d 0a 20 20 20 20 5b 42   Only")]..    [B
1ff0: 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d  rowsable(true)].
2000: 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c  .    [DefaultVal
2010: 75 65 28 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20  ue(false)]..    
2020: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 61 64  public bool Read
2030: 4f 6e 6c 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  Only..    {..   
2040: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d     get..      {.
2050: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
2060: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
2070: 54 72 79 47 65 74 56 61 6c 75 65 28 22 72 65 61  TryGetValue("rea
2080: 64 20 6f 6e 6c 79 22 2c 20 6f 75 74 20 76 61 6c  d only", out val
2090: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  ue);..        re
20a0: 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65  turn SQLiteConve
20b0: 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c  rt.ToBoolean(val
20c0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ue);..      }.. 
20d0: 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20       set..      
20e0: 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b  {..        this[
20f0: 22 72 65 61 64 20 6f 6e 6c 79 22 5d 20 3d 20 76  "read only"] = v
2100: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
2110: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2120: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2130: 2f 2f 2f 20 47 65 74 73 2f 73 65 74 73 20 74 68  /// Gets/sets th
2140: 65 20 64 61 74 61 62 61 73 65 20 65 6e 63 72 79  e database encry
2150: 70 74 69 6f 6e 20 70 61 73 73 77 6f 72 64 0d 0a  ption password..
2160: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2170: 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62  y>..    [Browsab
2180: 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b  le(true)]..    [
2190: 50 61 73 73 77 6f 72 64 50 72 6f 70 65 72 74 79  PasswordProperty
21a0: 54 65 78 74 28 74 72 75 65 29 5d 0d 0a 20 20 20  Text(true)]..   
21b0: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 22   [DefaultValue("
21c0: 22 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ")]..    public 
21d0: 73 74 72 69 6e 67 20 50 61 73 73 77 6f 72 64 0d  string Password.
21e0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
21f0: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
2200: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
2210: 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47 65  ;..        TryGe
2220: 74 56 61 6c 75 65 28 22 70 61 73 73 77 6f 72 64  tValue("password
2230: 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  ", out value);..
2240: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
2250: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
2260: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
2270: 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   set..      {.. 
2280: 20 20 20 20 20 20 20 74 68 69 73 5b 22 70 61 73         this["pas
2290: 73 77 6f 72 64 22 5d 20 3d 20 76 61 6c 75 65 3b  sword"] = value;
22a0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
22b0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
22c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47  mary>..    /// G
22d0: 65 74 73 2f 73 65 74 73 20 74 68 65 20 64 61 74  ets/sets the dat
22e0: 61 62 61 73 65 20 65 6e 63 72 79 70 74 69 6f 6e  abase encryption
22f0: 20 68 65 78 61 64 65 63 69 6d 61 6c 20 70 61 73   hexadecimal pas
2300: 73 77 6f 72 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sword..    /// <
2310: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
2320: 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d  Browsable(true)]
2330: 0d 0a 20 20 20 20 5b 50 61 73 73 77 6f 72 64 50  ..    [PasswordP
2340: 72 6f 70 65 72 74 79 54 65 78 74 28 74 72 75 65  ropertyText(true
2350: 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74  )]..    [Default
2360: 56 61 6c 75 65 28 6e 75 6c 6c 29 5d 0d 0a 20 20  Value(null)]..  
2370: 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20    public byte[] 
2380: 48 65 78 50 61 73 73 77 6f 72 64 0d 0a 20 20 20  HexPassword..   
2390: 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65 74 0d   {..        get.
23a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
23b0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
23c0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
23d0: 20 20 20 20 20 69 66 20 28 54 72 79 47 65 74 56       if (TryGetV
23e0: 61 6c 75 65 28 22 68 65 78 70 61 73 73 77 6f 72  alue("hexpasswor
23f0: 64 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  d", out value)).
2400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2420: 69 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72  if (value is str
2430: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
2440: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2450: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
2460: 6e 2e 46 72 6f 6d 48 65 78 53 74 72 69 6e 67 28  n.FromHexString(
2470: 28 73 74 72 69 6e 67 29 76 61 6c 75 65 29 3b 0d  (string)value);.
2480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2490: 20 65 6c 73 65 20 69 66 20 28 76 61 6c 75 65 20   else if (value 
24a0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
24b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24c0: 74 75 72 6e 20 28 62 79 74 65 5b 5d 29 76 61 6c  turn (byte[])val
24d0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
24e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
24f0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
2500: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2510: 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20     set..        
2520: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
2530: 68 69 73 5b 22 68 65 78 70 61 73 73 77 6f 72 64  his["hexpassword
2540: 22 5d 20 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  "] = SQLiteConne
2550: 63 74 69 6f 6e 2e 54 6f 48 65 78 53 74 72 69 6e  ction.ToHexStrin
2560: 67 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  g(value);..     
2570: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
2580: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2590: 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53  ..    /// Gets/S
25a0: 65 74 73 20 74 68 65 20 70 61 67 65 20 73 69 7a  ets the page siz
25b0: 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  e for the connec
25c0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
25d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
25e0: 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 50 61 67  DisplayName("Pag
25f0: 65 20 53 69 7a 65 22 29 5d 0d 0a 20 20 20 20 5b  e Size")]..    [
2600: 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d  Browsable(true)]
2610: 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61  ..    [DefaultVa
2620: 6c 75 65 28 31 30 32 34 29 5d 0d 0a 20 20 20 20  lue(1024)]..    
2630: 70 75 62 6c 69 63 20 69 6e 74 20 50 61 67 65 53  public int PageS
2640: 69 7a 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ize..    {..    
2650: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a    get..      {..
2660: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
2670: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54  alue;..        T
2680: 72 79 47 65 74 56 61 6c 75 65 28 22 70 61 67 65  ryGetValue("page
2690: 20 73 69 7a 65 22 2c 20 6f 75 74 20 76 61 6c 75   size", out valu
26a0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  e);..        ret
26b0: 75 72 6e 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e  urn Convert.ToIn
26c0: 74 33 32 28 76 61 6c 75 65 2c 20 43 75 6c 74 75  t32(value, Cultu
26d0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
26e0: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 7d  lture);..      }
26f0: 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20  ..      set..   
2700: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68     {..        th
2710: 69 73 5b 22 70 61 67 65 20 73 69 7a 65 22 5d 20  is["page size"] 
2720: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
2730: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
2740: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2750: 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73     /// Gets/Sets
2760: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
2770: 62 65 72 20 6f 66 20 70 61 67 65 73 20 74 68 65  ber of pages the
2780: 20 64 61 74 61 62 61 73 65 20 6d 61 79 20 68 6f   database may ho
2790: 6c 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ld..    /// </su
27a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73  mmary>..    [Dis
27b0: 70 6c 61 79 4e 61 6d 65 28 22 4d 61 78 20 50 61  playName("Max Pa
27c0: 67 65 20 43 6f 75 6e 74 22 29 5d 0d 0a 20 20 20  ge Count")]..   
27d0: 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65   [Browsable(true
27e0: 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74  )]..    [Default
27f0: 56 61 6c 75 65 28 30 29 5d 0d 0a 20 20 20 20 70  Value(0)]..    p
2800: 75 62 6c 69 63 20 69 6e 74 20 4d 61 78 50 61 67  ublic int MaxPag
2810: 65 43 6f 75 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20  eCount..    {.. 
2820: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2830: 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  {..        objec
2840: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
2850: 20 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 6d    TryGetValue("m
2860: 61 78 20 70 61 67 65 20 63 6f 75 6e 74 22 2c 20  ax page count", 
2870: 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  out value);..   
2880: 20 20 20 20 20 72 65 74 75 72 6e 20 43 6f 6e 76       return Conv
2890: 65 72 74 2e 54 6f 49 6e 74 33 32 28 76 61 6c 75  ert.ToInt32(valu
28a0: 65 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43  e, CultureInfo.C
28b0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d  urrentCulture);.
28c0: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
28d0: 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  set..      {..  
28e0: 20 20 20 20 20 20 74 68 69 73 5b 22 6d 61 78 20        this["max 
28f0: 70 61 67 65 20 63 6f 75 6e 74 22 5d 20 3d 20 76  page count"] = v
2900: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
2910: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2920: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2930: 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68  /// Gets/Sets th
2940: 65 20 63 61 63 68 65 20 73 69 7a 65 20 66 6f 72  e cache size for
2950: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
2960: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2970: 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c  ary>..    [Displ
2980: 61 79 4e 61 6d 65 28 22 43 61 63 68 65 20 53 69  ayName("Cache Si
2990: 7a 65 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77  ze")]..    [Brow
29a0: 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20  sable(true)]..  
29b0: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
29c0: 32 30 30 30 29 5d 0d 0a 20 20 20 20 70 75 62 6c  2000)]..    publ
29d0: 69 63 20 69 6e 74 20 43 61 63 68 65 53 69 7a 65  ic int CacheSize
29e0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67  ..    {..      g
29f0: 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  et..      {..   
2a00: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
2a10: 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47  e;..        TryG
2a20: 65 74 56 61 6c 75 65 28 22 63 61 63 68 65 20 73  etValue("cache s
2a30: 69 7a 65 22 2c 20 6f 75 74 20 76 61 6c 75 65 29  ize", out value)
2a40: 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
2a50: 6e 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33  n Convert.ToInt3
2a60: 32 28 76 61 6c 75 65 2c 20 43 75 6c 74 75 72 65  2(value, Culture
2a70: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
2a80: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ure);..      }..
2a90: 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20        set..     
2aa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
2ab0: 5b 22 63 61 63 68 65 20 73 69 7a 65 22 5d 20 3d  ["cache size"] =
2ac0: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d   value;..      }
2ad0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
2ae0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2af0: 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20    /// Gets/Sets 
2b00: 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72  the DateTime for
2b10: 6d 61 74 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  mat for the conn
2b20: 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  ection...    ///
2b30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2b40: 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65   [Browsable(true
2b50: 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74  )]..    [Default
2b60: 56 61 6c 75 65 28 53 51 4c 69 74 65 44 61 74 65  Value(SQLiteDate
2b70: 46 6f 72 6d 61 74 73 2e 44 65 66 61 75 6c 74 29  Formats.Default)
2b80: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51  ]..    public SQ
2b90: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
2ba0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 0d 0a  DateTimeFormat..
2bb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67      {..        g
2bc0: 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  et..        {.. 
2bd0: 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
2be0: 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  t value;....    
2bf0: 20 20 20 20 20 20 20 20 69 66 20 28 54 72 79 47          if (TryG
2c00: 65 74 56 61 6c 75 65 28 22 64 61 74 65 74 69 6d  etValue("datetim
2c10: 65 66 6f 72 6d 61 74 22 2c 20 6f 75 74 20 76 61  eformat", out va
2c20: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
2c30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c40: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
2c50: 69 73 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  is SQLiteDateFor
2c60: 6d 61 74 73 29 0d 0a 20 20 20 20 20 20 20 20 20  mats)..         
2c70: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2c80: 6e 20 28 53 51 4c 69 74 65 44 61 74 65 46 6f 72  n (SQLiteDateFor
2c90: 6d 61 74 73 29 76 61 6c 75 65 3b 0d 0a 20 20 20  mats)value;..   
2ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
2cb0: 65 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e  e if (value != n
2cc0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2cd0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ce0: 20 28 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d   (SQLiteDateForm
2cf0: 61 74 73 29 54 79 70 65 44 65 73 63 72 69 70 74  ats)TypeDescript
2d00: 6f 72 2e 47 65 74 43 6f 6e 76 65 72 74 65 72 28  or.GetConverter(
2d10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d20: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
2d30: 28 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61  (SQLiteDateForma
2d40: 74 73 29 29 2e 43 6f 6e 76 65 72 74 46 72 6f 6d  ts)).ConvertFrom
2d50: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
2d60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2d70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
2d80: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e  LiteDateFormats.
2d90: 44 65 66 61 75 6c 74 3b 0d 0a 20 20 20 20 20 20  Default;..      
2da0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74    }..        set
2db0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2dc0: 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 64           this["d
2dd0: 61 74 65 74 69 6d 65 66 6f 72 6d 61 74 22 5d 20  atetimeformat"] 
2de0: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
2df0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
2e00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2e10: 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65  .    /// Gets/Se
2e20: 74 73 20 74 68 65 20 44 61 74 65 54 69 6d 65 20  ts the DateTime 
2e30: 6b 69 6e 64 20 66 6f 72 20 74 68 65 20 63 6f 6e  kind for the con
2e40: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
2e50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2e60: 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75    [Browsable(tru
2e70: 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c  e)]..    [Defaul
2e80: 74 56 61 6c 75 65 28 44 61 74 65 54 69 6d 65 4b  tValue(DateTimeK
2e90: 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65 64 29  ind.Unspecified)
2ea0: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61  ]..    public Da
2eb0: 74 65 54 69 6d 65 4b 69 6e 64 20 44 61 74 65 54  teTimeKind DateT
2ec0: 69 6d 65 4b 69 6e 64 0d 0a 20 20 20 20 7b 0d 0a  imeKind..    {..
2ed0: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
2ee0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2ef0: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
2f00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f10: 20 69 66 20 28 54 72 79 47 65 74 56 61 6c 75 65   if (TryGetValue
2f20: 28 22 64 61 74 65 74 69 6d 65 6b 69 6e 64 22 2c  ("datetimekind",
2f30: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
2f40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2f60: 28 76 61 6c 75 65 20 69 73 20 44 61 74 65 54 69  (value is DateTi
2f70: 6d 65 4b 69 6e 64 29 0d 0a 20 20 20 20 20 20 20  meKind)..       
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2f90: 75 72 6e 20 28 44 61 74 65 54 69 6d 65 4b 69 6e  urn (DateTimeKin
2fa0: 64 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  d)value;..      
2fb0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
2fc0: 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
2fd0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2fe0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44         return (D
2ff0: 61 74 65 54 69 6d 65 4b 69 6e 64 29 54 79 70 65  ateTimeKind)Type
3000: 44 65 73 63 72 69 70 74 6f 72 2e 47 65 74 43 6f  Descriptor.GetCo
3010: 6e 76 65 72 74 65 72 28 0d 0a 20 20 20 20 20 20  nverter(..      
3020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3030: 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d    typeof(DateTim
3040: 65 4b 69 6e 64 29 29 2e 43 6f 6e 76 65 72 74 46  eKind)).ConvertF
3050: 72 6f 6d 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  rom(value);..   
3060: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3070: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3080: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e   DateTimeKind.Un
3090: 73 70 65 63 69 66 69 65 64 3b 0d 0a 20 20 20 20  specified;..    
30a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73      }..        s
30b0: 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  et..        {.. 
30c0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 5b             this[
30d0: 22 64 61 74 65 74 69 6d 65 6b 69 6e 64 22 5d 20  "datetimekind"] 
30e0: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
30f0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
3100: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3110: 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65  .    /// Gets/se
3120: 74 73 20 74 68 65 20 44 61 74 65 54 69 6d 65 20  ts the DateTime 
3130: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 75 73  format string us
3140: 65 64 20 66 6f 72 20 66 6f 72 6d 61 74 74 69 6e  ed for formattin
3150: 67 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 70  g..    /// and p
3160: 61 72 73 69 6e 67 20 70 75 72 70 6f 73 65 73 2e  arsing purposes.
3170: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
3180: 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77 73  ary>..    [Brows
3190: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
31a0: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 6e   [DefaultValue(n
31b0: 75 6c 6c 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  ull)]..    publi
31c0: 63 20 73 74 72 69 6e 67 20 44 61 74 65 54 69 6d  c string DateTim
31d0: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20  eFormatString.. 
31e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65     {..        ge
31f0: 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
3200: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
3210: 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20   value;....     
3220: 20 20 20 20 20 20 20 69 66 20 28 54 72 79 47 65         if (TryGe
3230: 74 56 61 6c 75 65 28 22 64 61 74 65 74 69 6d 65  tValue("datetime
3240: 66 6f 72 6d 61 74 73 74 72 69 6e 67 22 2c 20 6f  formatstring", o
3250: 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
3260: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3270: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
3280: 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29 0d  alue is string).
3290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32a0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 73 74 72       return (str
32b0: 69 6e 67 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ing)value;..    
32c0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
32d0: 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
32e0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
32f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3300: 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29  value.ToString()
3310: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
3320: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3330: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
3340: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3350: 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   set..        {.
3360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
3370: 73 5b 22 64 61 74 65 74 69 6d 65 66 6f 72 6d 61  s["datetimeforma
3380: 74 73 74 72 69 6e 67 22 5d 20 3d 20 76 61 6c 75  tstring"] = valu
3390: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
33a0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
33b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
33c0: 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68 65  // Gets/Sets the
33d0: 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 62 61 73   placeholder bas
33e0: 65 20 73 63 68 65 6d 61 20 6e 61 6d 65 20 75 73  e schema name us
33f0: 65 64 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20  ed for..    /// 
3400: 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63  .NET Framework c
3410: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 70 75 72  ompatibility pur
3420: 70 6f 73 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  poses...    /// 
3430: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3440: 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29  [Browsable(true)
3450: 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56  ]..    [DefaultV
3460: 61 6c 75 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65  alue(SQLiteConne
3470: 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 42 61 73  ction.DefaultBas
3480: 65 53 63 68 65 6d 61 4e 61 6d 65 29 5d 0d 0a 20  eSchemaName)].. 
3490: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
34a0: 20 42 61 73 65 53 63 68 65 6d 61 4e 61 6d 65 0d   BaseSchemaName.
34b0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
34c0: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  get..        {..
34d0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
34e0: 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ct value;....   
34f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 54 72 79           if (Try
3500: 47 65 74 56 61 6c 75 65 28 22 62 61 73 65 73 63  GetValue("basesc
3510: 68 65 6d 61 6e 61 6d 65 22 2c 20 6f 75 74 20 76  hemaname", out v
3520: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
3530: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3540: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
3550: 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
3560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3570: 20 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29   return (string)
3580: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
3590: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
35a0: 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
35b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35c0: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
35d0: 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  e.ToString();.. 
35e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
35f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3600: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
3610: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74    }..        set
3620: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
3630: 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 62           this["b
3640: 61 73 65 73 63 68 65 6d 61 6e 61 6d 65 22 5d 20  aseschemaname"] 
3650: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
3660: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
3670: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
3680: 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
3690: 6e 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20 68  nes how SQLite h
36a0: 61 6e 64 6c 65 73 20 74 68 65 20 74 72 61 6e 73  andles the trans
36b0: 61 63 74 69 6f 6e 20 6a 6f 75 72 6e 61 6c 20 66  action journal f
36c0: 69 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ile...    /// </
36d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42  summary>..    [B
36e0: 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d  rowsable(true)].
36f0: 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c  .    [DefaultVal
3700: 75 65 28 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c  ue(SQLiteJournal
3710: 4d 6f 64 65 45 6e 75 6d 2e 44 65 66 61 75 6c 74  ModeEnum.Default
3720: 29 5d 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79  )]..    [Display
3730: 4e 61 6d 65 28 22 4a 6f 75 72 6e 61 6c 20 4d 6f  Name("Journal Mo
3740: 64 65 22 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  de")]..    publi
3750: 63 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d  c SQLiteJournalM
3760: 6f 64 65 45 6e 75 6d 20 4a 6f 75 72 6e 61 6c 4d  odeEnum JournalM
3770: 6f 64 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ode..    {..    
3780: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a    get..      {..
3790: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
37a0: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54  alue;..        T
37b0: 72 79 47 65 74 56 61 6c 75 65 28 22 6a 6f 75 72  ryGetValue("jour
37c0: 6e 61 6c 20 6d 6f 64 65 22 2c 20 6f 75 74 20 76  nal mode", out v
37d0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
37e0: 69 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72  if (value is str
37f0: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
3800: 72 65 74 75 72 6e 20 28 53 51 4c 69 74 65 4a 6f  return (SQLiteJo
3810: 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 29 54 79  urnalModeEnum)Ty
3820: 70 65 44 65 73 63 72 69 70 74 6f 72 2e 47 65 74  peDescriptor.Get
3830: 43 6f 6e 76 65 72 74 65 72 28 74 79 70 65 6f 66  Converter(typeof
3840: 28 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f  (SQLiteJournalMo
3850: 64 65 45 6e 75 6d 29 29 2e 43 6f 6e 76 65 72 74  deEnum)).Convert
3860: 46 72 6f 6d 28 76 61 6c 75 65 29 3b 0d 0a 20 20  From(value);..  
3870: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
3880: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 53 51        return (SQ
3890: 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45  LiteJournalModeE
38a0: 6e 75 6d 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  num)value;..    
38b0: 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a    }..      set..
38c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
38d0: 20 74 68 69 73 5b 22 6a 6f 75 72 6e 61 6c 20 6d   this["journal m
38e0: 6f 64 65 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a  ode"] = value;..
38f0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
3900: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
3910: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74  ry>..    /// Set
3920: 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 69 73  s the default is
3930: 6f 6c 61 74 69 6f 6e 20 6c 65 76 65 6c 20 66 6f  olation level fo
3940: 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f  r transactions o
3950: 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  n the connection
3960: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
3970: 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77  mary>..    [Brow
3980: 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20  sable(true)]..  
3990: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
39a0: 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 2e 53  IsolationLevel.S
39b0: 65 72 69 61 6c 69 7a 61 62 6c 65 29 5d 0d 0a 20  erializable)].. 
39c0: 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28     [DisplayName(
39d0: 22 44 65 66 61 75 6c 74 20 49 73 6f 6c 61 74 69  "Default Isolati
39e0: 6f 6e 20 4c 65 76 65 6c 22 29 5d 0d 0a 20 20 20  on Level")]..   
39f0: 20 70 75 62 6c 69 63 20 49 73 6f 6c 61 74 69 6f   public Isolatio
3a00: 6e 4c 65 76 65 6c 20 44 65 66 61 75 6c 74 49 73  nLevel DefaultIs
3a10: 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 0d 0a 20 20  olationLevel..  
3a20: 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a    {..      get..
3a30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3a40: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a   object value;..
3a50: 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56 61          TryGetVa
3a60: 6c 75 65 28 22 64 65 66 61 75 6c 74 20 69 73 6f  lue("default iso
3a70: 6c 61 74 69 6f 6e 6c 65 76 65 6c 22 2c 20 6f 75  lationlevel", ou
3a80: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
3a90: 20 20 20 69 66 20 28 76 61 6c 75 65 20 69 73 20     if (value is 
3aa0: 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  string)..       
3ab0: 20 20 20 72 65 74 75 72 6e 20 28 49 73 6f 6c 61     return (Isola
3ac0: 74 69 6f 6e 4c 65 76 65 6c 29 54 79 70 65 44 65  tionLevel)TypeDe
3ad0: 73 63 72 69 70 74 6f 72 2e 47 65 74 43 6f 6e 76  scriptor.GetConv
3ae0: 65 72 74 65 72 28 74 79 70 65 6f 66 28 49 73 6f  erter(typeof(Iso
3af0: 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 29 2e 43 6f  lationLevel)).Co
3b00: 6e 76 65 72 74 46 72 6f 6d 28 76 61 6c 75 65 29  nvertFrom(value)
3b10: 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d  ;..        else.
3b20: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
3b30: 6e 20 28 49 73 6f 6c 61 74 69 6f 6e 4c 65 76 65  n (IsolationLeve
3b40: 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
3b50: 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20  }..      set..  
3b60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74      {..        t
3b70: 68 69 73 5b 22 64 65 66 61 75 6c 74 20 69 73 6f  his["default iso
3b80: 6c 61 74 69 6f 6e 6c 65 76 65 6c 22 5d 20 3d 20  lationlevel"] = 
3b90: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
3ba0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
3bb0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3bc0: 20 2f 2f 2f 20 49 66 20 65 6e 61 62 6c 65 64 2c   /// If enabled,
3bd0: 20 75 73 65 20 66 6f 72 65 69 67 6e 20 6b 65 79   use foreign key
3be0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20   constraints..  
3bf0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3c00: 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61  ..    [DisplayNa
3c10: 6d 65 28 22 46 6f 72 65 69 67 6e 20 4b 65 79 73  me("Foreign Keys
3c20: 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ")]..    [Browsa
3c30: 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  ble(true)]..    
3c40: 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 66 61  [DefaultValue(fa
3c50: 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  lse)]..    publi
3c60: 63 20 62 6f 6f 6c 20 46 6f 72 65 69 67 6e 4b 65  c bool ForeignKe
3c70: 79 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ys..    {..     
3c80: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3c90: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  {..            o
3ca0: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20  bject value;..  
3cb0: 20 20 20 20 20 20 20 20 20 20 54 72 79 47 65 74            TryGet
3cc0: 56 61 6c 75 65 28 22 66 6f 72 65 69 67 6e 20 6b  Value("foreign k
3cd0: 65 79 73 22 2c 20 6f 75 74 20 76 61 6c 75 65 29  eys", out value)
3ce0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
3cf0: 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76  eturn SQLiteConv
3d00: 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61  ert.ToBoolean(va
3d10: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  lue);..        }
3d20: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 0d 0a 20  ..        set.. 
3d30: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3d40: 20 20 20 20 20 20 74 68 69 73 5b 22 66 6f 72 65        this["fore
3d50: 69 67 6e 20 6b 65 79 73 22 5d 20 3d 20 76 61 6c  ign keys"] = val
3d60: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
3d70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
3d80: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3d90: 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68  /// Gets/Sets th
3da0: 65 20 65 78 74 72 61 20 62 65 68 61 76 69 6f 72  e extra behavior
3db0: 61 6c 20 66 6c 61 67 73 2e 0d 0a 20 20 20 20 2f  al flags...    /
3dc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3dd0: 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72     [Browsable(tr
3de0: 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75  ue)]..    [Defau
3df0: 6c 74 56 61 6c 75 65 28 53 51 4c 69 74 65 43 6f  ltValue(SQLiteCo
3e00: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 44 65  nnectionFlags.De
3e10: 66 61 75 6c 74 29 5d 0d 0a 20 20 20 20 70 75 62  fault)]..    pub
3e20: 6c 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  lic SQLiteConnec
3e30: 74 69 6f 6e 46 6c 61 67 73 20 46 6c 61 67 73 0d  tionFlags Flags.
3e40: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
3e50: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  get..        {..
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
3e70: 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ct value;....   
3e80: 20 20 20 20 20 20 20 20 20 69 66 20 28 54 72 79           if (Try
3e90: 47 65 74 56 61 6c 75 65 28 22 66 6c 61 67 73 22  GetValue("flags"
3ea0: 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
3eb0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3ed0: 20 28 76 61 6c 75 65 20 69 73 20 53 51 4c 69 74   (value is SQLit
3ee0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
3ef0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3f00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 53         return (S
3f10: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
3f20: 6c 61 67 73 29 76 61 6c 75 65 3b 0d 0a 20 20 20  lags)value;..   
3f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
3f40: 65 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e  e if (value != n
3f50: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3f60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3f70: 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69   (SQLiteConnecti
3f80: 6f 6e 46 6c 61 67 73 29 54 79 70 65 44 65 73 63  onFlags)TypeDesc
3f90: 72 69 70 74 6f 72 2e 47 65 74 43 6f 6e 76 65 72  riptor.GetConver
3fa0: 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
3fc0: 70 65 6f 66 28 53 51 4c 69 74 65 43 6f 6e 6e 65  peof(SQLiteConne
3fd0: 63 74 69 6f 6e 46 6c 61 67 73 29 29 2e 43 6f 6e  ctionFlags)).Con
3fe0: 76 65 72 74 46 72 6f 6d 28 76 61 6c 75 65 29 3b  vertFrom(value);
3ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
4000: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
4010: 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 6e  eturn SQLiteConn
4020: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 44 65 66 61  ectionFlags.Defa
4030: 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ult;..        }.
4040: 0a 20 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20  .        set..  
4050: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4060: 20 20 20 20 20 74 68 69 73 5b 22 66 6c 61 67 73       this["flags
4070: 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  "] = value;..   
4080: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
4090: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
40a0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 65  y>..    /// If e
40b0: 6e 61 62 6c 65 64 2c 20 61 70 70 6c 79 20 74 68  nabled, apply th
40c0: 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63  e default connec
40d0: 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 74 6f  tion settings to
40e0: 20 6f 70 65 6e 65 64 20 64 61 74 61 62 61 73 65   opened database
40f0: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
4100: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73  mmary>..    [Dis
4110: 70 6c 61 79 4e 61 6d 65 28 22 53 65 74 44 65 66  playName("SetDef
4120: 61 75 6c 74 73 22 29 5d 0d 0a 20 20 20 20 5b 42  aults")]..    [B
4130: 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d  rowsable(true)].
4140: 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c  .    [DefaultVal
4150: 75 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 70  ue(true)]..    p
4160: 75 62 6c 69 63 20 62 6f 6f 6c 20 53 65 74 44 65  ublic bool SetDe
4170: 66 61 75 6c 74 73 0d 0a 20 20 20 20 7b 0d 0a 20  faults..    {.. 
4180: 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
4190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
41a0: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b     object value;
41b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72  ..            Tr
41c0: 79 47 65 74 56 61 6c 75 65 28 22 73 65 74 64 65  yGetValue("setde
41d0: 66 61 75 6c 74 73 22 2c 20 6f 75 74 20 76 61 6c  faults", out val
41e0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
41f0: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43    return SQLiteC
4200: 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e  onvert.ToBoolean
4210: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
4220: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74    }..        set
4230: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4240: 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 73           this["s
4250: 65 74 64 65 66 61 75 6c 74 73 22 5d 20 3d 20 76  etdefaults"] = v
4260: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alue;..        }
4270: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
4280: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4290: 20 20 2f 2f 2f 20 49 66 20 65 6e 61 62 6c 65 64    /// If enabled
42a0: 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 72 65 73  , attempt to res
42b0: 6f 6c 76 65 20 74 68 65 20 70 72 6f 76 69 64 65  olve the provide
42c0: 64 20 64 61 74 61 20 73 6f 75 72 63 65 20 66 69  d data source fi
42d0: 6c 65 20 6e 61 6d 65 20 74 6f 20 61 0d 0a 20 20  le name to a..  
42e0: 20 20 2f 2f 2f 20 66 75 6c 6c 20 70 61 74 68 20    /// full path 
42f0: 62 65 66 6f 72 65 20 6f 70 65 6e 69 6e 67 2e 0d  before opening..
4300: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
4310: 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61  ry>..    [Displa
4320: 79 4e 61 6d 65 28 22 54 6f 46 75 6c 6c 50 61 74  yName("ToFullPat
4330: 68 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  h")]..    [Brows
4340: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
4350: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 74   [DefaultValue(t
4360: 72 75 65 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  rue)]..    publi
4370: 63 20 62 6f 6f 6c 20 54 6f 46 75 6c 6c 50 61 74  c bool ToFullPat
4380: 68 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  h..    {..      
4390: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    get..        {
43a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62  ..            ob
43b0: 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
43c0: 20 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56           TryGetV
43d0: 61 6c 75 65 28 22 74 6f 66 75 6c 6c 70 61 74 68  alue("tofullpath
43e0: 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  ", out value);..
43f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4400: 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  rn SQLiteConvert
4410: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75 65  .ToBoolean(value
4420: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
4430: 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20         set..    
4440: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4450: 20 20 20 74 68 69 73 5b 22 74 6f 66 75 6c 6c 70     this["tofullp
4460: 61 74 68 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a  ath"] = value;..
4470: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
4480: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
4490: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 48  mary>..    /// H
44a0: 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 66  elper function f
44b0: 6f 72 20 72 65 74 72 69 65 76 69 6e 67 20 76 61  or retrieving va
44c0: 6c 75 65 73 20 66 72 6f 6d 20 74 68 65 20 63 6f  lues from the co
44d0: 6e 6e 65 63 74 69 6f 6e 73 74 72 69 6e 67 0d 0a  nnectionstring..
44e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
44f0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
4500: 61 6d 20 6e 61 6d 65 3d 22 6b 65 79 77 6f 72 64  am name="keyword
4510: 22 3e 54 68 65 20 6b 65 79 77 6f 72 64 20 74 6f  ">The keyword to
4520: 20 72 65 74 72 69 65 76 65 20 73 65 74 74 69 6e   retrieve settin
4530: 67 73 20 66 6f 72 3c 2f 70 61 72 61 6d 3e 0d 0a  gs for</param>..
4540: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4550: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20  ame="value">The 
4560: 72 65 73 75 6c 74 69 6e 67 20 70 61 72 61 6d 65  resulting parame
4570: 74 65 72 20 76 61 6c 75 65 3c 2f 70 61 72 61 6d  ter value</param
4580: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
4590: 72 6e 73 3e 52 65 74 75 72 6e 73 20 74 72 75 65  rns>Returns true
45a0: 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 77 61   if the value wa
45b0: 73 20 66 6f 75 6e 64 20 61 6e 64 20 72 65 74 75  s found and retu
45c0: 72 6e 65 64 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  rned</returns>..
45d0: 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
45e0: 69 64 65 20 62 6f 6f 6c 20 54 72 79 47 65 74 56  ide bool TryGetV
45f0: 61 6c 75 65 28 73 74 72 69 6e 67 20 6b 65 79 77  alue(string keyw
4600: 6f 72 64 2c 20 6f 75 74 20 6f 62 6a 65 63 74 20  ord, out object 
4610: 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  value)..    {.. 
4620: 20 20 20 20 20 62 6f 6f 6c 20 62 20 3d 20 62 61       bool b = ba
4630: 73 65 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6b  se.TryGetValue(k
4640: 65 79 77 6f 72 64 2c 20 6f 75 74 20 76 61 6c 75  eyword, out valu
4650: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20  e);....      if 
4660: 28 21 5f 70 72 6f 70 65 72 74 69 65 73 2e 43 6f  (!_properties.Co
4670: 6e 74 61 69 6e 73 4b 65 79 28 6b 65 79 77 6f 72  ntainsKey(keywor
4680: 64 29 29 20 72 65 74 75 72 6e 20 62 3b 0d 0a 0d  d)) return b;...
4690: 0a 20 20 20 20 20 20 50 72 6f 70 65 72 74 79 44  .      PropertyD
46a0: 65 73 63 72 69 70 74 6f 72 20 70 64 20 3d 20 5f  escriptor pd = _
46b0: 70 72 6f 70 65 72 74 69 65 73 5b 6b 65 79 77 6f  properties[keywo
46c0: 72 64 5d 20 61 73 20 50 72 6f 70 65 72 74 79 44  rd] as PropertyD
46d0: 65 73 63 72 69 70 74 6f 72 3b 0d 0a 0d 0a 20 20  escriptor;....  
46e0: 20 20 20 20 69 66 20 28 70 64 20 3d 3d 20 6e 75      if (pd == nu
46f0: 6c 6c 29 20 72 65 74 75 72 6e 20 62 3b 0d 0a 0d  ll) return b;...
4700: 0a 20 20 20 20 20 20 2f 2f 20 41 74 74 65 6d 70  .      // Attemp
4710: 74 20 74 6f 20 63 6f 65 72 63 65 20 74 68 65 20  t to coerce the 
4720: 76 61 6c 75 65 20 69 6e 74 6f 20 73 6f 6d 65 74  value into somet
4730: 68 69 6e 67 20 6d 6f 72 65 20 73 6f 6c 69 64 0d  hing more solid.
4740: 0a 20 20 20 20 20 20 69 66 20 28 62 29 0d 0a 20  .      if (b).. 
4750: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4760: 69 66 20 28 70 64 2e 50 72 6f 70 65 72 74 79 54  if (pd.PropertyT
4770: 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 42 6f  ype == typeof(Bo
4780: 6f 6c 65 61 6e 29 29 0d 0a 20 20 20 20 20 20 20  olean))..       
4790: 20 20 20 76 61 6c 75 65 20 3d 20 53 51 4c 69 74     value = SQLit
47a0: 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65  eConvert.ToBoole
47b0: 61 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  an(value);..    
47c0: 20 20 20 20 65 6c 73 65 20 69 66 20 28 70 64 2e      else if (pd.
47d0: 50 72 6f 70 65 72 74 79 54 79 70 65 20 21 3d 20  PropertyType != 
47e0: 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 0d  typeof(byte[])).
47f0: 0a 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65  .          value
4800: 20 3d 20 54 79 70 65 44 65 73 63 72 69 70 74 6f   = TypeDescripto
4810: 72 2e 47 65 74 43 6f 6e 76 65 72 74 65 72 28 70  r.GetConverter(p
4820: 64 2e 50 72 6f 70 65 72 74 79 54 79 70 65 29 2e  d.PropertyType).
4830: 43 6f 6e 76 65 72 74 46 72 6f 6d 28 76 61 6c 75  ConvertFrom(valu
4840: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e);..      }..  
4850: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
4860: 7b 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75  {..        Defau
4870: 6c 74 56 61 6c 75 65 41 74 74 72 69 62 75 74 65  ltValueAttribute
4880: 20 61 74 74 20 3d 20 70 64 2e 41 74 74 72 69 62   att = pd.Attrib
4890: 75 74 65 73 5b 74 79 70 65 6f 66 28 44 65 66 61  utes[typeof(Defa
48a0: 75 6c 74 56 61 6c 75 65 41 74 74 72 69 62 75 74  ultValueAttribut
48b0: 65 29 5d 20 61 73 20 44 65 66 61 75 6c 74 56 61  e)] as DefaultVa
48c0: 6c 75 65 41 74 74 72 69 62 75 74 65 3b 0d 0a 20  lueAttribute;.. 
48d0: 20 20 20 20 20 20 20 69 66 20 28 61 74 74 20 21         if (att !
48e0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
48f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61   {..          va
4900: 6c 75 65 20 3d 20 61 74 74 2e 56 61 6c 75 65 3b  lue = att.Value;
4910: 0d 0a 20 20 20 20 20 20 20 20 20 20 62 20 3d 20  ..          b = 
4920: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  true;..        }
4930: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
4940: 20 72 65 74 75 72 6e 20 62 3b 0d 0a 20 20 20 20   return b;..    
4950: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
4960: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
4970: 46 61 6c 6c 62 61 63 6b 20 6d 65 74 68 6f 64 20  Fallback method 
4980: 66 6f 72 20 4d 4f 4e 4f 2c 20 77 68 69 63 68 20  for MONO, which 
4990: 64 6f 65 73 6e 27 74 20 69 6d 70 6c 65 6d 65 6e  doesn't implemen
49a0: 74 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  t DbConnectionSt
49b0: 72 69 6e 67 42 75 69 6c 64 65 72 2e 47 65 74 50  ringBuilder.GetP
49c0: 72 6f 70 65 72 74 69 65 73 28 29 0d 0a 20 20 20  roperties()..   
49d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
49e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
49f0: 6e 61 6d 65 3d 22 70 72 6f 70 65 72 74 79 4c 69  name="propertyLi
4a00: 73 74 22 3e 54 68 65 20 68 61 73 68 74 61 62 6c  st">The hashtabl
4a10: 65 20 74 6f 20 66 69 6c 6c 20 77 69 74 68 20 70  e to fill with p
4a20: 72 6f 70 65 72 74 79 20 64 65 73 63 72 69 70 74  roperty descript
4a30: 6f 72 73 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ors</param>..   
4a40: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 46 61   private void Fa
4a50: 6c 6c 62 61 63 6b 47 65 74 50 72 6f 70 65 72 74  llbackGetPropert
4a60: 69 65 73 28 48 61 73 68 74 61 62 6c 65 20 70 72  ies(Hashtable pr
4a70: 6f 70 65 72 74 79 4c 69 73 74 29 0d 0a 20 20 20  opertyList)..   
4a80: 20 7b 0d 0a 20 20 20 20 20 20 66 6f 72 65 61 63   {..      foreac
4a90: 68 20 28 50 72 6f 70 65 72 74 79 44 65 73 63 72  h (PropertyDescr
4aa0: 69 70 74 6f 72 20 64 65 73 63 72 69 70 74 6f 72  iptor descriptor
4ab0: 20 69 6e 20 54 79 70 65 44 65 73 63 72 69 70 74   in TypeDescript
4ac0: 6f 72 2e 47 65 74 50 72 6f 70 65 72 74 69 65 73  or.GetProperties
4ad0: 28 74 68 69 73 2c 20 74 72 75 65 29 29 0d 0a 20  (this, true)).. 
4ae0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4af0: 69 66 20 28 64 65 73 63 72 69 70 74 6f 72 2e 4e  if (descriptor.N
4b00: 61 6d 65 20 21 3d 20 22 43 6f 6e 6e 65 63 74 69  ame != "Connecti
4b10: 6f 6e 53 74 72 69 6e 67 22 20 26 26 20 70 72 6f  onString" && pro
4b20: 70 65 72 74 79 4c 69 73 74 2e 43 6f 6e 74 61 69  pertyList.Contai
4b30: 6e 73 4b 65 79 28 64 65 73 63 72 69 70 74 6f 72  nsKey(descriptor
4b40: 2e 44 69 73 70 6c 61 79 4e 61 6d 65 29 20 3d 3d  .DisplayName) ==
4b50: 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20   false)..       
4b60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72   {..          pr
4b70: 6f 70 65 72 74 79 4c 69 73 74 2e 41 64 64 28 64  opertyList.Add(d
4b80: 65 73 63 72 69 70 74 6f 72 2e 44 69 73 70 6c 61  escriptor.Displa
4b90: 79 4e 61 6d 65 2c 20 64 65 73 63 72 69 70 74 6f  yName, descripto
4ba0: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  r);..        }..
4bb0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
4bc0: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 7d 0d 0a    }..#endif..}..