System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ab4cc034a61bf614c3a3c5d48264293e8ae4f0a1:


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 2e 43 6f 6d 6d  System.Data.Comm
0170: 6f 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  on;..  using Sys
0180: 74 65 6d 2e 43 6f 6d 70 6f 6e 65 6e 74 4d 6f 64  tem.ComponentMod
0190: 65 6c 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  el;..  using Sys
01a0: 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 3b  tem.Collections;
01b0: 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ..  using System
01c0: 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d  .Globalization;.
01d0: 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  .  using System.
01e0: 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 0d 0a 23  Reflection;....#
01f0: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0200: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
0210: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0220: 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6d 70    /// SQLite imp
0230: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 44  lementation of D
0240: 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  bConnectionStrin
0250: 67 42 75 69 6c 64 65 72 2e 0d 0a 20 20 2f 2f 2f  gBuilder...  ///
0260: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 5b   </summary>..  [
0270: 44 65 66 61 75 6c 74 50 72 6f 70 65 72 74 79 28  DefaultProperty(
0280: 22 44 61 74 61 53 6f 75 72 63 65 22 29 5d 0d 0a  "DataSource")]..
0290: 20 20 5b 44 65 66 61 75 6c 74 4d 65 6d 62 65 72    [DefaultMember
02a0: 28 22 49 74 65 6d 22 29 5d 0d 0a 20 20 70 75 62  ("Item")]..  pub
02b0: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
02c0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
02d0: 6e 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 3a  nStringBuilder :
02e0: 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72   DbConnectionStr
02f0: 69 6e 67 42 75 69 6c 64 65 72 0d 0a 20 20 7b 0d  ingBuilder..  {.
0300: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0310: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 50 72 6f 70  y>..    /// Prop
0320: 65 72 74 69 65 73 20 6f 66 20 74 68 69 73 20 63  erties of this c
0330: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lass..    /// </
0340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
0350: 69 76 61 74 65 20 48 61 73 68 74 61 62 6c 65 20  ivate Hashtable 
0360: 5f 70 72 6f 70 65 72 74 69 65 73 3b 0d 0a 0d 0a  _properties;....
0370: 20 20 20 20 2f 2f 2f 20 3c 6f 76 65 72 6c 6f 61      /// <overloa
0380: 64 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ds>..    /// Con
0390: 73 74 72 75 63 74 73 20 61 20 6e 65 77 20 69 6e  structs a new in
03a0: 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 63 6c  stance of the cl
03b0: 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6f  ass..    /// </o
03c0: 76 65 72 6c 6f 61 64 73 3e 0d 0a 20 20 20 20 2f  verloads>..    /
03d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
03e0: 20 20 2f 2f 2f 20 44 65 66 61 75 6c 74 20 63 6f    /// Default co
03f0: 6e 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 2f  nstructor..    /
0400: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0410: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
0420: 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  ConnectionString
0430: 42 75 69 6c 64 65 72 28 29 0d 0a 20 20 20 20 7b  Builder()..    {
0440: 0d 0a 20 20 20 20 20 20 49 6e 69 74 69 61 6c 69  ..      Initiali
0450: 7a 65 28 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d  ze(null);..    }
0460: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
0470: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
0480: 6f 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77 20  onstructs a new 
0490: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
04a0: 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65 20  class using the 
04b0: 73 70 65 63 69 66 69 65 64 20 63 6f 6e 6e 65 63  specified connec
04c0: 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20  tion string...  
04d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
04e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
04f0: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
0500: 6e 53 74 72 69 6e 67 22 3e 54 68 65 20 63 6f 6e  nString">The con
0510: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 74  nection string t
0520: 6f 20 70 61 72 73 65 3c 2f 70 61 72 61 6d 3e 0d  o parse</param>.
0530: 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69  .    public SQLi
0540: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  teConnectionStri
0550: 6e 67 42 75 69 6c 64 65 72 28 73 74 72 69 6e 67  ngBuilder(string
0560: 20 63 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e   connectionStrin
0570: 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  g)..    {..     
0580: 20 49 6e 69 74 69 61 6c 69 7a 65 28 63 6f 6e 6e   Initialize(conn
0590: 65 63 74 69 6f 6e 53 74 72 69 6e 67 29 3b 0d 0a  ectionString);..
05a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
05b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
05c0: 2f 2f 2f 20 50 72 69 76 61 74 65 20 69 6e 69 74  /// Private init
05d0: 69 61 6c 69 7a 65 72 2c 20 77 68 69 63 68 20 61  ializer, which a
05e0: 73 73 69 67 6e 73 20 74 68 65 20 63 6f 6e 6e 65  ssigns the conne
05f0: 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 61 6e 64  ction string and
0600: 20 72 65 73 65 74 73 20 74 68 65 20 62 75 69 6c   resets the buil
0610: 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  der..    /// </s
0620: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0630: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6e   <param name="cn
0640: 6e 53 74 72 69 6e 67 22 3e 54 68 65 20 63 6f 6e  nString">The con
0650: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 74  nection string t
0660: 6f 20 61 73 73 69 67 6e 3c 2f 70 61 72 61 6d 3e  o assign</param>
0670: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f  ..    private vo
0680: 69 64 20 49 6e 69 74 69 61 6c 69 7a 65 28 73 74  id Initialize(st
0690: 72 69 6e 67 20 63 6e 6e 53 74 72 69 6e 67 29 0d  ring cnnString).
06a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 70  .    {..      _p
06b0: 72 6f 70 65 72 74 69 65 73 20 3d 20 6e 65 77 20  roperties = new 
06c0: 48 61 73 68 74 61 62 6c 65 28 53 74 72 69 6e 67  Hashtable(String
06d0: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
06e0: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20  IgnoreCase);..  
06f0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 7b      try..      {
0700: 0d 0a 20 20 20 20 20 20 20 20 62 61 73 65 2e 47  ..        base.G
0710: 65 74 50 72 6f 70 65 72 74 69 65 73 28 5f 70 72  etProperties(_pr
0720: 6f 70 65 72 74 69 65 73 29 3b 0d 0a 20 20 20 20  operties);..    
0730: 20 20 7d 0d 0a 20 20 20 20 20 20 63 61 74 63 68    }..      catch
0740: 28 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45  (NotImplementedE
0750: 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20  xception)..     
0760: 20 7b 0d 0a 20 20 20 20 20 20 20 20 46 61 6c 6c   {..        Fall
0770: 62 61 63 6b 47 65 74 50 72 6f 70 65 72 74 69 65  backGetPropertie
0780: 73 28 5f 70 72 6f 70 65 72 74 69 65 73 29 3b 0d  s(_properties);.
0790: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
07a0: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
07b0: 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6e 6e 53 74  ullOrEmpty(cnnSt
07c0: 72 69 6e 67 29 20 3d 3d 20 66 61 6c 73 65 29 0d  ring) == false).
07d0: 0a 20 20 20 20 20 20 20 20 43 6f 6e 6e 65 63 74  .        Connect
07e0: 69 6f 6e 53 74 72 69 6e 67 20 3d 20 63 6e 6e 53  ionString = cnnS
07f0: 74 72 69 6e 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  tring;..    }...
0800: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0810: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73  y>..    /// Gets
0820: 2f 53 65 74 73 20 74 68 65 20 64 65 66 61 75 6c  /Sets the defaul
0830: 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  t version of the
0840: 20 53 51 4c 69 74 65 20 65 6e 67 69 6e 65 20 74   SQLite engine t
0850: 6f 20 69 6e 73 74 61 6e 74 69 61 74 65 2e 20 20  o instantiate.  
0860: 43 75 72 72 65 6e 74 6c 79 20 74 68 65 20 6f 6e  Currently the on
0870: 6c 79 20 76 61 6c 69 64 20 76 61 6c 75 65 20 69  ly valid value i
0880: 73 20 33 2c 20 69 6e 64 69 63 61 74 69 6e 67 20  s 3, indicating 
0890: 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65  version 3 of the
08a0: 20 73 71 6c 69 74 65 20 6c 69 62 72 61 72 79 2e   sqlite library.
08b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
08c0: 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77 73  ary>..    [Brows
08d0: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
08e0: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 33   [DefaultValue(3
08f0: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  )]..    public i
0900: 6e 74 20 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20  nt Version..    
0910: 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
0920: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f      {..        o
0930: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20  bject value;..  
0940: 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75        TryGetValu
0950: 65 28 22 76 65 72 73 69 6f 6e 22 2c 20 6f 75 74  e("version", out
0960: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
0970: 20 20 72 65 74 75 72 6e 20 43 6f 6e 76 65 72 74    return Convert
0980: 2e 54 6f 49 6e 74 33 32 28 76 61 6c 75 65 2c 20  .ToInt32(value, 
0990: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
09a0: 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20  entCulture);..  
09b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74      }..      set
09c0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
09d0: 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
09e0: 33 29 0d 0a 20 20 20 20 20 20 20 20 20 20 74 68  3)..          th
09f0: 72 6f 77 20 6e 65 77 20 4e 6f 74 53 75 70 70 6f  row new NotSuppo
0a00: 72 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b  rtedException();
0a10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73  ....        this
0a20: 5b 22 76 65 72 73 69 6f 6e 22 5d 20 3d 20 76 61  ["version"] = va
0a30: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  lue;..      }.. 
0a40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
0a50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0a60: 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68 65  // Gets/Sets the
0a70: 20 73 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e   synchronization
0a80: 20 6d 6f 64 65 20 28 66 69 6c 65 20 66 6c 75 73   mode (file flus
0a90: 68 69 6e 67 29 20 6f 66 20 74 68 65 20 63 6f 6e  hing) of the con
0aa0: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 20  nection string. 
0ab0: 20 44 65 66 61 75 6c 74 20 69 73 20 22 4e 6f 72   Default is "Nor
0ac0: 6d 61 6c 22 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mal"...    /// <
0ad0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
0ae0: 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 53 79 6e  DisplayName("Syn
0af0: 63 68 72 6f 6e 6f 75 73 22 29 5d 0d 0a 20 20 20  chronous")]..   
0b00: 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65   [Browsable(true
0b10: 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74  )]..    [Default
0b20: 56 61 6c 75 65 28 53 79 6e 63 68 72 6f 6e 69 7a  Value(Synchroniz
0b30: 61 74 69 6f 6e 4d 6f 64 65 73 2e 4e 6f 72 6d 61  ationModes.Norma
0b40: 6c 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  l)]..    public 
0b50: 53 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e 4d  SynchronizationM
0b60: 6f 64 65 73 20 53 79 6e 63 4d 6f 64 65 0d 0a 20  odes SyncMode.. 
0b70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d     {..      get.
0b80: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
0b90: 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d    object value;.
0ba0: 0a 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56  .        TryGetV
0bb0: 61 6c 75 65 28 22 73 79 6e 63 68 72 6f 6e 6f 75  alue("synchronou
0bc0: 73 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d  s", out value);.
0bd0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c  .        if (val
0be0: 75 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20  ue is string).. 
0bf0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
0c00: 28 53 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e  (Synchronization
0c10: 4d 6f 64 65 73 29 54 79 70 65 44 65 73 63 72 69  Modes)TypeDescri
0c20: 70 74 6f 72 2e 47 65 74 43 6f 6e 76 65 72 74 65  ptor.GetConverte
0c30: 72 28 74 79 70 65 6f 66 28 53 79 6e 63 68 72 6f  r(typeof(Synchro
0c40: 6e 69 7a 61 74 69 6f 6e 4d 6f 64 65 73 29 29 2e  nizationModes)).
0c50: 43 6f 6e 76 65 72 74 46 72 6f 6d 28 76 61 6c 75  ConvertFrom(valu
0c60: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c 73  e);..        els
0c70: 65 20 72 65 74 75 72 6e 20 28 53 79 6e 63 68 72  e return (Synchr
0c80: 6f 6e 69 7a 61 74 69 6f 6e 4d 6f 64 65 73 29 76  onizationModes)v
0c90: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
0ca0: 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20        set..     
0cb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73   {..        this
0cc0: 5b 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 5d 20  ["synchronous"] 
0cd0: 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  = value;..      
0ce0: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
0cf0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0d00: 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73     /// Gets/Sets
0d10: 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 66 6f   the encoding fo
0d20: 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
0d30: 20 73 74 72 69 6e 67 2e 20 20 54 68 65 20 64 65   string.  The de
0d40: 66 61 75 6c 74 20 69 73 20 22 46 61 6c 73 65 22  fault is "False"
0d50: 20 77 68 69 63 68 20 69 6e 64 69 63 61 74 65 73   which indicates
0d60: 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 2e   UTF-8 encoding.
0d70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0d80: 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c  ary>..    [Displ
0d90: 61 79 4e 61 6d 65 28 22 55 73 65 20 55 54 46 2d  ayName("Use UTF-
0da0: 31 36 20 45 6e 63 6f 64 69 6e 67 22 29 5d 0d 0a  16 Encoding")]..
0db0: 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74      [Browsable(t
0dc0: 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61  rue)]..    [Defa
0dd0: 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65 29 5d  ultValue(false)]
0de0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
0df0: 6c 20 55 73 65 55 54 46 31 36 45 6e 63 6f 64 69  l UseUTF16Encodi
0e00: 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ng..    {..     
0e10: 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
0e20: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
0e30: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72  lue;..        Tr
0e40: 79 47 65 74 56 61 6c 75 65 28 22 75 73 65 75 74  yGetValue("useut
0e50: 66 31 36 65 6e 63 6f 64 69 6e 67 22 2c 20 6f 75  f16encoding", ou
0e60: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
0e70: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
0e80: 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61  Convert.ToBoolea
0e90: 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  n(value);..     
0ea0: 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20   }..      set.. 
0eb0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0ec0: 74 68 69 73 5b 22 75 73 65 75 74 66 31 36 65 6e  this["useutf16en
0ed0: 63 6f 64 69 6e 67 22 5d 20 3d 20 76 61 6c 75 65  coding"] = value
0ee0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
0ef0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
0f00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0f10: 47 65 74 73 2f 53 65 74 73 20 77 68 65 74 68 65  Gets/Sets whethe
0f20: 72 20 6f 72 20 6e 6f 74 20 74 6f 20 75 73 65 20  r or not to use 
0f30: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 69  connection pooli
0f40: 6e 67 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74  ng.  The default
0f50: 20 69 73 20 22 46 61 6c 73 65 22 0d 0a 20 20 20   is "False"..   
0f60: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0f70: 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28  .    [Browsable(
0f80: 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66  true)]..    [Def
0f90: 61 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65 29  aultValue(false)
0fa0: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ]..    public bo
0fb0: 6f 6c 20 50 6f 6f 6c 69 6e 67 0d 0a 20 20 20 20  ol Pooling..    
0fc0: 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
0fd0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f      {..        o
0fe0: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20  bject value;..  
0ff0: 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75        TryGetValu
1000: 65 28 22 70 6f 6f 6c 69 6e 67 22 2c 20 6f 75 74  e("pooling", out
1010: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
1020: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43    return SQLiteC
1030: 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e  onvert.ToBoolean
1040: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
1050: 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20  }..      set..  
1060: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74      {..        t
1070: 68 69 73 5b 22 70 6f 6f 6c 69 6e 67 22 5d 20 3d  his["pooling"] =
1080: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d   value;..      }
1090: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
10a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10b0: 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20    /// Gets/Sets 
10c0: 77 68 65 74 68 6f 72 20 6e 6f 74 20 74 6f 20 73  whethor not to s
10d0: 74 6f 72 65 20 47 55 49 44 27 73 20 69 6e 20 62  tore GUID's in b
10e0: 69 6e 61 72 79 20 66 6f 72 6d 61 74 2e 20 20 54  inary format.  T
10f0: 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 54 72  he default is Tr
1100: 75 65 0d 0a 20 20 20 20 2f 2f 2f 20 77 68 69 63  ue..    /// whic
1110: 68 20 73 61 76 65 73 20 73 70 61 63 65 20 69 6e  h saves space in
1120: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a   the database...
1130: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1140: 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79  y>..    [Display
1150: 4e 61 6d 65 28 22 42 69 6e 61 72 79 20 47 55 49  Name("Binary GUI
1160: 44 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  D")]..    [Brows
1170: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
1180: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 74   [DefaultValue(t
1190: 72 75 65 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  rue)]..    publi
11a0: 63 20 62 6f 6f 6c 20 42 69 6e 61 72 79 47 55 49  c bool BinaryGUI
11b0: 44 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  D..    {..      
11c0: 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  get..      {..  
11d0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
11e0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79  ue;..        Try
11f0: 47 65 74 56 61 6c 75 65 28 22 62 69 6e 61 72 79  GetValue("binary
1200: 67 75 69 64 22 2c 20 6f 75 74 20 76 61 6c 75 65  guid", out value
1210: 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  );..        retu
1220: 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  rn SQLiteConvert
1230: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75 65  .ToBoolean(value
1240: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
1250: 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d     set..      {.
1260: 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 62  .        this["b
1270: 69 6e 61 72 79 67 75 69 64 22 5d 20 3d 20 76 61  inaryguid"] = va
1280: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  lue;..      }.. 
1290: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
12a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
12b0: 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68 65  // Gets/Sets the
12c0: 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 6f 70 65   filename to ope
12d0: 6e 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  n on the connect
12e0: 69 6f 6e 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  ion string...   
12f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1300: 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d  .    [DisplayNam
1310: 65 28 22 44 61 74 61 20 53 6f 75 72 63 65 22 29  e("Data Source")
1320: 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c  ]..    [Browsabl
1330: 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44  e(true)]..    [D
1340: 65 66 61 75 6c 74 56 61 6c 75 65 28 22 22 29 5d  efaultValue("")]
1350: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 72  ..    public str
1360: 69 6e 67 20 44 61 74 61 53 6f 75 72 63 65 0d 0a  ing DataSource..
1370: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
1380: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1390: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b     object value;
13a0: 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47 65 74  ..        TryGet
13b0: 56 61 6c 75 65 28 22 64 61 74 61 20 73 6f 75 72  Value("data sour
13c0: 63 65 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b  ce", out value);
13d0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
13e0: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
13f0: 20 3f 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e   ? value.ToStrin
1400: 67 28 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  g() : null;..   
1410: 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d     }..      set.
1420: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
1430: 20 20 74 68 69 73 5b 22 64 61 74 61 20 73 6f 75    this["data sou
1440: 72 63 65 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a  rce"] = value;..
1450: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
1460: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1470: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20  ry>..    /// An 
1480: 61 6c 74 65 72 6e 61 74 65 20 74 6f 20 74 68 65  alternate to the
1490: 20 64 61 74 61 20 73 6f 75 72 63 65 20 70 72 6f   data source pro
14a0: 70 65 72 74 79 0d 0a 20 20 20 20 2f 2f 2f 20 3c  perty..    /// <
14b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
14c0: 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 55 52 49  DisplayName("URI
14d0: 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ")]..    [Browsa
14e0: 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  ble(true)]..    
14f0: 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 6e 75  [DefaultValue(nu
1500: 6c 6c 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63  ll)]..    public
1510: 20 73 74 72 69 6e 67 20 55 72 69 0d 0a 20 20 20   string Uri..   
1520: 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20   {..      get.. 
1530: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1540: 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20  object value;.. 
1550: 20 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c         TryGetVal
1560: 75 65 28 22 75 72 69 22 2c 20 6f 75 74 20 76 61  ue("uri", out va
1570: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72  lue);..        r
1580: 65 74 75 72 6e 20 28 76 61 6c 75 65 20 21 3d 20  eturn (value != 
1590: 6e 75 6c 6c 29 20 3f 20 76 61 6c 75 65 2e 54 6f  null) ? value.To
15a0: 53 74 72 69 6e 67 28 29 20 3a 20 6e 75 6c 6c 3b  String() : null;
15b0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
15c0: 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   set..      {.. 
15d0: 20 20 20 20 20 20 20 74 68 69 73 5b 22 75 72 69         this["uri
15e0: 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  "] = value;..   
15f0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
1600: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1610: 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 61 6c 74  ..    /// An alt
1620: 65 72 6e 61 74 65 20 74 6f 20 74 68 65 20 64 61  ernate to the da
1630: 74 61 20 73 6f 75 72 63 65 20 70 72 6f 70 65 72  ta source proper
1640: 74 79 20 74 68 61 74 20 75 73 65 73 20 74 68 65  ty that uses the
1650: 20 53 51 4c 69 74 65 20 55 52 49 20 73 79 6e 74   SQLite URI synt
1660: 61 78 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ax...    /// </s
1670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69  ummary>..    [Di
1680: 73 70 6c 61 79 4e 61 6d 65 28 22 46 75 6c 6c 20  splayName("Full 
1690: 55 52 49 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f  URI")]..    [Bro
16a0: 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20  wsable(true)].. 
16b0: 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65     [DefaultValue
16c0: 28 6e 75 6c 6c 29 5d 0d 0a 20 20 20 20 70 75 62  (null)]..    pub
16d0: 6c 69 63 20 73 74 72 69 6e 67 20 46 75 6c 6c 55  lic string FullU
16e0: 72 69 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ri..    {..     
16f0: 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
1700: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
1710: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72  lue;..        Tr
1720: 79 47 65 74 56 61 6c 75 65 28 22 66 75 6c 6c 75  yGetValue("fullu
1730: 72 69 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b  ri", out value);
1740: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
1750: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
1760: 20 3f 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e   ? value.ToStrin
1770: 67 28 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  g() : null;..   
1780: 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d     }..      set.
1790: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
17a0: 20 20 74 68 69 73 5b 22 66 75 6c 6c 75 72 69 22    this["fulluri"
17b0: 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ] = value;..    
17c0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
17d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17e0: 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73 65  .    /// Gets/se
17f0: 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 63  ts the default c
1800: 6f 6d 6d 61 6e 64 20 74 69 6d 65 6f 75 74 20 66  ommand timeout f
1810: 6f 72 20 6e 65 77 6c 79 2d 63 72 65 61 74 65 64  or newly-created
1820: 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 54 68 69 73   commands.  This
1830: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
1840: 73 65 66 75 6c 20 66 6f 72 0d 0a 20 20 20 20 2f  seful for..    /
1850: 2f 2f 20 63 6f 6d 6d 61 6e 64 73 20 75 73 65 64  // commands used
1860: 20 69 6e 74 65 72 6e 61 6c 6c 79 20 73 75 63 68   internally such
1870: 20 61 73 20 69 6e 73 69 64 65 20 61 20 53 51 4c   as inside a SQL
1880: 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 2c 20  iteTransaction, 
1890: 77 68 65 72 65 20 73 65 74 74 69 6e 67 20 74 68  where setting th
18a0: 65 20 74 69 6d 65 6f 75 74 20 69 73 20 6e 6f 74  e timeout is not
18b0: 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20   possible...    
18c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18d0: 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65      [DisplayName
18e0: 28 22 44 65 66 61 75 6c 74 20 54 69 6d 65 6f 75  ("Default Timeou
18f0: 74 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  t")]..    [Brows
1900: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
1910: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 33   [DefaultValue(3
1920: 30 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  0)]..    public 
1930: 69 6e 74 20 44 65 66 61 75 6c 74 54 69 6d 65 6f  int DefaultTimeo
1940: 75 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ut..    {..     
1950: 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
1960: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
1970: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72  lue;..        Tr
1980: 79 47 65 74 56 61 6c 75 65 28 22 64 65 66 61 75  yGetValue("defau
1990: 6c 74 20 74 69 6d 65 6f 75 74 22 2c 20 6f 75 74  lt timeout", out
19a0: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
19b0: 20 20 72 65 74 75 72 6e 20 43 6f 6e 76 65 72 74    return Convert
19c0: 2e 54 6f 49 6e 74 33 32 28 76 61 6c 75 65 2c 20  .ToInt32(value, 
19d0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
19e0: 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20  entCulture);..  
19f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74      }..      set
1a00: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1a10: 20 20 20 74 68 69 73 5b 22 64 65 66 61 75 6c 74     this["default
1a20: 20 74 69 6d 65 6f 75 74 22 5d 20 3d 20 76 61 6c   timeout"] = val
1a30: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ue;..      }..  
1a40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
1a50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1a60: 2f 20 47 65 74 73 2f 73 65 74 73 20 74 68 65 20  / Gets/sets the 
1a70: 62 75 73 79 20 74 69 6d 65 6f 75 74 20 74 6f 20  busy timeout to 
1a80: 75 73 65 20 77 69 74 68 20 74 68 65 20 53 51 4c  use with the SQL
1a90: 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
1aa0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
1ab0: 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70  mary>..    [Disp
1ac0: 6c 61 79 4e 61 6d 65 28 22 42 75 73 79 20 54 69  layName("Busy Ti
1ad0: 6d 65 6f 75 74 22 29 5d 0d 0a 20 20 20 20 5b 42  meout")]..    [B
1ae0: 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d  rowsable(true)].
1af0: 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c  .    [DefaultVal
1b00: 75 65 28 30 29 5d 0d 0a 20 20 20 20 70 75 62 6c  ue(0)]..    publ
1b10: 69 63 20 69 6e 74 20 42 75 73 79 54 69 6d 65 6f  ic int BusyTimeo
1b20: 75 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ut..    {..     
1b30: 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20   get..      {.. 
1b40: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
1b50: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 54 72  lue;..        Tr
1b60: 79 47 65 74 56 61 6c 75 65 28 22 62 75 73 79 74  yGetValue("busyt
1b70: 69 6d 65 6f 75 74 22 2c 20 6f 75 74 20 76 61 6c  imeout", out val
1b80: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  ue);..        re
1b90: 74 75 72 6e 20 43 6f 6e 76 65 72 74 2e 54 6f 49  turn Convert.ToI
1ba0: 6e 74 33 32 28 76 61 6c 75 65 2c 20 43 75 6c 74  nt32(value, Cult
1bb0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
1bc0: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
1bd0: 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20  }..      set..  
1be0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74      {..        t
1bf0: 68 69 73 5b 22 62 75 73 79 74 69 6d 65 6f 75 74  his["busytimeout
1c00: 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  "] = value;..   
1c10: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
1c20: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1c30: 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73  ..    /// Gets/s
1c40: 65 74 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ets the maximum 
1c50: 6e 75 6d 62 65 72 20 6f 66 20 72 65 74 72 69 65  number of retrie
1c60: 73 20 77 68 65 6e 20 70 72 65 70 61 72 69 6e 67  s when preparing
1c70: 20 53 51 4c 20 74 6f 20 62 65 20 65 78 65 63 75   SQL to be execu
1c80: 74 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ted...    /// Th
1c90: 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c 79  is normally only
1ca0: 20 61 70 70 6c 69 65 73 20 74 6f 20 70 72 65 70   applies to prep
1cb0: 61 72 61 74 69 6f 6e 20 65 72 72 6f 72 73 20 72  aration errors r
1cc0: 65 73 75 6c 74 69 6e 67 20 66 72 6f 6d 20 74 68  esulting from th
1cd0: 65 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20  e database..    
1ce0: 2f 2f 2f 20 73 63 68 65 6d 61 20 62 65 69 6e 67  /// schema being
1cf0: 20 63 68 61 6e 67 65 64 2e 0d 0a 20 20 20 20 2f   changed...    /
1d00: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1d10: 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28     [DisplayName(
1d20: 22 50 72 65 70 61 72 65 20 52 65 74 72 69 65 73  "Prepare Retries
1d30: 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ")]..    [Browsa
1d40: 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  ble(true)]..    
1d50: 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 33 29  [DefaultValue(3)
1d60: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e  ]..    public in
1d70: 74 20 50 72 65 70 61 72 65 52 65 74 72 69 65 73  t PrepareRetries
1d80: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
1d90: 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   get..        {.
1da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a  .            obj
1db0: 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ect value;..    
1dc0: 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56 61          TryGetVa
1dd0: 6c 75 65 28 22 70 72 65 70 61 72 65 72 65 74 72  lue("prepareretr
1de0: 69 65 73 22 2c 20 6f 75 74 20 76 61 6c 75 65 29  ies", out value)
1df0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
1e00: 65 74 75 72 6e 20 43 6f 6e 76 65 72 74 2e 54 6f  eturn Convert.To
1e10: 49 6e 74 33 32 28 76 61 6c 75 65 2c 20 43 75 6c  Int32(value, Cul
1e20: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
1e30: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
1e40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65     }..        se
1e50: 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
1e60: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 22            this["
1e70: 70 72 65 70 61 72 65 72 65 74 72 69 65 73 22 5d  prepareretries"]
1e80: 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20   = value;..     
1e90: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
1ea0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1eb0: 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73  ..    /// Gets/s
1ec0: 65 74 73 20 74 68 65 20 61 70 70 72 6f 78 69 6d  ets the approxim
1ed0: 61 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 69  ate number of vi
1ee0: 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e  rtual machine in
1ef0: 73 74 72 75 63 74 69 6f 6e 73 20 62 65 74 77 65  structions betwe
1f00: 65 6e 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f 67  en..    /// prog
1f10: 72 65 73 73 20 65 76 65 6e 74 73 2e 20 20 49 6e  ress events.  In
1f20: 20 6f 72 64 65 72 20 66 6f 72 20 70 72 6f 67 72   order for progr
1f30: 65 73 73 20 65 76 65 6e 74 73 20 74 6f 20 61 63  ess events to ac
1f40: 74 75 61 6c 6c 79 20 66 69 72 65 2c 20 74 68 65  tually fire, the
1f50: 20 65 76 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f 20   event..    /// 
1f60: 68 61 6e 64 6c 65 72 20 6d 75 73 74 20 62 65 20  handler must be 
1f70: 61 64 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65  added to the <se
1f80: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
1f90: 6e 6e 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65 73  nnection.Progres
1fa0: 73 22 20 2f 3e 20 65 76 65 6e 74 0d 0a 20 20 20  s" /> event..   
1fb0: 20 2f 2f 2f 20 61 73 20 77 65 6c 6c 2e 0d 0a 20   /// as well... 
1fc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1fd0: 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e  >..    [DisplayN
1fe0: 61 6d 65 28 22 50 72 6f 67 72 65 73 73 20 4f 70  ame("Progress Op
1ff0: 73 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  s")]..    [Brows
2000: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
2010: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 30   [DefaultValue(0
2020: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  )]..    public i
2030: 6e 74 20 50 72 6f 67 72 65 73 73 4f 70 73 0d 0a  nt ProgressOps..
2040: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67      {..        g
2050: 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  et..        {.. 
2060: 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
2070: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
2080: 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75        TryGetValu
2090: 65 28 22 70 72 6f 67 72 65 73 73 6f 70 73 22 2c  e("progressops",
20a0: 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20   out value);..  
20b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20c0: 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32   Convert.ToInt32
20d0: 28 76 61 6c 75 65 2c 20 43 75 6c 74 75 72 65 49  (value, CultureI
20e0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
20f0: 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  re);..        }.
2100: 0a 20 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20  .        set..  
2110: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2120: 20 20 20 20 20 74 68 69 73 5b 22 70 72 6f 67 72       this["progr
2130: 65 73 73 6f 70 73 22 5d 20 3d 20 76 61 6c 75 65  essops"] = value
2140: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2150: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
2160: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2170: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 77 68 65  / Determines whe
2180: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
2190: 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 6c 6c 20  connection will 
21a0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 70 61  automatically pa
21b0: 72 74 69 63 69 70 61 74 65 0d 0a 20 20 20 20 2f  rticipate..    /
21c0: 2f 2f 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  // in the curren
21d0: 74 20 64 69 73 74 72 69 62 75 74 65 64 20 74 72  t distributed tr
21e0: 61 6e 73 61 63 74 69 6f 6e 20 28 69 66 20 6f 6e  ansaction (if on
21f0: 65 20 65 78 69 73 74 73 29 0d 0a 20 20 20 20 2f  e exists)..    /
2200: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2210: 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72     [Browsable(tr
2220: 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75  ue)]..    [Defau
2230: 6c 74 56 61 6c 75 65 28 74 72 75 65 29 5d 0d 0a  ltValue(true)]..
2240: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
2250: 45 6e 6c 69 73 74 0d 0a 20 20 20 20 7b 0d 0a 20  Enlist..    {.. 
2260: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
2270: 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  {..        objec
2280: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
2290: 20 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 65    TryGetValue("e
22a0: 6e 6c 69 73 74 22 2c 20 6f 75 74 20 76 61 6c 75  nlist", out valu
22b0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  e);..        ret
22c0: 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  urn SQLiteConver
22d0: 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75  t.ToBoolean(valu
22e0: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e);..      }..  
22f0: 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b      set..      {
2300: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b 22  ..        this["
2310: 65 6e 6c 69 73 74 22 5d 20 3d 20 76 61 6c 75 65  enlist"] = value
2320: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
2330: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
2340: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2350: 49 66 20 73 65 74 20 74 6f 20 74 72 75 65 2c 20  If set to true, 
2360: 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 65 78  will throw an ex
2370: 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20 64  ception if the d
2380: 61 74 61 62 61 73 65 20 73 70 65 63 69 66 69 65  atabase specifie
2390: 64 20 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  d in the connect
23a0: 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  ion..    /// str
23b0: 69 6e 67 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ing does not exi
23c0: 73 74 2e 20 20 49 66 20 66 61 6c 73 65 2c 20 74  st.  If false, t
23d0: 68 65 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c  he database will
23e0: 20 62 65 20 63 72 65 61 74 65 64 20 61 75 74 6f   be created auto
23f0: 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a 20 20 20 20  matically...    
2400: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2410: 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65      [DisplayName
2420: 28 22 46 61 69 6c 20 49 66 20 4d 69 73 73 69 6e  ("Fail If Missin
2430: 67 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  g")]..    [Brows
2440: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
2450: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 66   [DefaultValue(f
2460: 61 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75 62 6c  alse)]..    publ
2470: 69 63 20 62 6f 6f 6c 20 46 61 69 6c 49 66 4d 69  ic bool FailIfMi
2480: 73 73 69 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20  ssing..    {..  
2490: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b      get..      {
24a0: 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
24b0: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
24c0: 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 66 61   TryGetValue("fa
24d0: 69 6c 69 66 6d 69 73 73 69 6e 67 22 2c 20 6f 75  ilifmissing", ou
24e0: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
24f0: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
2500: 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61  Convert.ToBoolea
2510: 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  n(value);..     
2520: 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20   }..      set.. 
2530: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2540: 74 68 69 73 5b 22 66 61 69 6c 69 66 6d 69 73 73  this["failifmiss
2550: 69 6e 67 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a  ing"] = value;..
2560: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
2570: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
2580: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  ry>..    /// If 
2590: 65 6e 61 62 6c 65 64 2c 20 75 73 65 73 20 74 68  enabled, uses th
25a0: 65 20 6c 65 67 61 63 79 20 33 2e 78 78 20 66 6f  e legacy 3.xx fo
25b0: 72 6d 61 74 20 66 6f 72 20 6d 61 78 69 6d 75 6d  rmat for maximum
25c0: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2c 20   compatibility, 
25d0: 62 75 74 20 72 65 73 75 6c 74 73 20 69 6e 20 6c  but results in l
25e0: 61 72 67 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 64  arger..    /// d
25f0: 61 74 61 62 61 73 65 20 73 69 7a 65 73 2e 0d 0a  atabase sizes...
2600: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2610: 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79  y>..    [Display
2620: 4e 61 6d 65 28 22 4c 65 67 61 63 79 20 46 6f 72  Name("Legacy For
2630: 6d 61 74 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f  mat")]..    [Bro
2640: 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20  wsable(true)].. 
2650: 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65     [DefaultValue
2660: 28 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75  (false)]..    pu
2670: 62 6c 69 63 20 62 6f 6f 6c 20 4c 65 67 61 63 79  blic bool Legacy
2680: 46 6f 72 6d 61 74 0d 0a 20 20 20 20 7b 0d 0a 20  Format..    {.. 
2690: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
26a0: 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  {..        objec
26b0: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
26c0: 20 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 6c    TryGetValue("l
26d0: 65 67 61 63 79 20 66 6f 72 6d 61 74 22 2c 20 6f  egacy format", o
26e0: 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ut value);..    
26f0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
2700: 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65  eConvert.ToBoole
2710: 61 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  an(value);..    
2720: 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a    }..      set..
2730: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2740: 20 74 68 69 73 5b 22 6c 65 67 61 63 79 20 66 6f   this["legacy fo
2750: 72 6d 61 74 22 5d 20 3d 20 76 61 6c 75 65 3b 0d  rmat"] = value;.
2760: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d  .      }..    }.
2770: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2780: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68  ary>..    /// Wh
2790: 65 6e 20 65 6e 61 62 6c 65 64 2c 20 74 68 65 20  en enabled, the 
27a0: 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65  database will be
27b0: 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64   opened for read
27c0: 2d 6f 6e 6c 79 20 61 63 63 65 73 73 20 61 6e 64  -only access and
27d0: 20 77 72 69 74 69 6e 67 20 77 69 6c 6c 20 62 65   writing will be
27e0: 20 64 69 73 61 62 6c 65 64 2e 0d 0a 20 20 20 20   disabled...    
27f0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2800: 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65      [DisplayName
2810: 28 22 52 65 61 64 20 4f 6e 6c 79 22 29 5d 0d 0a  ("Read Only")]..
2820: 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74      [Browsable(t
2830: 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61  rue)]..    [Defa
2840: 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65 29 5d  ultValue(false)]
2850: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
2860: 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20 20 20  l ReadOnly..    
2870: 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20  {..      get..  
2880: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f      {..        o
2890: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20  bject value;..  
28a0: 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75        TryGetValu
28b0: 65 28 22 72 65 61 64 20 6f 6e 6c 79 22 2c 20 6f  e("read only", o
28c0: 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ut value);..    
28d0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
28e0: 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65  eConvert.ToBoole
28f0: 61 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  an(value);..    
2900: 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a    }..      set..
2910: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2920: 20 74 68 69 73 5b 22 72 65 61 64 20 6f 6e 6c 79   this["read only
2930: 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20  "] = value;..   
2940: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
2950: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2960: 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 73  ..    /// Gets/s
2970: 65 74 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ets the database
2980: 20 65 6e 63 72 79 70 74 69 6f 6e 20 70 61 73 73   encryption pass
2990: 77 6f 72 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  word..    /// </
29a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42  summary>..    [B
29b0: 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d  rowsable(true)].
29c0: 0a 20 20 20 20 5b 50 61 73 73 77 6f 72 64 50 72  .    [PasswordPr
29d0: 6f 70 65 72 74 79 54 65 78 74 28 74 72 75 65 29  opertyText(true)
29e0: 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56  ]..    [DefaultV
29f0: 61 6c 75 65 28 22 22 29 5d 0d 0a 20 20 20 20 70  alue("")]..    p
2a00: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 50 61 73  ublic string Pas
2a10: 73 77 6f 72 64 0d 0a 20 20 20 20 7b 0d 0a 20 20  sword..    {..  
2a20: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b      get..      {
2a30: 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
2a40: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
2a50: 20 54 72 79 47 65 74 56 61 6c 75 65 28 22 70 61   TryGetValue("pa
2a60: 73 73 77 6f 72 64 22 2c 20 6f 75 74 20 76 61 6c  ssword", out val
2a70: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65  ue);..        re
2a80: 74 75 72 6e 20 28 76 61 6c 75 65 20 21 3d 20 6e  turn (value != n
2a90: 75 6c 6c 29 20 3f 20 76 61 6c 75 65 2e 54 6f 53  ull) ? value.ToS
2aa0: 74 72 69 6e 67 28 29 20 3a 20 6e 75 6c 6c 3b 0d  tring() : null;.
2ab0: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
2ac0: 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  set..      {..  
2ad0: 20 20 20 20 20 20 74 68 69 73 5b 22 70 61 73 73        this["pass
2ae0: 77 6f 72 64 22 5d 20 3d 20 76 61 6c 75 65 3b 0d  word"] = value;.
2af0: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d  .      }..    }.
2b00: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2b10: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65  ary>..    /// Ge
2b20: 74 73 2f 73 65 74 73 20 74 68 65 20 64 61 74 61  ts/sets the data
2b30: 62 61 73 65 20 65 6e 63 72 79 70 74 69 6f 6e 20  base encryption 
2b40: 68 65 78 61 64 65 63 69 6d 61 6c 20 70 61 73 73  hexadecimal pass
2b50: 77 6f 72 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  word..    /// </
2b60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44  summary>..    [D
2b70: 69 73 70 6c 61 79 4e 61 6d 65 28 22 48 65 78 61  isplayName("Hexa
2b80: 64 65 63 69 6d 61 6c 20 50 61 73 73 77 6f 72 64  decimal Password
2b90: 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ")]..    [Browsa
2ba0: 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  ble(true)]..    
2bb0: 5b 50 61 73 73 77 6f 72 64 50 72 6f 70 65 72 74  [PasswordPropert
2bc0: 79 54 65 78 74 28 74 72 75 65 29 5d 0d 0a 20 20  yText(true)]..  
2bd0: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
2be0: 6e 75 6c 6c 29 5d 0d 0a 20 20 20 20 70 75 62 6c  null)]..    publ
2bf0: 69 63 20 62 79 74 65 5b 5d 20 48 65 78 50 61 73  ic byte[] HexPas
2c00: 73 77 6f 72 64 0d 0a 20 20 20 20 7b 0d 0a 20 20  sword..    {..  
2c10: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
2c20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c30: 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d    object value;.
2c40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
2c50: 66 20 28 54 72 79 47 65 74 56 61 6c 75 65 28 22  f (TryGetValue("
2c60: 68 65 78 70 61 73 73 77 6f 72 64 22 2c 20 6f 75  hexpassword", ou
2c70: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
2c80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c90: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
2ca0: 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a  lue is string)..
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc0: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
2cd0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 46 72 6f 6d  eConnection.From
2ce0: 48 65 78 53 74 72 69 6e 67 28 28 73 74 72 69 6e  HexString((strin
2cf0: 67 29 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  g)value);..     
2d00: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
2d10: 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
2d20: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2d30: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2d40: 62 79 74 65 5b 5d 29 76 61 6c 75 65 3b 0d 0a 20  byte[])value;.. 
2d50: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d70: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
2d80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74    }..        set
2d90: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2da0: 20 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 68           this["h
2db0: 65 78 70 61 73 73 77 6f 72 64 22 5d 20 3d 20 53  expassword"] = S
2dc0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e  QLiteConnection.
2dd0: 54 6f 48 65 78 53 74 72 69 6e 67 28 76 61 6c 75  ToHexString(valu
2de0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
2df0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2e00: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2e10: 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68  /// Gets/Sets th
2e20: 65 20 70 61 67 65 20 73 69 7a 65 20 66 6f 72 20  e page size for 
2e30: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
2e40: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
2e50: 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61  ry>..    [Displa
2e60: 79 4e 61 6d 65 28 22 50 61 67 65 20 53 69 7a 65  yName("Page Size
2e70: 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ")]..    [Browsa
2e80: 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  ble(true)]..    
2e90: 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 31 30  [DefaultValue(10
2ea0: 32 34 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63  24)]..    public
2eb0: 20 69 6e 74 20 50 61 67 65 53 69 7a 65 0d 0a 20   int PageSize.. 
2ec0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 0d     {..      get.
2ed0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
2ee0: 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d    object value;.
2ef0: 0a 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56  .        TryGetV
2f00: 61 6c 75 65 28 22 70 61 67 65 20 73 69 7a 65 22  alue("page size"
2f10: 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20  , out value);.. 
2f20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 43 6f         return Co
2f30: 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28 76 61  nvert.ToInt32(va
2f40: 6c 75 65 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  lue, CultureInfo
2f50: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 29  .CurrentCulture)
2f60: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
2f70: 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b 0d 0a    set..      {..
2f80: 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 70 61          this["pa
2f90: 67 65 20 73 69 7a 65 22 5d 20 3d 20 76 61 6c 75  ge size"] = valu
2fa0: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  e;..      }..   
2fb0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
2fc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2fd0: 20 47 65 74 73 2f 53 65 74 73 20 74 68 65 20 6d   Gets/Sets the m
2fe0: 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
2ff0: 20 70 61 67 65 73 20 74 68 65 20 64 61 74 61 62   pages the datab
3000: 61 73 65 20 6d 61 79 20 68 6f 6c 64 0d 0a 20 20  ase may hold..  
3010: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3020: 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61  ..    [DisplayNa
3030: 6d 65 28 22 4d 61 78 69 6d 75 6d 20 50 61 67 65  me("Maximum Page
3040: 20 43 6f 75 6e 74 22 29 5d 0d 0a 20 20 20 20 5b   Count")]..    [
3050: 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d  Browsable(true)]
3060: 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61  ..    [DefaultVa
3070: 6c 75 65 28 30 29 5d 0d 0a 20 20 20 20 70 75 62  lue(0)]..    pub
3080: 6c 69 63 20 69 6e 74 20 4d 61 78 50 61 67 65 43  lic int MaxPageC
3090: 6f 75 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ount..    {..   
30a0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 7b 0d     get..      {.
30b0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
30c0: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
30d0: 54 72 79 47 65 74 56 61 6c 75 65 28 22 6d 61 78  TryGetValue("max
30e0: 20 70 61 67 65 20 63 6f 75 6e 74 22 2c 20 6f 75   page count", ou
30f0: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
3100: 20 20 20 72 65 74 75 72 6e 20 43 6f 6e 76 65 72     return Conver
3110: 74 2e 54 6f 49 6e 74 33 32 28 76 61 6c 75 65 2c  t.ToInt32(value,
3120: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
3130: 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20  rentCulture);.. 
3140: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65       }..      se
3150: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
3160: 20 20 20 20 74 68 69 73 5b 22 6d 61 78 20 70 61      this["max pa
3170: 67 65 20 63 6f 75 6e 74 22 5d 20 3d 20 76 61 6c  ge count"] = val
3180: 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  ue;..      }..  
3190: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
31a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
31b0: 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68 65 20  / Gets/Sets the 
31c0: 63 61 63 68 65 20 73 69 7a 65 20 66 6f 72 20 74  cache size for t
31d0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
31e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
31f0: 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79  y>..    [Display
3200: 4e 61 6d 65 28 22 43 61 63 68 65 20 53 69 7a 65  Name("Cache Size
3210: 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61  ")]..    [Browsa
3220: 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20  ble(true)]..    
3230: 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 32 30  [DefaultValue(20
3240: 30 30 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63  00)]..    public
3250: 20 69 6e 74 20 43 61 63 68 65 53 69 7a 65 0d 0a   int CacheSize..
3260: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
3270: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3280: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b     object value;
3290: 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47 65 74  ..        TryGet
32a0: 56 61 6c 75 65 28 22 63 61 63 68 65 20 73 69 7a  Value("cache siz
32b0: 65 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d  e", out value);.
32c0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
32d0: 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28  Convert.ToInt32(
32e0: 76 61 6c 75 65 2c 20 43 75 6c 74 75 72 65 49 6e  value, CultureIn
32f0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
3300: 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  e);..      }..  
3310: 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 7b      set..      {
3320: 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b 22  ..        this["
3330: 63 61 63 68 65 20 73 69 7a 65 22 5d 20 3d 20 76  cache size"] = v
3340: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  alue;..      }..
3350: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
3360: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3370: 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68  /// Gets/Sets th
3380: 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  e DateTime forma
3390: 74 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  t for the connec
33a0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
33b0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b  /summary>..    [
33c0: 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 44 61 74  DisplayName("Dat
33d0: 65 54 69 6d 65 20 46 6f 72 6d 61 74 22 29 5d 0d  eTime Format")].
33e0: 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28  .    [Browsable(
33f0: 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66  true)]..    [Def
3400: 61 75 6c 74 56 61 6c 75 65 28 53 51 4c 69 74 65  aultValue(SQLite
3410: 44 61 74 65 46 6f 72 6d 61 74 73 2e 44 65 66 61  DateFormats.Defa
3420: 75 6c 74 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  ult)]..    publi
3430: 63 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  c SQLiteDateForm
3440: 61 74 73 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  ats DateTimeForm
3450: 61 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  at..    {..     
3460: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3470: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  {..            o
3480: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a  bject value;....
3490: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
34a0: 54 72 79 47 65 74 56 61 6c 75 65 28 22 64 61 74  TryGetValue("dat
34b0: 65 74 69 6d 65 66 6f 72 6d 61 74 22 2c 20 6f 75  etimeformat", ou
34c0: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
34d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
34f0: 6c 75 65 20 69 73 20 53 51 4c 69 74 65 44 61 74  lue is SQLiteDat
3500: 65 46 6f 72 6d 61 74 73 29 0d 0a 20 20 20 20 20  eFormats)..     
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3520: 65 74 75 72 6e 20 28 53 51 4c 69 74 65 44 61 74  eturn (SQLiteDat
3530: 65 46 6f 72 6d 61 74 73 29 76 61 6c 75 65 3b 0d  eFormats)value;.
3540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3550: 20 65 6c 73 65 20 69 66 20 28 76 61 6c 75 65 20   else if (value 
3560: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
3570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3580: 74 75 72 6e 20 28 53 51 4c 69 74 65 44 61 74 65  turn (SQLiteDate
3590: 46 6f 72 6d 61 74 73 29 54 79 70 65 44 65 73 63  Formats)TypeDesc
35a0: 72 69 70 74 6f 72 2e 47 65 74 43 6f 6e 76 65 72  riptor.GetConver
35b0: 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
35c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
35d0: 70 65 6f 66 28 53 51 4c 69 74 65 44 61 74 65 46  peof(SQLiteDateF
35e0: 6f 72 6d 61 74 73 29 29 2e 43 6f 6e 76 65 72 74  ormats)).Convert
35f0: 46 72 6f 6d 28 76 61 6c 75 65 29 3b 0d 0a 20 20  From(value);..  
3600: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3610: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3620: 6e 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  n SQLiteDateForm
3630: 61 74 73 2e 44 65 66 61 75 6c 74 3b 0d 0a 20 20  ats.Default;..  
3640: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3650: 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   set..        {.
3660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
3670: 73 5b 22 64 61 74 65 74 69 6d 65 66 6f 72 6d 61  s["datetimeforma
3680: 74 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20  t"] = value;..  
3690: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
36a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
36b0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ry>..    /// Get
36c0: 73 2f 53 65 74 73 20 74 68 65 20 44 61 74 65 54  s/Sets the DateT
36d0: 69 6d 65 20 6b 69 6e 64 20 66 6f 72 20 74 68 65  ime kind for the
36e0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
36f0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
3700: 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61  ..    [DisplayNa
3710: 6d 65 28 22 44 61 74 65 54 69 6d 65 20 4b 69 6e  me("DateTime Kin
3720: 64 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73  d")]..    [Brows
3730: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
3740: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 44   [DefaultValue(D
3750: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e 73 70  ateTimeKind.Unsp
3760: 65 63 69 66 69 65 64 29 5d 0d 0a 20 20 20 20 70  ecified)]..    p
3770: 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65 4b 69  ublic DateTimeKi
3780: 6e 64 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 0d  nd DateTimeKind.
3790: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
37a0: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  get..        {..
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
37c0: 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ct value;....   
37d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 54 72 79           if (Try
37e0: 47 65 74 56 61 6c 75 65 28 22 64 61 74 65 74 69  GetValue("dateti
37f0: 6d 65 6b 69 6e 64 22 2c 20 6f 75 74 20 76 61 6c  mekind", out val
3800: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
3810: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3820: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69       if (value i
3830: 73 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 29 0d  s DateTimeKind).
3840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3850: 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74       return (Dat
3860: 65 54 69 6d 65 4b 69 6e 64 29 76 61 6c 75 65 3b  eTimeKind)value;
3870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3880: 20 20 65 6c 73 65 20 69 66 20 28 76 61 6c 75 65    else if (value
3890: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
38b0: 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65 4b  eturn (DateTimeK
38c0: 69 6e 64 29 54 79 70 65 44 65 73 63 72 69 70 74  ind)TypeDescript
38d0: 6f 72 2e 47 65 74 43 6f 6e 76 65 72 74 65 72 28  or.GetConverter(
38e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38f0: 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
3900: 28 44 61 74 65 54 69 6d 65 4b 69 6e 64 29 29 2e  (DateTimeKind)).
3910: 43 6f 6e 76 65 72 74 46 72 6f 6d 28 76 61 6c 75  ConvertFrom(valu
3920: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
3930: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3940: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
3950: 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65  eKind.Unspecifie
3960: 64 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  d;..        }.. 
3970: 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20         set..    
3980: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3990: 20 20 20 74 68 69 73 5b 22 64 61 74 65 74 69 6d     this["datetim
39a0: 65 6b 69 6e 64 22 5d 20 3d 20 76 61 6c 75 65 3b  ekind"] = value;
39b0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
39c0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
39d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
39e0: 20 47 65 74 73 2f 73 65 74 73 20 74 68 65 20 44   Gets/sets the D
39f0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
3a00: 74 72 69 6e 67 20 75 73 65 64 20 66 6f 72 20 66  tring used for f
3a10: 6f 72 6d 61 74 74 69 6e 67 0d 0a 20 20 20 20 2f  ormatting..    /
3a20: 2f 2f 20 61 6e 64 20 70 61 72 73 69 6e 67 20 70  // and parsing p
3a30: 75 72 70 6f 73 65 73 2e 0d 0a 20 20 20 20 2f 2f  urposes...    //
3a40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
3a50: 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28 22    [DisplayName("
3a60: 44 61 74 65 54 69 6d 65 20 46 6f 72 6d 61 74 20  DateTime Format 
3a70: 53 74 72 69 6e 67 22 29 5d 0d 0a 20 20 20 20 5b  String")]..    [
3a80: 42 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d  Browsable(true)]
3a90: 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61  ..    [DefaultVa
3aa0: 6c 75 65 28 6e 75 6c 6c 29 5d 0d 0a 20 20 20 20  lue(null)]..    
3ab0: 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44 61  public string Da
3ac0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  teTimeFormatStri
3ad0: 6e 67 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ng..    {..     
3ae0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
3af0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  {..            o
3b00: 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a  bject value;....
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3b20: 54 72 79 47 65 74 56 61 6c 75 65 28 22 64 61 74  TryGetValue("dat
3b30: 65 74 69 6d 65 66 6f 72 6d 61 74 73 74 72 69 6e  etimeformatstrin
3b40: 67 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  g", out value)).
3b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b70: 69 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72  if (value is str
3b80: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
3b90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3ba0: 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d   (string)value;.
3bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3bc0: 20 65 6c 73 65 20 69 66 20 28 76 61 6c 75 65 20   else if (value 
3bd0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3bf0: 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72  turn value.ToStr
3c00: 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
3c10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3c20: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
3c30: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
3c40: 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20        set..     
3c50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3c60: 20 20 74 68 69 73 5b 22 64 61 74 65 74 69 6d 65    this["datetime
3c70: 66 6f 72 6d 61 74 73 74 72 69 6e 67 22 5d 20 3d  formatstring"] =
3c80: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
3c90: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
3ca0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
3cb0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74      /// Gets/Set
3cc0: 73 20 74 68 65 20 70 6c 61 63 65 68 6f 6c 64 65  s the placeholde
3cd0: 72 20 62 61 73 65 20 73 63 68 65 6d 61 20 6e 61  r base schema na
3ce0: 6d 65 20 75 73 65 64 20 66 6f 72 0d 0a 20 20 20  me used for..   
3cf0: 20 2f 2f 2f 20 2e 4e 45 54 20 46 72 61 6d 65 77   /// .NET Framew
3d00: 6f 72 6b 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  ork compatibilit
3d10: 79 20 70 75 72 70 6f 73 65 73 2e 0d 0a 20 20 20  y purposes...   
3d20: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3d30: 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d  .    [DisplayNam
3d40: 65 28 22 42 61 73 65 20 53 63 68 65 6d 61 20 4e  e("Base Schema N
3d50: 61 6d 65 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f  ame")]..    [Bro
3d60: 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20  wsable(true)].. 
3d70: 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65     [DefaultValue
3d80: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
3d90: 6e 2e 44 65 66 61 75 6c 74 42 61 73 65 53 63 68  n.DefaultBaseSch
3da0: 65 6d 61 4e 61 6d 65 29 5d 0d 0a 20 20 20 20 70  emaName)]..    p
3db0: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 42 61 73  ublic string Bas
3dc0: 65 53 63 68 65 6d 61 4e 61 6d 65 0d 0a 20 20 20  eSchemaName..   
3dd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65 74 0d   {..        get.
3de0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3df0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
3e00: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
3e10: 20 20 20 20 20 69 66 20 28 54 72 79 47 65 74 56       if (TryGetV
3e20: 61 6c 75 65 28 22 62 61 73 65 73 63 68 65 6d 61  alue("baseschema
3e30: 6e 61 6d 65 22 2c 20 6f 75 74 20 76 61 6c 75 65  name", out value
3e40: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
3e50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3e60: 20 20 20 69 66 20 28 76 61 6c 75 65 20 69 73 20     if (value is 
3e70: 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  string)..       
3e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3e90: 75 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c 75  urn (string)valu
3ea0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
3eb0: 20 20 20 20 65 6c 73 65 20 69 66 20 28 76 61 6c      else if (val
3ec0: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f   return value.To
3ef0: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
3f00: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
3f10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
3f20: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
3f30: 0a 20 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20  .        set..  
3f40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3f50: 20 20 20 20 20 74 68 69 73 5b 22 62 61 73 65 73       this["bases
3f60: 63 68 65 6d 61 6e 61 6d 65 22 5d 20 3d 20 76 61  chemaname"] = va
3f70: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
3f80: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
3f90: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3fa0: 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
3fb0: 68 6f 77 20 53 51 4c 69 74 65 20 68 61 6e 64 6c  how SQLite handl
3fc0: 65 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  es the transacti
3fd0: 6f 6e 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e  on journal file.
3fe0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
3ff0: 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f 77 73  ary>..    [Brows
4000: 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20  able(true)]..   
4010: 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28 53   [DefaultValue(S
4020: 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65  QLiteJournalMode
4030: 45 6e 75 6d 2e 44 65 66 61 75 6c 74 29 5d 0d 0a  Enum.Default)]..
4040: 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65      [DisplayName
4050: 28 22 4a 6f 75 72 6e 61 6c 20 4d 6f 64 65 22 29  ("Journal Mode")
4060: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51  ]..    public SQ
4070: 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45  LiteJournalModeE
4080: 6e 75 6d 20 4a 6f 75 72 6e 61 6c 4d 6f 64 65 0d  num JournalMode.
4090: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65  .    {..      ge
40a0: 74 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  t..      {..    
40b0: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
40c0: 3b 0d 0a 20 20 20 20 20 20 20 20 54 72 79 47 65  ;..        TryGe
40d0: 74 56 61 6c 75 65 28 22 6a 6f 75 72 6e 61 6c 20  tValue("journal 
40e0: 6d 6f 64 65 22 2c 20 6f 75 74 20 76 61 6c 75 65  mode", out value
40f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  );..        if (
4100: 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29  value is string)
4110: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
4120: 72 6e 20 28 53 51 4c 69 74 65 4a 6f 75 72 6e 61  rn (SQLiteJourna
4130: 6c 4d 6f 64 65 45 6e 75 6d 29 54 79 70 65 44 65  lModeEnum)TypeDe
4140: 73 63 72 69 70 74 6f 72 2e 47 65 74 43 6f 6e 76  scriptor.GetConv
4150: 65 72 74 65 72 28 74 79 70 65 6f 66 28 53 51 4c  erter(typeof(SQL
4160: 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e  iteJournalModeEn
4170: 75 6d 29 29 2e 43 6f 6e 76 65 72 74 46 72 6f 6d  um)).ConvertFrom
4180: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
4190: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
41a0: 20 20 72 65 74 75 72 6e 20 28 53 51 4c 69 74 65    return (SQLite
41b0: 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 29  JournalModeEnum)
41c0: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d  value;..      }.
41d0: 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20  .      set..    
41e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69    {..        thi
41f0: 73 5b 22 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 22  s["journal mode"
4200: 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ] = value;..    
4210: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
4220: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4230: 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68  .    /// Sets th
4240: 65 20 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74  e default isolat
4250: 69 6f 6e 20 6c 65 76 65 6c 20 66 6f 72 20 74 72  ion level for tr
4260: 61 6e 73 61 63 74 69 6f 6e 73 20 6f 6e 20 74 68  ansactions on th
4270: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
4280: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4290: 3e 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c  >..    [Browsabl
42a0: 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44  e(true)]..    [D
42b0: 65 66 61 75 6c 74 56 61 6c 75 65 28 49 73 6f 6c  efaultValue(Isol
42c0: 61 74 69 6f 6e 4c 65 76 65 6c 2e 53 65 72 69 61  ationLevel.Seria
42d0: 6c 69 7a 61 62 6c 65 29 5d 0d 0a 20 20 20 20 5b  lizable)]..    [
42e0: 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 44 65 66  DisplayName("Def
42f0: 61 75 6c 74 20 49 73 6f 6c 61 74 69 6f 6e 20 4c  ault Isolation L
4300: 65 76 65 6c 22 29 5d 0d 0a 20 20 20 20 70 75 62  evel")]..    pub
4310: 6c 69 63 20 49 73 6f 6c 61 74 69 6f 6e 4c 65 76  lic IsolationLev
4320: 65 6c 20 44 65 66 61 75 6c 74 49 73 6f 6c 61 74  el DefaultIsolat
4330: 69 6f 6e 4c 65 76 65 6c 0d 0a 20 20 20 20 7b 0d  ionLevel..    {.
4340: 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20  .      get..    
4350: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a    {..        obj
4360: 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ect value;..    
4370: 20 20 20 20 54 72 79 47 65 74 56 61 6c 75 65 28      TryGetValue(
4380: 22 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69  "default isolati
4390: 6f 6e 6c 65 76 65 6c 22 2c 20 6f 75 74 20 76 61  onlevel", out va
43a0: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  lue);..        i
43b0: 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72 69  f (value is stri
43c0: 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ng)..          r
43d0: 65 74 75 72 6e 20 28 49 73 6f 6c 61 74 69 6f 6e  eturn (Isolation
43e0: 4c 65 76 65 6c 29 54 79 70 65 44 65 73 63 72 69  Level)TypeDescri
43f0: 70 74 6f 72 2e 47 65 74 43 6f 6e 76 65 72 74 65  ptor.GetConverte
4400: 72 28 74 79 70 65 6f 66 28 49 73 6f 6c 61 74 69  r(typeof(Isolati
4410: 6f 6e 4c 65 76 65 6c 29 29 2e 43 6f 6e 76 65 72  onLevel)).Conver
4420: 74 46 72 6f 6d 28 76 61 6c 75 65 29 3b 0d 0a 20  tFrom(value);.. 
4430: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
4440: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 49         return (I
4450: 73 6f 6c 61 74 69 6f 6e 4c 65 76 65 6c 29 76 61  solationLevel)va
4460: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  lue;..      }.. 
4470: 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20       set..      
4480: 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b  {..        this[
4490: 22 64 65 66 61 75 6c 74 20 69 73 6f 6c 61 74 69  "default isolati
44a0: 6f 6e 6c 65 76 65 6c 22 5d 20 3d 20 76 61 6c 75  onlevel"] = valu
44b0: 65 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  e;..      }..   
44c0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
44d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
44e0: 20 47 65 74 73 2f 73 65 74 73 20 74 68 65 20 64   Gets/sets the d
44f0: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
4500: 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6e  type for the con
4510: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
4520: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4530: 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28 22    [DisplayName("
4540: 44 65 66 61 75 6c 74 20 44 61 74 61 62 61 73 65  Default Database
4550: 20 54 79 70 65 22 29 5d 0d 0a 20 20 20 20 5b 42   Type")]..    [B
4560: 72 6f 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d  rowsable(true)].
4570: 0a 20 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c  .    [DefaultVal
4580: 75 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  ue(SQLiteConnect
4590: 69 6f 6e 2e 42 61 64 44 62 54 79 70 65 29 5d 0d  ion.BadDbType)].
45a0: 0a 20 20 20 20 70 75 62 6c 69 63 20 44 62 54 79  .    public DbTy
45b0: 70 65 20 44 65 66 61 75 6c 74 44 62 54 79 70 65  pe DefaultDbType
45c0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
45d0: 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   get..        {.
45e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a  .            obj
45f0: 65 63 74 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ect value;....  
4600: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 54 72            if (Tr
4610: 79 47 65 74 56 61 6c 75 65 28 22 64 65 66 61 75  yGetValue("defau
4620: 6c 74 64 62 74 79 70 65 22 2c 20 6f 75 74 20 76  ltdbtype", out v
4630: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
4640: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4650: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
4660: 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
4670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4680: 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
4690: 54 79 70 65 44 65 73 63 72 69 70 74 6f 72 2e 47  TypeDescriptor.G
46a0: 65 74 43 6f 6e 76 65 72 74 65 72 28 0d 0a 20 20  etConverter(..  
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46c0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 62 54        typeof(DbT
46d0: 79 70 65 29 29 2e 43 6f 6e 76 65 72 74 46 72 6f  ype)).ConvertFro
46e0: 6d 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  m(value);..     
46f0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
4700: 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  if (value != nul
4710: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4720: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
4730: 44 62 54 79 70 65 29 76 61 6c 75 65 3b 0d 0a 20  DbType)value;.. 
4740: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
4750: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4760: 72 6e 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  rn SQLiteConnect
4770: 69 6f 6e 2e 42 61 64 44 62 54 79 70 65 3b 0d 0a  ion.BadDbType;..
4780: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
4790: 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20     set..        
47a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
47b0: 68 69 73 5b 22 64 65 66 61 75 6c 74 64 62 74 79  his["defaultdbty
47c0: 70 65 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20  pe"] = value;.. 
47d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
47e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
47f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65  ary>..    /// Ge
4800: 74 73 2f 73 65 74 73 20 74 68 65 20 64 65 66 61  ts/sets the defa
4810: 75 6c 74 20 74 79 70 65 20 6e 61 6d 65 20 66 6f  ult type name fo
4820: 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
4830: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
4840: 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70  mary>..    [Disp
4850: 6c 61 79 4e 61 6d 65 28 22 44 65 66 61 75 6c 74  layName("Default
4860: 20 54 79 70 65 20 4e 61 6d 65 22 29 5d 0d 0a 20   Type Name")].. 
4870: 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72     [Browsable(tr
4880: 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75  ue)]..    [Defau
4890: 6c 74 56 61 6c 75 65 28 6e 75 6c 6c 29 5d 0d 0a  ltValue(null)]..
48a0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
48b0: 67 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  g DefaultTypeNam
48c0: 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
48d0: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    get..        {
48e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62  ..            ob
48f0: 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
4900: 20 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56           TryGetV
4910: 61 6c 75 65 28 22 64 65 66 61 75 6c 74 74 79 70  alue("defaulttyp
4920: 65 6e 61 6d 65 22 2c 20 6f 75 74 20 76 61 6c 75  ename", out valu
4930: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
4940: 20 72 65 74 75 72 6e 20 28 76 61 6c 75 65 20 21   return (value !
4950: 3d 20 6e 75 6c 6c 29 20 3f 20 76 61 6c 75 65 2e  = null) ? value.
4960: 54 6f 53 74 72 69 6e 67 28 29 20 3a 20 6e 75 6c  ToString() : nul
4970: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  l;..        }.. 
4980: 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20         set..    
4990: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
49a0: 20 20 20 74 68 69 73 5b 22 64 65 66 61 75 6c 74     this["default
49b0: 74 79 70 65 6e 61 6d 65 22 5d 20 3d 20 76 61 6c  typename"] = val
49c0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
49d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
49e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
49f0: 2f 2f 2f 20 47 65 74 73 2f 73 65 74 73 20 74 68  /// Gets/sets th
4a00: 65 20 56 46 53 20 6e 61 6d 65 20 66 6f 72 20 74  e VFS name for t
4a10: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
4a20: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4a30: 79 3e 0d 0a 20 20 20 20 5b 44 69 73 70 6c 61 79  y>..    [Display
4a40: 4e 61 6d 65 28 22 56 46 53 20 4e 61 6d 65 22 29  Name("VFS Name")
4a50: 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c  ]..    [Browsabl
4a60: 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44  e(true)]..    [D
4a70: 65 66 61 75 6c 74 56 61 6c 75 65 28 6e 75 6c 6c  efaultValue(null
4a80: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  )]..    public s
4a90: 74 72 69 6e 67 20 56 66 73 4e 61 6d 65 0d 0a 20  tring VfsName.. 
4aa0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65     {..        ge
4ab0: 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
4ac0: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
4ad0: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
4ae0: 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75 65       TryGetValue
4af0: 28 22 76 66 73 6e 61 6d 65 22 2c 20 6f 75 74 20  ("vfsname", out 
4b00: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
4b10: 20 20 20 20 20 72 65 74 75 72 6e 20 28 76 61 6c       return (val
4b20: 75 65 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 76 61  ue != null) ? va
4b30: 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 20 3a  lue.ToString() :
4b40: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
4b50: 7d 0d 0a 20 20 20 20 20 20 20 20 73 65 74 0d 0a  }..        set..
4b60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4b70: 20 20 20 20 20 20 20 74 68 69 73 5b 22 76 66 73         this["vfs
4b80: 6e 61 6d 65 22 5d 20 3d 20 76 61 6c 75 65 3b 0d  name"] = value;.
4b90: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
4ba0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
4bb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
4bc0: 49 66 20 65 6e 61 62 6c 65 64 2c 20 75 73 65 20  If enabled, use 
4bd0: 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73  foreign key cons
4be0: 74 72 61 69 6e 74 73 0d 0a 20 20 20 20 2f 2f 2f  traints..    ///
4bf0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4c00: 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28 22 46   [DisplayName("F
4c10: 6f 72 65 69 67 6e 20 4b 65 79 73 22 29 5d 0d 0a  oreign Keys")]..
4c20: 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74      [Browsable(t
4c30: 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61  rue)]..    [Defa
4c40: 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65 29 5d  ultValue(false)]
4c50: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
4c60: 6c 20 46 6f 72 65 69 67 6e 4b 65 79 73 0d 0a 20  l ForeignKeys.. 
4c70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65     {..        ge
4c80: 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
4c90: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
4ca0: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
4cb0: 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75 65       TryGetValue
4cc0: 28 22 66 6f 72 65 69 67 6e 20 6b 65 79 73 22 2c  ("foreign keys",
4cd0: 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20   out value);..  
4ce0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4cf0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54   SQLiteConvert.T
4d00: 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75 65 29 3b  oBoolean(value);
4d10: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
4d20: 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20       set..      
4d30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4d40: 20 74 68 69 73 5b 22 66 6f 72 65 69 67 6e 20 6b   this["foreign k
4d50: 65 79 73 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a  eys"] = value;..
4d60: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
4d70: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
4d80: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45  mary>..    /// E
4d90: 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65  nable or disable
4da0: 20 74 68 65 20 72 65 63 75 72 73 69 76 65 20 74   the recursive t
4db0: 72 69 67 67 65 72 20 63 61 70 61 62 69 6c 69 74  rigger capabilit
4dc0: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
4dd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69 73  mmary>..    [Dis
4de0: 70 6c 61 79 4e 61 6d 65 28 22 52 65 63 75 72 73  playName("Recurs
4df0: 69 76 65 20 54 72 69 67 67 65 72 73 22 29 5d 0d  ive Triggers")].
4e00: 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65 28  .    [Browsable(
4e10: 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66  true)]..    [Def
4e20: 61 75 6c 74 56 61 6c 75 65 28 66 61 6c 73 65 29  aultValue(false)
4e30: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ]..    public bo
4e40: 6f 6c 20 52 65 63 75 72 73 69 76 65 54 72 69 67  ol RecursiveTrig
4e50: 67 65 72 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  gers..    {..   
4e60: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
4e70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4e80: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a   object value;..
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 79 47              TryG
4ea0: 65 74 56 61 6c 75 65 28 22 72 65 63 75 72 73 69  etValue("recursi
4eb0: 76 65 20 74 72 69 67 67 65 72 73 22 2c 20 6f 75  ve triggers", ou
4ec0: 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
4ed0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
4ee0: 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f  LiteConvert.ToBo
4ef0: 6f 6c 65 61 6e 28 76 61 6c 75 65 29 3b 0d 0a 20  olean(value);.. 
4f00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4f10: 20 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    set..        {
4f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4f30: 69 73 5b 22 72 65 63 75 72 73 69 76 65 20 74 72  is["recursive tr
4f40: 69 67 67 65 72 73 22 5d 20 3d 20 76 61 6c 75 65  iggers"] = value
4f50: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
4f60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
4f70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
4f80: 2f 20 49 66 20 6e 6f 6e 2d 6e 75 6c 6c 2c 20 74  / If non-null, t
4f90: 68 69 73 20 69 73 20 74 68 65 20 76 65 72 73 69  his is the versi
4fa0: 6f 6e 20 6f 66 20 5a 69 70 56 46 53 20 74 6f 20  on of ZipVFS to 
4fb0: 75 73 65 2e 20 20 54 68 69 73 20 72 65 71 75 69  use.  This requi
4fc0: 72 65 73 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  res the..    ///
4fd0: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
4fe0: 69 74 65 20 69 6e 74 65 72 6f 70 20 61 73 73 65  ite interop asse
4ff0: 6d 62 6c 79 20 2d 41 4e 44 2d 20 70 72 69 6d 61  mbly -AND- prima
5000: 72 79 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d  ry managed assem
5010: 62 6c 79 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20  bly to..    /// 
5020: 62 65 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  be compiled with
5030: 20 74 68 65 20 49 4e 54 45 52 4f 50 5f 49 4e 43   the INTEROP_INC
5040: 4c 55 44 45 5f 5a 49 50 56 46 53 20 6f 70 74 69  LUDE_ZIPVFS opti
5050: 6f 6e 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  on; otherwise, t
5060: 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f  his..    /// pro
5070: 70 65 72 74 79 20 64 6f 65 73 20 6e 6f 74 68 69  perty does nothi
5080: 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ng...    /// </s
5090: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 44 69  ummary>..    [Di
50a0: 73 70 6c 61 79 4e 61 6d 65 28 22 5a 69 70 56 46  splayName("ZipVF
50b0: 53 20 56 65 72 73 69 6f 6e 22 29 5d 0d 0a 20 20  S Version")]..  
50c0: 20 20 5b 42 72 6f 77 73 61 62 6c 65 28 74 72 75    [Browsable(tru
50d0: 65 29 5d 0d 0a 20 20 20 20 5b 44 65 66 61 75 6c  e)]..    [Defaul
50e0: 74 56 61 6c 75 65 28 6e 75 6c 6c 29 5d 0d 0a 20  tValue(null)].. 
50f0: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
5100: 20 5a 69 70 56 66 73 56 65 72 73 69 6f 6e 0d 0a   ZipVfsVersion..
5110: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67      {..        g
5120: 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  et..        {.. 
5130: 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
5140: 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
5150: 20 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75        TryGetValu
5160: 65 28 22 7a 69 70 76 66 73 76 65 72 73 69 6f 6e  e("zipvfsversion
5170: 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  ", out value);..
5180: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5190: 72 6e 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c  rn (value != nul
51a0: 6c 29 20 3f 20 76 61 6c 75 65 2e 54 6f 53 74 72  l) ? value.ToStr
51b0: 69 6e 67 28 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20  ing() : null;.. 
51c0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
51d0: 20 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    set..        {
51e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
51f0: 69 73 5b 22 7a 69 70 76 66 73 76 65 72 73 69 6f  is["zipvfsversio
5200: 6e 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20  n"] = value;..  
5210: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
5220: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5230: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ry>..    /// Get
5240: 73 2f 53 65 74 73 20 74 68 65 20 65 78 74 72 61  s/Sets the extra
5250: 20 62 65 68 61 76 69 6f 72 61 6c 20 66 6c 61 67   behavioral flag
5260: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
5270: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 5b 42 72 6f  mmary>..    [Bro
5280: 77 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20  wsable(true)].. 
5290: 20 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65     [DefaultValue
52a0: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
52b0: 6e 46 6c 61 67 73 2e 44 65 66 61 75 6c 74 29 5d  nFlags.Default)]
52c0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c  ..    public SQL
52d0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
52e0: 67 73 20 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d  gs Flags..    {.
52f0: 0a 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20  .        get..  
5300: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5310: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
5320: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
5330: 20 20 69 66 20 28 54 72 79 47 65 74 56 61 6c 75    if (TryGetValu
5340: 65 28 22 66 6c 61 67 73 22 2c 20 6f 75 74 20 76  e("flags", out v
5350: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
5360: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5370: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
5380: 20 69 73 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   is SQLiteConnec
5390: 74 69 6f 6e 46 6c 61 67 73 29 0d 0a 20 20 20 20  tionFlags)..    
53a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53b0: 72 65 74 75 72 6e 20 28 53 51 4c 69 74 65 43 6f  return (SQLiteCo
53c0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 29 76 61  nnectionFlags)va
53d0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
53e0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 76        else if (v
53f0: 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  alue != null).. 
5400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5410: 20 20 20 72 65 74 75 72 6e 20 28 53 51 4c 69 74     return (SQLit
5420: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5430: 29 54 79 70 65 44 65 73 63 72 69 70 74 6f 72 2e  )TypeDescriptor.
5440: 47 65 74 43 6f 6e 76 65 72 74 65 72 28 0d 0a 20  GetConverter(.. 
5450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5460: 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51         typeof(SQ
5470: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
5480: 61 67 73 29 29 2e 43 6f 6e 76 65 72 74 46 72 6f  ags)).ConvertFro
5490: 6d 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  m(value);..     
54a0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
54b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
54c0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
54d0: 6c 61 67 73 2e 44 65 66 61 75 6c 74 3b 0d 0a 20  lags.Default;.. 
54e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
54f0: 20 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 7b    set..        {
5500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
5510: 69 73 5b 22 66 6c 61 67 73 22 5d 20 3d 20 76 61  is["flags"] = va
5520: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
5530: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
5540: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5550: 20 2f 2f 2f 20 49 66 20 65 6e 61 62 6c 65 64 2c   /// If enabled,
5560: 20 61 70 70 6c 79 20 74 68 65 20 64 65 66 61 75   apply the defau
5570: 6c 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 65  lt connection se
5580: 74 74 69 6e 67 73 20 74 6f 20 6f 70 65 6e 65 64  ttings to opened
5590: 20 64 61 74 61 62 61 73 65 73 2e 0d 0a 20 20 20   databases...   
55a0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
55b0: 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d  .    [DisplayNam
55c0: 65 28 22 53 65 74 20 44 65 66 61 75 6c 74 73 22  e("Set Defaults"
55d0: 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62  )]..    [Browsab
55e0: 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b  le(true)]..    [
55f0: 44 65 66 61 75 6c 74 56 61 6c 75 65 28 74 72 75  DefaultValue(tru
5600: 65 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  e)]..    public 
5610: 62 6f 6f 6c 20 53 65 74 44 65 66 61 75 6c 74 73  bool SetDefaults
5620: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
5630: 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   get..        {.
5640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a  .            obj
5650: 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ect value;..    
5660: 20 20 20 20 20 20 20 20 54 72 79 47 65 74 56 61          TryGetVa
5670: 6c 75 65 28 22 73 65 74 64 65 66 61 75 6c 74 73  lue("setdefaults
5680: 22 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  ", out value);..
5690: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
56a0: 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  rn SQLiteConvert
56b0: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61 6c 75 65  .ToBoolean(value
56c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
56d0: 20 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20         set..    
56e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
56f0: 20 20 20 74 68 69 73 5b 22 73 65 74 64 65 66 61     this["setdefa
5700: 75 6c 74 73 22 5d 20 3d 20 76 61 6c 75 65 3b 0d  ults"] = value;.
5710: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
5720: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
5730: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5740: 49 66 20 65 6e 61 62 6c 65 64 2c 20 61 74 74 65  If enabled, atte
5750: 6d 70 74 20 74 6f 20 72 65 73 6f 6c 76 65 20 74  mpt to resolve t
5760: 68 65 20 70 72 6f 76 69 64 65 64 20 64 61 74 61  he provided data
5770: 20 73 6f 75 72 63 65 20 66 69 6c 65 20 6e 61 6d   source file nam
5780: 65 20 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  e to a..    /// 
5790: 66 75 6c 6c 20 70 61 74 68 20 62 65 66 6f 72 65  full path before
57a0: 20 6f 70 65 6e 69 6e 67 2e 0d 0a 20 20 20 20 2f   opening...    /
57b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
57c0: 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65 28     [DisplayName(
57d0: 22 54 6f 20 46 75 6c 6c 20 50 61 74 68 22 29 5d  "To Full Path")]
57e0: 0d 0a 20 20 20 20 5b 42 72 6f 77 73 61 62 6c 65  ..    [Browsable
57f0: 28 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 44 65  (true)]..    [De
5800: 66 61 75 6c 74 56 61 6c 75 65 28 74 72 75 65 29  faultValue(true)
5810: 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f  ]..    public bo
5820: 6f 6c 20 54 6f 46 75 6c 6c 50 61 74 68 0d 0a 20  ol ToFullPath.. 
5830: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 67 65     {..        ge
5840: 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  t..        {..  
5850: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
5860: 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20   value;..       
5870: 20 20 20 20 20 54 72 79 47 65 74 56 61 6c 75 65       TryGetValue
5880: 28 22 74 6f 66 75 6c 6c 70 61 74 68 22 2c 20 6f  ("tofullpath", o
5890: 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ut value);..    
58a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
58b0: 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42  QLiteConvert.ToB
58c0: 6f 6f 6c 65 61 6e 28 76 61 6c 75 65 29 3b 0d 0a  oolean(value);..
58d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
58e0: 20 20 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20     set..        
58f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
5900: 68 69 73 5b 22 74 6f 66 75 6c 6c 70 61 74 68 22  his["tofullpath"
5910: 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ] = value;..    
5920: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
5930: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5940: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 65 6e  >..    /// If en
5950: 61 62 6c 65 64 2c 20 73 6b 69 70 20 75 73 69 6e  abled, skip usin
5960: 67 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64  g the configured
5970: 20 64 65 66 61 75 6c 74 20 63 6f 6e 6e 65 63 74   default connect
5980: 69 6f 6e 20 66 6c 61 67 73 2e 0d 0a 20 20 20 20  ion flags...    
5990: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
59a0: 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d 65      [DisplayName
59b0: 28 22 4e 6f 20 44 65 66 61 75 6c 74 20 46 6c 61  ("No Default Fla
59c0: 67 73 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77  gs")]..    [Brow
59d0: 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20  sable(true)]..  
59e0: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
59f0: 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75 62  false)]..    pub
5a00: 6c 69 63 20 62 6f 6f 6c 20 4e 6f 44 65 66 61 75  lic bool NoDefau
5a10: 6c 74 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a  ltFlags..    {..
5a20: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
5a30: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5a40: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
5a50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54  ;..            T
5a60: 72 79 47 65 74 56 61 6c 75 65 28 22 6e 6f 64 65  ryGetValue("node
5a70: 66 61 75 6c 74 66 6c 61 67 73 22 2c 20 6f 75 74  faultflags", out
5a80: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
5a90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
5aa0: 69 74 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f  iteConvert.ToBoo
5ab0: 6c 65 61 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20  lean(value);..  
5ac0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5ad0: 20 73 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d   set..        {.
5ae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
5af0: 73 5b 22 6e 6f 64 65 66 61 75 6c 74 66 6c 61 67  s["nodefaultflag
5b00: 73 22 5d 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20  s"] = value;..  
5b10: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
5b20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5b30: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  ry>..    /// If 
5b40: 65 6e 61 62 6c 65 64 2c 20 73 6b 69 70 20 75 73  enabled, skip us
5b50: 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 75 72  ing the configur
5b60: 65 64 20 73 68 61 72 65 64 20 63 6f 6e 6e 65 63  ed shared connec
5b70: 74 69 6f 6e 20 66 6c 61 67 73 2e 0d 0a 20 20 20  tion flags...   
5b80: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5b90: 0a 20 20 20 20 5b 44 69 73 70 6c 61 79 4e 61 6d  .    [DisplayNam
5ba0: 65 28 22 4e 6f 20 53 68 61 72 65 64 20 46 6c 61  e("No Shared Fla
5bb0: 67 73 22 29 5d 0d 0a 20 20 20 20 5b 42 72 6f 77  gs")]..    [Brow
5bc0: 73 61 62 6c 65 28 74 72 75 65 29 5d 0d 0a 20 20  sable(true)]..  
5bd0: 20 20 5b 44 65 66 61 75 6c 74 56 61 6c 75 65 28    [DefaultValue(
5be0: 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 70 75 62  false)]..    pub
5bf0: 6c 69 63 20 62 6f 6f 6c 20 4e 6f 53 68 61 72 65  lic bool NoShare
5c00: 64 46 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20  dFlags..    {.. 
5c10: 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
5c20: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5c30: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 3b     object value;
5c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72  ..            Tr
5c50: 79 47 65 74 56 61 6c 75 65 28 22 6e 6f 73 68 61  yGetValue("nosha
5c60: 72 65 64 66 6c 61 67 73 22 2c 20 6f 75 74 20 76  redflags", out v
5c70: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
5c80: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
5c90: 65 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65  eConvert.ToBoole
5ca0: 61 6e 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  an(value);..    
5cb0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73      }..        s
5cc0: 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  et..        {.. 
5cd0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 5b             this[
5ce0: 22 6e 6f 73 68 61 72 65 64 66 6c 61 67 73 22 5d  "nosharedflags"]
5cf0: 20 3d 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20   = value;..     
5d00: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
5d10: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5d20: 0d 0a 20 20 20 20 2f 2f 2f 20 48 65 6c 70 65 72  ..    /// Helper
5d30: 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 72 65   function for re
5d40: 74 72 69 65 76 69 6e 67 20 76 61 6c 75 65 73 20  trieving values 
5d50: 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74  from the connect
5d60: 69 6f 6e 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f  ionstring..    /
5d70: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5d80: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5d90: 6d 65 3d 22 6b 65 79 77 6f 72 64 22 3e 54 68 65  me="keyword">The
5da0: 20 6b 65 79 77 6f 72 64 20 74 6f 20 72 65 74 72   keyword to retr
5db0: 69 65 76 65 20 73 65 74 74 69 6e 67 73 20 66 6f  ieve settings fo
5dc0: 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  r</param>..    /
5dd0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5de0: 76 61 6c 75 65 22 3e 54 68 65 20 72 65 73 75 6c  value">The resul
5df0: 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76  ting parameter v
5e00: 61 6c 75 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  alue</param>..  
5e10: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52    /// <returns>R
5e20: 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74  eturns true if t
5e30: 68 65 20 76 61 6c 75 65 20 77 61 73 20 66 6f 75  he value was fou
5e40: 6e 64 20 61 6e 64 20 72 65 74 75 72 6e 65 64 3c  nd and returned<
5e50: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
5e60: 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
5e70: 6f 6f 6c 20 54 72 79 47 65 74 56 61 6c 75 65 28  ool TryGetValue(
5e80: 73 74 72 69 6e 67 20 6b 65 79 77 6f 72 64 2c 20  string keyword, 
5e90: 6f 75 74 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  out object value
5ea0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
5eb0: 62 6f 6f 6c 20 62 20 3d 20 62 61 73 65 2e 54 72  bool b = base.Tr
5ec0: 79 47 65 74 56 61 6c 75 65 28 6b 65 79 77 6f 72  yGetValue(keywor
5ed0: 64 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  d, out value);..
5ee0: 0d 0a 20 20 20 20 20 20 69 66 20 28 21 5f 70 72  ..      if (!_pr
5ef0: 6f 70 65 72 74 69 65 73 2e 43 6f 6e 74 61 69 6e  operties.Contain
5f00: 73 4b 65 79 28 6b 65 79 77 6f 72 64 29 29 20 72  sKey(keyword)) r
5f10: 65 74 75 72 6e 20 62 3b 0d 0a 0d 0a 20 20 20 20  eturn b;....    
5f20: 20 20 50 72 6f 70 65 72 74 79 44 65 73 63 72 69    PropertyDescri
5f30: 70 74 6f 72 20 70 64 20 3d 20 5f 70 72 6f 70 65  ptor pd = _prope
5f40: 72 74 69 65 73 5b 6b 65 79 77 6f 72 64 5d 20 61  rties[keyword] a
5f50: 73 20 50 72 6f 70 65 72 74 79 44 65 73 63 72 69  s PropertyDescri
5f60: 70 74 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 69  ptor;....      i
5f70: 66 20 28 70 64 20 3d 3d 20 6e 75 6c 6c 29 20 72  f (pd == null) r
5f80: 65 74 75 72 6e 20 62 3b 0d 0a 0d 0a 20 20 20 20  eturn b;....    
5f90: 20 20 2f 2f 20 41 74 74 65 6d 70 74 20 74 6f 20    // Attempt to 
5fa0: 63 6f 65 72 63 65 20 74 68 65 20 76 61 6c 75 65  coerce the value
5fb0: 20 69 6e 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20   into something 
5fc0: 6d 6f 72 65 20 73 6f 6c 69 64 0d 0a 20 20 20 20  more solid..    
5fd0: 20 20 69 66 20 28 62 29 0d 0a 20 20 20 20 20 20    if (b)..      
5fe0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 70  {..        if (p
5ff0: 64 2e 50 72 6f 70 65 72 74 79 54 79 70 65 20 3d  d.PropertyType =
6000: 3d 20 74 79 70 65 6f 66 28 42 6f 6f 6c 65 61 6e  = typeof(Boolean
6010: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 76 61  ))..          va
6020: 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 76  lue = SQLiteConv
6030: 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 76 61  ert.ToBoolean(va
6040: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 65  lue);..        e
6050: 6c 73 65 20 69 66 20 28 70 64 2e 50 72 6f 70 65  lse if (pd.Prope
6060: 72 74 79 54 79 70 65 20 21 3d 20 74 79 70 65 6f  rtyType != typeo
6070: 66 28 62 79 74 65 5b 5d 29 29 0d 0a 20 20 20 20  f(byte[]))..    
6080: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 54 79        value = Ty
6090: 70 65 44 65 73 63 72 69 70 74 6f 72 2e 47 65 74  peDescriptor.Get
60a0: 43 6f 6e 76 65 72 74 65 72 28 70 64 2e 50 72 6f  Converter(pd.Pro
60b0: 70 65 72 74 79 54 79 70 65 29 2e 43 6f 6e 76 65  pertyType).Conve
60c0: 72 74 46 72 6f 6d 28 76 61 6c 75 65 29 3b 0d 0a  rtFrom(value);..
60d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 65        }..      e
60e0: 6c 73 65 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  lse..      {..  
60f0: 20 20 20 20 20 20 44 65 66 61 75 6c 74 56 61 6c        DefaultVal
6100: 75 65 41 74 74 72 69 62 75 74 65 20 61 74 74 20  ueAttribute att 
6110: 3d 20 70 64 2e 41 74 74 72 69 62 75 74 65 73 5b  = pd.Attributes[
6120: 74 79 70 65 6f 66 28 44 65 66 61 75 6c 74 56 61  typeof(DefaultVa
6130: 6c 75 65 41 74 74 72 69 62 75 74 65 29 5d 20 61  lueAttribute)] a
6140: 73 20 44 65 66 61 75 6c 74 56 61 6c 75 65 41 74  s DefaultValueAt
6150: 74 72 69 62 75 74 65 3b 0d 0a 20 20 20 20 20 20  tribute;..      
6160: 20 20 69 66 20 28 61 74 74 20 21 3d 20 6e 75 6c    if (att != nul
6170: 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  l)..        {.. 
6180: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
6190: 20 61 74 74 2e 56 61 6c 75 65 3b 0d 0a 20 20 20   att.Value;..   
61a0: 20 20 20 20 20 20 20 62 20 3d 20 74 72 75 65 3b         b = true;
61b0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
61c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74 75     }..      retu
61d0: 72 6e 20 62 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  rn b;..    }....
61e0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
61f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 61 6c 6c 62  >..    /// Fallb
6200: 61 63 6b 20 6d 65 74 68 6f 64 20 66 6f 72 20 4d  ack method for M
6210: 4f 4e 4f 2c 20 77 68 69 63 68 20 64 6f 65 73 6e  ONO, which doesn
6220: 27 74 20 69 6d 70 6c 65 6d 65 6e 74 20 44 62 43  't implement DbC
6230: 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 42  onnectionStringB
6240: 75 69 6c 64 65 72 2e 47 65 74 50 72 6f 70 65 72  uilder.GetProper
6250: 74 69 65 73 28 29 0d 0a 20 20 20 20 2f 2f 2f 20  ties()..    /// 
6260: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6270: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6280: 22 70 72 6f 70 65 72 74 79 4c 69 73 74 22 3e 54  "propertyList">T
6290: 68 65 20 68 61 73 68 74 61 62 6c 65 20 74 6f 20  he hashtable to 
62a0: 66 69 6c 6c 20 77 69 74 68 20 70 72 6f 70 65 72  fill with proper
62b0: 74 79 20 64 65 73 63 72 69 70 74 6f 72 73 3c 2f  ty descriptors</
62c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76  param>..    priv
62d0: 61 74 65 20 76 6f 69 64 20 46 61 6c 6c 62 61 63  ate void Fallbac
62e0: 6b 47 65 74 50 72 6f 70 65 72 74 69 65 73 28 48  kGetProperties(H
62f0: 61 73 68 74 61 62 6c 65 20 70 72 6f 70 65 72 74  ashtable propert
6300: 79 4c 69 73 74 29 0d 0a 20 20 20 20 7b 0d 0a 20  yList)..    {.. 
6310: 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 50 72       foreach (Pr
6320: 6f 70 65 72 74 79 44 65 73 63 72 69 70 74 6f 72  opertyDescriptor
6330: 20 64 65 73 63 72 69 70 74 6f 72 20 69 6e 20 54   descriptor in T
6340: 79 70 65 44 65 73 63 72 69 70 74 6f 72 2e 47 65  ypeDescriptor.Ge
6350: 74 50 72 6f 70 65 72 74 69 65 73 28 74 68 69 73  tProperties(this
6360: 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
6370: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  {..        if (d
6380: 65 73 63 72 69 70 74 6f 72 2e 4e 61 6d 65 20 21  escriptor.Name !
6390: 3d 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  = "ConnectionStr
63a0: 69 6e 67 22 20 26 26 20 70 72 6f 70 65 72 74 79  ing" && property
63b0: 4c 69 73 74 2e 43 6f 6e 74 61 69 6e 73 4b 65 79  List.ContainsKey
63c0: 28 64 65 73 63 72 69 70 74 6f 72 2e 44 69 73 70  (descriptor.Disp
63d0: 6c 61 79 4e 61 6d 65 29 20 3d 3d 20 66 61 6c 73  layName) == fals
63e0: 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
63f0: 20 20 20 20 20 20 20 20 20 70 72 6f 70 65 72 74           propert
6400: 79 4c 69 73 74 2e 41 64 64 28 64 65 73 63 72 69  yList.Add(descri
6410: 70 74 6f 72 2e 44 69 73 70 6c 61 79 4e 61 6d 65  ptor.DisplayName
6420: 2c 20 64 65 73 63 72 69 70 74 6f 72 29 3b 0d 0a  , descriptor);..
6430: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6440: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a   }..    }..  }..
6450: 23 65 6e 64 69 66 0d 0a 7d 0d 0a                 #endif..}..