System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 08f1611e9b90c5a5a5d5bfd1c28be7b8a036242f:


0000: ef bb bf 2f 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 2a 2a 2a 0a 20 2a 20  ************. * 
0040: 41 44 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61  ADO.NET 2.0 Data
0050: 20 50 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51   Provider for SQ
0060: 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58  Lite Version 3.X
0070: 0a 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52  . * Written by R
0080: 6f 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72  obert Simpson (r
0090: 6f 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c  obert@blackcastl
00a0: 65 73 6f 66 74 2e 63 6f 6d 29 0a 20 2a 20 0a 20  esoft.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 0a 20 2a 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: 2f 0a 0a 6e 61 6d 65 73 70 61 63 65 20 53 79 73  /..namespace Sys
0130: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 0a  tem.Data.SQLite.
0140: 7b 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  {.  using System
0150: 3b 0a 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d  ;.  using System
0160: 2e 44 61 74 61 2e 43 6f 6d 6d 6f 6e 3b 0a 0a 23  .Data.Common;..#
0170: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0180: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0a 20 20  PACTFRAMEWORK.  
0190: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20 20  /// <summary>.  
01a0: 2f 2f 2f 20 53 51 4c 69 74 65 20 69 6d 70 6c 65  /// SQLite imple
01b0: 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 44 62 43  mentation of DbC
01c0: 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 42  onnectionStringB
01d0: 75 69 6c 64 65 72 2e 0a 20 20 2f 2f 2f 20 3c 2f  uilder..  /// </
01e0: 73 75 6d 6d 61 72 79 3e 0a 20 20 70 75 62 6c 69  summary>.  publi
01f0: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
0200: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 53  QLiteConnectionS
0210: 74 72 69 6e 67 42 75 69 6c 64 65 72 20 3a 20 44  tringBuilder : D
0220: 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e  bConnectionStrin
0230: 67 42 75 69 6c 64 65 72 0a 20 20 7b 0a 20 20 20  gBuilder.  {.   
0240: 20 2f 2f 2f 20 3c 6f 76 65 72 6c 6f 61 64 73 3e   /// <overloads>
0250: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75  .    /// Constru
0260: 63 74 73 20 61 20 6e 65 77 20 69 6e 73 74 61 6e  cts a new instan
0270: 63 65 20 6f 66 20 74 68 65 20 63 6c 61 73 73 0a  ce of the class.
0280: 20 20 20 20 2f 2f 2f 20 3c 2f 6f 76 65 72 6c 6f      /// </overlo
0290: 61 64 73 3e 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ads>.    /// <su
02a0: 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 44  mmary>.    /// D
02b0: 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 75 63 74  efault construct
02c0: 6f 72 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  or.    /// </sum
02d0: 6d 61 72 79 3e 0a 20 20 20 20 70 75 62 6c 69 63  mary>.    public
02e0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
02f0: 6e 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29  nStringBuilder()
0300: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 49 6e 69  .    {.      Ini
0310: 74 69 61 6c 69 7a 65 28 6e 75 6c 6c 29 3b 0a 20  tialize(null);. 
0320: 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73     }..    /// <s
0330: 75 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20  ummary>.    /// 
0340: 43 6f 6e 73 74 72 75 63 74 73 20 61 20 6e 65 77  Constructs a new
0350: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
0360: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
0370: 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e 6e 65   specified conne
0380: 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 0a 20 20  ction string..  
0390: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
03a0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
03b0: 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
03c0: 53 74 72 69 6e 67 22 3e 54 68 65 20 63 6f 6e 6e  String">The conn
03d0: 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 74 6f  ection string to
03e0: 20 70 61 72 73 65 3c 2f 70 61 72 61 6d 3e 0a 20   parse</param>. 
03f0: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
0400: 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  ConnectionString
0410: 42 75 69 6c 64 65 72 28 73 74 72 69 6e 67 20 63  Builder(string c
0420: 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 29  onnectionString)
0430: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 49 6e 69  .    {.      Ini
0440: 74 69 61 6c 69 7a 65 28 63 6f 6e 6e 65 63 74 69  tialize(connecti
0450: 6f 6e 53 74 72 69 6e 67 29 3b 0a 20 20 20 20 7d  onString);.    }
0460: 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0470: 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 50 72 69 76  ry>.    /// Priv
0480: 61 74 65 20 69 6e 69 74 69 61 6c 69 7a 65 72 2c  ate initializer,
0490: 20 77 68 69 63 68 20 61 73 73 69 67 6e 73 20 74   which assigns t
04a0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  he connection st
04b0: 72 69 6e 67 20 61 6e 64 20 72 65 73 65 74 73 20  ring and resets 
04c0: 74 68 65 20 62 75 69 6c 64 65 72 0a 20 20 20 20  the builder.    
04d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20  /// </summary>. 
04e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
04f0: 6d 65 3d 22 63 6e 6e 53 74 72 69 6e 67 22 3e 54  me="cnnString">T
0500: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  he connection st
0510: 72 69 6e 67 20 74 6f 20 61 73 73 69 67 6e 3c 2f  ring to assign</
0520: 70 61 72 61 6d 3e 0a 20 20 20 20 70 72 69 76 61  param>.    priva
0530: 74 65 20 76 6f 69 64 20 49 6e 69 74 69 61 6c 69  te void Initiali
0540: 7a 65 28 73 74 72 69 6e 67 20 63 6e 6e 53 74 72  ze(string cnnStr
0550: 69 6e 67 29 0a 20 20 20 20 7b 0a 20 20 20 20 20  ing).    {.     
0560: 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e   ConnectionStrin
0570: 67 20 3d 20 63 6e 6e 53 74 72 69 6e 67 3b 0a 20  g = cnnString;. 
0580: 20 20 20 20 20 52 65 73 65 74 28 29 3b 0a 20 20       Reset();.  
0590: 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    }..    /// <su
05a0: 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 52  mmary>.    /// R
05b0: 65 73 65 74 73 20 74 68 65 20 62 75 69 6c 64 65  esets the builde
05c0: 72 20 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74  r to the default
05d0: 20 73 65 74 74 69 6e 67 73 0a 20 20 20 20 2f 2f   settings.    //
05e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20 20 20  / </summary>.   
05f0: 20 69 6e 74 65 72 6e 61 6c 20 76 6f 69 64 20 52   internal void R
0600: 65 73 65 74 28 29 0a 20 20 20 20 7b 0a 20 20 20  eset().    {.   
0610: 20 20 20 69 66 20 28 74 68 69 73 2e 43 6f 6e 74     if (this.Cont
0620: 61 69 6e 73 4b 65 79 28 22 56 65 72 73 69 6f 6e  ainsKey("Version
0630: 22 29 20 3d 3d 20 66 61 6c 73 65 29 0a 20 20 20  ") == false).   
0640: 20 20 20 20 20 56 65 72 73 69 6f 6e 20 3d 20 33       Version = 3
0650: 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 43 6f 6e  ;..      if (Con
0660: 74 61 69 6e 73 4b 65 79 28 22 55 73 65 55 54 46  tainsKey("UseUTF
0670: 31 36 45 6e 63 6f 64 69 6e 67 22 29 20 3d 3d 20  16Encoding") == 
0680: 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 55  false).        U
0690: 73 65 55 54 46 31 36 45 6e 63 6f 64 69 6e 67 20  seUTF16Encoding 
06a0: 3d 20 66 61 6c 73 65 3b 0a 0a 20 20 20 20 20 20  = false;..      
06b0: 69 66 20 28 43 6f 6e 74 61 69 6e 73 4b 65 79 28  if (ContainsKey(
06c0: 22 43 61 63 68 65 20 53 69 7a 65 22 29 20 3d 3d  "Cache Size") ==
06d0: 20 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20   false).        
06e0: 43 61 63 68 65 53 69 7a 65 20 3d 20 32 30 30 30  CacheSize = 2000
06f0: 3b 0a 0a 20 20 20 20 20 20 69 66 20 28 43 6f 6e  ;..      if (Con
0700: 74 61 69 6e 73 4b 65 79 28 22 53 79 6e 63 68 72  tainsKey("Synchr
0710: 6f 6e 6f 75 73 22 29 20 3d 3d 20 66 61 6c 73 65  onous") == false
0720: 29 0a 20 20 20 20 20 20 20 20 53 79 6e 63 4d 6f  ).        SyncMo
0730: 64 65 20 3d 20 53 79 6e 63 4d 6f 64 65 2e 4e 6f  de = SyncMode.No
0740: 72 6d 61 6c 3b 0a 0a 20 20 20 20 20 20 69 66 20  rmal;..      if 
0750: 28 43 6f 6e 74 61 69 6e 73 4b 65 79 28 22 44 61  (ContainsKey("Da
0760: 74 65 54 69 6d 65 46 6f 72 6d 61 74 22 29 20 3d  teTimeFormat") =
0770: 3d 20 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20  = false).       
0780: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 20   DateTimeFormat 
0790: 3d 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  = DateTimeFormat
07a0: 2e 49 53 4f 38 36 30 31 3b 0a 0a 20 20 20 20 20  .ISO8601;..     
07b0: 20 69 66 20 28 43 6f 6e 74 61 69 6e 73 4b 65 79   if (ContainsKey
07c0: 28 22 50 61 67 65 20 53 69 7a 65 22 29 20 3d 3d  ("Page Size") ==
07d0: 20 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20   false).        
07e0: 50 61 67 65 53 69 7a 65 20 3d 20 34 30 39 36 3b  PageSize = 4096;
07f0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20  .    }..    /// 
0800: 3c 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 2f 2f  <summary>.    //
0810: 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68 65 20  / Gets/Sets the 
0820: 64 65 66 61 75 6c 74 20 76 65 72 73 69 6f 6e 20  default version 
0830: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 65 6e  of the SQLite en
0840: 67 69 6e 65 20 74 6f 20 69 6e 73 74 61 6e 74 69  gine to instanti
0850: 61 74 65 2e 20 20 43 75 72 72 65 6e 74 6c 79 20  ate.  Currently 
0860: 74 68 65 20 6f 6e 6c 79 20 76 61 6c 69 64 20 76  the only valid v
0870: 61 6c 75 65 20 69 73 20 33 2c 20 69 6e 64 69 63  alue is 3, indic
0880: 61 74 69 6e 67 20 76 65 72 73 69 6f 6e 20 33 20  ating version 3 
0890: 6f 66 20 74 68 65 20 73 71 6c 69 74 65 20 6c 69  of the sqlite li
08a0: 62 72 61 72 79 2e 0a 20 20 20 20 2f 2f 2f 20 3c  brary..    /// <
08b0: 2f 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 70 75  /summary>.    pu
08c0: 62 6c 69 63 20 69 6e 74 20 56 65 72 73 69 6f 6e  blic int Version
08d0: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 67 65 74  .    {.      get
08e0: 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20  .      {.       
08f0: 20 72 65 74 75 72 6e 20 43 6f 6e 76 65 72 74 2e   return Convert.
0900: 54 6f 49 6e 74 33 32 28 74 68 69 73 5b 22 56 65  ToInt32(this["Ve
0910: 72 73 69 6f 6e 22 5d 2c 20 53 79 73 74 65 6d 2e  rsion"], System.
0920: 47 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e 2e 43 75  Globalization.Cu
0930: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
0940: 61 6e 74 43 75 6c 74 75 72 65 29 3b 0a 20 20 20  antCulture);.   
0950: 20 20 20 7d 0a 20 20 20 20 20 20 73 65 74 0a 20     }.      set. 
0960: 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69       {.        i
0970: 66 20 28 76 61 6c 75 65 20 21 3d 20 33 29 0a 20  f (value != 3). 
0980: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
0990: 65 77 20 4e 6f 74 53 75 70 70 6f 72 74 65 64 45  ew NotSupportedE
09a0: 78 63 65 70 74 69 6f 6e 28 29 3b 0a 0a 20 20 20  xception();..   
09b0: 20 20 20 20 20 74 68 69 73 5b 22 56 65 72 73 69       this["Versi
09c0: 6f 6e 22 5d 20 3d 20 76 61 6c 75 65 3b 0a 20 20  on"] = value;.  
09d0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20      }.    }..   
09e0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0a 20   /// <summary>. 
09f0: 20 20 20 2f 2f 2f 20 47 65 74 73 2f 53 65 74 73     /// Gets/Sets
0a00: 20 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73   the synchronous
0a10: 20 6d 6f 64 65 20 6f 66 20 74 68 65 20 63 6f 6e   mode of the con
0a20: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 20  nection string. 
0a30: 20 44 65 66 61 75 6c 74 20 69 73 20 22 4e 6f 72   Default is "Nor
0a40: 6d 61 6c 22 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f  mal"..    /// </
0a50: 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 70 75 62  summary>.    pub
0a60: 6c 69 63 20 53 79 6e 63 4d 6f 64 65 20 53 79 6e  lic SyncMode Syn
0a70: 63 4d 6f 64 65 0a 20 20 20 20 7b 0a 20 20 20 20  cMode.    {.    
0a80: 20 20 67 65 74 0a 20 20 20 20 20 20 7b 0a 20 20    get.      {.  
0a90: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 20 3d        string s =
0aa0: 20 74 68 69 73 5b 22 53 79 6e 63 68 72 6f 6e 6f   this["Synchrono
0ab0: 75 73 22 5d 2e 54 6f 53 74 72 69 6e 67 28 29 2e  us"].ToString().
0ac0: 54 6f 55 70 70 65 72 28 53 79 73 74 65 6d 2e 47  ToUpper(System.G
0ad0: 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e 2e 43 75 6c  lobalization.Cul
0ae0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
0af0: 43 75 6c 74 75 72 65 29 3b 0a 20 20 20 20 20 20  Culture);.      
0b00: 20 20 73 77 69 74 63 68 20 28 73 29 0a 20 20 20    switch (s).   
0b10: 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20       {.         
0b20: 20 63 61 73 65 20 22 46 55 4c 4c 22 3a 0a 20 20   case "FULL":.  
0b30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
0b40: 20 53 79 6e 63 4d 6f 64 65 2e 46 75 6c 6c 3b 0a   SyncMode.Full;.
0b50: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
0b60: 4f 46 46 22 3a 0a 20 20 20 20 20 20 20 20 20 20  OFF":.          
0b70: 20 20 72 65 74 75 72 6e 20 53 79 6e 63 4d 6f 64    return SyncMod
0b80: 65 2e 4f 66 66 3b 0a 20 20 20 20 20 20 20 20 20  e.Off;.         
0b90: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20   default:.      
0ba0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 79 6e        return Syn
0bb0: 63 4d 6f 64 65 2e 4e 6f 72 6d 61 6c 3b 0a 20 20  cMode.Normal;.  
0bc0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d 0a        }.      }.
0bd0: 20 20 20 20 20 20 73 65 74 0a 20 20 20 20 20 20        set.      
0be0: 7b 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  {.        string
0bf0: 20 73 20 3d 20 22 4e 6f 72 6d 61 6c 22 3b 0a 20   s = "Normal";. 
0c00: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
0c10: 20 3d 3d 20 53 79 6e 63 4d 6f 64 65 2e 46 75 6c   == SyncMode.Ful
0c20: 6c 29 20 73 20 3d 20 22 46 75 6c 6c 22 3b 0a 20  l) s = "Full";. 
0c30: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
0c40: 76 61 6c 75 65 20 3d 3d 20 53 79 6e 63 4d 6f 64  value == SyncMod
0c50: 65 2e 4f 66 66 29 20 73 20 3d 20 22 4f 66 66 22  e.Off) s = "Off"
0c60: 3b 0a 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b  ;..        this[
0c70: 22 53 79 6e 63 68 72 6f 6e 6f 75 73 22 5d 20 3d  "Synchronous"] =
0c80: 20 73 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20   s;.      }.    
0c90: 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }..    /// <summ
0ca0: 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ary>.    /// Get
0cb0: 73 2f 53 65 74 73 20 74 68 65 20 65 6e 63 6f 64  s/Sets the encod
0cc0: 69 6e 67 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ing for the conn
0cd0: 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 2e 20 20  ection string.  
0ce0: 54 68 65 20 64 65 66 61 75 6c 74 20 69 73 20 22  The default is "
0cf0: 46 61 6c 73 65 22 20 77 68 69 63 68 20 69 6e 64  False" which ind
0d00: 69 63 61 74 65 73 20 55 54 46 2d 38 20 65 6e 63  icates UTF-8 enc
0d10: 6f 64 69 6e 67 2e 0a 20 20 20 20 2f 2f 2f 20 3c  oding..    /// <
0d20: 2f 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 70 75  /summary>.    pu
0d30: 62 6c 69 63 20 62 6f 6f 6c 20 55 73 65 55 54 46  blic bool UseUTF
0d40: 31 36 45 6e 63 6f 64 69 6e 67 0a 20 20 20 20 7b  16Encoding.    {
0d50: 0a 20 20 20 20 20 20 67 65 74 0a 20 20 20 20 20  .      get.     
0d60: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   {.        retur
0d70: 6e 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72  n (String.Compar
0d80: 65 28 74 68 69 73 5b 22 55 73 65 55 54 46 31 36  e(this["UseUTF16
0d90: 45 6e 63 6f 64 69 6e 67 22 5d 2e 54 6f 53 74 72  Encoding"].ToStr
0da0: 69 6e 67 28 29 2c 20 22 54 72 75 65 22 2c 20 74  ing(), "True", t
0db0: 72 75 65 2c 20 53 79 73 74 65 6d 2e 47 6c 6f 62  rue, System.Glob
0dc0: 61 6c 69 7a 61 74 69 6f 6e 2e 43 75 6c 74 75 72  alization.Cultur
0dd0: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
0de0: 75 6c 74 75 72 65 29 20 3d 3d 20 30 29 3b 0a 20  ulture) == 0);. 
0df0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 73 65 74       }.      set
0e00: 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20  .      {.       
0e10: 20 74 68 69 73 5b 22 55 73 65 55 54 46 31 36 45   this["UseUTF16E
0e20: 6e 63 6f 64 69 6e 67 22 5d 20 3d 20 28 28 76 61  ncoding"] = ((va
0e30: 6c 75 65 20 3d 3d 20 74 72 75 65 29 20 3f 20 22  lue == true) ? "
0e40: 54 72 75 65 22 20 3a 20 22 46 61 6c 73 65 22 29  True" : "False")
0e50: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a  ;.      }.    }.
0e60: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0e70: 79 3e 0a 20 20 20 20 2f 2f 2f 20 47 65 74 73 2f  y>.    /// Gets/
0e80: 53 65 74 73 20 74 68 65 20 66 69 6c 65 6e 61 6d  Sets the filenam
0e90: 65 20 74 6f 20 6f 70 65 6e 20 6f 6e 20 74 68 65  e to open on the
0ea0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
0eb0: 6e 67 2e 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ng..    /// </su
0ec0: 6d 6d 61 72 79 3e 0a 20 20 20 20 70 75 62 6c 69  mmary>.    publi
0ed0: 63 20 73 74 72 69 6e 67 20 44 61 74 61 53 6f 75  c string DataSou
0ee0: 72 63 65 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  rce.    {.      
0ef0: 67 65 74 0a 20 20 20 20 20 20 7b 0a 20 20 20 20  get.      {.    
0f00: 20 20 20 20 72 65 74 75 72 6e 20 74 68 69 73 5b      return this[
0f10: 22 44 61 74 61 20 53 6f 75 72 63 65 22 5d 2e 54  "Data Source"].T
0f20: 6f 53 74 72 69 6e 67 28 29 3b 0a 20 20 20 20 20  oString();.     
0f30: 20 7d 0a 20 20 20 20 20 20 73 65 74 0a 20 20 20   }.      set.   
0f40: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69     {.        thi
0f50: 73 5b 22 44 61 74 61 20 53 6f 75 72 63 65 22 5d  s["Data Source"]
0f60: 20 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 20 20   = value;.      
0f70: 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 2f  }.    }..    ///
0f80: 20 3c 73 75 6d 6d 61 72 79 3e 0a 20 20 20 20 2f   <summary>.    /
0f90: 2f 2f 20 47 65 74 73 2f 53 65 74 73 20 74 68 65  // Gets/Sets the
0fa0: 20 70 61 67 65 20 73 69 7a 65 20 66 6f 72 20 74   page size for t
0fb0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20  he connection.. 
0fc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0fd0: 3e 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74  >.    public int
0fe0: 20 50 61 67 65 53 69 7a 65 0a 20 20 20 20 7b 0a   PageSize.    {.
0ff0: 20 20 20 20 20 20 67 65 74 0a 20 20 20 20 20 20        get.      
1000: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  {.        return
1010: 20 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32   Convert.ToInt32
1020: 28 74 68 69 73 5b 22 50 61 67 65 20 53 69 7a 65  (this["Page Size
1030: 22 5d 2c 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61  "], System.Globa
1040: 6c 69 7a 61 74 69 6f 6e 2e 43 75 6c 74 75 72 65  lization.Culture
1050: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
1060: 6c 74 75 72 65 29 3b 0a 20 20 20 20 20 20 7d 0a  lture);.      }.
1070: 20 20 20 20 20 20 73 65 74 0a 20 20 20 20 20 20        set.      
1080: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 5b 22  {.        this["
1090: 50 61 67 65 20 53 69 7a 65 22 5d 20 3d 20 76 61  Page Size"] = va
10a0: 6c 75 65 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20  lue;.      }.   
10b0: 20 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   }..    /// <sum
10c0: 6d 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 47 65  mary>.    /// Ge
10d0: 74 73 2f 53 65 74 73 20 74 68 65 20 63 61 63 68  ts/Sets the cach
10e0: 65 20 73 69 7a 65 20 66 6f 72 20 74 68 65 20 63  e size for the c
10f0: 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 2f  onnection..    /
1100: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0a 20 20  // </summary>.  
1110: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 43 61 63    public int Cac
1120: 68 65 53 69 7a 65 0a 20 20 20 20 7b 0a 20 20 20  heSize.    {.   
1130: 20 20 20 67 65 74 0a 20 20 20 20 20 20 7b 0a 20     get.      {. 
1140: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 43 6f         return Co
1150: 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28 74 68  nvert.ToInt32(th
1160: 69 73 5b 22 43 61 63 68 65 20 53 69 7a 65 22 5d  is["Cache Size"]
1170: 2c 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69  , System.Globali
1180: 7a 61 74 69 6f 6e 2e 43 75 6c 74 75 72 65 49 6e  zation.CultureIn
1190: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
11a0: 75 72 65 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20  ure);.      }.  
11b0: 20 20 20 20 73 65 74 0a 20 20 20 20 20 20 7b 0a      set.      {.
11c0: 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 43 61          this["Ca
11d0: 63 68 65 20 53 69 7a 65 22 5d 20 3d 20 76 61 6c  che Size"] = val
11e0: 75 65 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20  ue;.      }.    
11f0: 7d 0a 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }..    /// <summ
1200: 61 72 79 3e 0a 20 20 20 20 2f 2f 2f 20 47 65 74  ary>.    /// Get
1210: 73 2f 53 65 74 73 20 74 68 65 20 64 61 74 65 74  s/Sets the datet
1220: 69 6d 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74  ime format for t
1230: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20  he connection.. 
1240: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1250: 3e 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61 74  >.    public Dat
1260: 65 54 69 6d 65 46 6f 72 6d 61 74 20 44 61 74 65  eTimeFormat Date
1270: 54 69 6d 65 46 6f 72 6d 61 74 0a 20 20 20 20 7b  TimeFormat.    {
1280: 0a 20 20 20 20 20 20 67 65 74 0a 20 20 20 20 20  .      get.     
1290: 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63   {.        switc
12a0: 68 20 28 74 68 69 73 5b 22 44 61 74 65 54 69 6d  h (this["DateTim
12b0: 65 46 6f 72 6d 61 74 22 5d 2e 54 6f 53 74 72 69  eFormat"].ToStri
12c0: 6e 67 28 29 2e 54 6f 55 70 70 65 72 28 53 79 73  ng().ToUpper(Sys
12d0: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
12e0: 6e 2e 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  n.CultureInfo.In
12f0: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 29  variantCulture))
1300: 0a 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20 20  .        {.     
1310: 20 20 20 20 20 63 61 73 65 20 22 54 49 43 4b 53       case "TICKS
1320: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ":.            r
1330: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 46 6f  eturn DateTimeFo
1340: 72 6d 61 74 2e 54 69 63 6b 73 3b 0a 20 20 20 20  rmat.Ticks;.    
1350: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20        default:. 
1360: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1370: 6e 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  n DateTimeFormat
1380: 2e 49 53 4f 38 36 30 31 3b 0a 20 20 20 20 20 20  .ISO8601;.      
1390: 20 20 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20    }.      }.    
13a0: 20 20 73 65 74 0a 20 20 20 20 20 20 7b 0a 20 20    set.      {.  
13b0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 76 61        switch (va
13c0: 6c 75 65 29 0a 20 20 20 20 20 20 20 20 7b 0a 20  lue).        {. 
13d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 44 61           case Da
13e0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 2e 54 69 63  teTimeFormat.Tic
13f0: 6b 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  ks:.            
1400: 74 68 69 73 5b 22 44 61 74 65 54 69 6d 65 46 6f  this["DateTimeFo
1410: 72 6d 61 74 22 5d 20 3d 20 22 54 69 63 6b 73 22  rmat"] = "Ticks"
1420: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ;.            br
1430: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 63  eak;.          c
1440: 61 73 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  ase DateTimeForm
1450: 61 74 2e 49 53 4f 38 36 30 31 3a 0a 20 20 20 20  at.ISO8601:.    
1460: 20 20 20 20 20 20 20 20 74 68 69 73 5b 22 44 61          this["Da
1470: 74 65 54 69 6d 65 46 6f 72 6d 61 74 22 5d 20 3d  teTimeFormat"] =
1480: 20 22 49 53 4f 38 36 30 31 22 3b 0a 20 20 20 20   "ISO8601";.    
1490: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
14a0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 7d         }.      }
14b0: 0a 20 20 20 20 7d 0a 20 20 7d 0a 23 65 6e 64 69  .    }.  }.#endi
14c0: 66 0a 7d 0a                                      f.}.