System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f930ca3633def47c22f4647e58998330537c9361:


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 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
0380: 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63 6b   DbType Fallback
0390: 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  DefaultDbType = 
03a0: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d 0a  DbType.Object;..
03b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
03c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
03d0: 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c   fallback defaul
03e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
03f0: 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63 61  name when one ca
0400: 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64  nnot be obtained
0410: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 61   from..    /// a
0420: 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
0430: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ction instance..
0440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0450: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0470: 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61 63 6b   string Fallback
0480: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  DefaultTypeName 
0490: 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
04a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
04b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
04c0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
04d0: 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e  Unix epoch (e.g.
04e0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30   January 1, 1970
04f0: 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e   at midnight, in
0500: 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   UTC)...    /// 
0510: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0520: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
0530: 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69   readonly DateTi
0540: 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a  me UnixEpoch =..
0550: 20 20 20 20 20 20 20 20 6e 65 77 20 44 61 74 65          new Date
0560: 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c  Time(1970, 1, 1,
0570: 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69   0, 0, 0, DateTi
0580: 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a  meKind.Utc);....
0590: 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e      #pragma warn
05a0: 69 6e 67 20 64 69 73 61 62 6c 65 20 34 31 34 0d  ing disable 414.
05b0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
05d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c 45  value of the OLE
05e0: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63   Automation epoc
05f0: 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  h represented as
0600: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 20 20   a Julian day.  
0610: 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 66 69  This..    /// fi
0620: 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  eld cannot be re
0630: 6d 6f 76 65 64 20 61 73 20 74 68 65 20 74 65 73  moved as the tes
0640: 74 20 73 75 69 74 65 20 72 65 6c 69 65 73 20 75  t suite relies u
0650: 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  pon it...    ///
0660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0670: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0680: 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
0690: 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f  OleAutomationEpo
06a0: 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20  chAsJulianDay = 
06b0: 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20 20 20 20  2415018.5;..    
06c0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20  #pragma warning 
06d0: 72 65 73 74 6f 72 65 20 34 31 34 0d 0a 0d 0a 20  restore 414.... 
06e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
06f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
0700: 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20  rmat string for 
0710: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
0720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 49  when using the I
0730: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
0740: 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72  or CurrentCultur
0750: 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20 20  e formats...    
0760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0770: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0780: 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f 72  t string FullFor
0790: 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  mat = "yyyy-MM-d
07a0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66 66  dTHH:mm:ss.fffff
07b0: 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ffK";....    ///
07c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
07e0: 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61 6e 20 44  minimum Julian D
07f0: 61 79 20 76 61 6c 75 65 20 73 75 70 70 6f 72 74  ay value support
0800: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
0810: 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28 31 34 38  ry..    /// (148
0820: 37 33 31 31 36 33 32 30 30 30 30 30 29 2e 0d 0a  731163200000)...
0830: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0840: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
0850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
0860: 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a 64 20 3d  long MinimumJd =
0870: 20 63 6f 6d 70 75 74 65 4a 44 28 44 61 74 65 54   computeJD(DateT
0880: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29 3b 0d 0a  ime.MinValue);..
0890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
08b0: 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  s is the maximum
08c0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
08d0: 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  e supported by t
08e0: 68 69 73 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  his library..   
08f0: 20 2f 2f 2f 20 28 34 36 34 32 36 39 30 36 30 37   /// (4642690607
0900: 39 39 30 30 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f  99000)...    ///
0910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0920: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0930: 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67 20 4d 61  readonly long Ma
0940: 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d 70 75 74  ximumJd = comput
0950: 65 4a 44 28 44 61 74 65 54 69 6d 65 2e 4d 61 78  eJD(DateTime.Max
0960: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  Value);....    /
0970: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0980: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
0990: 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54  f ISO-8601 DateT
09a0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74  ime formats that
09b0: 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73   we support pars
09c0: 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
09e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
09f0: 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46  ing[] _datetimeF
0a00: 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72  ormats = new str
0a10: 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22  ing[] {..      "
0a20: 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  THHmmssK",..    
0a30: 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20    "THHmmK",..   
0a40: 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46     "HH:mm:ss.FFF
0a50: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
0a60: 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20  HH:mm:ssK",..   
0a70: 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20     "HH:mmK",..  
0a80: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a90: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0aa0: 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43  K", /* NOTE: UTC
0ab0: 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f   default (5). */
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
0ad0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d  -dd HH:mm:ssK",.
0ae0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0af0: 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20  dd HH:mmK",..   
0b00: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
0b10: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0b20: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0b30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-ddTHH:mmK",..
0b40: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0b50: 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20  dTHH:mm:ssK",.. 
0b60: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
0b70: 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22  mmssK",..      "
0b80: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d  yyyyMMddHHmmK",.
0b90: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ba0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22  THHmmssFFFFFFFK"
0bb0: 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73  ,..      "THHmms
0bc0: 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d  s",..      "THHm
0bd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  m",..      "HH:m
0be0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a  m:ss.FFFFFFF",..
0bf0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22        "HH:mm:ss"
0c00: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22  ,..      "HH:mm"
0c10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0c20: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0c30: 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a  FFFFF", /* NOTE:
0c40: 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74   Non-UTC default
0c50: 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20   (19). */..     
0c60: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
0c70: 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22  mm:ss",..      "
0c80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0c90: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ca0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
0cb0: 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20  FFFFFF",..      
0cc0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0cd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0ce0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22  -MM-ddTHH:mm:ss"
0cf0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d00: 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20  ddHHmmss",..    
0d10: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22    "yyyyMMddHHmm"
0d20: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d30: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
0d40: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0d50: 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22  MM-dd",..      "
0d60: 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20  yyyyMMdd",..    
0d70: 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20    "yy-MM-dd"..  
0d80: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
0d90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0da0: 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  // The internal 
0db0: 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66  default format f
0dc0: 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
0dd0: 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76  values when conv
0de0: 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20  erting..    /// 
0df0: 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  to a string...  
0e00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
0e20: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0e30: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
0e40: 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74  rmatUtc = _datet
0e50: 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a  imeFormats[5];..
0e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e80: 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c   internal defaul
0e90: 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  t format for loc
0ea0: 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
0eb0: 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  es when converti
0ec0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61  ng..    /// to a
0ed0: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
0ee0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0ef0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f00: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0f10: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f20: 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d  Local = _datetim
0f30: 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d  eFormats[19];...
0f40: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55  y>..    /// An U
0f60: 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e  TF-8 Encoding in
0f70: 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61  stance, so we ca
0f80: 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67  n convert string
0f90: 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54  s to and from UT
0fa0: 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  F-8..    /// </s
0fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
0fc0: 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f  vate static Enco
0fd0: 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77  ding _utf8 = new
0fe0: 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b   UTF8Encoding();
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1000: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1010: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
1020: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  e format for thi
1030: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1050: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
1060: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
1070: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b  _datetimeFormat;
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1090: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
10a0: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
10b0: 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69  eKind for this i
10c0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54    internal DateT
10f0: 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d  imeKind _datetim
1100: 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20  eKind;..    /// 
1110: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1120: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44  // The default D
1130: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1140: 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69  tring for this i
1150: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
1160: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
1180: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
1190: 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d  tString = null;.
11a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74  y>..    /// Init
11c0: 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76  ializes the conv
11d0: 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20  ersion class..  
11e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1200: 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20   name="fmt">The 
1210: 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d  default date/tim
1220: 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20  e format to use 
1230: 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
1240: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1260: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
1270: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
1280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1290: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74  <param name="fmt
12a0: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
12b0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
12c0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
12d0: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
12e0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d   SQLiteConvert(.
12f0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44  .        SQLiteD
1300: 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d  ateFormats fmt,.
1310: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
1320: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
1330: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53       string fmtS
1340: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
1350: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
1360: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d  datetimeFormat =
1370: 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61   fmt;..      _da
1380: 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e  tetimeKind = kin
1390: 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74  d;..      _datet
13a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
13b0: 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20  = fmtString;..  
13c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69    }....    #regi
13d0: 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73  on UTF-8 Convers
13e0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
13f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1400: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1410: 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61  ts a string to a
1420: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62   UTF-8 encoded b
1430: 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20  yte array sized 
1440: 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c  to include a nul
1450: 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68  l-terminating ch
1460: 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f  aracter...    //
1470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1480: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1490: 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54  e="sourceText">T
14a0: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  he string to con
14b0: 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70  vert to UTF-8</p
14c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14d0: 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61  returns>A byte a
14e0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  rray containing 
14f0: 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74  the converted st
1500: 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74  ring plus an ext
1510: 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67  ra 0 terminating
1520: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1530: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1550: 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
1560: 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67  [] ToUTF8(string
1570: 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20   sourceText)..  
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 42 79 74 65 5b    {..      Byte[
1590: 5d 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20  ] byteArray;..  
15a0: 20 20 20 20 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f      int nlen = _
15b0: 75 74 66 38 2e 47 65 74 42 79 74 65 43 6f 75 6e  utf8.GetByteCoun
15c0: 74 28 73 6f 75 72 63 65 54 65 78 74 29 20 2b 20  t(sourceText) + 
15d0: 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74 65  1;....      byte
15e0: 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65  Array = new byte
15f0: 5b 6e 6c 65 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e  [nlen];..      n
1600: 6c 65 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74 42  len = _utf8.GetB
1610: 79 74 65 73 28 73 6f 75 72 63 65 54 65 78 74 2c  ytes(sourceText,
1620: 20 30 2c 20 73 6f 75 72 63 65 54 65 78 74 2e 4c   0, sourceText.L
1630: 65 6e 67 74 68 2c 20 62 79 74 65 41 72 72 61 79  ength, byteArray
1640: 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 62 79 74  , 0);..      byt
1650: 65 41 72 72 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30  eArray[nlen] = 0
1660: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
1670: 6e 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20  n byteArray;..  
1680: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
1690: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
16a0: 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 61 74 65  / Convert a Date
16b0: 54 69 6d 65 20 74 6f 20 61 20 55 54 46 2d 38 20  Time to a UTF-8 
16c0: 65 6e 63 6f 64 65 64 2c 20 7a 65 72 6f 2d 74 65  encoded, zero-te
16d0: 72 6d 69 6e 61 74 65 64 20 62 79 74 65 20 61 72  rminated byte ar
16e0: 72 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ray...    /// </
16f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1700: 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20  / <remarks>..   
1710: 20 2f 2f 2f 20 54 68 69 73 20 66 75 6e 63 74 69   /// This functi
1720: 6f 6e 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65  on is a convenie
1730: 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68  nce function, wh
1740: 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73 20  ich first calls 
1750: 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74 68  ToString() on th
1760: 65 20 44 61 74 65 54 69 6d 65 2c 20 61 6e 64 20  e DateTime, and 
1770: 74 68 65 6e 20 63 61 6c 6c 73 20 54 6f 55 54 46  then calls ToUTF
1780: 38 28 29 20 77 69 74 68 20 74 68 65 0d 0a 20 20  8() with the..  
1790: 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 72 65 73    /// string res
17a0: 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ult...    /// </
17b0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f  remarks>..    //
17c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
17d0: 61 74 65 54 69 6d 65 56 61 6c 75 65 22 3e 54 68  ateTimeValue">Th
17e0: 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f  e DateTime to co
17f0: 6e 76 65 72 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  nvert.</param>..
1800: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1810: 3e 54 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64  >The UTF-8 encod
1820: 65 64 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c 75  ed string, inclu
1830: 64 69 6e 67 20 61 20 30 20 74 65 72 6d 69 6e 61  ding a 0 termina
1840: 74 69 6e 67 20 62 79 74 65 20 61 74 20 74 68 65  ting byte at the
1850: 20 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72 61   end of the arra
1860: 79 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  y.</returns>..  
1870: 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20    public byte[] 
1880: 54 6f 55 54 46 38 28 44 61 74 65 54 69 6d 65 20  ToUTF8(DateTime 
1890: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 0d 0a  dateTimeValue)..
18a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
18b0: 75 72 6e 20 54 6f 55 54 46 38 28 54 6f 53 74 72  urn ToUTF8(ToStr
18c0: 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75  ing(dateTimeValu
18d0: 65 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  e));..    }.... 
18e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18f0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1900: 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64  ts a UTF-8 encod
1910: 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65  ed IntPtr of the
1920: 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
1930: 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73 74  h into a .NET st
1940: 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ring..    /// </
1950: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1960: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e  / <param name="n
1970: 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68 65  ativestring">The
1980: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
1990: 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68 65  memory where the
19a0: 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69 73   UTF-8 string is
19b0: 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d 3e   encoded</param>
19c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
19d0: 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72   name="nativestr
19e0: 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d 62  inglen">The numb
19f0: 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 64  er of bytes to d
1a00: 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ecode</param>.. 
1a10: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1a20: 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  A string contain
1a30: 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61 74  ing the translat
1a40: 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29 3c  ed character(s)<
1a50: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
1a60: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74  ublic virtual st
1a70: 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 49 6e  ring ToString(In
1a80: 74 50 74 72 20 6e 61 74 69 76 65 73 74 72 69 6e  tPtr nativestrin
1a90: 67 2c 20 69 6e 74 20 6e 61 74 69 76 65 73 74 72  g, int nativestr
1aa0: 69 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a  inglen)..    {..
1ab0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 54 46        return UTF
1ac0: 38 54 6f 53 74 72 69 6e 67 28 6e 61 74 69 76 65  8ToString(native
1ad0: 73 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73 74  string, nativest
1ae0: 72 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d  ringlen);..    }
1af0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
1b00: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1b10: 6f 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38 20  onverts a UTF-8 
1b20: 65 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f  encoded IntPtr o
1b30: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
1b40: 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e 4e  length into a .N
1b50: 45 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f  ET string..    /
1b60: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1b70: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1b80: 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67  me="nativestring
1b90: 22 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74 6f  ">The pointer to
1ba0: 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 72   the memory wher
1bb0: 65 20 74 68 65 20 55 54 46 2d 38 20 73 74 72 69  e the UTF-8 stri
1bc0: 6e 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f 70  ng is encoded</p
1bd0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
1be0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69  param name="nati
1bf0: 76 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68 65  vestringlen">The
1c00: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
1c10: 20 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72 61   to decode</para
1c20: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
1c30: 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63 6f  urns>A string co
1c40: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61  ntaining the tra
1c50: 6e 73 6c 61 74 65 64 20 63 68 61 72 61 63 74 65  nslated characte
1c60: 72 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  r(s)</returns>..
1c70: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1c80: 63 20 73 74 72 69 6e 67 20 55 54 46 38 54 6f 53  c string UTF8ToS
1c90: 74 72 69 6e 67 28 49 6e 74 50 74 72 20 6e 61 74  tring(IntPtr nat
1ca0: 69 76 65 73 74 72 69 6e 67 2c 20 69 6e 74 20 6e  ivestring, int n
1cb0: 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 0d  ativestringlen).
1cc0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
1cd0: 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 20 3d   (nativestring =
1ce0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 7c 7c  = IntPtr.Zero ||
1cf0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1d00: 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 53 74   == 0) return St
1d10: 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20  ring.Empty;..   
1d20: 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72     if (nativestr
1d30: 69 6e 67 6c 65 6e 20 3c 20 30 29 0d 0a 20 20 20  inglen < 0)..   
1d40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e 61     {..        na
1d50: 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 20  tivestringlen = 
1d60: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68  0;....        wh
1d70: 69 6c 65 20 28 4d 61 72 73 68 61 6c 2e 52 65 61  ile (Marshal.Rea
1d80: 64 42 79 74 65 28 6e 61 74 69 76 65 73 74 72 69  dByte(nativestri
1d90: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1da0: 6c 65 6e 29 20 21 3d 20 30 29 0d 0a 20 20 20 20  len) != 0)..    
1db0: 20 20 20 20 20 20 6e 61 74 69 76 65 73 74 72 69        nativestri
1dc0: 6e 67 6c 65 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20  nglen++;....    
1dd0: 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74      if (nativest
1de0: 72 69 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72 65  ringlen == 0) re
1df0: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74  turn String.Empt
1e00: 79 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  y;..      }.... 
1e10: 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65       byte[] byte
1e20: 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65  Array = new byte
1e30: 5b 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e  [nativestringlen
1e40: 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 72 73  ];....      Mars
1e50: 68 61 6c 2e 43 6f 70 79 28 6e 61 74 69 76 65 73  hal.Copy(natives
1e60: 74 72 69 6e 67 2c 20 62 79 74 65 41 72 72 61 79  tring, byteArray
1e70: 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e  , 0, nativestrin
1e80: 67 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  glen);....      
1e90: 72 65 74 75 72 6e 20 5f 75 74 66 38 2e 47 65 74  return _utf8.Get
1ea0: 53 74 72 69 6e 67 28 62 79 74 65 41 72 72 61 79  String(byteArray
1eb0: 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e  , 0, nativestrin
1ec0: 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20  glen);..    }.. 
1ed0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1ee0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1f40: 44 61 74 65 54 69 6d 65 20 43 6f 6e 76 65 72 73  DateTime Convers
1f50: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
1f60: 20 20 20 23 72 65 67 69 6f 6e 20 4e 65 77 20 4a     #region New J
1f70: 75 6c 69 61 6e 20 44 61 79 20 43 6f 6e 76 65 72  ulian Day Conver
1f80: 73 69 6f 6e 20 4d 65 74 68 6f 64 73 0d 0a 20 20  sion Methods..  
1f90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1fa0: 0a 20 20 20 20 2f 2f 2f 20 43 68 65 63 6b 73 20  .    /// Checks 
1fb0: 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
1fc0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
1fd0: 34 22 20 2f 3e 20 69 73 20 77 69 74 68 69 6e 20  4" /> is within 
1fe0: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 75 70  the..    /// sup
1ff0: 70 6f 72 74 65 64 20 72 61 6e 67 65 20 66 6f 72  ported range for
2000: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
2010: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
2020: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2030: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2040: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  d">..    /// The
2050: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
2060: 65 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20  e to check...   
2070: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2080: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
2090: 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
20a0: 72 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66  ro if the specif
20b0: 69 65 64 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  ied Julian Day v
20c0: 61 6c 75 65 20 69 73 20 69 6e 20 74 68 65 20 73  alue is in the s
20d0: 75 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 2f 2f  upported..    //
20e0: 2f 20 72 61 6e 67 65 3b 20 6f 74 68 65 72 77 69  / range; otherwi
20f0: 73 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f  se, zero...    /
2100: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2110: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2120: 63 20 62 6f 6f 6c 20 69 73 56 61 6c 69 64 4a 64  c bool isValidJd
2130: 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  (..        long 
2140: 6a 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  jd..        ).. 
2150: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
2160: 74 75 72 6e 20 28 28 6a 64 20 3e 3d 20 4d 69 6e  turn ((jd >= Min
2170: 69 6d 75 6d 4a 64 29 20 26 26 20 28 6a 64 20 3c  imumJd) && (jd <
2180: 3d 20 4d 61 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a  = MaximumJd));..
2190: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
21a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
21f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2200: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2210: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
2220: 75 65 20 66 72 6f 6d 20 61 20 3c 73 65 65 20 63  ue from a <see c
2230: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
2240: 74 6f 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  to an..    /// <
2250: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
2260: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
2270: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2280: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2290: 75 6c 69 61 6e 44 61 79 22 3e 0d 0a 20 20 20 20  ulianDay">..    
22a0: 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61 6e 20 44  /// The Julian D
22b0: 61 79 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  ay <see cref="Do
22c0: 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74  uble" /> value t
22d0: 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20  o convert...    
22e0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
22f0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2300: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73  .    /// The res
2310: 75 6c 74 69 6e 67 20 4a 75 6c 69 61 6e 20 44 61  ulting Julian Da
2320: 79 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  y <see cref="Int
2330: 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  64" /> value... 
2340: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
2350: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
2360: 74 61 74 69 63 20 6c 6f 6e 67 20 44 6f 75 62 6c  tatic long Doubl
2370: 65 54 6f 4a 64 28 0d 0a 20 20 20 20 20 20 20 20  eToJd(..        
2380: 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79  double julianDay
2390: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
23a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
23b0: 72 6e 20 28 6c 6f 6e 67 29 28 6a 75 6c 69 61 6e  rn (long)(julian
23c0: 44 61 79 20 2a 20 38 36 34 30 30 30 30 30 2e 30  Day * 86400000.0
23d0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
23e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
23f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2430: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2440: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
2450: 72 74 73 20 61 20 4a 75 6c 69 61 6e 20 44 61 79  rts a Julian Day
2460: 20 76 61 6c 75 65 20 66 72 6f 6d 20 61 6e 20 3c   value from an <
2470: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
2480: 20 2f 3e 20 74 6f 20 61 0d 0a 20 20 20 20 2f 2f   /> to a..    //
2490: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  / <see cref="Dou
24a0: 62 6c 65 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f  ble" />...    //
24b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
24c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24d0: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
24e0: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
24f0: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34  <see cref="Int64
2500: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2510: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2520: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2530: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2540: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2550: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2560: 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
2570: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
2580: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
2590: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
25a0: 69 63 20 64 6f 75 62 6c 65 20 4a 64 54 6f 44 6f  ic double JdToDo
25b0: 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 6c  uble(..        l
25c0: 6f 6e 67 20 6a 64 0d 0a 20 20 20 20 20 20 20 20  ong jd..        
25d0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
25e0: 20 20 72 65 74 75 72 6e 20 28 64 6f 75 62 6c 65    return (double
25f0: 29 28 6a 64 20 2f 20 38 36 34 30 30 30 30 30 2e  )(jd / 86400000.
2600: 30 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  0);..    }....  
2610: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2660: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2670: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
2680: 65 72 74 73 20 61 20 4a 75 6c 69 61 6e 20 44 61  erts a Julian Da
2690: 79 20 76 61 6c 75 65 20 74 6f 20 61 20 3c 73 65  y value to a <se
26a0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
26b0: 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54  " />...    /// T
26c0: 68 69 73 20 6d 65 74 68 6f 64 20 77 61 73 20 74  his method was t
26d0: 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d 20 74  ranslated from t
26e0: 68 65 20 22 63 6f 6d 70 75 74 65 59 4d 44 22 20  he "computeYMD" 
26f0: 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 65 0d  function in the.
2700: 0a 20 20 20 20 2f 2f 2f 20 22 64 61 74 65 2e 63  .    /// "date.c
2710: 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67 69 6e 67  " file belonging
2720: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
2730: 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
2740: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
2750: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2760: 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20 20 20   name="jd">..   
2770: 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61 6e 20   /// The Julian 
2780: 44 61 79 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  Day value to con
2790: 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  vert...    /// <
27a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
27b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61   <param name="ba
27c0: 64 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  dValue">..    //
27d0: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
27e0: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
27f0: 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20 69 6e  lue to return in
2800: 20 74 68 65 20 65 76 65 6e 74 20 74 68 61 74 20   the event that 
2810: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c  the..    /// Jul
2820: 69 61 6e 20 44 61 79 20 69 73 20 6f 75 74 20 6f  ian Day is out o
2830: 66 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20  f the supported 
2840: 72 61 6e 67 65 2e 20 20 49 66 20 74 68 69 73 20  range.  If this 
2850: 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 2c 0d 0a  value is null,..
2860: 20 20 20 20 2f 2f 2f 20 61 6e 20 65 78 63 65 70      /// an excep
2870: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72  tion will be thr
2880: 6f 77 6e 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20  own instead...  
2890: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
28a0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
28b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 3c 73 65  >..    /// A <se
28c0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
28d0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 68 61 74 20  " /> value that 
28e0: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 79 65 61  contains the yea
28f0: 72 2c 20 6d 6f 6e 74 68 2c 20 61 6e 64 0d 0a 20  r, month, and.. 
2900: 20 20 20 2f 2f 2f 20 64 61 79 20 76 61 6c 75 65     /// day value
2910: 73 20 74 68 61 74 20 61 72 65 20 63 6c 6f 73 65  s that are close
2920: 73 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  st to the specif
2930: 69 65 64 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  ied Julian Day v
2940: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
2950: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2960: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 61  rivate static Da
2970: 74 65 54 69 6d 65 20 63 6f 6d 70 75 74 65 59 4d  teTime computeYM
2980: 44 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67  D(..        long
2990: 20 6a 64 2c 0d 0a 20 20 20 20 20 20 20 20 44 61   jd,..        Da
29a0: 74 65 54 69 6d 65 3f 20 62 61 64 56 61 6c 75 65  teTime? badValue
29b0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
29c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
29d0: 21 69 73 56 61 6c 69 64 4a 64 28 6a 64 29 29 0d  !isValidJd(jd)).
29e0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
29f0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
2a00: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
2a10: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2a30: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
2a40: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
2a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a60: 22 4e 6f 74 20 61 20 73 75 70 70 6f 72 74 65 64  "Not a supported
2a70: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
2a80: 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e.");..         
2a90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2aa0: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
2ab0: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
2ac0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ad0: 20 20 20 20 20 69 6e 74 20 5a 2c 20 41 2c 20 42       int Z, A, B
2ae0: 2c 20 43 2c 20 44 2c 20 45 2c 20 58 31 3b 0d 0a  , C, D, E, X1;..
2af0: 0d 0a 20 20 20 20 20 20 20 20 5a 20 3d 20 28 69  ..        Z = (i
2b00: 6e 74 29 28 28 6a 64 20 2b 20 34 33 32 30 30 30  nt)((jd + 432000
2b10: 30 30 29 20 2f 20 38 36 34 30 30 30 30 30 29 3b  00) / 86400000);
2b20: 0d 0a 20 20 20 20 20 20 20 20 41 20 3d 20 28 69  ..        A = (i
2b30: 6e 74 29 28 28 5a 20 2d 20 31 38 36 37 32 31 36  nt)((Z - 1867216
2b40: 2e 32 35 29 20 2f 20 33 36 35 32 34 2e 32 35 29  .25) / 36524.25)
2b50: 3b 0d 0a 20 20 20 20 20 20 20 20 41 20 3d 20 5a  ;..        A = Z
2b60: 20 2b 20 31 20 2b 20 41 20 2d 20 28 41 20 2f 20   + 1 + A - (A / 
2b70: 34 29 3b 0d 0a 20 20 20 20 20 20 20 20 42 20 3d  4);..        B =
2b80: 20 41 20 2b 20 31 35 32 34 3b 0d 0a 20 20 20 20   A + 1524;..    
2b90: 20 20 20 20 43 20 3d 20 28 69 6e 74 29 28 28 42      C = (int)((B
2ba0: 20 2d 20 31 32 32 2e 31 29 20 2f 20 33 36 35 2e   - 122.1) / 365.
2bb0: 32 35 29 3b 0d 0a 20 20 20 20 20 20 20 20 44 20  25);..        D 
2bc0: 3d 20 28 33 36 35 32 35 20 2a 20 43 29 20 2f 20  = (36525 * C) / 
2bd0: 31 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 45 20  100;..        E 
2be0: 3d 20 28 69 6e 74 29 28 28 42 20 2d 20 44 29 20  = (int)((B - D) 
2bf0: 2f 20 33 30 2e 36 30 30 31 29 3b 0d 0a 20 20 20  / 30.6001);..   
2c00: 20 20 20 20 20 58 31 20 3d 20 28 69 6e 74 29 28       X1 = (int)(
2c10: 33 30 2e 36 30 30 31 20 2a 20 45 29 3b 0d 0a 0d  30.6001 * E);...
2c20: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 64 61 79  .        int day
2c30: 2c 20 6d 6f 6e 74 68 2c 20 79 65 61 72 3b 0d 0a  , month, year;..
2c40: 0d 0a 20 20 20 20 20 20 20 20 64 61 79 20 3d 20  ..        day = 
2c50: 42 20 2d 20 44 20 2d 20 58 31 3b 0d 0a 20 20 20  B - D - X1;..   
2c60: 20 20 20 20 20 6d 6f 6e 74 68 20 3d 20 45 20 3c       month = E <
2c70: 20 31 34 20 3f 20 45 20 2d 20 31 20 3a 20 45 20   14 ? E - 1 : E 
2c80: 2d 20 31 33 3b 0d 0a 20 20 20 20 20 20 20 20 79  - 13;..        y
2c90: 65 61 72 20 3d 20 6d 6f 6e 74 68 20 3e 20 32 20  ear = month > 2 
2ca0: 3f 20 43 20 2d 20 34 37 31 36 20 3a 20 43 20 2d  ? C - 4716 : C -
2cb0: 20 34 37 31 35 3b 0d 0a 0d 0a 20 20 20 20 20 20   4715;....      
2cc0: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
2cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2ce0: 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69 6d  turn new DateTim
2cf0: 65 28 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20 64  e(year, month, d
2d00: 61 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ay);..        }.
2d10: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
2d20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2d30: 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56 61         if (badVa
2d40: 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
2d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2d60: 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  row;....        
2d70: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
2d80: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
2d90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
2da0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
2e00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2e10: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c  / Converts a Jul
2e20: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2e30: 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
2e40: 74 65 54 69 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20  teTime" />...   
2e50: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
2e60: 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20   was translated 
2e70: 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74  from the "comput
2e80: 65 48 4d 53 22 20 66 75 6e 63 74 69 6f 6e 20 69  eHMS" function i
2e90: 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 22  n the..    /// "
2ea0: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
2eb0: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
2ec0: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2ed0: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
2ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2ef0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22  <param name="jd"
2f00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a  >..    /// The J
2f10: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
2f20: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
2f30: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2f40: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2f50: 6d 65 3d 22 62 61 64 56 61 6c 75 65 22 3e 0d 0a  me="badValue">..
2f60: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2f70: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
2f80: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 72 65 74   /> value to ret
2f90: 75 72 6e 20 69 6e 20 74 68 65 20 65 76 65 6e 74  urn in the event
2fa0: 20 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 2f   that the..    /
2fb0: 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61  // Julian Day va
2fc0: 6c 75 65 20 69 73 20 6f 75 74 20 6f 66 20 74 68  lue is out of th
2fd0: 65 20 73 75 70 70 6f 72 74 65 64 20 72 61 6e 67  e supported rang
2fe0: 65 2e 20 20 49 66 20 74 68 69 73 20 76 61 6c 75  e.  If this valu
2ff0: 65 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 6e 75  e is..    /// nu
3000: 6c 6c 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ll, an exception
3010: 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 20   will be thrown 
3020: 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f  instead...    //
3030: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
3040: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3050: 20 20 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72     /// A <see cr
3060: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
3070: 20 76 61 6c 75 65 20 74 68 61 74 20 63 6f 6e 74   value that cont
3080: 61 69 6e 73 20 74 68 65 20 68 6f 75 72 2c 20 6d  ains the hour, m
3090: 69 6e 75 74 65 2c 20 61 6e 64 0d 0a 20 20 20 20  inute, and..    
30a0: 2f 2f 2f 20 73 65 63 6f 6e 64 2c 20 61 6e 64 20  /// second, and 
30b0: 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 76 61 6c 75  millisecond valu
30c0: 65 73 20 74 68 61 74 20 61 72 65 20 63 6c 6f 73  es that are clos
30d0: 65 73 74 20 74 6f 20 74 68 65 20 73 70 65 63 69  est to the speci
30e0: 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75  fied..    /// Ju
30f0: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d  lian Day value..
3100: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
3110: 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
3120: 20 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65   static DateTime
3130: 20 63 6f 6d 70 75 74 65 48 4d 53 28 0d 0a 20 20   computeHMS(..  
3140: 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a        long jd,..
3150: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
3160: 3f 20 62 61 64 56 61 6c 75 65 0d 0a 20 20 20 20  ? badValue..    
3170: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
3180: 20 20 20 20 20 20 69 66 20 28 21 69 73 56 61 6c        if (!isVal
3190: 69 64 4a 64 28 6a 64 29 29 0d 0a 20 20 20 20 20  idJd(jd))..     
31a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31b0: 20 20 69 66 20 28 62 61 64 56 61 6c 75 65 20 3d    if (badValue =
31c0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
31d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31e0: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
31f0: 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74  w ArgumentExcept
3200: 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
3210: 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74 20 61            "Not a
3220: 20 73 75 70 70 6f 72 74 65 64 20 4a 75 6c 69 61   supported Julia
3230: 6e 20 44 61 79 20 76 61 6c 75 65 2e 22 29 3b 0d  n Day value.");.
3240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
3250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3260: 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65 29 62  turn (DateTime)b
3270: 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  adValue;..      
3280: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
3290: 6e 74 20 73 69 3b 0d 0a 0d 0a 20 20 20 20 20 20  nt si;....      
32a0: 20 20 73 69 20 3d 20 28 69 6e 74 29 28 28 6a 64    si = (int)((jd
32b0: 20 2b 20 34 33 32 30 30 30 30 30 29 20 25 20 38   + 43200000) % 8
32c0: 36 34 30 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20  6400000);....   
32d0: 20 20 20 20 20 64 65 63 69 6d 61 6c 20 73 64 3b       decimal sd;
32e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 64 20 3d  ....        sd =
32f0: 20 73 69 20 2f 20 31 30 30 30 2e 30 4d 3b 0d 0a   si / 1000.0M;..
3300: 20 20 20 20 20 20 20 20 73 69 20 3d 20 28 69 6e          si = (in
3310: 74 29 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  t)sd;....       
3320: 20 69 6e 74 20 6d 69 6c 6c 69 73 65 63 6f 6e 64   int millisecond
3330: 20 3d 20 28 69 6e 74 29 28 28 73 64 20 2d 20 73   = (int)((sd - s
3340: 69 29 20 2a 20 31 30 30 30 2e 30 4d 29 3b 0d 0a  i) * 1000.0M);..
3350: 0d 0a 20 20 20 20 20 20 20 20 73 64 20 2d 3d 20  ..        sd -= 
3360: 73 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  si;....        i
3370: 6e 74 20 68 6f 75 72 3b 0d 0a 0d 0a 20 20 20 20  nt hour;....    
3380: 20 20 20 20 68 6f 75 72 20 3d 20 73 69 20 2f 20      hour = si / 
3390: 33 36 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 73  3600;..        s
33a0: 69 20 2d 3d 20 68 6f 75 72 20 2a 20 33 36 30 30  i -= hour * 3600
33b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
33c0: 20 6d 69 6e 75 74 65 3b 0d 0a 0d 0a 20 20 20 20   minute;....    
33d0: 20 20 20 20 6d 69 6e 75 74 65 20 3d 20 73 69 20      minute = si 
33e0: 2f 20 36 30 3b 0d 0a 20 20 20 20 20 20 20 20 73  / 60;..        s
33f0: 64 20 2b 3d 20 73 69 20 2d 20 6d 69 6e 75 74 65  d += si - minute
3400: 20 2a 20 36 30 3b 0d 0a 0d 0a 20 20 20 20 20 20   * 60;....      
3410: 20 20 69 6e 74 20 73 65 63 6f 6e 64 20 3d 20 28    int second = (
3420: 69 6e 74 29 73 64 3b 0d 0a 0d 0a 20 20 20 20 20  int)sd;....     
3430: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
3440: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
3450: 61 74 65 54 69 6d 65 20 6d 69 6e 56 61 6c 75 65  ateTime minValue
3460: 20 3d 20 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56   = DateTime.MinV
3470: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
3480: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
3490: 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20  DateTime(..     
34a0: 20 20 20 20 20 20 20 20 20 20 20 6d 69 6e 56 61             minVa
34b0: 6c 75 65 2e 59 65 61 72 2c 20 6d 69 6e 56 61 6c  lue.Year, minVal
34c0: 75 65 2e 4d 6f 6e 74 68 2c 20 6d 69 6e 56 61 6c  ue.Month, minVal
34d0: 75 65 2e 44 61 79 2c 0d 0a 20 20 20 20 20 20 20  ue.Day,..       
34e0: 20 20 20 20 20 20 20 20 20 68 6f 75 72 2c 20 6d           hour, m
34f0: 69 6e 75 74 65 2c 20 73 65 63 6f 6e 64 2c 20 6d  inute, second, m
3500: 69 6c 6c 69 73 65 63 6f 6e 64 29 3b 0d 0a 20 20  illisecond);..  
3510: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3520: 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
3530: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3540: 66 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e  f (badValue == n
3550: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3560: 20 20 20 20 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a        throw;....
3570: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3580: 72 6e 20 28 44 61 74 65 54 69 6d 65 29 62 61 64  rn (DateTime)bad
3590: 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  Value;..        
35a0: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
3600: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
3610: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
3620: 74 73 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ts a <see cref="
3630: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 74 6f 20  DateTime" /> to 
3640: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
3650: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ue...    /// Thi
3660: 73 20 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61  s method was tra
3670: 6e 73 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65  nslated from the
3680: 20 22 63 6f 6d 70 75 74 65 4a 44 22 20 66 75 6e   "computeJD" fun
3690: 63 74 69 6f 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f  ction in..    //
36a0: 2f 20 74 68 65 20 22 64 61 74 65 2e 63 22 20 66  / the "date.c" f
36b0: 69 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f  ile belonging to
36c0: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
36d0: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f   library...    /
36e0: 2f 2f 20 53 69 6e 63 65 20 74 68 65 20 72 61 6e  // Since the ran
36f0: 67 65 20 6f 66 20 4a 75 6c 69 61 6e 20 44 61 79  ge of Julian Day
3700: 20 76 61 6c 75 65 73 20 73 75 70 70 6f 72 74 65   values supporte
3710: 64 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64  d by this method
3720: 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 63 6c 75 64  ..    /// includ
3730: 65 73 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  es all possible 
3740: 28 76 61 6c 69 64 29 20 76 61 6c 75 65 73 20 6f  (valid) values o
3750: 66 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44  f a <see cref="D
3760: 61 74 65 54 69 6d 65 22 20 2f 3e 0d 0a 20 20 20  ateTime" />..   
3770: 20 2f 2f 2f 20 76 61 6c 75 65 2c 20 69 74 20 73   /// value, it s
3780: 68 6f 75 6c 64 20 62 65 20 65 78 74 72 65 6d 65  hould be extreme
3790: 6c 79 20 64 69 66 66 69 63 75 6c 74 20 66 6f 72  ly difficult for
37a0: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 74 6f 0d   this method to.
37b0: 0a 20 20 20 20 2f 2f 2f 20 72 61 69 73 65 20 61  .    /// raise a
37c0: 6e 20 65 78 63 65 70 74 69 6f 6e 20 6f 72 20 72  n exception or r
37d0: 65 74 75 72 6e 20 61 6e 20 75 6e 64 65 66 69 6e  eturn an undefin
37e0: 65 64 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  ed result...    
37f0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3800: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
3810: 61 6d 65 3d 22 64 61 74 65 54 69 6d 65 22 3e 0d  ame="dateTime">.
3820: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65  .    /// The <se
3830: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
3840: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
3850: 6e 76 65 72 74 2e 20 20 54 68 69 73 20 76 61 6c  nvert.  This val
3860: 75 65 0d 0a 20 20 20 20 2f 2f 2f 20 77 69 6c 6c  ue..    /// will
3870: 20 62 65 20 77 69 74 68 69 6e 20 74 68 65 20 72   be within the r
3880: 61 6e 67 65 20 6f 66 20 3c 73 65 65 20 63 72 65  ange of <see cre
3890: 66 3d 22 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56  f="DateTime.MinV
38a0: 61 6c 75 65 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  alue" />..    //
38b0: 2f 20 28 30 30 3a 30 30 3a 30 30 2e 30 30 30 30  / (00:00:00.0000
38c0: 30 30 30 2c 20 4a 61 6e 75 61 72 79 20 31 2c 20  000, January 1, 
38d0: 30 30 30 31 29 20 74 6f 0d 0a 20 20 20 20 2f 2f  0001) to..    //
38e0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
38f0: 65 54 69 6d 65 2e 4d 61 78 56 61 6c 75 65 22 20  eTime.MaxValue" 
3900: 2f 3e 20 28 32 33 3a 35 39 3a 35 39 2e 39 39 39  /> (23:59:59.999
3910: 39 39 39 39 2c 20 44 65 63 65 6d 62 65 72 0d 0a  9999, December..
3920: 20 20 20 20 2f 2f 2f 20 33 31 2c 20 39 39 39 39      /// 31, 9999
3930: 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  )...    /// </pa
3940: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
3950: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
3960: 20 54 68 65 20 6e 65 61 72 65 73 74 20 4a 75 6c   The nearest Jul
3970: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 63 6f  ian Day value co
3980: 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74  rresponding to t
3990: 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20  he specified..  
39a0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
39b0: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
39c0: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
39d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
39e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e  ivate static lon
39f0: 67 20 63 6f 6d 70 75 74 65 4a 44 28 0d 0a 20 20  g computeJD(..  
3a00: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 64        DateTime d
3a10: 61 74 65 54 69 6d 65 0d 0a 20 20 20 20 20 20 20  ateTime..       
3a20: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
3a30: 20 20 20 69 6e 74 20 59 2c 20 4d 2c 20 44 3b 0d     int Y, M, D;.
3a40: 0a 0d 0a 20 20 20 20 20 20 20 20 59 20 3d 20 64  ...        Y = d
3a50: 61 74 65 54 69 6d 65 2e 59 65 61 72 3b 0d 0a 20  ateTime.Year;.. 
3a60: 20 20 20 20 20 20 20 4d 20 3d 20 64 61 74 65 54         M = dateT
3a70: 69 6d 65 2e 4d 6f 6e 74 68 3b 0d 0a 20 20 20 20  ime.Month;..    
3a80: 20 20 20 20 44 20 3d 20 64 61 74 65 54 69 6d 65      D = dateTime
3a90: 2e 44 61 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  .Day;....       
3aa0: 20 69 66 20 28 4d 20 3c 3d 20 32 29 0d 0a 20 20   if (M <= 2)..  
3ab0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3ac0: 20 20 20 20 20 59 2d 2d 3b 0d 0a 20 20 20 20 20       Y--;..     
3ad0: 20 20 20 20 20 20 20 4d 20 2b 3d 20 31 32 3b 0d         M += 12;.
3ae0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
3af0: 20 20 20 20 20 20 69 6e 74 20 41 2c 20 42 2c 20        int A, B, 
3b00: 58 31 2c 20 58 32 3b 0d 0a 0d 0a 20 20 20 20 20  X1, X2;....     
3b10: 20 20 20 41 20 3d 20 59 20 2f 20 31 30 30 3b 0d     A = Y / 100;.
3b20: 0a 20 20 20 20 20 20 20 20 42 20 3d 20 32 20 2d  .        B = 2 -
3b30: 20 41 20 2b 20 28 41 20 2f 20 34 29 3b 0d 0a 20   A + (A / 4);.. 
3b40: 20 20 20 20 20 20 20 58 31 20 3d 20 33 36 35 32         X1 = 3652
3b50: 35 20 2a 20 28 59 20 2b 20 34 37 31 36 29 20 2f  5 * (Y + 4716) /
3b60: 20 31 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 58   100;..        X
3b70: 32 20 3d 20 33 30 36 30 30 31 20 2a 20 28 4d 20  2 = 306001 * (M 
3b80: 2b 20 31 29 20 2f 20 31 30 30 30 30 3b 0d 0a 0d  + 1) / 10000;...
3b90: 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64  .        long jd
3ba0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6a 64 20  ;....        jd 
3bb0: 3d 20 28 6c 6f 6e 67 29 28 28 58 31 20 2b 20 58  = (long)((X1 + X
3bc0: 32 20 2b 20 44 20 2b 20 42 20 2d 20 31 35 32 34  2 + D + B - 1524
3bd0: 2e 35 29 20 2a 20 38 36 34 30 30 30 30 30 29 3b  .5) * 86400000);
3be0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6a 64 20 2b  ....        jd +
3bf0: 3d 20 28 64 61 74 65 54 69 6d 65 2e 48 6f 75 72  = (dateTime.Hour
3c00: 20 2a 20 33 36 30 30 30 30 30 29 20 2b 20 28 64   * 3600000) + (d
3c10: 61 74 65 54 69 6d 65 2e 4d 69 6e 75 74 65 20 2a  ateTime.Minute *
3c20: 20 36 30 30 30 30 29 20 2b 0d 0a 20 20 20 20 20   60000) +..     
3c30: 20 20 20 20 20 20 20 28 64 61 74 65 54 69 6d 65         (dateTime
3c40: 2e 53 65 63 6f 6e 64 20 2a 20 31 30 30 30 29 20  .Second * 1000) 
3c50: 2b 20 64 61 74 65 54 69 6d 65 2e 4d 69 6c 6c 69  + dateTime.Milli
3c60: 73 65 63 6f 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20  second;....     
3c70: 20 20 20 72 65 74 75 72 6e 20 6a 64 3b 0d 0a 20     return jd;.. 
3c80: 20 20 20 7d 0a 20 20 20 20 23 65 6e 64 72 65 67     }.    #endreg
3c90: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ce0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
3cf0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3d00: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
3d10: 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61  string into a Da
3d20: 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68  teTime, using th
3d30: 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  e DateTimeFormat
3d40: 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d  , DateTimeKind,.
3d50: 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74  .    /// and Dat
3d60: 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e  eTimeFormatStrin
3d70: 67 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20  g specified for 
3d80: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  the connection w
3d90: 68 65 6e 20 69 74 20 77 61 73 20 6f 70 65 6e 65  hen it was opene
3da0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
3db0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
3dc0: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
3dd0: 2f 2f 20 41 63 63 65 70 74 61 62 6c 65 20 49 53  // Acceptable IS
3de0: 4f 38 36 30 31 20 44 61 74 65 54 69 6d 65 20 66  O8601 DateTime f
3df0: 6f 72 6d 61 74 73 20 61 72 65 3a 0d 0a 20 20 20  ormats are:..   
3e00: 20 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d   /// <list type=
3e10: 22 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f  "bullet">..    /
3e20: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
3e30: 70 74 69 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f  ption>THHmmssK</
3e40: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
3e50: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
3e60: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
3e70: 54 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74  THHmmK</descript
3e80: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
3e90: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
3ea0: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73  ription>HH:mm:ss
3eb0: 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72  .FFFFFFFK</descr
3ec0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
3ed0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
3ee0: 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d  escription>HH:mm
3ef0: 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :ssK</descriptio
3f00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
3f10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
3f20: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65  ption>HH:mmK</de
3f30: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
3f40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
3f50: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
3f60: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
3f70: 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  s.FFFFFFFK</desc
3f80: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
3f90: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
3fa0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
3fb0: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b  -MM-dd HH:mm:ssK
3fc0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
3fd0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
3fe0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
3ff0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4000: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
4010: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4020: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4030: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54  tion>yyyy-MM-ddT
4040: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4050: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4060: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4070: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4080: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4090: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :mmK</descriptio
40a0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
40b0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
40c0: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
40d0: 54 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63  THH:mm:ssK</desc
40e0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
40f0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4100: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4110: 4d 4d 64 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73  MMddHHmmssK</des
4120: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4130: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4140: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4150: 79 4d 4d 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63  yMMddHHmmK</desc
4160: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4170: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4180: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4190: 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46  MMddTHHmmssFFFFF
41a0: 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFK</description
41b0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
41c0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
41d0: 74 69 6f 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65  tion>THHmmss</de
41e0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
41f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4200: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4210: 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  Hmm</description
4220: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4230: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4240: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46  tion>HH:mm:ss.FF
4250: 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69  FFFFF</descripti
4260: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4270: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4280: 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c  iption>HH:mm:ss<
4290: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
42a0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
42b0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
42c0: 3e 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74  >HH:mm</descript
42d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
42e0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
42f0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4300: 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
4310: 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFF</description
4320: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4330: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4340: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
4350: 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69  HH:mm:ss</descri
4360: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4370: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4380: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4390: 4d 2d 64 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63  M-dd HH:mm</desc
43a0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
43b0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
43c0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
43d0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e  -MM-ddTHH:mm:ss.
43e0: 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70  FFFFFFF</descrip
43f0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4400: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4410: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4420: 2d 64 64 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72  -ddTHH:mm</descr
4430: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4440: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4450: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
4460: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f  MM-ddTHH:mm:ss</
4470: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4480: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4490: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
44a0: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f  yyyyMMddHHmmss</
44b0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
44c0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
44d0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
44e0: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65  yyyyMMddHHmm</de
44f0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4500: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4510: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4520: 79 79 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46  yyMMddTHHmmssFFF
4530: 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFF</descriptio
4540: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4550: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4560: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4570: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4580: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4590: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
45a0: 6e 3e 79 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63  n>yyyyMMdd</desc
45b0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
45c0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
45d0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d  description>yy-M
45e0: 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f  M-dd</descriptio
45f0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4600: 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20  // </list>..    
4610: 2f 2f 2f 20 49 66 20 74 68 65 20 73 74 72 69 6e  /// If the strin
4620: 67 20 63 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63  g cannot be matc
4630: 68 65 64 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68  hed to one of th
4640: 65 20 61 62 6f 76 65 20 66 6f 72 6d 61 74 73 20  e above formats 
4650: 2d 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  -OR-..    /// th
4660: 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  e DateTimeFormat
4670: 53 74 72 69 6e 67 20 69 66 20 6f 6e 65 20 77 61  String if one wa
4680: 73 20 70 72 6f 76 69 64 65 64 2c 20 61 6e 20 65  s provided, an e
4690: 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20  xception will.. 
46a0: 20 20 20 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e     /// be thrown
46b0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
46c0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  arks>..    /// <
46d0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65  param name="date
46e0: 54 65 78 74 22 3e 54 68 65 20 73 74 72 69 6e 67  Text">The string
46f0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 69 74 68   containing eith
4700: 65 72 20 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65  er a long intege
4710: 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d  r number of 100-
4720: 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73  nanosecond units
4730: 20 73 69 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20   since..    /// 
4740: 53 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e  System.DateTime.
4750: 4d 69 6e 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69  MinValue, a Juli
4760: 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61  an day double, a
4770: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
4780: 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63   of seconds sinc
4790: 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68  e the Unix epoch
47a0: 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c  , a..    /// cul
47b0: 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74  ture-independent
47c0: 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20   formatted date 
47d0: 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 2c  and time string,
47e0: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74   a formatted dat
47f0: 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e  e and time strin
4800: 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  g in the current
4810: 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72  ..    /// cultur
4820: 65 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31  e, or an ISO8601
4830: 2d 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c  -format string.<
4840: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
4850: 20 3c 72 65 74 75 72 6e 73 3e 41 20 44 61 74 65   <returns>A Date
4860: 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75  Time value</retu
4870: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
4880: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65   DateTime ToDate
4890: 54 69 6d 65 28 73 74 72 69 6e 67 20 64 61 74 65  Time(string date
48a0: 54 65 78 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  Text)..    {..  
48b0: 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74      return ToDat
48c0: 65 54 69 6d 65 28 64 61 74 65 54 65 78 74 2c 20  eTime(dateText, 
48d0: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c  _datetimeFormat,
48e0: 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20   _datetimeKind, 
48f0: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53  _datetimeFormatS
4900: 74 72 69 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a  tring);..    }..
4910: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
4920: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
4930: 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69  verts a string i
4940: 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20  nto a DateTime, 
4950: 75 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  using the specif
4960: 69 65 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  ied DateTimeForm
4970: 61 74 2c 0d 0a 20 20 20 20 2f 2f 2f 20 44 61 74  at,..    /// Dat
4980: 65 54 69 6d 65 4b 69 6e 64 20 61 6e 64 20 44 61  eTimeKind and Da
4990: 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  teTimeFormatStri
49a0: 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ng...    /// </s
49b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
49c0: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
49d0: 2f 2f 2f 20 41 63 63 65 70 74 61 62 6c 65 20 49  /// Acceptable I
49e0: 53 4f 38 36 30 31 20 44 61 74 65 54 69 6d 65 20  SO8601 DateTime 
49f0: 66 6f 72 6d 61 74 73 20 61 72 65 3a 0d 0a 20 20  formats are:..  
4a00: 20 20 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65    /// <list type
4a10: 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20  ="bullet">..    
4a20: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4a30: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c  iption>THHmmssK<
4a40: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
4a50: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4a60: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4a70: 3e 54 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70  >THHmmK</descrip
4a80: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4a90: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4aa0: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73  cription>HH:mm:s
4ab0: 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  s.FFFFFFFK</desc
4ac0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4ad0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4ae0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
4af0: 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  m:ssK</descripti
4b00: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4b10: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4b20: 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64  iption>HH:mmK</d
4b30: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4b40: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4b50: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4b60: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
4b70: 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  ss.FFFFFFFK</des
4b80: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4b90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4ba0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4bb0: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
4bc0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4bd0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4be0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4bf0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
4c00: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :mmK</descriptio
4c10: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4c20: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4c30: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4c40: 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  THH:mm:ss.FFFFFF
4c50: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FK</description>
4c60: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4c70: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4c80: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
4c90: 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69  H:mmK</descripti
4ca0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4cb0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4cc0: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
4cd0: 64 54 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  dTHH:mm:ssK</des
4ce0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4cf0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4d00: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4d10: 79 4d 4d 64 64 48 48 6d 6d 73 73 4b 3c 2f 64 65  yMMddHHmmssK</de
4d20: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4d30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4d40: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4d50: 79 79 4d 4d 64 64 48 48 6d 6d 4b 3c 2f 64 65 73  yyMMddHHmmK</des
4d60: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4d70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4d80: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4d90: 79 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46  yMMddTHHmmssFFFF
4da0: 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFK</descriptio
4db0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4dc0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4dd0: 70 74 69 6f 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64  ption>THHmmss</d
4de0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4df0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4e00: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54  m><description>T
4e10: 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  HHmm</descriptio
4e20: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4e30: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4e40: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46  ption>HH:mm:ss.F
4e50: 46 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74  FFFFFF</descript
4e60: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4e70: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4e80: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73  ription>HH:mm:ss
4e90: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4ea0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4eb0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4ec0: 6e 3e 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  n>HH:mm</descrip
4ed0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4ee0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4ef0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4f00: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -dd HH:mm:ss.FFF
4f10: 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFF</descriptio
4f20: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4f30: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4f40: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4f50: 20 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72   HH:mm:ss</descr
4f60: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4f70: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4f80: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
4f90: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3c 2f 64 65 73  MM-dd HH:mm</des
4fa0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4fb0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4fc0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4fd0: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4fe0: 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72 69  .FFFFFFF</descri
4ff0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
5000: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
5010: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
5020: 4d 2d 64 64 54 48 48 3a 6d 6d 3c 2f 64 65 73 63  M-ddTHH:mm</desc
5030: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
5040: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
5050: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
5060: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 3c  -MM-ddTHH:mm:ss<
5070: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
5080: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
5090: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
50a0: 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73 3c  >yyyyMMddHHmmss<
50b0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
50c0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
50d0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
50e0: 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64  >yyyyMMddHHmm</d
50f0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
5100: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
5110: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
5120: 79 79 79 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46  yyyMMddTHHmmssFF
5130: 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69  FFFFF</descripti
5140: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5150: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5160: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
5170: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
5180: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5190: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
51a0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 3c 2f 64 65 73  on>yyyyMMdd</des
51b0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
51c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
51d0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 2d  <description>yy-
51e0: 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70 74 69  MM-dd</descripti
51f0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5200: 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20  /// </list>..   
5210: 20 2f 2f 2f 20 49 66 20 74 68 65 20 73 74 72 69   /// If the stri
5220: 6e 67 20 63 61 6e 6e 6f 74 20 62 65 20 6d 61 74  ng cannot be mat
5230: 63 68 65 64 20 74 6f 20 6f 6e 65 20 6f 66 20 74  ched to one of t
5240: 68 65 20 61 62 6f 76 65 20 66 6f 72 6d 61 74 73  he above formats
5250: 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74   -OR-..    /// t
5260: 68 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  he DateTimeForma
5270: 74 53 74 72 69 6e 67 20 69 66 20 6f 6e 65 20 77  tString if one w
5280: 61 73 20 70 72 6f 76 69 64 65 64 2c 20 61 6e 20  as provided, an 
5290: 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a  exception will..
52a0: 20 20 20 20 2f 2f 2f 20 62 65 20 74 68 72 6f 77      /// be throw
52b0: 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  n...    /// </re
52c0: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
52d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74  <param name="dat
52e0: 65 54 65 78 74 22 3e 54 68 65 20 73 74 72 69 6e  eText">The strin
52f0: 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 69 74  g containing eit
5300: 68 65 72 20 61 20 6c 6f 6e 67 20 69 6e 74 65 67  her a long integ
5310: 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30  er number of 100
5320: 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74  -nanosecond unit
5330: 73 20 73 69 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f  s since..    ///
5340: 20 53 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65   System.DateTime
5350: 2e 4d 69 6e 56 61 6c 75 65 2c 20 61 20 4a 75 6c  .MinValue, a Jul
5360: 69 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20  ian day double, 
5370: 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65  an integer numbe
5380: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
5390: 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  ce the Unix epoc
53a0: 68 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 75  h, a..    /// cu
53b0: 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e  lture-independen
53c0: 74 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  t formatted date
53d0: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
53e0: 2c 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61  , a formatted da
53f0: 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69  te and time stri
5400: 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ng in the curren
5410: 74 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75  t..    /// cultu
5420: 72 65 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30  re, or an ISO860
5430: 31 2d 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e  1-format string.
5440: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
5450: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
5460: 6f 72 6d 61 74 22 3e 54 68 65 20 53 51 4c 69 74  ormat">The SQLit
5470: 65 44 61 74 65 46 6f 72 6d 61 74 73 20 74 6f 20  eDateFormats to 
5480: 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  use.</param>..  
5490: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
54a0: 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74  e="kind">The Dat
54b0: 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65  eTimeKind to use
54c0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
54d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
54e0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e 54 68  formatString">Th
54f0: 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  e DateTime forma
5500: 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 2e  t string to use.
5510: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
5520: 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 44 61 74  / <returns>A Dat
5530: 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74  eTime value</ret
5540: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
5550: 63 20 73 74 61 74 69 63 20 44 61 74 65 54 69 6d  c static DateTim
5560: 65 20 54 6f 44 61 74 65 54 69 6d 65 28 0d 0a 20  e ToDateTime(.. 
5570: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 61         string da
5580: 74 65 54 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  teText,..       
5590: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
55a0: 74 73 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  ts format,..    
55b0: 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e 64      DateTimeKind
55c0: 20 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20   kind,..        
55d0: 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 53 74 72  string formatStr
55e0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ing..        )..
55f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
5600: 77 69 74 63 68 20 28 66 6f 72 6d 61 74 29 0d 0a  witch (format)..
5610: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5620: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
5630: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 54 69  teDateFormats.Ti
5640: 63 6b 73 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  cks:..          
5650: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5660: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5670: 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 43  urn ToDateTime(C
5680: 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 36 34 28 0d  onvert.ToInt64(.
5690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
56a0: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78           dateTex
56b0: 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  t, CultureInfo.I
56c0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
56d0: 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20  , kind);..      
56e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
56f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51           case SQ
5700: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e  LiteDateFormats.
5710: 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20  JulianDay:..    
5720: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5740: 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65     return ToDate
5750: 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 44  Time(Convert.ToD
5760: 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  ouble(..        
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5780: 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72  dateText, Cultur
5790: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
57a0: 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d  ulture), kind);.
57b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
57c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
57d0: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
57e0: 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63 68  ormats.UnixEpoch
57f0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5800: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5810: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5820: 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76   ToDateTime(Conv
5830: 65 72 74 2e 54 6f 49 6e 74 33 32 28 0d 0a 20 20  ert.ToInt32(..  
5840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5850: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
5860: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
5870: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b  riantCulture), k
5880: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5890: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
58a0: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
58b0: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76  eDateFormats.Inv
58c0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a  ariantCulture:..
58d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
58f0: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61         if (forma
5900: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29  tString != null)
5910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5920: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5930: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
5940: 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50  yKind(DateTime.P
5950: 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20  arseExact(..    
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5970: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74          dateText
5980: 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d  , formatString,.
5990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
59b0: 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e  eTimeFormatInfo.
59c0: 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a  InvariantInfo,..
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
59f0: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
5a00: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a20: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5a30: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
5a40: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5a70: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
5a80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
5aa0: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5ab0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
5ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ad0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5ae0: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
5af0: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
5b00: 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rse(..          
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b20: 20 20 64 61 74 65 54 65 78 74 2c 20 44 61 74 65    dateText, Date
5b30: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49  TimeFormatInfo.I
5b40: 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20  nvariantInfo,.. 
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
5b70: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
5b80: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
5b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ba0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
5bb0: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
5bc0: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
5bf0: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
5c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
5c20: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
5c30: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5c40: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
5c50: 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75 72 72  DateFormats.Curr
5c60: 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20  entCulture:..   
5c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c90: 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74      if (formatSt
5ca0: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ring != null).. 
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
5cd0: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
5ce0: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73  nd(DateTime.Pars
5cf0: 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20  eExact(..       
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d10: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66       dateText, f
5d20: 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20  ormatString,..  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
5d50: 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 43 75 72  meFormatInfo.Cur
5d60: 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20  rentInfo,..     
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d80: 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44         kind == D
5d90: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20  ateTimeKind.Utc 
5da0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
5dd0: 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72  s.AdjustToUniver
5de0: 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  sal :..         
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e00: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
5e10: 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20  tyles.None),..  
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e30: 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b            kind);
5e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5e50: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e70: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
5e80: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
5e90: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 28 0d  DateTime.Parse(.
5ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
5ec0: 65 54 65 78 74 2c 20 44 61 74 65 54 69 6d 65 46  eText, DateTimeF
5ed0: 6f 72 6d 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e  ormatInfo.Curren
5ee0: 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20  tInfo,..        
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f00: 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65      kind == Date
5f10: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a  TimeKind.Utc ?..
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f40: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41  DateTimeStyles.A
5f50: 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c  djustToUniversal
5f60: 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f80: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5f90: 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20  es.None),..     
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20         kind);.. 
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
5fe0: 66 61 75 6c 74 3a 20 2f 2a 20 49 53 4f 2d 38 36  fault: /* ISO-86
5ff0: 30 31 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  01 */..         
6000: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
6020: 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21   (formatString !
6030: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6050: 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65   return DateTime
6060: 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74  .SpecifyKind(Dat
6070: 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74  eTime.ParseExact
6080: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
6090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
60a0: 61 74 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53  ateText, formatS
60b0: 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  tring,..        
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60d0: 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d      DateTimeForm
60e0: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
60f0: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6110: 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54     kind == DateT
6120: 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20  imeKind.Utc ?.. 
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6150: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64  ateTimeStyles.Ad
6160: 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20  justToUniversal 
6170: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
61a0: 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20  s.None),..      
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61c0: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
61d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61e0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e  return DateTime.
6210: 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65  SpecifyKind(Date
6220: 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28  Time.ParseExact(
6230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61                da
6250: 74 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69 6d  teText, _datetim
6260: 65 46 6f 72 6d 61 74 73 2c 0d 0a 20 20 20 20 20  eFormats,..     
6270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6280: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 46         DateTimeF
6290: 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69  ormatInfo.Invari
62a0: 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20  antInfo,..      
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61        kind == Da
62d0: 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f  teTimeKind.Utc ?
62e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
62f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6300: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73    DateTimeStyles
6310: 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73  .AdjustToUnivers
6320: 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  al :..          
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6340: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74        DateTimeSt
6350: 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20  yles.None),..   
6360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6370: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d           kind);.
6380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6390: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
63a0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
63b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
63c0: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6a 75  // Converts a ju
63d0: 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 20 69 6e  lianday value in
63e0: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 0d 0a 20  to a DateTime.. 
63f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6400: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6410: 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61  m name="julianDa
6420: 79 22 3e 54 68 65 20 76 61 6c 75 65 20 74 6f 20  y">The value to 
6430: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
6440: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
6450: 73 3e 41 20 2e 4e 45 54 20 44 61 74 65 54 69 6d  s>A .NET DateTim
6460: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
6470: 20 70 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65   public DateTime
6480: 20 54 6f 44 61 74 65 54 69 6d 65 28 64 6f 75 62   ToDateTime(doub
6490: 6c 65 20 6a 75 6c 69 61 6e 44 61 79 29 0d 0a 20  le julianDay).. 
64a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
64b0: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 6a 75  rn ToDateTime(ju
64c0: 6c 69 61 6e 44 61 79 2c 20 5f 64 61 74 65 74 69  lianDay, _dateti
64d0: 6d 65 4b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d  meKind);..    }.
64e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
64f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
6500: 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61 6e 64  nverts a juliand
6510: 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20 61 20  ay value into a 
6520: 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f  DateTime..    //
6530: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6540: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6550: 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68  e="julianDay">Th
6560: 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65  e value to conve
6570: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
6580: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6590: 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54  "kind">The DateT
65a0: 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c  imeKind to use.<
65b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
65c0: 20 3c 72 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54   <returns>A .NET
65d0: 20 44 61 74 65 54 69 6d 65 3c 2f 72 65 74 75 72   DateTime</retur
65e0: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
65f0: 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20  static DateTime 
6600: 54 6f 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20  ToDateTime(..   
6610: 20 20 20 20 20 64 6f 75 62 6c 65 20 6a 75 6c 69       double juli
6620: 61 6e 44 61 79 2c 0d 0a 20 20 20 20 20 20 20 20  anDay,..        
6630: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e  DateTimeKind kin
6640: 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  d..        )..  
6650: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e    {..        lon
6660: 67 20 6a 64 20 3d 20 44 6f 75 62 6c 65 54 6f 4a  g jd = DoubleToJ
6670: 64 28 6a 75 6c 69 61 6e 44 61 79 29 3b 0d 0a 20  d(julianDay);.. 
6680: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20         DateTime 
6690: 64 61 74 65 54 69 6d 65 59 4d 44 20 3d 20 63 6f  dateTimeYMD = co
66a0: 6d 70 75 74 65 59 4d 44 28 6a 64 2c 20 6e 75 6c  mputeYMD(jd, nul
66b0: 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 44 61 74  l);..        Dat
66c0: 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 48 4d  eTime dateTimeHM
66d0: 53 20 3d 20 63 6f 6d 70 75 74 65 48 4d 53 28 6a  S = computeHMS(j
66e0: 64 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20  d, null);....   
66f0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
6700: 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20  DateTime(..     
6710: 20 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 59         dateTimeY
6720: 4d 44 2e 59 65 61 72 2c 20 64 61 74 65 54 69 6d  MD.Year, dateTim
6730: 65 59 4d 44 2e 4d 6f 6e 74 68 2c 20 64 61 74 65  eYMD.Month, date
6740: 54 69 6d 65 59 4d 44 2e 44 61 79 2c 0d 0a 20 20  TimeYMD.Day,..  
6750: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 69            dateTi
6760: 6d 65 48 4d 53 2e 48 6f 75 72 2c 20 64 61 74 65  meHMS.Hour, date
6770: 54 69 6d 65 48 4d 53 2e 4d 69 6e 75 74 65 2c 20  TimeHMS.Minute, 
6780: 64 61 74 65 54 69 6d 65 48 4d 53 2e 53 65 63 6f  dateTimeHMS.Seco
6790: 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nd,..           
67a0: 20 64 61 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6c   dateTimeHMS.Mil
67b0: 6c 69 73 65 63 6f 6e 64 2c 20 6b 69 6e 64 29 3b  lisecond, kind);
67c0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
67d0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
67e0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
67f0: 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 75 6d  he specified num
6800: 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 66  ber of seconds f
6810: 72 6f 6d 20 74 68 65 20 55 6e 69 78 20 65 70 6f  rom the Unix epo
6820: 63 68 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f  ch into a..    /
6830: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  // <see cref="Da
6840: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
6850: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6860: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6870: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 63 6f  param name="seco
6880: 6e 64 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  nds">..    /// T
6890: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f  he number of who
68a0: 6c 65 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  le seconds since
68b0: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2e   the Unix epoch.
68c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
68d0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
68e0: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d  am name="kind">.
68f0: 0a 20 20 20 20 2f 2f 2f 20 45 69 74 68 65 72 20  .    /// Either 
6900: 55 74 63 20 6f 72 20 4c 6f 63 61 6c 20 74 69 6d  Utc or Local tim
6910: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
6920: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
6930: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
6940: 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72   The new <see cr
6950: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
6960: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
6970: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
6980: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
6990: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65   DateTime ToDate
69a0: 54 69 6d 65 28 69 6e 74 20 73 65 63 6f 6e 64 73  Time(int seconds
69b0: 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b  , DateTimeKind k
69c0: 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ind)..    {..   
69d0: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
69e0: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
69f0: 28 55 6e 69 78 45 70 6f 63 68 2e 41 64 64 53 65  (UnixEpoch.AddSe
6a00: 63 6f 6e 64 73 28 73 65 63 6f 6e 64 73 29 2c 20  conds(seconds), 
6a10: 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  kind);..    }...
6a20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
6a30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
6a40: 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69  erts the specifi
6a50: 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 63  ed number of tic
6a60: 6b 73 20 73 69 6e 63 65 20 74 68 65 20 65 70 6f  ks since the epo
6a70: 63 68 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f  ch into a..    /
6a80: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  // <see cref="Da
6a90: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
6aa0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6ab0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6ac0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b  param name="tick
6ad0: 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  s">..    /// The
6ae0: 20 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65   number of whole
6af0: 20 74 69 63 6b 73 20 73 69 6e 63 65 20 74 68 65   ticks since the
6b00: 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f   epoch...    ///
6b10: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
6b20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6b30: 6b 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  kind">..    /// 
6b40: 45 69 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f  Either Utc or Lo
6b50: 63 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f  cal time...    /
6b60: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
6b70: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
6b80: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20      /// The new 
6b90: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6ba0: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6bb0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6bc0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
6bd0: 20 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65   static DateTime
6be0: 20 54 6f 44 61 74 65 54 69 6d 65 28 6c 6f 6e 67   ToDateTime(long
6bf0: 20 74 69 63 6b 73 2c 20 44 61 74 65 54 69 6d 65   ticks, DateTime
6c00: 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20  Kind kind)..    
6c10: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
6c20: 6e 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 74  n new DateTime(t
6c30: 69 63 6b 73 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20  icks, kind);..  
6c40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
6c50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
6c60: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 44 61 74  / Converts a Dat
6c70: 65 54 69 6d 65 20 73 74 72 75 63 74 20 74 6f 20  eTime struct to 
6c80: 61 20 4a 75 6c 69 61 6e 44 61 79 20 64 6f 75 62  a JulianDay doub
6c90: 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  le..    /// </su
6ca0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6cb0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
6cc0: 75 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  ue">The DateTime
6cd0: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
6ce0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
6cf0: 74 75 72 6e 73 3e 54 68 65 20 4a 75 6c 69 61 6e  turns>The Julian
6d00: 44 61 79 20 76 61 6c 75 65 20 74 68 65 20 44 61  Day value the Da
6d10: 74 65 74 69 6d 65 20 72 65 70 72 65 73 65 6e 74  tetime represent
6d20: 73 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  s</returns>..   
6d30: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 64   public static d
6d40: 6f 75 62 6c 65 20 54 6f 4a 75 6c 69 61 6e 44 61  ouble ToJulianDa
6d50: 79 28 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  y(DateTime value
6d60: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
6d70: 20 20 72 65 74 75 72 6e 20 4a 64 54 6f 44 6f 75    return JdToDou
6d80: 62 6c 65 28 63 6f 6d 70 75 74 65 4a 44 28 76 61  ble(computeJD(va
6d90: 6c 75 65 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  lue));..    }...
6da0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
6db0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
6dc0: 65 72 74 73 20 61 20 44 61 74 65 54 69 6d 65 20  erts a DateTime 
6dd0: 73 74 72 75 63 74 20 74 6f 20 74 68 65 20 77 68  struct to the wh
6de0: 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65  ole number of se
6df0: 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 0d  conds since the.
6e00: 0a 20 20 20 20 2f 2f 2f 20 55 6e 69 78 20 65 70  .    /// Unix ep
6e10: 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  och...    /// </
6e20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
6e30: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
6e40: 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69  alue">The DateTi
6e50: 6d 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70  me to convert</p
6e60: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
6e70: 72 65 74 75 72 6e 73 3e 54 68 65 20 77 68 6f 6c  returns>The whol
6e80: 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  e number of seco
6e90: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
6ea0: 69 78 20 65 70 6f 63 68 3c 2f 72 65 74 75 72 6e  ix epoch</return
6eb0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
6ec0: 74 61 74 69 63 20 6c 6f 6e 67 20 54 6f 55 6e 69  tatic long ToUni
6ed0: 78 45 70 6f 63 68 28 44 61 74 65 54 69 6d 65 20  xEpoch(DateTime 
6ee0: 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  value)..    {.. 
6ef0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 76         return (v
6f00: 61 6c 75 65 2e 53 75 62 74 72 61 63 74 28 55 6e  alue.Subtract(Un
6f10: 69 78 45 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f  ixEpoch).Ticks /
6f20: 20 54 69 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50   TimeSpan.TicksP
6f30: 65 72 53 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20  erSecond);..    
6f40: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
6f50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6f60: 52 65 74 75 72 6e 73 20 74 68 65 20 44 61 74 65  Returns the Date
6f70: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
6f80: 6e 67 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68  ng to use for th
6f90: 65 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65  e specified Date
6fa0: 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f  TimeKind...    /
6fb0: 2f 2f 20 49 66 20 3c 70 61 72 61 6d 72 65 66 20  // If <paramref 
6fc0: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69  name="formatStri
6fd0: 6e 67 22 20 2f 3e 20 69 73 20 6e 6f 74 20 6e 75  ng" /> is not nu
6fe0: 6c 6c 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 72  ll, it will be r
6ff0: 65 74 75 72 6e 65 64 20 76 65 72 62 61 74 69 6d  eturned verbatim
7000: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
7010: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
7020: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64  param name="kind
7030: 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69  ">The DateTimeKi
7040: 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  nd to use.</para
7050: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
7060: 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53  am name="formatS
7070: 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54  tring">The DateT
7080: 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  ime format strin
7090: 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  g to use.</param
70a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
70b0: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
70c0: 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  e DateTime forma
70d0: 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20  t string to use 
70e0: 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65  for the specifie
70f0: 64 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d  d DateTimeKind..
7100: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
7110: 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
7120: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
7130: 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f  etDateTimeKindFo
7140: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 44  rmat(..        D
7150: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
7160: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
7170: 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a  g formatString..
7180: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
7190: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 6f  ..        if (fo
71a0: 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75  rmatString != nu
71b0: 6c 6c 29 20 72 65 74 75 72 6e 20 66 6f 72 6d 61  ll) return forma
71c0: 74 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  tString;..      
71d0: 20 20 72 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d    return (kind =
71e0: 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55  = DateTimeKind.U
71f0: 74 63 29 20 3f 20 5f 64 61 74 65 74 69 6d 65 46  tc) ? _datetimeF
7200: 6f 72 6d 61 74 55 74 63 20 3a 20 5f 64 61 74 65  ormatUtc : _date
7210: 74 69 6d 65 46 6f 72 6d 61 74 4c 6f 63 61 6c 3b  timeFormatLocal;
7220: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
7230: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7240: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
7250: 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44   string into a D
7260: 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74  ateTime, using t
7270: 68 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  he DateTimeForma
7280: 74 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c  t, DateTimeKind,
7290: 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61  ..    /// and Da
72a0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  teTimeFormatStri
72b0: 6e 67 20 73 70 65 63 69 66 69 65 64 20 66 6f 72  ng specified for
72c0: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
72d0: 77 68 65 6e 20 69 74 20 77 61 73 20 6f 70 65 6e  when it was open
72e0: 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ed...    /// </s
72f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
7300: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61   <param name="da
7310: 74 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61 74  teValue">The Dat
7320: 65 54 69 6d 65 20 76 61 6c 75 65 20 74 6f 20 63  eTime value to c
7330: 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a  onvert</param>..
7340: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
7350: 3e 45 69 74 68 65 72 20 61 20 73 74 72 69 6e 67  >Either a string
7360: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
7370: 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d  long integer num
7380: 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73  ber of 100-nanos
7390: 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63  econd units sinc
73a0: 65 20 53 79 73 74 65 6d 2e 44 61 74 65 54 69 6d  e System.DateTim
73b0: 65 2e 4d 69 6e 56 61 6c 75 65 2c 20 61 0d 0a 20  e.MinValue, a.. 
73c0: 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64 61     /// Julian da
73d0: 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74  y double, an int
73e0: 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73  eger number of s
73f0: 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65  econds since the
7400: 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 20 63   Unix epoch, a c
7410: 75 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65  ulture-independe
7420: 6e 74 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74  nt formatted dat
7430: 65 20 61 6e 64 20 74 69 6d 65 0d 0a 20 20 20 20  e and time..    
7440: 2f 2f 2f 20 73 74 72 69 6e 67 2c 20 61 20 66 6f  /// string, a fo
7450: 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64  rmatted date and
7460: 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20   time string in 
7470: 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74  the current cult
7480: 75 72 65 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36  ure, or an ISO86
7490: 30 31 2d 66 6f 72 6d 61 74 20 64 61 74 65 2f 74  01-format date/t
74a0: 69 6d 65 20 73 74 72 69 6e 67 2e 3c 2f 72 65 74  ime string.</ret
74b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
74c0: 63 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  c string ToStrin
74d0: 67 28 44 61 74 65 54 69 6d 65 20 64 61 74 65 56  g(DateTime dateV
74e0: 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
74f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 53        return ToS
7500: 74 72 69 6e 67 28 64 61 74 65 56 61 6c 75 65 2c  tring(dateValue,
7510: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
7520: 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c  , _datetimeKind,
7530: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
7540: 53 74 72 69 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d  String);..    }.
7550: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
7560: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
7570: 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20  nverts a string 
7580: 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c  into a DateTime,
7590: 20 75 73 69 6e 67 20 74 68 65 20 44 61 74 65 54   using the DateT
75a0: 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54  imeFormat, DateT
75b0: 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f  imeKind,..    //
75c0: 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f  / and DateTimeFo
75d0: 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63 69  rmatString speci
75e0: 66 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e  fied for the con
75f0: 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20  nection when it 
7600: 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20  was opened...   
7610: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7620: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7630: 6e 61 6d 65 3d 22 64 61 74 65 56 61 6c 75 65 22  name="dateValue"
7640: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 76 61  >The DateTime va
7650: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f  lue to convert</
7660: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
7670: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
7680: 6d 61 74 22 3e 54 68 65 20 53 51 4c 69 74 65 44  mat">The SQLiteD
7690: 61 74 65 46 6f 72 6d 61 74 73 20 74 6f 20 75 73  ateFormats to us
76a0: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
76b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
76c0: 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54  "kind">The DateT
76d0: 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c  imeKind to use.<
76e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
76f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f   <param name="fo
7700: 72 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20  rmatString">The 
7710: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20  DateTime format 
7720: 73 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f  string to use.</
7730: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
7740: 3c 72 65 74 75 72 6e 73 3e 45 69 74 68 65 72 20  <returns>Either 
7750: 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  a string contain
7760: 69 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74  ing the long int
7770: 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 31  eger number of 1
7780: 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e  00-nanosecond un
7790: 69 74 73 20 73 69 6e 63 65 20 53 79 73 74 65 6d  its since System
77a0: 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c  .DateTime.MinVal
77b0: 75 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a  ue, a..    /// J
77c0: 75 6c 69 61 6e 20 64 61 79 20 64 6f 75 62 6c 65  ulian day double
77d0: 2c 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d  , an integer num
77e0: 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73  ber of seconds s
77f0: 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70  ince the Unix ep
7800: 6f 63 68 2c 20 61 20 63 75 6c 74 75 72 65 2d 69  och, a culture-i
7810: 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61  ndependent forma
7820: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
7830: 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69  me..    /// stri
7840: 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74 65 64 20  ng, a formatted 
7850: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74  date and time st
7860: 72 69 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72  ring in the curr
7870: 65 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f 72 20  ent culture, or 
7880: 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61  an ISO8601-forma
7890: 74 20 64 61 74 65 2f 74 69 6d 65 20 73 74 72 69  t date/time stri
78a0: 6e 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ng.</returns>.. 
78b0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
78c0: 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
78d0: 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  (..        DateT
78e0: 69 6d 65 20 64 61 74 65 56 61 6c 75 65 2c 0d 0a  ime dateValue,..
78f0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
7900: 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74  teFormats format
7910: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  ,..        DateT
7920: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20  imeKind kind,.. 
7930: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f         string fo
7940: 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20  rmatString..    
7950: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
7960: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 66 6f        switch (fo
7970: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  rmat)..        {
7980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
7990: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
79a0: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20  mats.Ticks:..   
79b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
79c0: 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 69  urn dateValue.Ti
79d0: 63 6b 73 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c  cks.ToString(Cul
79e0: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
79f0: 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20  ntCulture);..   
7a00: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51           case SQ
7a10: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e  LiteDateFormats.
7a20: 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20  JulianDay:..    
7a30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7a40: 72 6e 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 64  rn ToJulianDay(d
7a50: 61 74 65 56 61 6c 75 65 29 2e 54 6f 53 74 72 69  ateValue).ToStri
7a60: 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
7a70: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
7a80: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
7a90: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
7aa0: 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a  rmats.UnixEpoch:
7ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ac0: 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29    return ((long)
7ad0: 28 64 61 74 65 56 61 6c 75 65 2e 53 75 62 74 72  (dateValue.Subtr
7ae0: 61 63 74 28 55 6e 69 78 45 70 6f 63 68 29 2e 54  act(UnixEpoch).T
7af0: 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e  icks / TimeSpan.
7b00: 54 69 63 6b 73 50 65 72 53 65 63 6f 6e 64 29 29  TicksPerSecond))
7b10: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
7b20: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
7b30: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
7b40: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
7b50: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
7b60: 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 56      return dateV
7b70: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 28 66  alue.ToString((f
7b80: 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e  ormatString != n
7b90: 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ull) ?..        
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d              form
7bb0: 61 74 53 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46  atString : FullF
7bc0: 6f 72 6d 61 74 2c 20 43 75 6c 74 75 72 65 49 6e  ormat, CultureIn
7bd0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7be0: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ure);..         
7bf0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
7c00: 74 65 46 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e  teFormats.Curren
7c10: 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20  tCulture:..     
7c20: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
7c30: 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74  n dateValue.ToSt
7c40: 72 69 6e 67 28 28 66 6f 72 6d 61 74 53 74 72 69  ring((formatStri
7c50: 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20  ng != null) ?.. 
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c70: 20 20 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 20     formatString 
7c80: 3a 20 46 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75  : FullFormat, Cu
7c90: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
7ca0: 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20  tCulture);..    
7cb0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
7cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7cd0: 20 20 72 65 74 75 72 6e 20 28 64 61 74 65 56 61    return (dateVa
7ce0: 6c 75 65 2e 4b 69 6e 64 20 3d 3d 20 44 61 74 65  lue.Kind == Date
7cf0: 54 69 6d 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69  TimeKind.Unspeci
7d00: 66 69 65 64 29 20 3f 0d 0a 20 20 20 20 20 20 20  fied) ?..       
7d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
7d20: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
7d30: 64 28 64 61 74 65 56 61 6c 75 65 2c 20 6b 69 6e  d(dateValue, kin
7d40: 64 29 2e 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20  d).ToString(..  
7d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d60: 20 20 20 20 20 20 47 65 74 44 61 74 65 54 69 6d        GetDateTim
7d70: 65 4b 69 6e 64 46 6f 72 6d 61 74 28 6b 69 6e 64  eKindFormat(kind
7d80: 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c  , formatString),
7d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
7db0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
7dc0: 61 6e 74 43 75 6c 74 75 72 65 29 20 3a 20 64 61  antCulture) : da
7dd0: 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67  teValue.ToString
7de0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7df0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 44 61             GetDa
7e00: 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74  teTimeKindFormat
7e10: 28 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c  (dateValue.Kind,
7e20: 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d   formatString),.
7e30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
7e50: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
7e60: 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20  ntCulture);..   
7e70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
7e80: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
7e90: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 74 65  y>..    /// Inte
7ea0: 72 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f  rnal function to
7eb0: 20 63 6f 6e 76 65 72 74 20 61 20 55 54 46 2d 38   convert a UTF-8
7ec0: 20 65 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20   encoded IntPtr 
7ed0: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
7ee0: 20 6c 65 6e 67 74 68 20 74 6f 20 61 20 44 61 74   length to a Dat
7ef0: 65 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eTime...    /// 
7f00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
7f10: 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20  /// <remarks>.. 
7f20: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61     /// This is a
7f30: 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e   convenience fun
7f40: 63 74 69 6f 6e 2c 20 77 68 69 63 68 20 66 69 72  ction, which fir
7f50: 73 74 20 63 61 6c 6c 73 20 54 6f 53 74 72 69 6e  st calls ToStrin
7f60: 67 28 29 20 6f 6e 20 74 68 65 20 49 6e 74 50 74  g() on the IntPt
7f70: 72 20 74 6f 20 63 6f 6e 76 65 72 74 20 69 74 20  r to convert it 
7f80: 74 6f 20 61 20 73 74 72 69 6e 67 2c 20 74 68 65  to a string, the
7f90: 6e 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 2f  n calls..    ///
7fa0: 20 54 6f 44 61 74 65 54 69 6d 65 28 29 20 6f 6e   ToDateTime() on
7fb0: 20 74 68 65 20 73 74 72 69 6e 67 20 74 6f 20 72   the string to r
7fc0: 65 74 75 72 6e 20 61 20 44 61 74 65 54 69 6d 65  eturn a DateTime
7fd0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
7fe0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  arks>..    /// <
7ff0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 74 72 22  param name="ptr"
8000: 3e 41 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  >A pointer to th
8010: 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  e UTF-8 encoded 
8020: 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a  string</param>..
8030: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8040: 61 6d 65 3d 22 6c 65 6e 22 3e 54 68 65 20 6c 65  ame="len">The le
8050: 6e 67 74 68 20 69 6e 20 62 79 74 65 73 20 6f 66  ngth in bytes of
8060: 20 74 68 65 20 73 74 72 69 6e 67 3c 2f 70 61 72   the string</par
8070: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
8080: 74 75 72 6e 73 3e 54 68 65 20 70 61 72 73 65 64  turns>The parsed
8090: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 3c   DateTime value<
80a0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
80b0: 6e 74 65 72 6e 61 6c 20 44 61 74 65 54 69 6d 65  nternal DateTime
80c0: 20 54 6f 44 61 74 65 54 69 6d 65 28 49 6e 74 50   ToDateTime(IntP
80d0: 74 72 20 70 74 72 2c 20 69 6e 74 20 6c 65 6e 29  tr ptr, int len)
80e0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
80f0: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65  eturn ToDateTime
8100: 28 54 6f 53 74 72 69 6e 67 28 70 74 72 2c 20 6c  (ToString(ptr, l
8110: 65 6e 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  en));..    }..  
8120: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
8130: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8140: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 6d 61 72 74  >..    /// Smart
8150: 20 6d 65 74 68 6f 64 20 6f 66 20 73 70 6c 69 74   method of split
8160: 74 69 6e 67 20 61 20 73 74 72 69 6e 67 2e 20 20  ting a string.  
8170: 53 6b 69 70 73 20 71 75 6f 74 65 64 20 65 6c 65  Skips quoted ele
8180: 6d 65 6e 74 73 2c 20 72 65 6d 6f 76 65 73 20 74  ments, removes t
8190: 68 65 20 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20  he quotes...    
81a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
81b0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
81c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
81d0: 73 70 6c 69 74 20 66 75 6e 63 74 69 6f 6e 20 77  split function w
81e0: 6f 72 6b 73 20 73 6f 6d 65 77 68 61 74 20 6c 69  orks somewhat li
81f0: 6b 65 20 74 68 65 20 53 74 72 69 6e 67 2e 53 70  ke the String.Sp
8200: 6c 69 74 28 29 20 66 75 6e 63 74 69 6f 6e 20 69  lit() function i
8210: 6e 20 74 68 61 74 20 69 74 20 62 72 65 61 6b 73  n that it breaks
8220: 20 61 70 61 72 74 20 61 20 73 74 72 69 6e 67 20   apart a string 
8230: 69 6e 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 70 69  into..    /// pi
8240: 65 63 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  eces and returns
8250: 20 74 68 65 20 70 69 65 63 65 73 20 61 73 20 61   the pieces as a
8260: 6e 20 61 72 72 61 79 2e 20 20 54 68 65 20 70 72  n array.  The pr
8270: 69 6d 61 72 79 20 64 69 66 66 65 72 65 6e 63 65  imary difference
8280: 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20  s are:..    /// 
8290: 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c  <list type="bull
82a0: 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  et">..    /// <i
82b0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
82c0: 3e 4f 6e 6c 79 20 6f 6e 65 20 63 68 61 72 61 63  >Only one charac
82d0: 74 65 72 20 63 61 6e 20 62 65 20 70 72 6f 76 69  ter can be provi
82e0: 64 65 64 20 61 73 20 61 20 73 65 70 61 72 61 74  ded as a separat
82f0: 6f 72 20 63 68 61 72 61 63 74 65 72 3c 2f 64 65  or character</de
8300: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
8310: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
8320: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 51 75  ><description>Qu
8330: 6f 74 65 64 20 74 65 78 74 20 69 6e 73 69 64 65  oted text inside
8340: 20 74 68 65 20 73 74 72 69 6e 67 20 69 73 20 73   the string is s
8350: 6b 69 70 70 65 64 20 6f 76 65 72 20 77 68 65 6e  kipped over when
8360: 20 73 65 61 72 63 68 69 6e 67 20 66 6f 72 20 74   searching for t
8370: 68 65 20 73 65 70 61 72 61 74 6f 72 2c 20 61 6e  he separator, an
8380: 64 20 74 68 65 20 71 75 6f 74 65 73 20 61 72 65  d the quotes are
8390: 20 72 65 6d 6f 76 65 64 2e 3c 2f 64 65 73 63 72   removed.</descr
83a0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
83b0: 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d      /// </list>.
83c0: 0a 20 20 20 20 2f 2f 2f 20 54 68 75 73 2c 20 69  .    /// Thus, i
83d0: 66 20 73 70 6c 69 74 74 69 6e 67 20 74 68 65 20  f splitting the 
83e0: 66 6f 6c 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67  following string
83f0: 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 20 63   looking for a c
8400: 6f 6d 6d 61 3a 3c 62 72 2f 3e 0d 0a 20 20 20 20  omma:<br/>..    
8410: 2f 2f 2f 20 4f 6e 65 2c 54 77 6f 2c 20 22 54 68  /// One,Two, "Th
8420: 72 65 65 2c 20 46 6f 75 72 22 2c 20 46 69 76 65  ree, Four", Five
8430: 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  <br/>..    /// <
8440: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  br/>..    /// Th
8450: 65 20 72 65 73 75 6c 74 69 6e 67 20 61 72 72 61  e resulting arra
8460: 79 20 77 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 3c  y would contain<
8470: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 30  br/>..    /// [0
8480: 5d 20 4f 6e 65 3c 62 72 2f 3e 0d 0a 20 20 20 20  ] One<br/>..    
8490: 2f 2f 2f 20 5b 31 5d 20 54 77 6f 3c 62 72 2f 3e  /// [1] Two<br/>
84a0: 0d 0a 20 20 20 20 2f 2f 2f 20 5b 32 5d 20 54 68  ..    /// [2] Th
84b0: 72 65 65 2c 20 46 6f 75 72 3c 62 72 2f 3e 0d 0a  ree, Four<br/>..
84c0: 20 20 20 20 2f 2f 2f 20 5b 33 5d 20 46 69 76 65      /// [3] Five
84d0: 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  <br/>..    /// <
84e0: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  br/>..    /// No
84f0: 74 65 20 74 68 61 74 20 74 68 65 20 6c 65 61 64  te that the lead
8500: 69 6e 67 20 61 6e 64 20 74 72 61 69 6c 69 6e 67  ing and trailing
8510: 20 73 70 61 63 65 73 20 77 65 72 65 20 72 65 6d   spaces were rem
8520: 6f 76 65 64 20 66 72 6f 6d 20 65 61 63 68 20 69  oved from each i
8530: 74 65 6d 20 64 75 72 69 6e 67 20 74 68 65 20 73  tem during the s
8540: 70 6c 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  plit...    /// <
8550: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  /remarks>..    /
8560: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8570: 73 6f 75 72 63 65 22 3e 53 6f 75 72 63 65 20 73  source">Source s
8580: 74 72 69 6e 67 20 74 6f 20 73 70 6c 69 74 20 61  tring to split a
8590: 70 61 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  part</param>..  
85a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
85b0: 65 3d 22 73 65 70 61 72 61 74 6f 72 22 3e 53 65  e="separator">Se
85c0: 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65  parator characte
85d0: 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  r</param>..    /
85e0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74  // <returns>A st
85f0: 72 69 6e 67 20 61 72 72 61 79 20 6f 66 20 74 68  ring array of th
8600: 65 20 73 70 6c 69 74 20 75 70 20 65 6c 65 6d 65  e split up eleme
8610: 6e 74 73 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  nts</returns>.. 
8620: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
8630: 20 73 74 72 69 6e 67 5b 5d 20 53 70 6c 69 74 28   string[] Split(
8640: 73 74 72 69 6e 67 20 73 6f 75 72 63 65 2c 20 63  string source, c
8650: 68 61 72 20 73 65 70 61 72 61 74 6f 72 29 0d 0a  har separator)..
8660: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 63 68 61      {..      cha
8670: 72 5b 5d 20 74 6f 6b 73 20 3d 20 6e 65 77 20 63  r[] toks = new c
8680: 68 61 72 5b 32 5d 20 7b 20 27 5c 22 27 2c 20 73  har[2] { '\"', s
8690: 65 70 61 72 61 74 6f 72 20 7d 3b 0d 0a 20 20 20  eparator };..   
86a0: 20 20 20 63 68 61 72 5b 5d 20 71 75 6f 74 20 3d     char[] quot =
86b0: 20 6e 65 77 20 63 68 61 72 5b 31 5d 20 7b 20 27   new char[1] { '
86c0: 5c 22 27 20 7d 3b 0d 0a 20 20 20 20 20 20 69 6e  \"' };..      in
86d0: 74 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20  t n = 0;..      
86e0: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 73 20  List<string> ls 
86f0: 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e  = new List<strin
8700: 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20 73 74 72  g>();..      str
8710: 69 6e 67 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  ing s;....      
8720: 77 68 69 6c 65 20 28 73 6f 75 72 63 65 2e 4c 65  while (source.Le
8730: 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20  ngth > 0)..     
8740: 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e 20 3d 20   {..        n = 
8750: 73 6f 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e  source.IndexOfAn
8760: 79 28 74 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20 20  y(toks, n);..   
8770: 20 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31       if (n == -1
8780: 29 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20  ) break;..      
8790: 20 20 69 66 20 28 73 6f 75 72 63 65 5b 6e 5d 20    if (source[n] 
87a0: 3d 3d 20 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20 20  == toks[0])..   
87b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
87c0: 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75    //source = sou
87d0: 72 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29  rce.Remove(n, 1)
87e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d  ;..          n =
87f0: 20 73 6f 75 72 63 65 2e 49 6e 64 65 78 4f 66 41   source.IndexOfA
8800: 6e 79 28 71 75 6f 74 2c 20 6e 20 2b 20 31 29 3b  ny(quot, n + 1);
8810: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
8820: 6e 20 3d 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20  n == -1)..      
8830: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8840: 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 22 5c     //source = "\
8850: 22 22 20 2b 20 73 6f 75 72 63 65 3b 0d 0a 20 20  "" + source;..  
8860: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
8870: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
8880: 20 20 20 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a 20           n++;.. 
8890: 20 20 20 20 20 20 20 20 20 2f 2f 73 6f 75 72 63           //sourc
88a0: 65 20 3d 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76  e = source.Remov
88b0: 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20  e(n, 1);..      
88c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73    }..        els
88d0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
88e0: 20 20 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72          s = sour
88f0: 63 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20  ce.Substring(0, 
8900: 6e 29 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20  n).Trim();..    
8910: 20 20 20 20 20 20 69 66 20 28 73 2e 4c 65 6e 67        if (s.Leng
8920: 74 68 20 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d  th > 1 && s[0] =
8930: 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73  = quot[0] && s[s
8940: 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20  .Length - 1] == 
8950: 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 20  s[0])..         
8960: 20 20 20 73 20 3d 20 73 2e 53 75 62 73 74 72 69     s = s.Substri
8970: 6e 67 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d  ng(1, s.Length -
8980: 20 32 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   2);....        
8990: 20 20 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63    source = sourc
89a0: 65 2e 53 75 62 73 74 72 69 6e 67 28 6e 20 2b 20  e.Substring(n + 
89b0: 31 29 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20  1).Trim();..    
89c0: 20 20 20 20 20 20 69 66 20 28 73 2e 4c 65 6e 67        if (s.Leng
89d0: 74 68 20 3e 20 30 29 20 6c 73 2e 41 64 64 28 73  th > 0) ls.Add(s
89e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 20  );..          n 
89f0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  = 0;..        }.
8a00: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
8a10: 69 66 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74  if (source.Lengt
8a20: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d  h > 0)..      {.
8a30: 0a 20 20 20 20 20 20 20 20 73 20 3d 20 73 6f 75  .        s = sou
8a40: 72 63 65 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20  rce.Trim();..   
8a50: 20 20 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74       if (s.Lengt
8a60: 68 20 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d  h > 1 && s[0] ==
8a70: 20 71 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e   quot[0] && s[s.
8a80: 4c 65 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73  Length - 1] == s
8a90: 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20  [0])..          
8aa0: 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28  s = s.Substring(
8ab0: 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29  1, s.Length - 2)
8ac0: 3b 0d 0a 20 20 20 20 20 20 20 20 6c 73 2e 41 64  ;..        ls.Ad
8ad0: 64 28 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  d(s);..      }..
8ae0: 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d  ..      string[]
8af0: 20 61 72 20 3d 20 6e 65 77 20 73 74 72 69 6e 67   ar = new string
8b00: 5b 6c 73 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20 20  [ls.Count];..   
8b10: 20 20 20 6c 73 2e 43 6f 70 79 54 6f 28 61 72 2c     ls.CopyTo(ar,
8b20: 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65   0);....      re
8b30: 74 75 72 6e 20 61 72 3b 0d 0a 20 20 20 20 7d 0d  turn ar;..    }.
8b40: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
8b50: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 70  ary>..    /// Sp
8b60: 6c 69 74 73 20 74 68 65 20 73 70 65 63 69 66 69  lits the specifi
8b70: 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d  ed string into m
8b80: 75 6c 74 69 70 6c 65 20 73 74 72 69 6e 67 73 20  ultiple strings 
8b90: 62 61 73 65 64 20 6f 6e 20 61 20 73 65 70 61 72  based on a separ
8ba0: 61 74 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ator..    /// an
8bb0: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65  d returns the re
8bc0: 73 75 6c 74 20 61 73 20 61 6e 20 61 72 72 61 79  sult as an array
8bd0: 20 6f 66 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20   of strings...  
8be0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8bf0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8c00: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
8c10: 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69      /// The stri
8c20: 6e 67 20 74 6f 20 73 70 6c 69 74 20 69 6e 74 6f  ng to split into
8c30: 20 70 69 65 63 65 73 20 62 61 73 65 64 20 6f 6e   pieces based on
8c40: 20 74 68 65 20 73 65 70 61 72 61 74 6f 72 20 63   the separator c
8c50: 68 61 72 61 63 74 65 72 2e 20 20 49 66 0d 0a 20  haracter.  If.. 
8c60: 20 20 20 2f 2f 2f 20 74 68 69 73 20 73 74 72 69     /// this stri
8c70: 6e 67 20 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c 6c  ng is null, null
8c80: 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20   will always be 
8c90: 72 65 74 75 72 6e 65 64 2e 20 20 49 66 20 74 68  returned.  If th
8ca0: 69 73 20 73 74 72 69 6e 67 20 69 73 0d 0a 20 20  is string is..  
8cb0: 20 20 2f 2f 2f 20 65 6d 70 74 79 2c 20 61 6e 20    /// empty, an 
8cc0: 61 72 72 61 79 20 6f 66 20 7a 65 72 6f 20 73 74  array of zero st
8cd0: 72 69 6e 67 73 20 77 69 6c 6c 20 61 6c 77 61 79  rings will alway
8ce0: 73 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a  s be returned...
8cf0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8d00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8d10: 20 6e 61 6d 65 3d 22 73 65 70 61 72 61 74 6f 72   name="separator
8d20: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
8d30: 63 68 61 72 61 63 74 65 72 20 75 73 65 64 20 74  character used t
8d40: 6f 20 64 69 76 69 64 65 20 74 68 65 20 6f 72 69  o divide the ori
8d50: 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 69 6e 74  ginal string int
8d60: 6f 20 73 75 62 2d 73 74 72 69 6e 67 73 2e 0d 0a  o sub-strings...
8d70: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 68 61      /// This cha
8d80: 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20 62 65  racter cannot be
8d90: 20 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20   a backslash or 
8da0: 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 3b 20  a double-quote; 
8db0: 6f 74 68 65 72 77 69 73 65 2c 20 6e 6f 0d 0a 20  otherwise, no.. 
8dc0: 20 20 20 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c 6c     /// work will
8dd0: 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 61 6e   be performed an
8de0: 64 20 6e 75 6c 6c 20 77 69 6c 6c 20 62 65 20 72  d null will be r
8df0: 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f  eturned...    //
8e00: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
8e10: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
8e20: 22 6b 65 65 70 51 75 6f 74 65 22 3e 0d 0a 20 20  "keepQuote">..  
8e30: 20 20 2f 2f 2f 20 49 66 20 74 68 69 73 20 70 61    /// If this pa
8e40: 72 61 6d 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a  rameter is non-z
8e50: 65 72 6f 2c 20 61 6c 6c 20 64 6f 75 62 6c 65 2d  ero, all double-
8e60: 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72 73  quote characters
8e70: 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f   will be..    //
8e80: 2f 20 72 65 74 61 69 6e 65 64 20 69 6e 20 74 68  / retained in th
8e90: 65 20 72 65 74 75 72 6e 65 64 20 6c 69 73 74 20  e returned list 
8ea0: 6f 66 20 73 74 72 69 6e 67 73 3b 20 6f 74 68 65  of strings; othe
8eb0: 72 77 69 73 65 2c 20 74 68 65 79 20 77 69 6c 6c  rwise, they will
8ec0: 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 72 6f   be..    /// dro
8ed0: 70 70 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  pped...    /// <
8ee0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
8ef0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
8f00: 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  ror">..    /// U
8f10: 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69  pon failure, thi
8f20: 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
8f30: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20   be modified to 
8f40: 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72 6f  contain an appro
8f50: 70 72 69 61 74 65 0d 0a 20 20 20 20 2f 2f 2f 20  priate..    /// 
8f60: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
8f70: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
8f80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
8f90: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
8fa0: 20 6e 65 77 20 61 72 72 61 79 20 6f 66 20 73 74   new array of st
8fb0: 72 69 6e 67 73 20 6f 72 20 6e 75 6c 6c 20 69 66  rings or null if
8fc0: 20 74 68 65 20 69 6e 70 75 74 20 73 74 72 69 6e   the input strin
8fd0: 67 20 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20 74  g is null -OR- t
8fe0: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 70 61  he..    /// sepa
8ff0: 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 20  rator character 
9000: 69 73 20 61 20 62 61 63 6b 73 6c 61 73 68 20 6f  is a backslash o
9010: 72 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65  r a double-quote
9020: 20 2d 4f 52 2d 20 74 68 65 20 73 74 72 69 6e 67   -OR- the string
9030: 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69  ..    /// contai
9040: 6e 73 20 61 6e 20 75 6e 62 61 6c 61 6e 63 65 64  ns an unbalanced
9050: 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 64 6f   backslash or do
9060: 75 62 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61  uble-quote chara
9070: 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  cter...    /// <
9080: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
9090: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
90a0: 74 72 69 6e 67 5b 5d 20 4e 65 77 53 70 6c 69 74  tring[] NewSplit
90b0: 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
90c0: 67 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  g value,..      
90d0: 20 20 63 68 61 72 20 73 65 70 61 72 61 74 6f 72    char separator
90e0: 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  ,..        bool 
90f0: 6b 65 65 70 51 75 6f 74 65 2c 0d 0a 20 20 20 20  keepQuote,..    
9100: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
9110: 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 29 0d  rror..        ).
9120: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
9130: 63 6f 6e 73 74 20 63 68 61 72 20 45 73 63 61 70  const char Escap
9140: 65 43 68 61 72 20 3d 20 27 5c 5c 27 3b 0d 0a 20  eChar = '\\';.. 
9150: 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61         const cha
9160: 72 20 51 75 6f 74 65 43 68 61 72 20 3d 20 27 5c  r QuoteChar = '\
9170: 22 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  "';....        /
9180: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  /..        // NO
9190: 54 45 3a 20 49 74 20 69 73 20 69 6c 6c 65 67 61  TE: It is illega
91a0: 6c 20 66 6f 72 20 74 68 65 20 73 65 70 61 72 61  l for the separa
91b0: 74 6f 72 20 63 68 61 72 61 63 74 65 72 20 74 6f  tor character to
91c0: 20 62 65 20 65 69 74 68 65 72 20 61 0d 0a 20 20   be either a..  
91d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62        //       b
91e0: 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f  ackslash or a do
91f0: 75 62 6c 65 2d 71 75 6f 74 65 20 62 65 63 61 75  uble-quote becau
9200: 73 65 20 62 6f 74 68 20 6f 66 20 74 68 6f 73 65  se both of those
9210: 20 63 68 61 72 61 63 74 65 72 73 0d 0a 20 20 20   characters..   
9220: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72       //       ar
9230: 65 20 75 73 65 64 20 66 6f 72 20 65 73 63 61 70  e used for escap
9240: 69 6e 67 20 6f 74 68 65 72 20 63 68 61 72 61 63  ing other charac
9250: 74 65 72 73 20 28 65 2e 67 2e 20 74 68 65 20 73  ters (e.g. the s
9260: 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 20 20  eparator..      
9270: 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61 72 61    //       chara
9280: 63 74 65 72 29 2e 0d 0a 20 20 20 20 20 20 20 20  cter)...        
9290: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  //..        if (
92a0: 28 73 65 70 61 72 61 74 6f 72 20 3d 3d 20 45 73  (separator == Es
92b0: 63 61 70 65 43 68 61 72 29 20 7c 7c 20 28 73 65  capeChar) || (se
92c0: 70 61 72 61 74 6f 72 20 3d 3d 20 51 75 6f 74 65  parator == Quote
92d0: 43 68 61 72 29 29 0d 0a 20 20 20 20 20 20 20 20  Char))..        
92e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
92f0: 72 72 6f 72 20 3d 20 22 73 65 70 61 72 61 74 6f  rror = "separato
9300: 72 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 6e  r character cann
9310: 6f 74 20 62 65 20 74 68 65 20 65 73 63 61 70 65  ot be the escape
9320: 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72 61 63   or quote charac
9330: 74 65 72 73 22 3b 0d 0a 20 20 20 20 20 20 20 20  ters";..        
9340: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
9350: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
9360: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
9370: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
9380: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9390: 20 20 65 72 72 6f 72 20 3d 20 22 73 74 72 69 6e    error = "strin
93a0: 67 20 76 61 6c 75 65 20 74 6f 20 73 70 6c 69 74  g value to split
93b0: 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22   cannot be null"
93c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ;..            r
93d0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
93e0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
93f0: 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76    int length = v
9400: 61 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  alue.Length;....
9410: 20 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67          if (leng
9420: 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20  th == 0)..      
9430: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
9440: 20 73 74 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20   string[0];.... 
9450: 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69         List<stri
9460: 6e 67 3e 20 6c 69 73 74 20 3d 20 6e 65 77 20 4c  ng> list = new L
9470: 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a  ist<string>();..
9480: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 42 75          StringBu
9490: 69 6c 64 65 72 20 65 6c 65 6d 65 6e 74 20 3d 20  ilder element = 
94a0: 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65  new StringBuilde
94b0: 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e  r();..        in
94c0: 74 20 69 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20  t index = 0;..  
94d0: 20 20 20 20 20 20 62 6f 6f 6c 20 65 73 63 61 70        bool escap
94e0: 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e = false;..    
94f0: 20 20 20 20 62 6f 6f 6c 20 71 75 6f 74 65 20 3d      bool quote =
9500: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
9510: 20 20 20 77 68 69 6c 65 20 28 69 6e 64 65 78 20     while (index 
9520: 3c 20 6c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20  < length)..     
9530: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9540: 20 20 63 68 61 72 20 63 68 61 72 61 63 74 65 72    char character
9550: 20 3d 20 76 61 6c 75 65 5b 69 6e 64 65 78 2b 2b   = value[index++
9560: 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
9570: 20 20 69 66 20 28 65 73 63 61 70 65 29 0d 0a 20    if (escape).. 
9580: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
95a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95b0: 20 20 2f 2f 20 48 41 43 4b 3a 20 4f 6e 6c 79 20    // HACK: Only 
95c0: 63 6f 6e 73 69 64 65 72 20 74 68 65 20 65 73 63  consider the esc
95d0: 61 70 65 20 63 68 61 72 61 63 74 65 72 20 74 6f  ape character to
95e0: 20 62 65 20 61 6e 20 61 63 74 75 61 6c 0d 0a 20   be an actual.. 
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9600: 2f 20 20 20 20 20 20 20 22 65 73 63 61 70 65 22  /       "escape"
9610: 20 69 66 20 69 74 20 69 73 20 66 6f 6c 6c 6f 77   if it is follow
9620: 65 64 20 62 79 20 61 20 72 65 73 65 72 76 65 64  ed by a reserved
9630: 20 63 68 61 72 61 63 74 65 72 3b 0d 0a 20 20 20   character;..   
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
9650: 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 2c        otherwise,
9660: 20 65 6d 69 74 20 74 68 65 20 6f 72 69 67 69 6e   emit the origin
9670: 61 6c 20 65 73 63 61 70 65 20 63 68 61 72 61 63  al escape charac
9680: 74 65 72 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ter and..       
9690: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
96a0: 20 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 68    the current ch
96b0: 61 72 61 63 74 65 72 20 69 6e 20 61 6e 20 65 66  aracter in an ef
96c0: 66 6f 72 74 20 74 6f 20 68 65 6c 70 20 70 72 65  fort to help pre
96d0: 73 65 72 76 65 0d 0a 20 20 20 20 20 20 20 20 20  serve..         
96e0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
96f0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74 72  the original str
9700: 69 6e 67 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20  ing content...  
9710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9730: 20 20 69 66 20 28 28 63 68 61 72 61 63 74 65 72    if ((character
9740: 20 21 3d 20 45 73 63 61 70 65 43 68 61 72 29 20   != EscapeChar) 
9750: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
9760: 20 20 20 20 20 20 20 20 28 63 68 61 72 61 63 74          (charact
9770: 65 72 20 21 3d 20 51 75 6f 74 65 43 68 61 72 29  er != QuoteChar)
9780: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
9790: 20 20 20 20 20 20 20 20 20 28 63 68 61 72 61 63           (charac
97a0: 74 65 72 20 21 3d 20 73 65 70 61 72 61 74 6f 72  ter != separator
97b0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
97c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
97d0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65             eleme
97e0: 6e 74 2e 41 70 70 65 6e 64 28 45 73 63 61 70 65  nt.Append(Escape
97f0: 43 68 61 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  Char);..        
9800: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65               ele
9820: 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72  ment.Append(char
9830: 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20  acter);..       
9840: 20 20 20 20 20 20 20 20 20 65 73 63 61 70 65 20           escape 
9850: 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
9860: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9870: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 68       else if (ch
9880: 61 72 61 63 74 65 72 20 3d 3d 20 45 73 63 61 70  aracter == Escap
9890: 65 43 68 61 72 29 0d 0a 20 20 20 20 20 20 20 20  eChar)..        
98a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
98b0: 20 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20         escape = 
98c0: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
98d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
98e0: 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72 61    else if (chara
98f0: 63 74 65 72 20 3d 3d 20 51 75 6f 74 65 43 68 61  cter == QuoteCha
9900: 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r)..            
9910: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9920: 20 20 20 69 66 20 28 6b 65 65 70 51 75 6f 74 65     if (keepQuote
9930: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
9940: 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41         element.A
9950: 70 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29  ppend(character)
9960: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
9970: 20 20 20 20 20 71 75 6f 74 65 20 3d 20 21 71 75       quote = !qu
9980: 6f 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ote;..          
9990: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
99a0: 20 65 6c 73 65 20 69 66 20 28 63 68 61 72 61 63   else if (charac
99b0: 74 65 72 20 3d 3d 20 73 65 70 61 72 61 74 6f 72  ter == separator
99c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
99d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
99e0: 20 20 69 66 20 28 71 75 6f 74 65 29 0d 0a 20 20    if (quote)..  
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a10: 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70       element.App
9a20: 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d  end(character);.
9a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9a50: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
9a60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a80: 20 6c 69 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e   list.Add(elemen
9a90: 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a  t.ToString());..
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ab0: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67      element.Leng
9ac0: 74 68 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20  th = 0;..       
9ad0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9ae0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9af0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
9b00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9b10: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d              elem
9b20: 65 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61  ent.Append(chara
9b30: 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  cter);..        
9b40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
9b50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
9b60: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
9b70: 20 41 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 65   An unbalanced e
9b80: 73 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63  scape or quote c
9b90: 68 61 72 61 63 74 65 72 20 69 6e 20 74 68 65 20  haracter in the 
9ba0: 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 20  string is..     
9bb0: 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 73     //       cons
9bc0: 69 64 65 72 65 64 20 74 6f 20 62 65 20 61 20 66  idered to be a f
9bd0: 61 74 61 6c 20 65 72 72 6f 72 3b 20 74 68 65 72  atal error; ther
9be0: 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 20 6e 75  efore, return nu
9bf0: 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  ll...        //.
9c00: 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 73 63  .        if (esc
9c10: 61 70 65 20 7c 7c 20 71 75 6f 74 65 29 0d 0a 20  ape || quote).. 
9c20: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9c30: 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 75        error = "u
9c40: 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61 70 65  nbalanced escape
9c50: 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72 61 63   or quote charac
9c60: 74 65 72 20 66 6f 75 6e 64 22 3b 0d 0a 20 20 20  ter found";..   
9c70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9c80: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d  null;..        }
9c90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
9ca0: 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3e  element.Length >
9cb0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
9cc0: 20 6c 69 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e   list.Add(elemen
9cd0: 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a  t.ToString());..
9ce0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
9cf0: 20 6c 69 73 74 2e 54 6f 41 72 72 61 79 28 29 3b   list.ToArray();
9d00: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
9d10: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9d20: 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e    /// Queries an
9d30: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 74  d returns the st
9d40: 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
9d50: 69 6f 6e 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63  ion for an objec
9d60: 74 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  t, using the..  
9d70: 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20    /// specified 
9d80: 28 6f 72 20 63 75 72 72 65 6e 74 29 20 66 6f 72  (or current) for
9d90: 6d 61 74 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20  mat provider... 
9da0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9db0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
9dc0: 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20  m name="obj">.. 
9dd0: 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63     /// The objec
9de0: 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20 72 65  t instance to re
9df0: 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20  turn the string 
9e00: 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 66  representation f
9e10: 6f 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  or...    /// </p
9e20: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
9e30: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76  param name="prov
9e40: 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ider">..    /// 
9e50: 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f 76 69  The format provi
9e60: 64 65 72 20 74 6f 20 75 73 65 20 2d 4f 52 2d 20  der to use -OR- 
9e70: 6e 75 6c 6c 20 69 66 20 74 68 65 20 63 75 72 72  null if the curr
9e80: 65 6e 74 20 66 6f 72 6d 61 74 20 70 72 6f 76 69  ent format provi
9e90: 64 65 72 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f  der for..    ///
9ea0: 20 74 68 65 20 74 68 72 65 61 64 20 73 68 6f 75   the thread shou
9eb0: 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  ld be used inste
9ec0: 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ad...    /// </p
9ed0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
9ee0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
9ef0: 2f 20 54 68 65 20 73 74 72 69 6e 67 20 72 65 70  / The string rep
9f00: 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  resentation for 
9f10: 74 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  the object insta
9f20: 6e 63 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66  nce -OR- null if
9f30: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 62   the..    /// ob
9f40: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73  ject instance is
9f50: 20 61 6c 73 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20   also null...   
9f60: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
9f70: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
9f80: 69 63 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  ic string ToStri
9f90: 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72 28 0d  ngWithProvider(.
9fa0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
9fb0: 6f 62 6a 2c 0d 0a 20 20 20 20 20 20 20 20 49 46  obj,..        IF
9fc0: 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72  ormatProvider pr
9fd0: 6f 76 69 64 65 72 0d 0a 20 20 20 20 20 20 20 20  ovider..        
9fe0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
9ff0: 20 20 69 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c    if (obj == nul
a000: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
a010: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20  return null; /* 
a020: 6e 75 6c 6c 20 2d 2d 3e 20 6e 75 6c 6c 20 2a 2f  null --> null */
a030: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
a040: 6f 62 6a 20 69 73 20 73 74 72 69 6e 67 29 0d 0a  obj is string)..
a050: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
a060: 72 6e 20 28 73 74 72 69 6e 67 29 6f 62 6a 3b 20  rn (string)obj; 
a070: 2f 2a 20 69 64 65 6e 74 69 74 79 20 2a 2f 0d 0a  /* identity */..
a080: 0d 0a 20 20 20 20 20 20 20 20 49 43 6f 6e 76 65  ..        IConve
a090: 72 74 69 62 6c 65 20 63 6f 6e 76 65 72 74 69 62  rtible convertib
a0a0: 6c 65 20 3d 20 6f 62 6a 20 61 73 20 49 43 6f 6e  le = obj as ICon
a0b0: 76 65 72 74 69 62 6c 65 3b 0d 0a 0d 0a 20 20 20  vertible;....   
a0c0: 20 20 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74       if (convert
a0d0: 69 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ible != null).. 
a0e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a0f0: 6e 20 63 6f 6e 76 65 72 74 69 62 6c 65 2e 54 6f  n convertible.To
a100: 53 74 72 69 6e 67 28 70 72 6f 76 69 64 65 72 29  String(provider)
a110: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ;....        ret
a120: 75 72 6e 20 6f 62 6a 2e 54 6f 53 74 72 69 6e 67  urn obj.ToString
a130: 28 29 3b 20 2f 2a 20 6e 6f 74 20 49 43 6f 6e 76  (); /* not IConv
a140: 65 72 74 69 62 6c 65 20 2a 2f 0d 0a 20 20 20 20  ertible */..    
a150: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
a160: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
a170: 41 74 74 65 6d 70 74 73 20 74 6f 20 63 6f 6e 76  Attempts to conv
a180: 65 72 74 20 61 6e 20 61 72 62 69 74 72 61 72 79  ert an arbitrary
a190: 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65 20 42   object to the B
a1a0: 6f 6f 6c 65 61 6e 20 64 61 74 61 20 74 79 70 65  oolean data type
a1b0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20  ...    /// Null 
a1c0: 6f 62 6a 65 63 74 20 76 61 6c 75 65 73 20 61 72  object values ar
a1d0: 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 66  e converted to f
a1e0: 61 6c 73 65 2e 20 20 54 68 72 6f 77 73 20 61 6e  alse.  Throws an
a1f0: 20 65 78 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20   exception..    
a200: 2f 2f 2f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65  /// upon failure
a210: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
a220: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
a230: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22  param name="obj"
a240: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  >..    /// The o
a250: 62 6a 65 63 74 20 76 61 6c 75 65 20 74 6f 20 63  bject value to c
a260: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f  onvert...    ///
a270: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
a280: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
a290: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
a2a0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 70  /// The format p
a2b0: 72 6f 76 69 64 65 72 20 74 6f 20 75 73 65 2e 0d  rovider to use..
a2c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
a2d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
a2e0: 6d 20 6e 61 6d 65 3d 22 76 69 61 46 72 61 6d 65  m name="viaFrame
a2f0: 77 6f 72 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  work">..    /// 
a300: 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 20 73  If non-zero, a s
a310: 74 72 69 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c  tring value will
a320: 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 75 73   be converted us
a330: 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  ing the..    ///
a340: 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6e 76   <see cref="Conv
a350: 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 4f 62  ert.ToBoolean(Ob
a360: 6a 65 63 74 2c 20 49 46 6f 72 6d 61 74 50 72 6f  ject, IFormatPro
a370: 76 69 64 65 72 29 22 20 2f 3e 0d 0a 20 20 20 20  vider)" />..    
a380: 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65  /// method; othe
a390: 72 77 69 73 65 2c 20 74 68 65 20 3c 73 65 65 20  rwise, the <see 
a3a0: 63 72 65 66 3d 22 54 6f 42 6f 6f 6c 65 61 6e 28  cref="ToBoolean(
a3b0: 53 74 72 69 6e 67 29 22 20 2f 3e 0d 0a 20 20 20  String)" />..   
a3c0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c   /// method will
a3d0: 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f   be used...    /
a3e0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
a3f0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
a400: 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76      /// The conv
a410: 65 72 74 65 64 20 62 6f 6f 6c 65 61 6e 20 76 61  erted boolean va
a420: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
a430: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
a440: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
a450: 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 0d 0a 20  ol ToBoolean(.. 
a460: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62         object ob
a470: 6a 2c 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72  j,..        IFor
a480: 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76  matProvider prov
a490: 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 62  ider,..        b
a4a0: 6f 6f 6c 20 76 69 61 46 72 61 6d 65 77 6f 72 6b  ool viaFramework
a4b0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
a4c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
a4d0: 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  obj == null)..  
a4e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a4f0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
a500: 20 20 20 54 79 70 65 43 6f 64 65 20 74 79 70 65     TypeCode type
a510: 43 6f 64 65 20 3d 20 54 79 70 65 2e 47 65 74 54  Code = Type.GetT
a520: 79 70 65 43 6f 64 65 28 6f 62 6a 2e 47 65 74 54  ypeCode(obj.GetT
a530: 79 70 65 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  ype());....     
a540: 20 20 20 73 77 69 74 63 68 20 28 74 79 70 65 43     switch (typeC
a550: 6f 64 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ode)..        {.
a560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
a570: 65 20 54 79 70 65 43 6f 64 65 2e 45 6d 70 74 79  e TypeCode.Empty
a580: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  :..            c
a590: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 44 42 4e  ase TypeCode.DBN
a5a0: 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ull:..          
a5b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
a5c0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
a5d0: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 42   case TypeCode.B
a5e0: 6f 6f 6c 65 61 6e 3a 0d 0a 20 20 20 20 20 20 20  oolean:..       
a5f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a600: 28 62 6f 6f 6c 29 6f 62 6a 3b 0d 0a 20 20 20 20  (bool)obj;..    
a610: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a620: 65 43 6f 64 65 2e 43 68 61 72 3a 0d 0a 20 20 20  eCode.Char:..   
a630: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a640: 75 72 6e 20 28 28 63 68 61 72 29 6f 62 6a 29 20  urn ((char)obj) 
a650: 21 3d 20 28 63 68 61 72 29 30 20 3f 20 74 72 75  != (char)0 ? tru
a660: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a670: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a680: 65 43 6f 64 65 2e 53 42 79 74 65 3a 0d 0a 20 20  eCode.SByte:..  
a690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a6a0: 74 75 72 6e 20 28 28 73 62 79 74 65 29 6f 62 6a  turn ((sbyte)obj
a6b0: 29 20 21 3d 20 28 73 62 79 74 65 29 30 20 3f 20  ) != (sbyte)0 ? 
a6c0: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
a6d0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
a6e0: 54 79 70 65 43 6f 64 65 2e 42 79 74 65 3a 0d 0a  TypeCode.Byte:..
a6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a700: 72 65 74 75 72 6e 20 28 28 62 79 74 65 29 6f 62  return ((byte)ob
a710: 6a 29 20 21 3d 20 28 62 79 74 65 29 30 20 3f 20  j) != (byte)0 ? 
a720: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
a730: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
a740: 54 79 70 65 43 6f 64 65 2e 49 6e 74 31 36 3a 0d  TypeCode.Int16:.
a750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a760: 20 72 65 74 75 72 6e 20 28 28 73 68 6f 72 74 29   return ((short)
a770: 6f 62 6a 29 20 21 3d 20 28 73 68 6f 72 74 29 30  obj) != (short)0
a780: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
a790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a7a0: 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49 6e 74  se TypeCode.UInt
a7b0: 31 36 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  16:..           
a7c0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 75 73       return ((us
a7d0: 68 6f 72 74 29 6f 62 6a 29 20 21 3d 20 28 75 73  hort)obj) != (us
a7e0: 68 6f 72 74 29 30 20 3f 20 74 72 75 65 20 3a 20  hort)0 ? true : 
a7f0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
a800: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
a810: 65 2e 49 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20  e.Int32:..      
a820: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a830: 20 28 28 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28   ((int)obj) != (
a840: 69 6e 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66  int)0 ? true : f
a850: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
a860: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a870: 2e 55 49 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20  .UInt32:..      
a880: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a890: 20 28 28 75 69 6e 74 29 6f 62 6a 29 20 21 3d 20   ((uint)obj) != 
a8a0: 28 75 69 6e 74 29 30 20 3f 20 74 72 75 65 20 3a  (uint)0 ? true :
a8b0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a8c0: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a8d0: 64 65 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20  de.Int64:..     
a8e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a8f0: 6e 20 28 28 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d  n ((long)obj) !=
a900: 20 28 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65 20   (long)0 ? true 
a910: 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  : false;..      
a920: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
a930: 6f 64 65 2e 55 49 6e 74 36 34 3a 0d 0a 20 20 20  ode.UInt64:..   
a940: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a950: 75 72 6e 20 28 28 75 6c 6f 6e 67 29 6f 62 6a 29  urn ((ulong)obj)
a960: 20 21 3d 20 28 75 6c 6f 6e 67 29 30 20 3f 20 74   != (ulong)0 ? t
a970: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
a980: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a990: 79 70 65 43 6f 64 65 2e 53 69 6e 67 6c 65 3a 0d  ypeCode.Single:.
a9a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a9b0: 20 72 65 74 75 72 6e 20 28 28 66 6c 6f 61 74 29   return ((float)
a9c0: 6f 62 6a 29 20 21 3d 20 28 66 6c 6f 61 74 29 30  obj) != (float)0
a9d0: 2e 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  .0 ? true : fals
a9e0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a9f0: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 44 6f  case TypeCode.Do
aa00: 75 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20 20 20  uble:..         
aa10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
aa20: 64 6f 75 62 6c 65 29 6f 62 6a 29 20 21 3d 20 28  double)obj) != (
aa30: 64 6f 75 62 6c 65 29 30 2e 30 20 3f 20 74 72 75  double)0.0 ? tru
aa40: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
aa50: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
aa60: 65 43 6f 64 65 2e 44 65 63 69 6d 61 6c 3a 0d 0a  eCode.Decimal:..
aa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa80: 72 65 74 75 72 6e 20 28 28 64 65 63 69 6d 61 6c  return ((decimal
aa90: 29 6f 62 6a 29 20 21 3d 20 44 65 63 69 6d 61 6c  )obj) != Decimal
aaa0: 2e 5a 65 72 6f 20 3f 20 74 72 75 65 20 3a 20 66  .Zero ? true : f
aab0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
aac0: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
aad0: 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20  .String:..      
aae0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
aaf0: 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 20 3f 0d   viaFramework ?.
ab00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab10: 20 20 20 20 20 43 6f 6e 76 65 72 74 2e 54 6f 42       Convert.ToB
ab20: 6f 6f 6c 65 61 6e 28 6f 62 6a 2c 20 70 72 6f 76  oolean(obj, prov
ab30: 69 64 65 72 29 20 3a 0d 0a 20 20 20 20 20 20 20  ider) :..       
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 6f 42               ToB
ab50: 6f 6f 6c 65 61 6e 28 54 6f 53 74 72 69 6e 67 57  oolean(ToStringW
ab60: 69 74 68 50 72 6f 76 69 64 65 72 28 6f 62 6a 2c  ithProvider(obj,
ab70: 20 70 72 6f 76 69 64 65 72 29 29 3b 0d 0a 20 20   provider));..  
ab80: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
ab90: 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t:..            
aba0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51      throw new SQ
abb0: 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 53 74  LiteException(St
abc0: 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
abd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
abe0: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
abf0: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
ac00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac10: 20 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65     "Cannot conve
ac20: 72 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20 62  rt type {0} to b
ac30: 6f 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20  oolean",..      
ac40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
ac50: 70 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20  peCode));..     
ac60: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
ac70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ac80: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
ac90: 74 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72 75  t a value to tru
aca0: 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20  e or false...   
acb0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
acc0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
acd0: 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41 20  name="source">A 
ace0: 73 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72  string or number
acf0: 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72   representing tr
ad00: 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72  ue or false</par
ad10: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
ad20: 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e  turns></returns>
ad30: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
ad40: 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65  tic bool ToBoole
ad50: 61 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63 65  an(object source
ad60: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
ad70: 69 66 20 28 73 6f 75 72 63 65 20 69 73 20 62 6f  if (source is bo
ad80: 6f 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c  ol) return (bool
ad90: 29 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20  )source;....    
ada0: 20 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65    return ToBoole
adb0: 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68 50  an(ToStringWithP
adc0: 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20  rovider(..      
add0: 20 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c 74      source, Cult
ade0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
adf0: 74 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20  tCulture));..   
ae00: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
ae10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ae20: 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 69 6e   Convert a strin
ae30: 67 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c  g to true or fal
ae40: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
ae50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ae60: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
ae70: 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 72  urce">A string r
ae80: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65  epresenting true
ae90: 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d   or false</param
aea0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
aeb0: 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  rns></returns>..
aec0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
aed0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 65 73 22  >..    /// "yes"
aee0: 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22  , "no", "y", "n"
aef0: 2c 20 22 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22  , "0", "1", "on"
af00: 2c 20 22 6f 66 66 22 20 61 73 20 77 65 6c 6c 20  , "off" as well 
af10: 61 73 20 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65  as Boolean.False
af20: 53 74 72 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65  String and Boole
af30: 61 6e 2e 54 72 75 65 53 74 72 69 6e 67 20 77 69  an.TrueString wi
af40: 6c 6c 20 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f  ll all be..    /
af50: 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  // converted to 
af60: 61 20 70 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e  a proper boolean
af70: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
af80: 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20   </remarks>..   
af90: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
afa0: 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74  ool ToBoolean(st
afb0: 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20 20  ring source)..  
afc0: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 53    {..      if (S
afd0: 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f  tring.Compare(so
afe0: 75 72 63 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53  urce, bool.TrueS
aff0: 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d  tring, StringCom
b000: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b010: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b020: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
b030: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53 74       else if (St
b040: 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75  ring.Compare(sou
b050: 72 63 65 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53  rce, bool.FalseS
b060: 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d  tring, StringCom
b070: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b080: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b090: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
b0a0: 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68 28 73  ..      switch(s
b0b0: 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75  ource.ToLower(Cu
b0c0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
b0d0: 61 6e 74 43 75 6c 74 75 72 65 29 29 0d 0a 20 20  antCulture))..  
b0e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63      {..        c
b0f0: 61 73 65 20 22 79 65 73 22 3a 0d 0a 20 20 20 20  ase "yes":..    
b100: 20 20 20 20 63 61 73 65 20 22 79 22 3a 0d 0a 20      case "y":.. 
b110: 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22 3a         case "1":
b120: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b130: 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  on":..          
b140: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
b150: 20 20 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a        case "no":
b160: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b170: 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  n":..        cas
b180: 65 20 22 30 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "0":..        
b190: 63 61 73 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20  case "off":..   
b1a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
b1b0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 64 65  lse;..        de
b1c0: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
b1d0: 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
b1e0: 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 73  mentException("s
b1f0: 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 20 20  ource");..      
b200: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
b210: 23 72 65 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e  #region Type Con
b220: 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  versions..    //
b230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b240: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
b250: 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20 61 20  SQLiteType to a 
b260: 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a 65 63 74  .NET Type object
b270: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
b280: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
b290: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68  aram name="t">Th
b2a0: 65 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20  e SQLiteType to 
b2b0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
b2c0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
b2d0: 73 3e 52 65 74 75 72 6e 73 20 61 20 2e 4e 45 54  s>Returns a .NET
b2e0: 20 54 79 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65   Type object</re
b2f0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
b300: 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65  rnal static Type
b310: 20 53 51 4c 69 74 65 54 79 70 65 54 6f 54 79 70   SQLiteTypeToTyp
b320: 65 28 53 51 4c 69 74 65 54 79 70 65 20 74 29 0d  e(SQLiteType t).
b330: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
b340: 20 28 74 2e 54 79 70 65 20 3d 3d 20 44 62 54 79   (t.Type == DbTy
b350: 70 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20  pe.Object)..    
b360: 20 20 20 20 72 65 74 75 72 6e 20 5f 61 66 66 69      return _affi
b370: 6e 69 74 79 74 6f 74 79 70 65 5b 28 69 6e 74 29  nitytotype[(int)
b380: 74 2e 41 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20  t.Affinity];..  
b390: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
b3a0: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43    return SQLiteC
b3b0: 6f 6e 76 65 72 74 2e 44 62 54 79 70 65 54 6f 54  onvert.DbTypeToT
b3c0: 79 70 65 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20  ype(t.Type);..  
b3d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
b3e0: 74 65 20 73 74 61 74 69 63 20 54 79 70 65 5b 5d  te static Type[]
b3f0: 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70 65   _affinitytotype
b400: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65   = {..      type
b410: 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f  of(object),   //
b420: 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 28   Uninitialized (
b430: 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  0)..      typeof
b440: 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49  (Int64),    // I
b450: 6e 74 36 34 20 28 31 29 0d 0a 20 20 20 20 20 20  nt64 (1)..      
b460: 74 79 70 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20  typeof(Double), 
b470: 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d    // Double (2).
b480: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
b490: 72 69 6e 67 29 2c 20 20 20 2f 2f 20 54 65 78 74  ring),   // Text
b4a0: 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (3)..      type
b4b0: 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f  of(byte[]),   //
b4c0: 20 42 6c 6f 62 20 28 34 29 0d 0a 20 20 20 20 20   Blob (4)..     
b4d0: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c   typeof(object),
b4e0: 20 20 20 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a     // Null (5)..
b4f0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74        typeof(Dat
b500: 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54  eTime), // DateT
b510: 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20 20  ime (10)..      
b520: 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20 20  typeof(object)  
b530: 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a    // None (11)..
b540: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
b550: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b560: 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e   /// For a given
b570: 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65 2c   intrinsic type,
b580: 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70 65   return a DbType
b590: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
b5a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
b5b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
b5c0: 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65 20  The native type 
b5d0: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
b5e0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
b5f0: 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73 70  urns>The corresp
b600: 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74 20  onding (closest 
b610: 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f 72  match) DbType</r
b620: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
b630: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54  ernal static DbT
b640: 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70 65  ype TypeToDbType
b650: 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  (Type typ)..    
b660: 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64  {..      TypeCod
b670: 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54  e tc = Type.GetT
b680: 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20  ypeCode(typ);.. 
b690: 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54       if (tc == T
b6a0: 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d  ypeCode.Object).
b6b0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
b6c0: 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70    if (typ == typ
b6d0: 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65 74  eof(byte[])) ret
b6e0: 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61 72  urn DbType.Binar
b6f0: 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  y;..        if (
b700: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75  typ == typeof(Gu
b710: 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54 79  id)) return DbTy
b720: 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20 20  pe.Guid;..      
b730: 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e    return DbType.
b740: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d  String;..      }
b750: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
b760: 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69 6e  typetodbtype[(in
b770: 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  t)tc];..    }...
b780: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
b790: 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74 79  tic DbType[] _ty
b7a0: 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a  petodbtype = {..
b7b0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a        DbType.Obj
b7c0: 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20  ect,   // Empty 
b7d0: 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (0)..      DbTyp
b7e0: 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f  e.Binary,   // O
b7f0: 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20  bject (1)..     
b800: 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20   DbType.Object, 
b810: 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d    // DBNull (2).
b820: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 6f  .      DbType.Bo
b830: 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65  olean,  // Boole
b840: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44 62  an (3)..      Db
b850: 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20 2f  Type.SByte,    /
b860: 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20  / Char (4)..    
b870: 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20    DbType.SByte, 
b880: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d     // SByte (5).
b890: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 79  .      DbType.By
b8a0: 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20  te,     // Byte 
b8b0: 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (6)..      DbTyp
b8c0: 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49  e.Int16,    // I
b8d0: 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20  nt16 (7)..      
b8e0: 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 20  DbType.UInt16,  
b8f0: 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a   // UInt16 (8)..
b900: 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74        DbType.Int
b910: 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20  32,    // Int32 
b920: 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (9)..      DbTyp
b930: 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55  e.UInt32,   // U
b940: 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20  Int32 (10)..    
b950: 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20    DbType.Int64, 
b960: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29     // Int64 (11)
b970: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
b980: 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74  Int64,   // UInt
b990: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44  64 (12)..      D
b9a0: 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20  bType.Single,   
b9b0: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a  // Single (13)..
b9c0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f 75        DbType.Dou
b9d0: 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65  ble,   // Double
b9e0: 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62 54   (14)..      DbT
b9f0: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f  ype.Decimal,  //
ba00: 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20   Decimal (15).. 
ba10: 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74 65       DbType.Date
ba20: 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d  Time, // DateTim
ba30: 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 62  e (16)..      Db
ba40: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
ba50: 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20  / ?? (17)..     
ba60: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20 20   DbType.String  
ba70: 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29    // String (18)
ba80: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
ba90: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
baa0: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74     /// Returns t
bab0: 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f  he ColumnSize fo
bac0: 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54 79  r the given DbTy
bad0: 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  pe..    /// </su
bae0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
baf0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
bb00: 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f 20  ">The DbType to 
bb10: 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 3c  get the size of<
bb20: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
bb30: 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75   <returns></retu
bb40: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
bb50: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44 62  al static int Db
bb60: 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65  TypeToColumnSize
bb70: 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20  (DbType typ)..  
bb80: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
bb90: 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d  n _dbtypetocolum
bba0: 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b  nsize[(int)typ];
bbb0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
bbc0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
bbd0: 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c  t[] _dbtypetocol
bbe0: 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20  umnsize = {..   
bbf0: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bc00: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28   // AnsiString (
bc10: 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  0)..      int.Ma
bc20: 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72  xValue, // Binar
bc30: 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c 20  y (1)..      1, 
bc40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79             // By
bc50: 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31 2c  te (2)..      1,
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
bc70: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
bc80: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
bc90: 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d  // Currency (4).
bca0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
bcb0: 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35 29       // Date (5)
bcc0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bcd0: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d        // DateTim
bce0: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c 20  e (6)..      8, 
bcf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65             // De
bd00: 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20  cimal (7)..     
bd10: 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   8,            /
bd20: 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20  / Double (8)..  
bd30: 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20 20      16,         
bd40: 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20    // Guid (9).. 
bd50: 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20 20       2,         
bd60: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29     // Int16 (10)
bd70: 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20 20  ..      4,      
bd80: 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28        // Int32 (
bd90: 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  11)..      8,   
bda0: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36           // Int6
bdb0: 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69 6e  4 (12)..      in
bdc0: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f  t.MaxValue, // O
bdd0: 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20  bject (13)..    
bde0: 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20 20    1,            
bdf0: 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20  // SByte (14).. 
be00: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
be10: 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35     // Single (15
be20: 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78  )..      int.Max
be30: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
be40: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c 20   (16)..      8, 
be50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 69             // Ti
be60: 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 32  me (17)..      2
be70: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
be80: 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20  UInt16 (18)..   
be90: 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20     4,           
bea0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d   // UInt32 (19).
beb0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
bec0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28       // UInt64 (
bed0: 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  20)..      8,   
bee0: 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e           // VarN
bef0: 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20  umeric (21)..   
bf00: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bf10: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
bf20: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
bf30: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
bf40: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78  ue, // StringFix
bf50: 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20  edLength (23).. 
bf60: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bf70: 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20  e, // ?? (24).. 
bf80: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bf90: 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a  e  // Xml (25)..
bfa0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e      };....    in
bfb0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f 62  ternal static ob
bfc0: 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75 6d  ject DbTypeToNum
bfd0: 65 72 69 63 50 72 65 63 69 73 69 6f 6e 28 44 62  ericPrecision(Db
bfe0: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
bff0: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
c000: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 70  dbtypetonumericp
c010: 72 65 63 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79  recision[(int)ty
c020: 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  p];..    }....  
c030: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c040: 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70   object[] _dbtyp
c050: 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63 69 73  etonumericprecis
c060: 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ion = {..      D
c070: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c080: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
c090: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c0a0: 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ue, // Binary (1
c0b0: 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20 20 20  )..      3,     
c0c0: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
c0d0: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c0e0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65  .Value, // Boole
c0f0: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 31 39  an (3)..      19
c100: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43  ,           // C
c110: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
c120: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c130: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
c140: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c150: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
c160: 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20  )..      53,    
c170: 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d 61         // Decima
c180: 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 35 33 2c  l (7)..      53,
c190: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f             // Do
c1a0: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
c1b0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c1c0: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
c1d0: 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   5,            /
c1e0: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
c1f0: 20 20 20 20 31 30 2c 20 20 20 20 20 20 20 20 20      10,         
c200: 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d    // Int32 (11).
c210: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c220: 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31       // Int64 (1
c230: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c240: 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63  .Value, // Objec
c250: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 33 2c  t (13)..      3,
c260: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c270: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
c280: 20 32 34 2c 20 20 20 20 20 20 20 20 20 20 20 2f   24,           /
c290: 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20  / Single (15).. 
c2a0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c2b0: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36  e, // String (16
c2c0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c2d0: 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28  Value, // Time (
c2e0: 31 37 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20  17)..      5,   
c2f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
c300: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 31  16 (18)..      1
c310: 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  0,           // 
c320: 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20  UInt32 (19)..   
c330: 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20 20     19,          
c340: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
c350: 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20  .      53,      
c360: 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72       // VarNumer
c370: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44  ic (21)..      D
c380: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c390: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
c3a0: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
c3b0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c3c0: 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65  // StringFixedLe
c3d0: 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20  ngth (23)..     
c3e0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c3f0: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
c400: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f   DBNull.Value  /
c410: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
c420: 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e  };....    intern
c430: 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  al static object
c440: 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69 63   DbTypeToNumeric
c450: 53 63 61 6c 65 28 44 62 54 79 70 65 20 74 79 70  Scale(DbType typ
c460: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
c470: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f  return _dbtypeto
c480: 6e 75 6d 65 72 69 63 73 63 61 6c 65 5b 28 69 6e  numericscale[(in
c490: 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  t)typ];..    }..
c4a0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
c4b0: 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64  atic object[] _d
c4c0: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63  btypetonumericsc
c4d0: 61 6c 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ale = {..      D
c4e0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c4f0: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
c500: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c510: 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ue, // Binary (1
c520: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20  )..      0,     
c530: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
c540: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c550: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65  .Value, // Boole
c560: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 34 2c  an (3)..      4,
c570: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
c580: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
c590: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c5a0: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
c5b0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c5c0: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
c5d0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c5e0: 56 61 6c 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61  Value, // Decima
c5f0: 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 44 42 4e  l (7)..      DBN
c600: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f  ull.Value, // Do
c610: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
c620: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c630: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
c640: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
c650: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
c660: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c670: 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d    // Int32 (11).
c680: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c690: 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31       // Int64 (1
c6a0: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c6b0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63  .Value, // Objec
c6c0: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 30 2c  t (13)..      0,
c6d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c6e0: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
c6f0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c700: 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20  / Single (15).. 
c710: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c720: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36  e, // String (16
c730: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c740: 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28  Value, // Time (
c750: 31 37 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  17)..      0,   
c760: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
c770: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 30  16 (18)..      0
c780: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c790: 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20  UInt32 (19)..   
c7a0: 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20     0,           
c7b0: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
c7c0: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c7d0: 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72       // VarNumer
c7e0: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44  ic (21)..      D
c7f0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c800: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
c810: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
c820: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c830: 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65  // StringFixedLe
c840: 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20  ngth (23)..     
c850: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c860: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
c870: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f   DBNull.Value  /
c880: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
c890: 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  };....    /// <s
c8a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
c8b0: 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   Determines the 
c8c0: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
c8d0: 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 62 65   type name to be
c8e0: 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20 20   used when a..  
c8f0: 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63    /// per-connec
c900: 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f  tion value is no
c910: 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  t available...  
c920: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c930: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
c940: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
c950: 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  n">..    /// The
c960: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
c970: 65 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61 70  ext for type map
c980: 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  pings, if any...
c990: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
c9a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
c9b0: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
c9c0: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
c9d0: 65 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 75  e type name to u
c9e0: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
c9f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
ca00: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
ca10: 6e 67 20 47 65 74 44 65 66 61 75 6c 74 54 79 70  ng GetDefaultTyp
ca20: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
ca30: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
ca40: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
ca50: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
ca60: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
ca70: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
ca80: 67 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e  gs = (connection
ca90: 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20   != null) ?..   
caa0: 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
cab0: 69 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69  ion.Flags : SQLi
cac0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
cad0: 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20  s.None;....     
cae0: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
caf0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
cb00: 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53  Flags.NoConvertS
cb10: 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20  ettings)..      
cb20: 20 20 20 20 20 20 20 20 20 20 3d 3d 20 53 51 4c            == SQL
cb30: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
cb40: 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
cb50: 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ings)..        {
cb60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
cb70: 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66  turn FallbackDef
cb80: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
cb90: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cba0: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20      string name 
cbb0: 3d 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e  = "Use_SQLiteCon
cbc0: 76 65 72 74 5f 44 65 66 61 75 6c 74 54 79 70 65  vert_DefaultType
cbd0: 4e 61 6d 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  Name";..        
cbe0: 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 6e  object value = n
cbf0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 73 74  ull;..        st
cc00: 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 3d 20  ring @default = 
cc10: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
cc20: 20 69 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e   if ((connection
cc30: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
cc40: 20 20 20 20 20 20 20 20 20 20 21 63 6f 6e 6e 65            !conne
cc50: 63 74 69 6f 6e 2e 54 72 79 47 65 74 43 61 63 68  ction.TryGetCach
cc60: 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20  edSetting(name, 
cc70: 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76 61  @default, out va
cc80: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
cc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
cca0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
ccb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ccc0: 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66 65    value = Unsafe
ccd0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65  NativeMethods.Ge
cce0: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 6e 61  tSettingValue(na
ccf0: 6d 65 2c 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a  me, @default);..
cd00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cd10: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
cd20: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
cd30: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
cd40: 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  = FallbackDefaul
cd50: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
cd60: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cd70: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
cd80: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cd90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cda0: 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  f (connection !=
cdb0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e              conn
cdd0: 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64  ection.SetCached
cde0: 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61  Setting(name, va
cdf0: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
ce00: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
ce10: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
ce20: 6e 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54 6f  n SettingValueTo
ce30: 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a  String(value);..
ce40: 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e 45      }....#if !NE
ce50: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
ce60: 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20  TRACE_WARNING.. 
ce70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ce80: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61 70 70  ..    /// If app
ce90: 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65 73 20  licable, issues 
cea0: 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65 73 73  a trace log mess
ceb0: 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62 6f 75  age warning abou
cec0: 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74  t falling back t
ced0: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 64  o..    /// the d
cee0: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
cef0: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
cf00: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cf10: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cf20: 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d 0a 20  ame="dbType">.. 
cf30: 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
cf40: 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d  ase value type..
cf50: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
cf60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
cf70: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
cf80: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
cf90: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
cfa0: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
cfb0: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
cfc0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
cfd0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
cfe0: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d  am name="typeNam
cff0: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
d000: 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66   textual name of
d010: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
d020: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  pe...    /// </p
d030: 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61  aram>..    priva
d040: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 44  te static void D
d050: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61  efaultTypeNameWa
d060: 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  rning(..        
d070: 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a  DbType dbType,..
d080: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d090: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
d0a0: 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ags,..        st
d0b0: 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 0d 0a 20  ring typeName.. 
d0c0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
d0d0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c  .        if ((fl
d0e0: 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e  ags & SQLiteConn
d0f0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d100: 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c  eWarning) == SQL
d110: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d120: 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
d130: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d140: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
d150: 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e  riteLine(String.
d160: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
d170: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
d180: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
d190: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
d1a0: 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20        "WARNING: 
d1b0: 54 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69  Type mapping fai
d1c0: 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64  led, returning d
d1d0: 65 66 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30  efault name \"{0
d1e0: 7d 5c 22 20 66 6f 72 20 74 79 70 65 20 7b 31 7d  }\" for type {1}
d1f0: 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
d200: 20 20 20 20 20 74 79 70 65 4e 61 6d 65 2c 20 64       typeName, d
d210: 62 54 79 70 65 29 29 3b 0d 0a 20 20 20 20 20 20  bType));..      
d220: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
d230: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d240: 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c  .    /// If appl
d250: 69 63 61 62 6c 65 2c 20 69 73 73 75 65 73 20 61  icable, issues a
d260: 20 74 72 61 63 65 20 6c 6f 67 20 6d 65 73 73 61   trace log messa
d270: 67 65 20 77 61 72 6e 69 6e 67 20 61 62 6f 75 74  ge warning about
d280: 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f   falling back to
d290: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 64 65  ..    /// the de
d2a0: 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 76  fault database v
d2b0: 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20  alue type...    
d2c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d2d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d2e0: 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d  ame="typeName">.
d2f0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78  .    /// The tex
d300: 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65  tual name of the
d310: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 2e 0d   database type..
d320: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
d330: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
d340: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
d350: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
d360: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
d370: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
d380: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
d390: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d3a0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
d3b0: 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65 22  am name="dbType"
d3c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
d3d0: 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79  atabase value ty
d3e0: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  pe...    /// </p
d3f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61  aram>..    priva
d400: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 44  te static void D
d410: 65 66 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e  efaultDbTypeWarn
d420: 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ing(..        st
d430: 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a  ring typeName,..
d440: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d450: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
d460: 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 44 62  ags,..        Db
d470: 54 79 70 65 3f 20 64 62 54 79 70 65 0d 0a 20 20  Type? dbType..  
d480: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
d490: 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
d4a0: 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
d4b0: 79 28 74 79 70 65 4e 61 6d 65 29 20 26 26 0d 0a  y(typeName) &&..
d4c0: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 66 6c              ((fl
d4d0: 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e  ags & SQLiteConn
d4e0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d4f0: 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c  eWarning) == SQL
d500: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d510: 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
d520: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
d530: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
d540: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
d550: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
d560: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
d570: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
d580: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
d590: 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a         "WARNING:
d5a0: 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61   Type mapping fa
d5b0: 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20  iled, returning 
d5c0: 64 65 66 61 75 6c 74 20 74 79 70 65 20 7b 30 7d  default type {0}
d5d0: 20 66 6f 72 20 6e 61 6d 65 20 5c 22 7b 31 7d 5c   for name \"{1}\
d5e0: 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ".",..          
d5f0: 20 20 20 20 20 20 64 62 54 79 70 65 2c 20 74 79        dbType, ty
d600: 70 65 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20  peName));..     
d610: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e     }..    }..#en
d620: 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  dif....    /// <
d630: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
d640: 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 64 61  / For a given da
d650: 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70  tabase value typ
d660: 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20 22 63  e, return the "c
d670: 6c 6f 73 65 73 74 2d 6d 61 74 63 68 22 20 74 65  losest-match" te
d680: 78 74 75 61 6c 20 64 61 74 61 62 61 73 65 20 74  xtual database t
d690: 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f  ype name...    /
d6a0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d6b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d6c0: 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
d6d0: 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63  The connection c
d6e0: 6f 6e 74 65 78 74 20 66 6f 72 20 63 75 73 74 6f  ontext for custo
d6f0: 6d 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c  m type mappings,
d700: 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e   if any.</param>
d710: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
d720: 20 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 54   name="dbType">T
d730: 68 65 20 64 61 74 61 62 61 73 65 20 76 61 6c 75  he database valu
d740: 65 20 74 79 70 65 2e 3c 2f 70 61 72 61 6d 3e 0d  e type.</param>.
d750: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d760: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68 65  name="flags">The
d770: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
d780: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
d790: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
d7a0: 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ect.</param>..  
d7b0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
d7c0: 68 65 20 74 79 70 65 20 6e 61 6d 65 20 6f 72 20  he type name or 
d7d0: 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20  an empty string 
d7e0: 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
d7f0: 64 65 74 65 72 6d 69 6e 65 64 2e 3c 2f 72 65 74  determined.</ret
d800: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
d810: 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e  nal static strin
d820: 67 20 44 62 54 79 70 65 54 6f 54 79 70 65 4e 61  g DbTypeToTypeNa
d830: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  me(..        SQL
d840: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
d850: 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  nnection,..     
d860: 20 20 20 44 62 54 79 70 65 20 64 62 54 79 70 65     DbType dbType
d870: 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
d880: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
d890: 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
d8a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
d8b0: 20 20 73 74 72 69 6e 67 20 64 65 66 61 75 6c 74    string default
d8c0: 54 79 70 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b  TypeName = null;
d8d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
d8e0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75  connection != nu
d8f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
d900: 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67              flag
d910: 73 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  s |= connection.
d920: 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  Flags;....      
d930: 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73        if ((flags
d940: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
d950: 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e  ionFlags.UseConn
d960: 65 63 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20  ectionTypes) == 
d970: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d980: 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74  Flags.UseConnect
d990: 69 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20 20 20  ionTypes)..     
d9a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d9b0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
d9c0: 44 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63  DbTypeMap connec
d9d0: 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20  tionTypeNames = 
d9e0: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65  connection._type
d9f0: 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20  Names;....      
da00: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
da10: 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
da20: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
da30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
da40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da50: 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d     SQLiteDbTypeM
da60: 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d  apping value;...
da70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
da80: 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
da90: 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72 79  ionTypeNames.Try
daa0: 47 65 74 56 61 6c 75 65 28 64 62 54 79 70 65 2c  GetValue(dbType,
dab0: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
dac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dad0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
dae0: 75 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  ue.typeName;..  
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
db00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
db10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
db20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
db30: 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64   NOTE: Use the d
db40: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
db50: 74 79 70 65 20 6e 61 6d 65 20 66 6f 72 20 74 68  type name for th
db60: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
db70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
db80: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
db90: 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 63 6f 6e  ltTypeName = con
dba0: 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54  nection.DefaultT
dbb0: 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ypeName;..      
dbc0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
dbd0: 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69  f ((flags & SQLi
dbe0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
dbf0: 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29  s.NoGlobalTypes)
dc00: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
dc10: 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62  tionFlags.NoGlob
dc20: 61 6c 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20  alTypes)..      
dc30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dc40: 20 69 66 20 28 64 65 66 61 75 6c 74 54 79 70 65   if (defaultType
dc50: 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Name != null).. 
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
dc70: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70  eturn defaultTyp
dc80: 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
dc90: 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 70        defaultTyp
dca0: 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61 75  eName = GetDefau
dcb0: 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65  ltTypeName(conne
dcc0: 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ction);....#if !
dcd0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
dce0: 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
dcf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66  .            Def
dd00: 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e  aultTypeNameWarn
dd10: 69 6e 67 28 64 62 54 79 70 65 2c 20 66 6c 61 67  ing(dbType, flag
dd20: 73 2c 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  s, defaultTypeNa
dd30: 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  me);..#endif....
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dd50: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
dd60: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  me;..        }..
dd70: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28  ..        lock (
dd80: 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  _syncRoot)..    
dd90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
dda0: 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
ddb0: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
ddc0: 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70              _typ
ddd0: 65 4e 61 6d 65 73 20 3d 20 47 65 74 53 51 4c 69  eNames = GetSQLi
dde0: 74 65 44 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a  teDbTypeMap();..
ddf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
de00: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
de10: 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  g value;....    
de20: 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70          if (_typ
de30: 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c  eNames.TryGetVal
de40: 75 65 28 64 62 54 79 70 65 2c 20 6f 75 74 20 76  ue(dbType, out v
de50: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
de60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
de70: 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a  alue.typeName;..
de80: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
de90: 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74       if (default
dea0: 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  TypeName != null
deb0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
dec0: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70  eturn defaultTyp
ded0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
dee0: 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d    defaultTypeNam
def0: 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 54 79  e = GetDefaultTy
df00: 70 65 4e 61 6d 65 28 63 6f 6e 6e 65 63 74 69 6f  peName(connectio
df10: 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  n);....#if !NET_
df20: 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
df30: 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20  ACE_WARNING..   
df40: 20 20 20 20 20 44 65 66 61 75 6c 74 54 79 70 65       DefaultType
df50: 4e 61 6d 65 57 61 72 6e 69 6e 67 28 64 62 54 79  NameWarning(dbTy
df60: 70 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75  pe, flags, defau
df70: 6c 74 54 79 70 65 4e 61 6d 65 29 3b 0d 0a 23 65  ltTypeName);..#e
df80: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
df90: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79  return defaultTy
dfa0: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a  peName;..    }..
dfb0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
dfc0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
dfd0: 76 65 72 74 20 61 20 44 62 54 79 70 65 20 74 6f  vert a DbType to
dfe0: 20 61 20 54 79 70 65 0d 0a 20 20 20 20 2f 2f 2f   a Type..    ///
dff0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e000: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
e010: 3d 22 74 79 70 22 3e 54 68 65 20 44 62 54 79 70  ="typ">The DbTyp
e020: 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 66 72 6f  e to convert fro
e030: 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  m</param>..    /
e040: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
e050: 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20 2e 4e  closest-match .N
e060: 45 54 20 74 79 70 65 3c 2f 72 65 74 75 72 6e 73  ET type</returns
e070: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
e080: 73 74 61 74 69 63 20 54 79 70 65 20 44 62 54 79  static Type DbTy
e090: 70 65 54 6f 54 79 70 65 28 44 62 54 79 70 65 20  peToType(DbType 
e0a0: 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  typ)..    {..   
e0b0: 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70     return _dbtyp
e0c0: 65 54 6f 54 79 70 65 5b 28 69 6e 74 29 74 79 70  eToType[(int)typ
e0d0: 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ];..    }....   
e0e0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
e0f0: 54 79 70 65 5b 5d 20 5f 64 62 74 79 70 65 54 6f  Type[] _dbtypeTo
e100: 54 79 70 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20  Type = {..      
e110: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
e120: 20 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20    // AnsiString 
e130: 28 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (0)..      typeo
e140: 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20  f(byte[]),   // 
e150: 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20  Binary (1)..    
e160: 20 20 74 79 70 65 6f 66 28 62 79 74 65 29 2c 20    typeof(byte), 
e170: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
e180: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62 6f  .      typeof(bo
e190: 6f 6c 29 2c 20 20 20 20 20 2f 2f 20 42 6f 6f 6c  ol),     // Bool
e1a0: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 74  ean (3)..      t
e1b0: 79 70 65 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20  ypeof(decimal), 
e1c0: 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29   // Currency (4)
e1d0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44  ..      typeof(D
e1e0: 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74  ateTime), // Dat
e1f0: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 74 79 70  e (5)..      typ
e200: 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20 2f  eof(DateTime), /
e210: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
e220: 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 65 63        typeof(dec
e230: 69 6d 61 6c 29 2c 20 20 2f 2f 20 44 65 63 69 6d  imal),  // Decim
e240: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 74 79  al (7)..      ty
e250: 70 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20 20  peof(double),   
e260: 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20  // Double (8).. 
e270: 20 20 20 20 20 74 79 70 65 6f 66 28 47 75 69 64       typeof(Guid
e280: 29 2c 20 20 20 20 20 2f 2f 20 47 75 69 64 20 28  ),     // Guid (
e290: 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  9)..      typeof
e2a0: 28 49 6e 74 31 36 29 2c 20 20 20 20 2f 2f 20 49  (Int16),    // I
e2b0: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
e2c0: 20 74 79 70 65 6f 66 28 49 6e 74 33 32 29 2c 20   typeof(Int32), 
e2d0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
e2e0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49  ..      typeof(I
e2f0: 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74  nt64),    // Int
e300: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 74  64 (12)..      t
e310: 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20  ypeof(object),  
e320: 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d   // Object (13).
e330: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 62  .      typeof(sb
e340: 79 74 65 29 2c 20 20 20 20 2f 2f 20 53 42 79 74  yte),    // SByt
e350: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 74 79  e (14)..      ty
e360: 70 65 6f 66 28 66 6c 6f 61 74 29 2c 20 20 20 20  peof(float),    
e370: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
e380: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
e390: 69 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e  ing),   // Strin
e3a0: 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 74 79  g (16)..      ty
e3b0: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20  peof(DateTime), 
e3c0: 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20  // Time (17)..  
e3d0: 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74 31      typeof(UInt1
e3e0: 36 29 2c 20 20 20 2f 2f 20 55 49 6e 74 31 36 20  6),   // UInt16 
e3f0: 28 31 38 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (18)..      type
e400: 6f 66 28 55 49 6e 74 33 32 29 2c 20 20 20 2f 2f  of(UInt32),   //
e410: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
e420: 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74 36      typeof(UInt6
e430: 34 29 2c 20 20 20 2f 2f 20 55 49 6e 74 36 34 20  4),   // UInt64 
e440: 28 32 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (20)..      type
e450: 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f  of(double),   //
e460: 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29   VarNumeric (21)
e470: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
e480: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73  tring),   // Ans
e490: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
e4a0: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 74  th (22)..      t
e4b0: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
e4c0: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
e4d0: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
e4e0: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
e4f0: 2c 20 20 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a  ,   // ?? (24)..
e500: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
e510: 69 6e 67 29 2c 20 20 20 2f 2f 20 58 6d 6c 20 28  ing),   // Xml (
e520: 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  25)..    };.... 
e530: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e540: 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20  ..    /// For a 
e550: 67 69 76 65 6e 20 74 79 70 65 2c 20 72 65 74 75  given type, retu
e560: 72 6e 20 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d  rn the closest-m
e570: 61 74 63 68 20 53 51 4c 69 74 65 20 54 79 70 65  atch SQLite Type
e580: 41 66 66 69 6e 69 74 79 2c 20 77 68 69 63 68 20  Affinity, which 
e590: 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64 73  only understands
e5a0: 20 61 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20   a very limited 
e5b0: 73 75 62 73 65 74 20 6f 66 20 74 79 70 65 73 2e  subset of types.
e5c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
e5d0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
e5e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
e5f0: 54 68 65 20 74 79 70 65 20 74 6f 20 65 76 61 6c  The type to eval
e600: 75 61 74 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  uate</param>..  
e610: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
e620: 68 65 20 53 51 4c 69 74 65 20 74 79 70 65 20 61  he SQLite type a
e630: 66 66 69 6e 69 74 79 20 66 6f 72 20 74 68 61 74  ffinity for that
e640: 20 74 79 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e   type.</returns>
e650: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
e660: 74 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69  tatic TypeAffini
e670: 74 79 20 54 79 70 65 54 6f 41 66 66 69 6e 69 74  ty TypeToAffinit
e680: 79 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  y(Type typ)..   
e690: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f   {..      TypeCo
e6a0: 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74  de tc = Type.Get
e6b0: 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a  TypeCode(typ);..
e6c0: 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20        if (tc == 
e6d0: 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29  TypeCode.Object)
e6e0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
e6f0: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
e700: 70 65 6f 66 28 62 79 74 65 5b 5d 29 20 7c 7c 20  peof(byte[]) || 
e710: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75  typ == typeof(Gu
e720: 69 64 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  id))..          
e730: 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e  return TypeAffin
e740: 69 74 79 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20 20  ity.Blob;..     
e750: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
e760: 20 20 20 72 65 74 75 72 6e 20 54 79 70 65 41 66     return TypeAf
e770: 66 69 6e 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20  finity.Text;..  
e780: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74      }..      ret
e790: 75 72 6e 20 5f 74 79 70 65 63 6f 64 65 41 66 66  urn _typecodeAff
e7a0: 69 6e 69 74 69 65 73 5b 28 69 6e 74 29 74 63 5d  inities[(int)tc]
e7b0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
e7c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 54  private static T
e7d0: 79 70 65 41 66 66 69 6e 69 74 79 5b 5d 20 5f 74  ypeAffinity[] _t
e7e0: 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74 69 65  ypecodeAffinitie
e7f0: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 54 79 70  s = {..      Typ
e800: 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20  eAffinity.Null, 
e810: 20 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30 29      // Empty (0)
e820: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
e830: 6e 69 74 79 2e 42 6c 6f 62 2c 20 20 20 20 20 2f  nity.Blob,     /
e840: 2f 20 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20 20  / Object (1)..  
e850: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
e860: 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 44 42  .Null,     // DB
e870: 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20  Null (2)..      
e880: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
e890: 36 34 2c 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61  64,    // Boolea
e8a0: 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 54 79 70  n (3)..      Typ
e8b0: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e8c0: 20 20 20 20 2f 2f 20 43 68 61 72 20 28 34 29 0d      // Char (4).
e8d0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
e8e0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
e8f0: 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20 20 20   SByte (5)..    
e900: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
e910: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42 79 74 65  nt64,    // Byte
e920: 20 28 36 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (6)..      Type
e930: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
e940: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 29 0d     // Int16 (7).
e950: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
e960: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
e970: 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20 20   UInt16 (8)..   
e980: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
e990: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74  Int64,    // Int
e9a0: 33 32 20 28 39 29 0d 0a 20 20 20 20 20 20 54 79  32 (9)..      Ty
e9b0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
e9c0: 2c 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28  ,    // UInt32 (
e9d0: 31 30 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  10)..      TypeA
e9e0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
e9f0: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d    // Int64 (11).
ea00: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
ea10: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
ea20: 20 55 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20   UInt64 (12)..  
ea30: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ea40: 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 53 69  .Double,   // Si
ea50: 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20 20 20  ngle (13)..     
ea60: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f   TypeAffinity.Do
ea70: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c  uble,   // Doubl
ea80: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 54 79  e (14)..      Ty
ea90: 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c  peAffinity.Doubl
eaa0: 65 2c 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20  e,   // Decimal 
eab0: 28 31 35 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (15)..      Type
eac0: 41 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69 6d  Affinity.DateTim
ead0: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
eae0: 31 36 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  16)..      TypeA
eaf0: 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20  ffinity.Null,   
eb00: 20 20 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20    // ?? (17)..  
eb10: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
eb20: 2e 54 65 78 74 20 20 20 20 20 20 2f 2f 20 53 74  .Text      // St
eb30: 72 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d  ring (18)..    }
eb40: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
eb50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
eb60: 42 75 69 6c 64 73 20 61 6e 64 20 72 65 74 75 72  Builds and retur
eb70: 6e 73 20 61 20 6d 61 70 20 63 6f 6e 74 61 69 6e  ns a map contain
eb80: 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
eb90: 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 0d 0a 20   column types.. 
eba0: 20 20 20 2f 2f 2f 20 72 65 63 6f 67 6e 69 7a 65     /// recognize
ebb0: 64 20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64  d by this provid
ebc0: 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  er...    /// </s
ebd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ebe0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
ebf0: 2f 2f 2f 20 41 20 6d 61 70 20 63 6f 6e 74 61 69  /// A map contai
ec00: 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ning the databas
ec10: 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 20 72  e column types r
ec20: 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69  ecognized by thi
ec30: 73 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69  s..    /// provi
ec40: 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  der...    /// </
ec50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
ec60: 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
ec70: 69 74 65 44 62 54 79 70 65 4d 61 70 20 47 65 74  iteDbTypeMap Get
ec80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28  SQLiteDbTypeMap(
ec90: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
eca0: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c    return new SQL
ecb0: 69 74 65 44 62 54 79 70 65 4d 61 70 28 6e 65 77  iteDbTypeMap(new
ecc0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ecd0: 70 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20  ping[] {..      
ece0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ecf0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42  DbTypeMapping("B
ed00: 49 47 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  IGINT", DbType.I
ed10: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
ed20: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ed30: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ed40: 6e 67 28 22 42 49 47 55 49 4e 54 22 2c 20 44 62  ng("BIGUINT", Db
ed50: 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c  Type.UInt64, fal
ed60: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
ed70: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
ed80: 70 65 4d 61 70 70 69 6e 67 28 22 42 49 4e 41 52  peMapping("BINAR
ed90: 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  Y", DbType.Binar
eda0: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
edb0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
edc0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
edd0: 22 42 49 54 22 2c 20 44 62 54 79 70 65 2e 42 6f  "BIT", DbType.Bo
ede0: 6f 6c 65 61 6e 2c 20 74 72 75 65 29 2c 0d 0a 20  olean, true),.. 
edf0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ee00: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ee10: 6e 67 28 22 42 4c 4f 42 22 2c 20 44 62 54 79 70  ng("BLOB", DbTyp
ee20: 65 2e 42 69 6e 61 72 79 2c 20 74 72 75 65 29 2c  e.Binary, true),
ee30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ee40: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ee50: 70 70 69 6e 67 28 22 42 4f 4f 4c 22 2c 20 44 62  pping("BOOL", Db
ee60: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61  Type.Boolean, fa
ee70: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ee80: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ee90: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c  ypeMapping("BOOL
eea0: 45 41 4e 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f  EAN", DbType.Boo
eeb0: 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  lean, false),.. 
eec0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
eed0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
eee0: 6e 67 28 22 43 48 41 52 22 2c 20 44 62 54 79 70  ng("CHAR", DbTyp
eef0: 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65  e.AnsiStringFixe
ef00: 64 4c 65 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d  dLength, true),.
ef10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ef20: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ef30: 70 69 6e 67 28 22 43 4c 4f 42 22 2c 20 44 62 54  ping("CLOB", DbT
ef40: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
ef50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ef60: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ef70: 65 4d 61 70 70 69 6e 67 28 22 43 4f 55 4e 54 45  eMapping("COUNTE
ef80: 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  R", DbType.Int64
ef90: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
efa0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
efb0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
efc0: 43 55 52 52 45 4e 43 59 22 2c 20 44 62 54 79 70  CURRENCY", DbTyp
efd0: 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65  e.Decimal, false
efe0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
eff0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f000: 4d 61 70 70 69 6e 67 28 22 44 41 54 45 22 2c 20  Mapping("DATE", 
f010: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
f020: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f030: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f040: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
f050: 41 54 45 54 49 4d 45 22 2c 20 44 62 54 79 70 65  ATETIME", DbType
f060: 2e 44 61 74 65 54 69 6d 65 2c 20 74 72 75 65 29  .DateTime, true)
f070: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f080: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f090: 61 70 70 69 6e 67 28 22 44 45 43 49 4d 41 4c 22  apping("DECIMAL"
f0a0: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
f0b0: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
f0c0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f0d0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
f0e0: 4f 55 42 4c 45 22 2c 20 44 62 54 79 70 65 2e 44  OUBLE", DbType.D
f0f0: 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  ouble, false),..
f100: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f110: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f120: 69 6e 67 28 22 46 4c 4f 41 54 22 2c 20 44 62 54  ing("FLOAT", DbT
f130: 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73  ype.Double, fals
f140: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f150: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f160: 65 4d 61 70 70 69 6e 67 28 22 47 45 4e 45 52 41  eMapping("GENERA
f170: 4c 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  L", DbType.Binar
f180: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
f190: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f1a0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f1b0: 22 47 55 49 44 22 2c 20 44 62 54 79 70 65 2e 47  "GUID", DbType.G
f1c0: 75 69 64 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  uid, false),..  
f1d0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f1e0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f1f0: 67 28 22 49 44 45 4e 54 49 54 59 22 2c 20 44 62  g("IDENTITY", Db
f200: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
f210: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f220: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f230: 65 4d 61 70 70 69 6e 67 28 22 49 4d 41 47 45 22  eMapping("IMAGE"
f240: 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c  , DbType.Binary,
f250: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f260: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f270: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
f280: 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 33  NT", DbType.Int3
f290: 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  2, true),..     
f2a0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f2b0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f2c0: 49 4e 54 38 22 2c 20 44 62 54 79 70 65 2e 53 42  INT8", DbType.SB
f2d0: 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  yte, false),..  
f2e0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f2f0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f300: 67 28 22 49 4e 54 31 36 22 2c 20 44 62 54 79 70  g("INT16", DbTyp
f310: 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  e.Int16, false),
f320: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f330: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f340: 70 70 69 6e 67 28 22 49 4e 54 33 32 22 2c 20 44  pping("INT32", D
f350: 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c  bType.Int32, fal
f360: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f370: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f380: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 36 34  peMapping("INT64
f390: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
f3a0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f3b0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f3c0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
f3d0: 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70 65 2e  NTEGER", DbType.
f3e0: 49 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20  Int64, true),.. 
f3f0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f400: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f410: 6e 67 28 22 49 4e 54 45 47 45 52 38 22 2c 20 44  ng("INTEGER8", D
f420: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 66 61 6c  bType.SByte, fal
f430: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f440: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f450: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47  peMapping("INTEG
f460: 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e 49 6e  ER16", DbType.In
f470: 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t16, false),..  
f480: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f490: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f4a0: 67 28 22 49 4e 54 45 47 45 52 33 32 22 2c 20 44  g("INTEGER32", D
f4b0: 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c  bType.Int32, fal
f4c0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f4d0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f4e0: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47  peMapping("INTEG
f4f0: 45 52 36 34 22 2c 20 44 62 54 79 70 65 2e 49 6e  ER64", DbType.In
f500: 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t64, false),..  
f510: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f520: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f530: 67 28 22 4c 4f 47 49 43 41 4c 22 2c 20 44 62 54  g("LOGICAL", DbT
f540: 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c  ype.Boolean, fal
f550: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f560: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f570: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 22  peMapping("LONG"
f580: 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20  , DbType.Int64, 
f590: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f5a0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f5b0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f  bTypeMapping("LO
f5c0: 4e 47 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e  NGCHAR", DbType.
f5d0: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
f5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f5f0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f600: 70 69 6e 67 28 22 4c 4f 4e 47 54 45 58 54 22 2c  ping("LONGTEXT",
f610: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
f620: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f630: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f640: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f  bTypeMapping("LO
f650: 4e 47 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  NGVARCHAR", DbTy
f660: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
f670: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f680: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f690: 4d 61 70 70 69 6e 67 28 22 4d 45 4d 4f 22 2c 20  Mapping("MEMO", 
f6a0: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66  DbType.String, f
f6b0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f6c0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f6d0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4d 4f 4e  TypeMapping("MON
f6e0: 45 59 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  EY", DbType.Deci
f6f0: 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  mal, false),..  
f700: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f710: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f720: 67 28 22 4e 43 48 41 52 22 2c 20 44 62 54 79 70  g("NCHAR", DbTyp
f730: 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  e.StringFixedLen
f740: 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gth, true),..   
f750: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f760: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f770: 28 22 4e 4f 54 45 22 2c 20 44 62 54 79 70 65 2e  ("NOTE", DbType.
f780: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
f790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f7a0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f7b0: 70 69 6e 67 28 22 4e 54 45 58 54 22 2c 20 44 62  ping("NTEXT", Db
f7c0: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
f7d0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f7e0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f7f0: 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 42 45  peMapping("NUMBE
f800: 52 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d  R", DbType.Decim
f810: 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  al, false),..   
f820: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f830: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f840: 28 22 4e 55 4d 45 52 49 43 22 2c 20 44 62 54 79  ("NUMERIC", DbTy
f850: 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73  pe.Decimal, fals
f860: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f870: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f880: 65 4d 61 70 70 69 6e 67 28 22 4e 56 41 52 43 48  eMapping("NVARCH
f890: 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  AR", DbType.Stri
f8a0: 6e 67 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  ng, true),..    
f8b0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f8c0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f8d0: 22 4f 4c 45 4f 42 4a 45 43 54 22 2c 20 44 62 54  "OLEOBJECT", DbT
f8e0: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
f8f0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f900: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f910: 65 4d 61 70 70 69 6e 67 28 22 52 41 57 22 2c 20  eMapping("RAW", 
f920: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
f930: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f940: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f950: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 52 45 41  TypeMapping("REA
f960: 4c 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c  L", DbType.Doubl
f970: 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
f980: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f990: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f9a0: 53 49 4e 47 4c 45 22 2c 20 44 62 54 79 70 65 2e  SINGLE", DbType.
f9b0: 53 69 6e 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a  Single, true),..
f9c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f9d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f9e0: 69 6e 67 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c  ing("SMALLDATE",
f9f0: 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65   DbType.DateTime
fa00: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fa10: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fa20: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fa30: 53 4d 41 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70  SMALLINT", DbTyp
fa40: 65 2e 49 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d  e.Int16, true),.
fa50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fa60: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa70: 70 69 6e 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22  ping("SMALLUINT"
fa80: 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c  , DbType.UInt16,
fa90: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
faa0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fab0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 54  bTypeMapping("ST
fac0: 52 49 4e 47 22 2c 20 44 62 54 79 70 65 2e 53 74  RING", DbType.St
fad0: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
fae0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
faf0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fb00: 6e 67 28 22 54 45 58 54 22 2c 20 44 62 54 79 70  ng("TEXT", DbTyp
fb10: 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  e.String, false)
fb20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fb30: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fb40: 61 70 70 69 6e 67 28 22 54 49 4d 45 22 2c 20 44  apping("TIME", D
fb50: 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20  bType.DateTime, 
fb60: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fb70: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fb80: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49  bTypeMapping("TI
fb90: 4d 45 53 54 41 4d 50 22 2c 20 44 62 54 79 70 65  MESTAMP", DbType
fba0: 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65  .DateTime, false
fbb0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fbc0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fbd0: 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 49 4e 54  Mapping("TINYINT
fbe0: 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c 20  ", DbType.Byte, 
fbf0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
fc00: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fc10: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4e  TypeMapping("TIN
fc20: 59 53 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 53  YSINT", DbType.S
fc30: 42 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20  Byte, true),..  
fc40: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fc50: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fc60: 67 28 22 55 49 4e 54 22 2c 20 44 62 54 79 70 65  g("UINT", DbType
fc70: 2e 55 49 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d  .UInt32, true),.
fc80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fc90: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fca0: 70 69 6e 67 28 22 55 49 4e 54 38 22 2c 20 44 62  ping("UINT8", Db
fcb0: 54 79 70 65 2e 42 79 74 65 2c 20 66 61 6c 73 65  Type.Byte, false
fcc0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fcd0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fce0: 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 31 36 22  Mapping("UINT16"
fcf0: 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c  , DbType.UInt16,
fd00: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fd10: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fd20: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
fd30: 49 4e 54 33 32 22 2c 20 44 62 54 79 70 65 2e 55  INT32", DbType.U
fd40: 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int32, false),..
fd50: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fd60: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fd70: 69 6e 67 28 22 55 49 4e 54 36 34 22 2c 20 44 62  ing("UINT64", Db
fd80: 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c  Type.UInt64, fal
fd90: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fda0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fdb0: 70 65 4d 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47  peMapping("ULONG
fdc0: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34  ", DbType.UInt64
fdd0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fde0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fdf0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fe00: 55 4e 49 51 55 45 49 44 45 4e 54 49 46 49 45 52  UNIQUEIDENTIFIER
fe10: 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c 20  ", DbType.Guid, 
fe20: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
fe30: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fe40: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53  TypeMapping("UNS
fe50: 49 47 4e 45 44 49 4e 54 45 47 45 52 22 2c 20 44  IGNEDINTEGER", D
fe60: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 74 72  bType.UInt64, tr
fe70: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
fe80: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fe90: 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47  peMapping("UNSIG
fea0: 4e 45 44 49 4e 54 45 47 45 52 38 22 2c 20 44 62  NEDINTEGER8", Db
feb0: 54 79 70 65 2e 42 79 74 65 2c 20 66 61 6c 73 65  Type.Byte, false
fec0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fed0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fee0: 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45  Mapping("UNSIGNE
fef0: 44 49 4e 54 45 47 45 52 31 36 22 2c 20 44 62 54  DINTEGER16", DbT
ff00: 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73  ype.UInt16, fals
ff10: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ff20: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ff30: 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
ff40: 45 44 49 4e 54 45 47 45 52 33 32 22 2c 20 44 62  EDINTEGER32", Db
ff50: 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c  Type.UInt32, fal
ff60: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
ff70: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
ff80: 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47  peMapping("UNSIG
ff90: 4e 45 44 49 4e 54 45 47 45 52 36 34 22 2c 20 44  NEDINTEGER64", D
ffa0: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61  bType.UInt64, fa
ffb0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ffc0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ffd0: 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 42  ypeMapping("VARB
ffe0: 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65 2e 42  INARY", DbType.B
fff0: 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a  inary, false),..
10000 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10010 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10020 69 6e 67 28 22 56 41 52 43 48 41 52 22 2c 20 44  ing("VARCHAR", D
10030 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67  bType.AnsiString
10040 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
10050 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10060 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 56  DbTypeMapping("V
10070 41 52 43 48 41 52 32 22 2c 20 44 62 54 79 70 65  ARCHAR2", DbType
10080 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 66 61 6c  .AnsiString, fal
10090 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
100a0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
100b0 70 65 4d 61 70 70 69 6e 67 28 22 59 45 53 4e 4f  peMapping("YESNO
100c0 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
100d0 6e 2c 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20  n, false)..     
100e0 20 20 20 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d     });..    }...
100f0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
10100 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
10110 72 6d 69 6e 65 73 20 69 66 20 61 20 64 61 74 61  rmines if a data
10120 62 61 73 65 20 74 79 70 65 20 69 73 20 63 6f 6e  base type is con
10130 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 61 20  sidered to be a 
10140 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f  string...    ///
10150 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10160 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
10170 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="type">..    //
10180 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 74  / The database t
10190 79 70 65 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20  ype to check... 
101a0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
101b0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
101c0 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  s>..    /// Non-
101d0 7a 65 72 6f 20 69 66 20 74 68 65 20 64 61 74 61  zero if the data
101e0 62 61 73 65 20 74 79 70 65 20 69 73 20 63 6f 6e  base type is con
101f0 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 61 20  sidered to be a 
10200 73 74 72 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20  string, zero..  
10210 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e    /// otherwise.
10220 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
10230 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
10240 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49  al static bool I
10250 73 53 74 72 69 6e 67 44 62 54 79 70 65 28 0d 0a  sStringDbType(..
10260 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20 74          DbType t
10270 79 70 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ype..        )..
10280 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
10290 77 69 74 63 68 20 28 74 79 70 65 29 0d 0a 20 20  witch (type)..  
102a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
102b0 20 20 20 20 20 63 61 73 65 20 44 62 54 79 70 65       case DbType
102c0 2e 41 6e 73 69 53 74 72 69 6e 67 3a 0d 0a 20 20  .AnsiString:..  
102d0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 44            case D
102e0 62 54 79 70 65 2e 53 74 72 69 6e 67 3a 0d 0a 20  bType.String:.. 
102f0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
10300 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
10310 67 46 69 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20  gFixedLength:.. 
10320 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
10330 44 62 54 79 70 65 2e 53 74 72 69 6e 67 46 69 78  DbType.StringFix
10340 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20  edLength:..     
10350 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10360 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
10370 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20       default:.. 
10380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
10390 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
103a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
103b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
103c0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
103d0 65 72 6d 69 6e 65 73 20 61 6e 64 20 72 65 74 75  ermines and retu
103e0 72 6e 73 20 74 68 65 20 72 75 6e 74 69 6d 65 20  rns the runtime 
103f0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65  configuration se
10400 74 74 69 6e 67 20 73 74 72 69 6e 67 20 74 68 61  tting string tha
10410 74 0d 0a 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c  t..    /// shoul
10420 64 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c 61  d be used in pla
10430 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ce of the specif
10440 69 65 64 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  ied object value
10450 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
10460 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
10470 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
10480 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
10490 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 74 6f   object value to
104a0 20 63 6f 6e 76 65 72 74 20 74 6f 20 61 20 73 74   convert to a st
104b0 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ring...    /// <
104c0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
104d0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
104e0 2f 2f 2f 20 45 69 74 68 65 72 20 74 68 65 20 73  /// Either the s
104f0 74 72 69 6e 67 20 74 6f 20 75 73 65 20 69 6e 20  tring to use in 
10500 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f 62 6a  place of the obj
10510 65 63 74 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e  ect value -OR- n
10520 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 2f  ull if it..    /
10530 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  // cannot be det
10540 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f  ermined...    //
10550 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
10560 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
10570 20 73 74 72 69 6e 67 20 53 65 74 74 69 6e 67 56   string SettingV
10580 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20  alueToString(.. 
10590 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
105a0 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  lue..        )..
105b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
105c0 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72 69  f (value is stri
105d0 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
105e0 20 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29   return (string)
105f0 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
10600 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e    if (value != n
10610 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10620 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54    return value.T
10630 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20  oString();....  
10640 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
10650 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  l;..    }....   
10660 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10670 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
10680 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 3c  es the default <
10690 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65  see cref="DbType
106a0 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65  " /> value to be
106b0 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20 20   used when a..  
106c0 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63    /// per-connec
106d0 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f  tion value is no
106e0 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  t available...  
106f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10700 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
10710 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
10720 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  n">..    /// The
10730 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
10740 65 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61 70  ext for type map
10750 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  pings, if any...
10760 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
10770 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
10780 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
10790 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63 72   default <see cr
107a0 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76  ef="DbType" /> v
107b0 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20  alue to use...  
107c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
107d0 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
107e0 61 74 69 63 20 44 62 54 79 70 65 20 47 65 74 44  atic DbType GetD
107f0 65 66 61 75 6c 74 44 62 54 79 70 65 28 0d 0a 20  efaultDbType(.. 
10800 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
10810 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
10820 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  on..        ).. 
10830 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53 51     {..        SQ
10840 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
10850 61 67 73 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e  ags flags = (con
10860 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
10870 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
10880 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73  connection.Flags
10890 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   : SQLiteConnect
108a0 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a  ionFlags.None;..
108b0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66  ..        if ((f
108c0 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
108d0 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43  nectionFlags.NoC
108e0 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d  onvertSettings).
108f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10900 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
10910 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76  tionFlags.NoConv
10920 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a 20 20  ertSettings)..  
10930 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10940 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 6c       return Fall
10950 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70  backDefaultDbTyp
10960 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
10970 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 66 6f  .        bool fo
10980 75 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  und = false;..  
10990 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
109a0 65 20 3d 20 22 55 73 65 5f 53 51 4c 69 74 65 43  e = "Use_SQLiteC
109b0 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c 74 44 62  onvert_DefaultDb
109c0 54 79 70 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  Type";..        
109d0 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 6e  object value = n
109e0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 73 74  ull;..        st
109f0 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 3d 20  ring @default = 
10a00 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
10a10 20 69 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e   if ((connection
10a20 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
10a30 20 20 20 20 20 20 20 20 20 20 21 63 6f 6e 6e 65            !conne
10a40 63 74 69 6f 6e 2e 54 72 79 47 65 74 43 61 63 68  ction.TryGetCach
10a50 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20  edSetting(name, 
10a60 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76 61  @default, out va
10a70 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
10a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
10a90 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  lue = UnsafeNati
10aa0 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74  veMethods.GetSet
10ab0 74 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20  tingValue(name, 
10ac0 40 64 65 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20  @default);....  
10ad0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
10ae0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
10af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
10b00 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65  lue = FallbackDe
10b10 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
10b20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10b30 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
10b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
10b50 75 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  und = true;..   
10b60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10b70 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
10b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
10b90 20 28 21 28 76 61 6c 75 65 20 69 73 20 44 62 54   (!(value is DbT
10ba0 79 70 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ype))..         
10bb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10bc0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 53 51        value = SQ
10bd0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54  LiteConnection.T
10be0 72 79 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20  ryParseEnum(..  
10bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c00 20 20 74 79 70 65 6f 66 28 44 62 54 79 70 65 29    typeof(DbType)
10c10 2c 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54 6f  , SettingValueTo
10c20 53 74 72 69 6e 67 28 76 61 6c 75 65 29 2c 20 74  String(value), t
10c30 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rue);....       
10c40 20 20 20 20 20 20 20 20 20 69 66 20 28 21 28 76           if (!(v
10c50 61 6c 75 65 20 69 73 20 44 62 54 79 70 65 29 29  alue is DbType))
10c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c70 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46 61        value = Fa
10c80 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54  llbackDefaultDbT
10c90 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
10ca0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
10cb0 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70     return (DbTyp
10cc0 65 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  e)value;..      
10cd0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e    }..        fin
10ce0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ally..        {.
10cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
10d00 28 21 66 6f 75 6e 64 20 26 26 20 28 63 6f 6e 6e  (!found && (conn
10d10 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 29  ection != null))
10d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d30 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74    connection.Set
10d40 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e 61  CachedSetting(na
10d50 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  me, value);..   
10d60 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
10d70 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
10d80 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
10d90 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70  rmines if the sp
10da0 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20  ecified textual 
10db0 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f  value appears to
10dc0 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c   be a..    /// <
10dd0 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c  see cref="DBNull
10de0 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
10df0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10e00 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
10e10 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20  name="text">..  
10e20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
10e30 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65  l value to inspe
10e40 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ct...    /// </p
10e50 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
10e60 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
10e70 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
10e80 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b  e text looks lik
10e90 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44  e a <see cref="D
10ea0 42 4e 75 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2c  BNull" /> value,
10eb0 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f  ..    /// zero o
10ec0 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f  therwise...    /
10ed0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10ee0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
10ef0 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b  ic bool LooksLik
10f00 65 4e 75 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20  eNull(..        
10f10 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20  string text..   
10f20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
10f30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 74         return (t
10f40 65 78 74 20 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20  ext == null);.. 
10f50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
10f60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10f70 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66  // Determines if
10f80 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74   the specified t
10f90 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70  extual value app
10fa0 65 61 72 73 20 74 6f 20 62 65 20 61 6e 0d 0a 20  ears to be an.. 
10fb0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
10fc0 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75  ="Int64" /> valu
10fd0 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
10fe0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10ff0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78  <param name="tex
11000 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
11010 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74   textual value t
11020 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20  o inspect...    
11030 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
11040 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
11050 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
11060 6f 20 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f  o if the text lo
11070 6f 6b 73 20 6c 69 6b 65 20 61 6e 20 3c 73 65 65  oks like an <see
11080 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
11090 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f   value,..    ///
110a0 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
110b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
110c0 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
110d0 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
110e0 6f 6f 6b 73 4c 69 6b 65 49 6e 74 36 34 28 0d 0a  ooksLikeInt64(..
110f0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
11100 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ext..        )..
11110 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c      {..        l
11120 6f 6e 67 20 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a  ong longValue;..
11130 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11140 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11150 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6c  ..        if (!l
11160 6f 6e 67 2e 54 72 79 50 61 72 73 65 28 0d 0a 20  ong.TryParse(.. 
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
11180 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65  ext, NumberStyle
11190 73 2e 49 6e 74 65 67 65 72 2c 20 43 75 6c 74 75  s.Integer, Cultu
111a0 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
111b0 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
111c0 20 20 20 20 20 20 20 20 20 20 6f 75 74 20 6c 6f            out lo
111d0 6e 67 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  ngValue))..     
111e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
111f0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11200 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73  .        }..#els
11210 65 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  e..        try..
11220 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11230 20 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65         longValue
11240 20 3d 20 6c 6f 6e 67 2e 50 61 72 73 65 28 0d 0a   = long.Parse(..
11250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11260 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c  text, NumberStyl
11270 65 73 2e 49 6e 74 65 67 65 72 2c 20 43 75 6c 74  es.Integer, Cult
11280 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
11290 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20  tCulture);..    
112a0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63      }..        c
112b0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d  atch..        {.
112c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
112d0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
112e0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d      }..#endif...
112f0 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
11300 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a  String.Equals(..
11310 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67              long
11320 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 43  Value.ToString(C
11330 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
11340 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 74 65  iantCulture), te
11350 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt,..           
11360 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
11370 6e 2e 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20  n.Ordinal);..   
11380 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
11390 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
113a0 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
113b0 68 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78  he specified tex
113c0 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61  tual value appea
113d0 72 73 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20  rs to be a..    
113e0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
113f0 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e  ouble" /> value.
11400 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11410 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11420 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22  aram name="text"
11430 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
11440 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20  extual value to 
11450 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f  inspect...    //
11460 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11470 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
11480 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
11490 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b  if the text look
114a0 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72  s like a <see cr
114b0 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76  ef="Double" /> v
114c0 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a  alue,..    /// z
114d0 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
114e0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
114f0 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
11500 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f   static bool Loo
11510 6b 73 4c 69 6b 65 44 6f 75 62 6c 65 28 0d 0a 20  ksLikeDouble(.. 
11520 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65         string te
11530 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  xt..        ).. 
11540 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 64 6f     {..        do
11550 75 62 6c 65 20 64 6f 75 62 6c 65 56 61 6c 75 65  uble doubleValue
11560 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
11570 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
11580 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ORK..        if 
11590 28 21 64 6f 75 62 6c 65 2e 54 72 79 50 61 72 73  (!double.TryPars
115a0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
115b0 20 20 20 20 74 65 78 74 2c 20 4e 75 6d 62 65 72      text, Number
115c0 53 74 79 6c 65 73 2e 46 6c 6f 61 74 20 7c 20 4e  Styles.Float | N
115d0 75 6d 62 65 72 53 74 79 6c 65 73 2e 41 6c 6c 6f  umberStyles.Allo
115e0 77 54 68 6f 75 73 61 6e 64 73 2c 0d 0a 20 20 20  wThousands,..   
115f0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
11600 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
11610 6e 74 43 75 6c 74 75 72 65 2c 20 6f 75 74 20 64  ntCulture, out d
11620 6f 75 62 6c 65 56 61 6c 75 65 29 29 0d 0a 20 20  oubleValue))..  
11630 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11640 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
11650 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
11660 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74 72  else..        tr
11670 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
11680 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65            double
11690 56 61 6c 75 65 20 3d 20 64 6f 75 62 6c 65 2e 50  Value = double.P
116a0 61 72 73 65 28 74 65 78 74 2c 20 43 75 6c 74 75  arse(text, Cultu
116b0 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
116c0 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
116d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61     }..        ca
116e0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  tch..        {..
116f0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11700 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
11710 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
11720 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
11730 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20  tring.Equals(.. 
11740 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c             doubl
11750 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28  eValue.ToString(
11760 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
11770 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 74  riantCulture), t
11780 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ext,..          
11790 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73    StringComparis
117a0 6f 6e 2e 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20  on.Ordinal);..  
117b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
117c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
117d0 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
117e0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74 65  the specified te
117f0 78 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65  xtual value appe
11800 61 72 73 20 74 6f 20 62 65 20 61 0d 0a 20 20 20  ars to be a..   
11810 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
11820 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
11830 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ue...    /// </s
11840 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
11850 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
11860 6e 76 65 72 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  nvert">..    ///
11870 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
11880 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 22 20 2f  SQLiteConvert" /
11890 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
118a0 65 20 63 6f 6e 66 69 67 75 72 65 64 20 77 69 74  e configured wit
118b0 68 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 63  h..    /// the c
118c0 68 6f 73 65 6e 20 3c 73 65 65 20 63 72 65 66 3d  hosen <see cref=
118d0 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 66 6f  "DateTime" /> fo
118e0 72 6d 61 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rmat...    /// <
118f0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
11900 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65   <param name="te
11910 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  xt">..    /// Th
11920 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  e textual value 
11930 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20  to inspect...   
11940 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11950 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
11960 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
11970 72 6f 20 69 66 20 74 68 65 20 74 65 78 74 20 6c  ro if the text l
11980 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73 65 65  ooks like a <see
11990 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
119a0 20 2f 3e 20 69 6e 20 74 68 65 0d 0a 20 20 20 20   /> in the..    
119b0 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 66  /// configured f
119c0 6f 72 6d 61 74 2c 20 7a 65 72 6f 20 6f 74 68 65  ormat, zero othe
119d0 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
119e0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
119f0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11a00 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61  bool LooksLikeDa
11a10 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20  teTime(..       
11a20 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 20 63   SQLiteConvert c
11a30 6f 6e 76 65 72 74 2c 0d 0a 20 20 20 20 20 20 20  onvert,..       
11a40 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20   string text..  
11a50 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
11a60 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 76          if (conv
11a70 65 72 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ert == null)..  
11a80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11a90 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
11aa0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11ab0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
11ac0 61 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65  ateTime dateTime
11ad0 56 61 6c 75 65 20 3d 20 63 6f 6e 76 65 72 74 2e  Value = convert.
11ae0 54 6f 44 61 74 65 54 69 6d 65 28 74 65 78 74 29  ToDateTime(text)
11af0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11b00 20 69 66 20 28 53 74 72 69 6e 67 2e 45 71 75 61   if (String.Equa
11b10 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
11b20 20 20 20 20 20 20 20 20 20 63 6f 6e 76 65 72 74           convert
11b30 2e 54 6f 53 74 72 69 6e 67 28 64 61 74 65 54 69  .ToString(dateTi
11b40 6d 65 56 61 6c 75 65 29 2c 0d 0a 20 20 20 20 20  meValue),..     
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
11b60 65 78 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61  ext, StringCompa
11b70 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d  rison.Ordinal)).
11b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ba0 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
11bb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
11bc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11bd0 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b  catch..        {
11be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
11bf0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
11c00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11c10 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11c20 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11c30 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11c40 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
11c50 6e 20 74 65 78 74 75 61 6c 20 64 61 74 61 62 61  n textual databa
11c60 73 65 20 74 79 70 65 20 6e 61 6d 65 2c 20 72 65  se type name, re
11c70 74 75 72 6e 20 74 68 65 20 22 63 6c 6f 73 65 73  turn the "closes
11c80 74 2d 6d 61 74 63 68 22 20 64 61 74 61 62 61 73  t-match" databas
11c90 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e type...    ///
11ca0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
11cb0 63 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 71 75  called during qu
11cc0 65 72 79 20 72 65 73 75 6c 74 20 70 72 6f 63 65  ery result proce
11cd0 73 73 69 6e 67 3b 20 74 68 65 72 65 66 6f 72 65  ssing; therefore
11ce0 2c 20 69 74 73 20 70 65 72 66 6f 72 6d 61 6e 63  , its performanc
11cf0 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 73 20 63 72  e..    /// is cr
11d00 69 74 69 63 61 6c 2e 0d 0a 20 20 20 20 2f 2f 2f  itical...    ///
11d10 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11d20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11d30 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68  ="connection">Th
11d40 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  e connection con
11d50 74 65 78 74 20 66 6f 72 20 63 75 73 74 6f 6d 20  text for custom 
11d60 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69  type mappings, i
11d70 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  f any.</param>..
11d80 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
11d90 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e 54  ame="typeName">T
11da0 68 65 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20  he textual name 
11db0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
11dc0 74 79 70 65 20 74 6f 20 6d 61 74 63 68 2e 3c 2f  type to match.</
11dd0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
11de0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
11df0 67 73 22 3e 54 68 65 20 66 6c 61 67 73 20 61 73  gs">The flags as
11e00 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
11e10 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74  e parent connect
11e20 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72  ion object.</par
11e30 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
11e40 74 75 72 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44  turns>The .NET D
11e50 42 54 79 70 65 20 74 68 65 20 74 65 78 74 20 65  BType the text e
11e60 76 61 6c 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65  valuates to.</re
11e70 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
11e80 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54 79  rnal static DbTy
11e90 70 65 20 54 79 70 65 4e 61 6d 65 54 6f 44 62 54  pe TypeNameToDbT
11ea0 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ype(..        SQ
11eb0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
11ec0 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20  onnection,..    
11ed0 20 20 20 20 73 74 72 69 6e 67 20 74 79 70 65 4e      string typeN
11ee0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  ame,..        SQ
11ef0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
11f00 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
11f10 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
11f20 20 20 20 20 20 44 62 54 79 70 65 3f 20 64 65 66       DbType? def
11f30 61 75 6c 74 44 62 54 79 70 65 20 3d 20 6e 75 6c  aultDbType = nul
11f40 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
11f50 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20   (connection != 
11f60 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b  null)..        {
11f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6c  ..            fl
11f80 61 67 73 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f  ags |= connectio
11f90 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20  n.Flags;....    
11fa0 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61          if ((fla
11fb0 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gs & SQLiteConne
11fc0 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f  ctionFlags.UseCo
11fd0 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 20 3d  nnectionTypes) =
11fe0 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
11ff0 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65  onFlags.UseConne
12000 63 74 69 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20  ctionTypes)..   
12010 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12020 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12030 74 65 44 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e  teDbTypeMap conn
12040 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20  ectionTypeNames 
12050 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79  = connection._ty
12060 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20  peNames;....    
12070 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12080 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61  connectionTypeNa
12090 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  mes != null)..  
120a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
120b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
120c0 20 20 20 20 20 69 66 20 28 74 79 70 65 4e 61 6d       if (typeNam
120d0 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12100 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
12110 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
12120 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
12130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12140 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54   if (connectionT
12150 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56  ypeNames.TryGetV
12160 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f  alue(typeName, o
12170 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
12180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12190 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
121a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121b0 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
121c0 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  dataType;..     
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
121f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
12200 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12210 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12230 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
12240 6e 64 65 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e  ndex = typeName.
12250 49 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d  IndexOf('(');...
12260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
12280 28 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26 0d  ((index > 0) &&.
12290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
122a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122b0 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e   connectionTypeN
122c0 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65  ames.TryGetValue
122d0 28 74 79 70 65 4e 61 6d 65 2e 53 75 62 73 74 72  (typeName.Substr
122e0 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72  ing(0, index).Tr
122f0 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c  imEnd(), out val
12300 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12320 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12340 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
12350 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  e.dataType;..   
12360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12370 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12390 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
123a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
123c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
123d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
123e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
123f0 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64   NOTE: Use the d
12400 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
12410 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6e  type for the con
12420 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
12430 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
12440 20 20 20 20 20 20 64 65 66 61 75 6c 74 44 62 54        defaultDbT
12450 79 70 65 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  ype = connection
12460 2e 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  .DefaultDbType;.
12470 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
12480 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73        if ((flags
12490 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
124a0 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61  ionFlags.NoGloba
124b0 6c 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74  lTypes) == SQLit
124c0 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
124d0 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d  .NoGlobalTypes).
124e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
124f0 20 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61          if (defa
12500 75 6c 74 44 62 54 79 70 65 20 21 3d 20 6e 75 6c  ultDbType != nul
12510 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
12520 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79      return (DbTy
12530 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65  pe)defaultDbType
12540 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12550 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d   defaultDbType =
12560 20 47 65 74 44 65 66 61 75 6c 74 44 62 54 79 70   GetDefaultDbTyp
12570 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a  e(connection);..
12580 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
12590 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57  CT_20 && TRACE_W
125a0 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20  ARNING..        
125b0 20 20 20 20 44 65 66 61 75 6c 74 44 62 54 79 70      DefaultDbTyp
125c0 65 57 61 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d  eWarning(typeNam
125d0 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c  e, flags, defaul
125e0 74 44 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69  tDbType);..#endi
125f0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  f....           
12600 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
12610 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  defaultDbType;..
12620 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12630 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63       lock (_sync
12640 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  Root)..        {
12650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12660 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20   (_typeNames == 
12670 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12680 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65         _typeName
12690 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44 62 54  s = GetSQLiteDbT
126a0 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20  ypeMap();....   
126b0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70           if (typ
126c0 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eName != null)..
126d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
126e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
126f0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
12700 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ng value;....   
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
12720 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47  (_typeNames.TryG
12730 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65  etValue(typeName
12740 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
12750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12770 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
12780 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20  ue.dataType;..  
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
127a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127b0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
127c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
127e0 74 20 69 6e 64 65 78 20 3d 20 74 79 70 65 4e 61  t index = typeNa
127f0 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27 29 3b  me.IndexOf('(');
12800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12810 20 20 20 20 20 20 20 20 69 66 20 28 28 69 6e 64          if ((ind
12820 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20  ex > 0) &&..    
12830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12840 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54      _typeNames.T
12850 72 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e  ryGetValue(typeN
12860 61 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c  ame.Substring(0,
12870 20 69 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28   index).TrimEnd(
12880 29 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  ), out value))..
12890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
128c0 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61  eturn value.data
128d0 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
128e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
128f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12900 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
12910 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12920 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74       if (default
12930 44 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d  DbType != null).
12940 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
12950 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66 61  urn (DbType)defa
12960 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20  ultDbType;....  
12970 20 20 20 20 20 20 64 65 66 61 75 6c 74 44 62 54        defaultDbT
12980 79 70 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74  ype = GetDefault
12990 44 62 54 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f  DbType(connectio
129a0 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f  n);....#if !NET_
129b0 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52  COMPACT_20 && TR
129c0 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20  ACE_WARNING..   
129d0 20 20 20 20 20 44 65 66 61 75 6c 74 44 62 54 79       DefaultDbTy
129e0 70 65 57 61 72 6e 69 6e 67 28 74 79 70 65 4e 61  peWarning(typeNa
129f0 6d 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75  me, flags, defau
12a00 6c 74 44 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64  ltDbType);..#end
12a10 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  if....        re
12a20 74 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66  turn (DbType)def
12a30 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20  aultDbType;..   
12a40 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
12a50 6f 6e 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74  on....    privat
12a60 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20  e static object 
12a70 5f 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20  _syncRoot = new 
12a80 6f 62 6a 65 63 74 28 29 3b 0d 0a 20 20 20 20 70  object();..    p
12a90 72 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51  rivate static SQ
12aa0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 5f 74  LiteDbTypeMap _t
12ab0 79 70 65 4e 61 6d 65 73 20 3d 20 6e 75 6c 6c 3b  ypeNames = null;
12ac0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
12ad0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
12ae0 53 51 4c 69 74 65 20 68 61 73 20 76 65 72 79 20  SQLite has very 
12af0 6c 69 6d 69 74 65 64 20 74 79 70 65 73 2c 20 61  limited types, a
12b00 6e 64 20 69 73 20 69 6e 68 65 72 65 6e 74 6c 79  nd is inherently
12b10 20 74 65 78 74 2d 62 61 73 65 64 2e 20 20 54 68   text-based.  Th
12b20 65 20 66 69 72 73 74 20 35 20 74 79 70 65 73 20  e first 5 types 
12b30 62 65 6c 6f 77 20 72 65 70 72 65 73 65 6e 74 20  below represent 
12b40 74 68 65 20 73 75 6d 20 6f 66 20 61 6c 6c 20 74  the sum of all t
12b50 79 70 65 73 20 53 51 4c 69 74 65 0d 0a 20 20 2f  ypes SQLite..  /
12b60 2f 2f 20 75 6e 64 65 72 73 74 61 6e 64 73 2e 20  // understands. 
12b70 20 54 68 65 20 44 61 74 65 54 69 6d 65 20 65 78   The DateTime ex
12b80 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68 65 20 73  tension to the s
12b90 70 65 63 20 69 73 20 66 6f 72 20 69 6e 74 65 72  pec is for inter
12ba0 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20  nal use only... 
12bb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12bc0 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 54  .  public enum T
12bd0 79 70 65 41 66 66 69 6e 69 74 79 0d 0a 20 20 7b  ypeAffinity..  {
12be0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
12bf0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74  ry>..    /// Not
12c00 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c   used..    /// <
12c10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55  /summary>..    U
12c20 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 3d 20 30  ninitialized = 0
12c30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
12c40 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c  ary>..    /// Al
12c50 6c 20 69 6e 74 65 67 65 72 73 20 69 6e 20 53 51  l integers in SQ
12c60 4c 69 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20  Lite default to 
12c70 49 6e 74 36 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Int64..    /// <
12c80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49  /summary>..    I
12c90 6e 74 36 34 20 3d 20 31 2c 0d 0a 20 20 20 20 2f  nt64 = 1,..    /
12ca0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12cb0 20 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f 61 74 69    /// All floati
12cc0 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73  ng point numbers
12cd0 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66 61 75   in SQLite defau
12ce0 6c 74 20 74 6f 20 64 6f 75 62 6c 65 0d 0a 20 20  lt to double..  
12cf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12d00 0d 0a 20 20 20 20 44 6f 75 62 6c 65 20 3d 20 32  ..    Double = 2
12d10 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
12d20 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
12d30 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 20 74  e default data t
12d40 79 70 65 20 6f 66 20 53 51 4c 69 74 65 20 69 73  ype of SQLite is
12d50 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c   text..    /// <
12d60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54  /summary>..    T
12d70 65 78 74 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f  ext = 3,..    //
12d80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12d90 20 2f 2f 2f 20 54 79 70 69 63 61 6c 6c 79 20 62   /// Typically b
12da0 6c 6f 62 20 74 79 70 65 73 20 61 72 65 20 6f 6e  lob types are on
12db0 6c 79 20 73 65 65 6e 20 77 68 65 6e 20 72 65 74  ly seen when ret
12dc0 75 72 6e 65 64 20 66 72 6f 6d 20 61 20 66 75 6e  urned from a fun
12dd0 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ction..    /// <
12de0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 42  /summary>..    B
12df0 6c 6f 62 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f  lob = 4,..    //
12e00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12e10 20 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70 65 73 20   /// Null types 
12e20 63 61 6e 20 62 65 20 72 65 74 75 72 6e 65 64 20  can be returned 
12e30 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 0d 0a  from functions..
12e40 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12e50 79 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20 3d 20 35  y>..    Null = 5
12e60 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
12e70 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73  ary>..    /// Us
12e80 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79  ed internally by
12e90 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 0d 0a   this provider..
12ea0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12eb0 79 3e 0d 0a 20 20 20 20 44 61 74 65 54 69 6d 65  y>..    DateTime
12ec0 20 3d 20 31 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20   = 10,..    /// 
12ed0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
12ee0 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c  // Used internal
12ef0 6c 79 20 62 79 20 74 68 69 73 20 70 72 6f 76 69  ly by this provi
12f00 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  der..    /// </s
12f10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 6f 6e  ummary>..    Non
12f20 65 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d 0a 0d 0a  e = 11,..  }....
12f30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12f40 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72 65  .  /// These are
12f50 20 74 68 65 20 65 76 65 6e 74 20 74 79 70 65 73   the event types
12f60 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
12f70 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65   the..  /// <see
12f80 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e   cref="SQLiteCon
12f90 6e 65 63 74 69 6f 6e 45 76 65 6e 74 48 61 6e 64  nectionEventHand
12fa0 6c 65 72 22 20 2f 3e 0d 0a 20 20 2f 2f 2f 20 64  ler" />..  /// d
12fb0 65 6c 65 67 61 74 65 20 28 61 6e 64 20 69 74 73  elegate (and its
12fc0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65   corresponding e
12fd0 76 65 6e 74 29 20 61 6e 64 20 74 68 65 0d 0a 20  vent) and the.. 
12fe0 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
12ff0 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41  ConnectionEventA
13000 72 67 73 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a  rgs" /> class...
13010 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13020 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
13030 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
13040 45 76 65 6e 74 54 79 70 65 0d 0a 20 20 7b 0d 0a  EventType..  {..
13050 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13060 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
13070 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  ot used...      
13080 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13090 20 20 20 20 20 20 49 6e 76 61 6c 69 64 20 3d 20        Invalid = 
130a0 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  -1,....      ///
130b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
130c0 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d    /// Not used..
130d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
130e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55 6e 6b  mary>..      Unk
130f0 6e 6f 77 6e 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20  nown = 0,....   
13100 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13110 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13120 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65  connection is be
13130 69 6e 67 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20  ing opened...   
13140 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13150 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 69 6e 67  >..      Opening
13160 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
13170 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13180 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
13190 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 68 61  ection string ha
131a0 73 20 62 65 65 6e 20 70 61 72 73 65 64 2e 0d 0a  s been parsed...
131b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
131c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 6e  ary>..      Conn
131d0 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 32  ectionString = 2
131e0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
131f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13200 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
13210 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a  on was opened...
13220 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13230 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e  ary>..      Open
13240 65 64 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20  ed = 3,....     
13250 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13260 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
13270 65 65 20 63 72 65 66 3d 22 43 68 61 6e 67 65 44  ee cref="ChangeD
13280 61 74 61 62 61 73 65 22 20 2f 3e 20 6d 65 74 68  atabase" /> meth
13290 6f 64 20 77 61 73 20 63 61 6c 6c 65 64 20 6f 6e  od was called on
132a0 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
132b0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
132c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
132d0 3e 0d 0a 20 20 20 20 20 20 43 68 61 6e 67 65 44  >..      ChangeD
132e0 61 74 61 62 61 73 65 20 3d 20 34 2c 0d 0a 0d 0a  atabase = 4,....
132f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13300 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
13310 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 61 73   transaction was
13320 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74   created using t
13330 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
13340 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13350 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 54  ary>..      NewT
13360 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 35 2c 0d  ransaction = 5,.
13370 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13380 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13390 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
133a0 20 77 61 73 20 65 6e 6c 69 73 74 65 64 20 69 6e   was enlisted in
133b0 74 6f 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  to a transaction
133c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
133d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 45  ummary>..      E
133e0 6e 6c 69 73 74 54 72 61 6e 73 61 63 74 69 6f 6e  nlistTransaction
133f0 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 6,....      /
13400 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13410 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e      /// A comman
13420 64 20 77 61 73 20 63 72 65 61 74 65 64 20 75 73  d was created us
13430 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ing the connecti
13440 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
13450 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13460 20 4e 65 77 43 6f 6d 6d 61 6e 64 20 3d 20 37 2c   NewCommand = 7,
13470 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13480 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13490 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72  // A data reader
134a0 20 77 61 73 20 63 72 65 61 74 65 64 20 75 73 69   was created usi
134b0 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  ng the connectio
134c0 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
134d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
134e0 4e 65 77 44 61 74 61 52 65 61 64 65 72 20 3d 20  NewDataReader = 
134f0 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  8,....      /// 
13500 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13510 20 2f 2f 2f 20 41 6e 20 69 6e 73 74 61 6e 63 65   /// An instance
13520 20 6f 66 20 61 20 3c 73 65 65 20 63 72 65 66 3d   of a <see cref=
13530 22 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 22  "CriticalHandle"
13540 20 2f 3e 20 64 65 72 69 76 65 64 20 63 6c 61 73   /> derived clas
13550 73 20 68 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  s has..      ///
13560 20 62 65 65 6e 20 63 72 65 61 74 65 64 20 74 6f   been created to
13570 20 77 72 61 70 20 61 20 6e 61 74 69 76 65 20 72   wrap a native r
13580 65 73 6f 75 72 63 65 2e 0d 0a 20 20 20 20 20 20  esource...      
13590 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
135a0 20 20 20 20 20 20 4e 65 77 43 72 69 74 69 63 61        NewCritica
135b0 6c 48 61 6e 64 6c 65 20 3d 20 39 2c 0d 0a 0d 0a  lHandle = 9,....
135c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
135d0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
135e0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  he connection is
135f0 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a   being closed...
13600 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13610 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73  ary>..      Clos
13620 69 6e 67 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20  ing = 10,....   
13630 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13640 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13650 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 63  connection was c
13660 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
13670 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13680 20 20 20 20 43 6c 6f 73 65 64 20 3d 20 31 31 2c      Closed = 11,
13690 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
136a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
136b0 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20  // A command is 
136c0 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d  being disposed..
136d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
136e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 69 73  mary>..      Dis
136f0 70 6f 73 69 6e 67 43 6f 6d 6d 61 6e 64 20 3d 20  posingCommand = 
13700 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  12,....      ///
13710 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13720 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61    /// A data rea
13730 64 65 72 20 69 73 20 62 65 69 6e 67 20 64 69 73  der is being dis
13740 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  posed...      //
13750 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13760 20 20 20 20 44 69 73 70 6f 73 69 6e 67 44 61 74      DisposingDat
13770 61 52 65 61 64 65 72 20 3d 20 31 33 2c 0d 0a 0d  aReader = 13,...
13780 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13790 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
137a0 41 20 64 61 74 61 20 72 65 61 64 65 72 20 69 73  A data reader is
137b0 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a   being closed...
137c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
137d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73  ary>..      Clos
137e0 69 6e 67 44 61 74 61 52 65 61 64 65 72 20 3d 20  ingDataReader = 
137f0 31 34 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  14..  }....  ///
13800 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
13810 2f 20 54 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74  / This implement
13820 61 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20  ation of SQLite 
13830 66 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61 6e 20  for ADO.NET can 
13840 70 72 6f 63 65 73 73 20 64 61 74 65 2f 74 69 6d  process date/tim
13850 65 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20 20 2f  e fields in..  /
13860 2f 2f 20 64 61 74 61 62 61 73 65 73 20 69 6e 20  // databases in 
13870 6f 6e 65 20 6f 66 20 73 69 78 20 66 6f 72 6d 61  one of six forma
13880 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ts...  /// </sum
13890 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65  mary>..  /// <re
138a0 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53  marks>..  /// IS
138b0 4f 38 36 30 31 20 66 6f 72 6d 61 74 20 69 73 20  O8601 format is 
138c0 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 2c  more compatible,
138d0 20 72 65 61 64 61 62 6c 65 2c 20 66 75 6c 6c 79   readable, fully
138e0 2d 70 72 6f 63 65 73 73 61 62 6c 65 2c 20 62 75  -processable, bu
138f0 74 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20 61 63  t less..  /// ac
13900 63 75 72 61 74 65 20 61 73 20 69 74 20 64 6f 65  curate as it doe
13910 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 74 69  s not provide ti
13920 6d 65 20 64 6f 77 6e 20 74 6f 20 66 72 61 63 74  me down to fract
13930 69 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f 6e 64  ions of a second
13940 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44  ...  /// JulianD
13950 61 79 20 69 73 20 74 68 65 20 6e 75 6d 65 72 69  ay is the numeri
13960 63 20 66 6f 72 6d 61 74 20 74 68 65 20 53 51 4c  c format the SQL
13970 69 74 65 20 75 73 65 73 20 69 6e 74 65 72 6e 61  ite uses interna
13980 6c 6c 79 20 61 6e 64 20 69 73 20 61 72 67 75 61  lly and is argua
13990 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65 20 6d  bly..  /// the m
139a0 6f 73 74 20 63 6f 6d 70 61 74 69 62 6c 65 20 77  ost compatible w
139b0 69 74 68 20 33 72 64 20 70 61 72 74 79 20 74 6f  ith 3rd party to
139c0 6f 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f 74 20  ols.  It is not 
139d0 72 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74  readable as text
139e0 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20  ..  /// without 
139f0 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e  post-processing.
13a00 20 20 54 69 63 6b 73 20 6c 65 73 73 20 63 6f 6d    Ticks less com
13a10 70 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64  patible with 3rd
13a20 20 70 61 72 74 79 20 74 6f 6f 6c 73 20 74 68 61   party tools tha
13a30 74 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79 20 74  t..  /// query t
13a40 68 65 20 64 61 74 61 62 61 73 65 2c 20 61 6e 64  he database, and
13a50 20 72 65 6e 64 65 72 73 20 74 68 65 20 44 61 74   renders the Dat
13a60 65 54 69 6d 65 20 66 69 65 6c 64 20 75 6e 72 65  eTime field unre
13a70 61 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d 0a  adable as text..
13a80 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70 6f    /// without po
13a90 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20 20  st-processing.  
13aa0 55 6e 69 78 45 70 6f 63 68 20 69 73 20 6d 6f 72  UnixEpoch is mor
13ab0 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74  e compatible wit
13ac0 68 20 55 6e 69 78 20 73 79 73 74 65 6d 73 2e 0d  h Unix systems..
13ad0 0a 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61 6e 74  .  /// Invariant
13ae0 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74  Culture allows t
13af0 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f  he configured fo
13b00 72 6d 61 74 20 66 6f 72 20 74 68 65 20 69 6e 76  rmat for the inv
13b10 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 0d 0a  ariant culture..
13b20 20 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74 6f 20    /// format to 
13b30 62 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 68  be used and is h
13b40 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e 20 20  uman readable.  
13b50 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 61  CurrentCulture a
13b60 6c 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f 2f 2f  llows the..  ///
13b70 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d   configured form
13b80 61 74 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  at for the curre
13b90 6e 74 20 63 75 6c 74 75 72 65 20 74 6f 20 62 65  nt culture to be
13ba0 20 75 73 65 64 20 61 6e 64 20 69 73 20 61 6c 73   used and is als
13bb0 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f 20 72  o human..  /// r
13bc0 65 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f 2f 0d  eadable...  ///.
13bd0 0a 20 20 2f 2f 2f 20 54 68 65 20 70 72 65 66 65  .  /// The prefe
13be0 72 72 65 64 20 6f 72 64 65 72 20 6f 66 20 63 68  rred order of ch
13bf0 6f 6f 73 69 6e 67 20 61 20 44 61 74 65 54 69 6d  oosing a DateTim
13c00 65 20 66 6f 72 6d 61 74 20 69 73 20 4a 75 6c 69  e format is Juli
13c10 61 6e 44 61 79 2c 20 49 53 4f 38 36 30 31 2c 0d  anDay, ISO8601,.
13c20 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 6e 20  .  /// and then 
13c30 54 69 63 6b 73 2e 20 20 54 69 63 6b 73 20 69 73  Ticks.  Ticks is
13c40 20 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e 74 20   mainly present 
13c50 66 6f 72 20 6c 65 67 61 63 79 20 63 6f 64 65 20  for legacy code 
13c60 73 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f 2f 20  support...  /// 
13c70 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75  </remarks>..  pu
13c80 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
13c90 44 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20 20 7b  DateFormats..  {
13ca0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
13cb0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65  ry>..    /// Use
13cc0 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 44 61   the value of Da
13cd0 74 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20 20 54  teTime.Ticks.  T
13ce0 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e 6f 74  his value is not
13cf0 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61 6e 64   recommended and
13d00 20 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73 75 70   is not well sup
13d10 70 6f 72 74 65 64 20 77 69 74 68 20 4c 49 4e 51  ported with LINQ
13d20 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
13d30 6d 61 72 79 3e 0d 0a 20 20 20 20 54 69 63 6b 73  mary>..    Ticks
13d40 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 0,..    /// <
13d50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
13d60 2f 20 55 73 65 20 74 68 65 20 49 53 4f 2d 38 36  / Use the ISO-86
13d70 30 31 20 66 6f 72 6d 61 74 2e 20 20 55 73 65 73  01 format.  Uses
13d80 20 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d 64 64   the "yyyy-MM-dd
13d90 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
13da0 46 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 55  FK" format for U
13db0 54 43 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  TC DateTime valu
13dc0 65 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  es and..    /// 
13dd0 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  "yyyy-MM-dd HH:m
13de0 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 20 66 6f  m:ss.FFFFFFF" fo
13df0 72 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c 20 44  rmat for local D
13e00 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 29 2e  ateTime values).
13e10 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
13e20 61 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38 36 30  ary>..    ISO860
13e30 31 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  1 = 1,..    /// 
13e40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
13e50 2f 2f 20 54 68 65 20 69 6e 74 65 72 76 61 6c 20  // The interval 
13e60 6f 66 20 74 69 6d 65 20 69 6e 20 64 61 79 73 20  of time in days 
13e70 61 6e 64 20 66 72 61 63 74 69 6f 6e 73 20 6f 66  and fractions of
13e80 20 61 20 64 61 79 20 73 69 6e 63 65 20 4a 61 6e   a day since Jan
13e90 75 61 72 79 20 31 2c 20 34 37 31 33 20 42 43 2e  uary 1, 4713 BC.
13ea0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
13eb0 61 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69 61 6e  ary>..    Julian
13ec0 44 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f  Day = 2,..    //
13ed0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13ee0 20 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65 20 6e   /// The whole n
13ef0 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
13f00 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
13f10 65 70 6f 63 68 20 28 4a 61 6e 75 61 72 79 20 31  epoch (January 1
13f20 2c 20 31 39 37 30 29 2e 0d 0a 20 20 20 20 2f 2f  , 1970)...    //
13f30 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13f40 20 20 55 6e 69 78 45 70 6f 63 68 20 3d 20 33 2c    UnixEpoch = 3,
13f50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
13f60 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79  ry>..    /// Any
13f70 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e   culture-indepen
13f80 64 65 6e 74 20 73 74 72 69 6e 67 20 76 61 6c 75  dent string valu
13f90 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20  e that the .NET 
13fa0 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e  Framework can in
13fb0 74 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c  terpret as a val
13fc0 69 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20  id DateTime...  
13fd0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13fe0 0d 0a 20 20 20 20 49 6e 76 61 72 69 61 6e 74 43  ..    InvariantC
13ff0 75 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20 20 20  ulture = 4,..   
14000 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14010 20 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74 72 69      /// Any stri
14020 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20 74 68  ng value that th
14030 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
14040 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61   can interpret a
14050 73 20 61 20 76 61 6c 69 64 20 44 61 74 65 54 69  s a valid DateTi
14060 6d 65 20 75 73 69 6e 67 20 74 68 65 20 63 75 72  me using the cur
14070 72 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d 0a 20  rent culture... 
14080 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14090 3e 0d 0a 20 20 20 20 43 75 72 72 65 6e 74 43 75  >..    CurrentCu
140a0 6c 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20 20 20  lture = 5,..    
140b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
140c0 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75     /// The defau
140d0 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68  lt format for th
140e0 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20  is provider...  
140f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14100 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20  ..    Default = 
14110 49 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a 0d 0a  ISO8601..  }....
14120 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14130 0a 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d  .  /// This enum
14140 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f 77 20   determines how 
14150 53 51 4c 69 74 65 20 74 72 65 61 74 73 20 69 74  SQLite treats it
14160 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0d  s journal file..
14170 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
14180 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b  >..  /// <remark
14190 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64 65 66  s>..  /// By def
141a0 61 75 6c 74 20 53 51 4c 69 74 65 20 77 69 6c 6c  ault SQLite will
141b0 20 63 72 65 61 74 65 20 61 6e 64 20 64 65 6c 65   create and dele
141c0 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66  te the journal f
141d0 69 6c 65 20 77 68 65 6e 20 6e 65 65 64 65 64 20  ile when needed 
141e0 64 75 72 69 6e 67 20 61 20 74 72 61 6e 73 61 63  during a transac
141f0 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48 6f 77  tion...  /// How
14200 65 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65 20 63  ever, for some c
14210 6f 6d 70 75 74 65 72 73 20 72 75 6e 6e 69 6e 67  omputers running
14220 20 63 65 72 74 61 69 6e 20 66 69 6c 65 73 79 73   certain filesys
14230 74 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67 20 74  tem monitoring t
14240 6f 6f 6c 73 2c 20 74 68 65 20 72 61 70 69 64 0d  ools, the rapid.
14250 0a 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f 6e 20  .  /// creation 
14260 61 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f 66 20  and deletion of 
14270 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
14280 20 63 61 6e 20 63 61 75 73 65 20 74 68 6f 73 65   can cause those
14290 20 70 72 6f 67 72 61 6d 73 20 74 6f 20 66 61 69   programs to fai
142a0 6c 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72 66 65  l, or to interfe
142b0 72 65 20 77 69 74 68 20 53 51 4c 69 74 65 2e 0d  re with SQLite..
142c0 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 49 66  .  ///..  /// If
142d0 20 61 20 70 72 6f 67 72 61 6d 20 6f 72 20 76 69   a program or vi
142e0 72 75 73 20 73 63 61 6e 6e 65 72 20 69 73 20 69  rus scanner is i
142f0 6e 74 65 72 66 65 72 69 6e 67 20 77 69 74 68 20  nterfering with 
14300 53 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e 61 6c  SQLite's journal
14310 20 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79 20 72   file, you may r
14320 65 63 65 69 76 65 20 65 72 72 6f 72 73 20 6c 69  eceive errors li
14330 6b 65 20 22 75 6e 61 62 6c 65 20 74 6f 20 6f 70  ke "unable to op
14340 65 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  en database file
14350 22 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20 73 74  "..  /// when st
14360 61 72 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63  arting a transac
14370 74 69 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 69  tion.  If this i
14380 73 20 68 61 70 70 65 6e 69 6e 67 2c 20 79 6f 75  s happening, you
14390 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 63 68 61   may want to cha
143a0 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  nge the default 
143b0 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74 6f 20  journal mode to 
143c0 50 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f 2f 20  Persist...  /// 
143d0 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75  </remarks>..  pu
143e0 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
143f0 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 0d  JournalModeEnum.
14400 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  .  {..    /// <s
14410 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14420 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64   The default mod
14430 65 2c 20 74 68 69 73 20 63 61 75 73 65 73 20 53  e, this causes S
14440 51 4c 69 74 65 20 74 6f 20 75 73 65 20 74 68 65  QLite to use the
14450 20 65 78 69 73 74 69 6e 67 20 6a 6f 75 72 6e 61   existing journa
14460 6c 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20 74 68  ling mode for th
14470 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20  e database...   
14480 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14490 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 2d  .    Default = -
144a0 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  1,..    /// <sum
144b0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  mary>..    /// S
144c0 51 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74  QLite will creat
144d0 65 20 61 6e 64 20 64 65 73 74 72 6f 79 20 74 68  e and destroy th
144e0 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61  e journal file a
144f0 73 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f  s-needed...    /
14500 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14510 20 20 20 44 65 6c 65 74 65 20 3d 20 30 2c 0d 0a     Delete = 0,..
14520 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14530 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  >..    /// When 
14540 74 68 69 73 20 69 73 20 73 65 74 2c 20 53 51 4c  this is set, SQL
14550 69 74 65 20 77 69 6c 6c 20 6b 65 65 70 20 74 68  ite will keep th
14560 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 65  e journal file e
14570 76 65 6e 20 61 66 74 65 72 20 61 20 74 72 61 6e  ven after a tran
14580 73 61 63 74 69 6f 6e 20 68 61 73 20 63 6f 6d 70  saction has comp
14590 6c 65 74 65 64 2e 20 20 49 74 27 73 20 63 6f 6e  leted.  It's con
145a0 74 65 6e 74 73 20 77 69 6c 6c 20 62 65 20 65 72  tents will be er
145b0 61 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61  ased,..    /// a
145c0 6e 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 72  nd the journal r
145d0 65 2d 75 73 65 64 20 61 73 20 6f 66 74 65 6e 20  e-used as often 
145e0 61 73 20 6e 65 65 64 65 64 2e 20 20 49 66 20 69  as needed.  If i
145f0 74 20 69 73 20 64 65 6c 65 74 65 64 2c 20 69 74  t is deleted, it
14600 20 77 69 6c 6c 20 62 65 20 72 65 63 72 65 61 74   will be recreat
14610 65 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d 65  ed the next time
14620 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e 0d 0a   it is needed...
14630 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14640 79 3e 0d 0a 20 20 20 20 50 65 72 73 69 73 74 20  y>..    Persist 
14650 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 1,..    /// <s
14660 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14670 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73   This option dis
14680 61 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c 62 61  ables the rollba
14690 63 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74 69 72  ck journal entir
146a0 65 6c 79 2e 20 20 49 6e 74 65 72 72 75 70 74 65  ely.  Interrupte
146b0 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f  d transactions o
146c0 72 20 61 20 70 72 6f 67 72 61 6d 20 63 72 61 73  r a program cras
146d0 68 20 63 61 6e 20 63 61 75 73 65 20 64 61 74 61  h can cause data
146e0 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f  base..    /// co
146f0 72 72 75 70 74 69 6f 6e 20 69 6e 20 74 68 69 73  rruption in this
14700 20 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f 2f 20   mode!..    /// 
14710 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14720 4f 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f  Off = 2,..    //
14730 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14740 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c   /// SQLite will
14750 20 74 72 75 6e 63 61 74 65 20 74 68 65 20 6a 6f   truncate the jo
14760 75 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20 7a 65  urnal file to ze
14770 72 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74 65 61  ro-length instea
14780 64 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 69 74  d of deleting it
14790 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
147a0 6d 61 72 79 3e 0d 0a 20 20 20 20 54 72 75 6e 63  mary>..    Trunc
147b0 61 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f  ate = 3,..    //
147c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
147d0 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c   /// SQLite will
147e0 20 73 74 6f 72 65 20 74 68 65 20 6a 6f 75 72 6e   store the journ
147f0 61 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65 20 52  al in volatile R
14800 41 4d 2e 20 20 54 68 69 73 20 73 61 76 65 73 20  AM.  This saves 
14810 64 69 73 6b 20 49 2f 4f 20 62 75 74 20 61 74 20  disk I/O but at 
14820 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20 64  the expense of d
14830 61 74 61 62 61 73 65 20 73 61 66 65 74 79 20 61  atabase safety a
14840 6e 64 20 69 6e 74 65 67 72 69 74 79 2e 0d 0a 20  nd integrity... 
14850 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 61 70     /// If the ap
14860 70 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20  plication using 
14870 53 51 4c 69 74 65 20 63 72 61 73 68 65 73 20 69  SQLite crashes i
14880 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
14890 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 68  a transaction wh
148a0 65 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20 6a 6f  en the MEMORY jo
148b0 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73  urnaling mode is
148c0 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65 0d 0a   set, then the..
148d0 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65      /// database
148e0 20 66 69 6c 65 20 77 69 6c 6c 20 76 65 72 79 20   file will very 
148f0 6c 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72 75 70  likely go corrup
14900 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  t...    /// </su
14910 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65 6d 6f  mmary>..    Memo
14920 72 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f  ry = 4,..    ///
14930 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14940 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65 73 20  /// SQLite uses 
14950 61 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f  a write-ahead lo
14960 67 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 72  g instead of a r
14970 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20  ollback journal 
14980 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 72 61  to implement tra
14990 6e 73 61 63 74 69 6f 6e 73 2e 20 20 54 68 65 20  nsactions.  The 
149a0 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d  WAL journaling m
149b0 6f 64 65 20 69 73 20 70 65 72 73 69 73 74 65 6e  ode is persisten
149c0 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66 74 65  t;..    /// afte
149d0 72 20 62 65 69 6e 67 20 73 65 74 20 69 74 20 73  r being set it s
149e0 74 61 79 73 20 69 6e 20 65 66 66 65 63 74 20 61  tays in effect a
149f0 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65 20 64  cross multiple d
14a00 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
14a10 6f 6e 73 20 61 6e 64 20 61 66 74 65 72 20 63 6c  ons and after cl
14a20 6f 73 69 6e 67 20 61 6e 64 20 72 65 6f 70 65 6e  osing and reopen
14a30 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
14a40 2e 20 41 20 64 61 74 61 62 61 73 65 0d 0a 20 20  . A database..  
14a50 20 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a 6f 75    /// in WAL jou
14a60 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63 61 6e  rnaling mode can
14a70 20 6f 6e 6c 79 20 62 65 20 61 63 63 65 73 73 65   only be accesse
14a80 64 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73  d by SQLite vers
14a90 69 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c 61 74  ion 3.7.0 or lat
14aa0 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  er...    /// </s
14ab0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57 61 6c  ummary>..    Wal
14ac0 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f   = 5..  }....  /
14ad0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14ae0 2f 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76 61 6c  /// Possible val
14af0 75 65 73 20 66 6f 72 20 74 68 65 20 22 73 79 6e  ues for the "syn
14b00 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61  chronous" databa
14b10 73 65 20 73 65 74 74 69 6e 67 2e 20 20 54 68 69  se setting.  Thi
14b20 73 20 73 65 74 74 69 6e 67 20 64 65 74 65 72 6d  s setting determ
14b30 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f 77 20  ines..  /// how 
14b40 6f 66 74 65 6e 20 74 68 65 20 64 61 74 61 62 61  often the databa
14b50 73 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c 73 20  se engine calls 
14b60 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64  the xSync method
14b70 20 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a 20 20   of the VFS...  
14b80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14b90 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20    internal enum 
14ba0 53 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e 6f 75  SQLiteSynchronou
14bb0 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  sEnum..  {..    
14bc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14bd0 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  .      /// Use t
14be0 68 65 20 64 65 66 61 75 6c 74 20 22 73 79 6e 63  he default "sync
14bf0 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61 73  hronous" databas
14c00 65 20 73 65 74 74 69 6e 67 2e 20 20 43 75 72 72  e setting.  Curr
14c10 65 6e 74 6c 79 2c 20 74 68 69 73 20 73 68 6f 75  ently, this shou
14c20 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  ld be..      ///
14c30 20 74 68 65 20 73 61 6d 65 20 61 73 20 75 73 69   the same as usi
14c40 6e 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f 64 65  ng the FULL mode
14c50 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
14c60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
14c70 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 0d 0a  efault = -1,....
14c80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
14c90 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
14ca0 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
14cb0 6e 65 20 63 6f 6e 74 69 6e 75 65 73 20 77 69 74  ne continues wit
14cc0 68 6f 75 74 20 73 79 6e 63 69 6e 67 20 61 73 20  hout syncing as 
14cd0 73 6f 6f 6e 20 61 73 20 69 74 20 68 61 73 20 68  soon as it has h
14ce0 61 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  anded..      ///
14cf0 20 64 61 74 61 20 6f 66 66 20 74 6f 20 74 68 65   data off to the
14d00 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
14d10 6d 2e 20 20 49 66 20 74 68 65 20 61 70 70 6c 69  m.  If the appli
14d20 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53  cation running S
14d30 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  QLite..      ///
14d40 20 63 72 61 73 68 65 73 2c 20 74 68 65 20 64 61   crashes, the da
14d50 74 61 20 77 69 6c 6c 20 62 65 20 73 61 66 65 2c  ta will be safe,
14d60 20 62 75 74 20 74 68 65 20 64 61 74 61 62 61 73   but the databas
14d70 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 63  e might become c
14d80 6f 72 72 75 70 74 65 64 0d 0a 20 20 20 20 20 20  orrupted..      
14d90 2f 2f 2f 20 69 66 20 74 68 65 20 6f 70 65 72 61  /// if the opera
14da0 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73  ting system cras
14db0 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70 75  hes or the compu
14dc0 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65 72 20  ter loses power 
14dd0 62 65 66 6f 72 65 20 74 68 61 74 0d 0a 20 20 20  before that..   
14de0 20 20 20 2f 2f 2f 20 64 61 74 61 20 68 61 73 20     /// data has 
14df0 62 65 65 6e 20 77 72 69 74 74 65 6e 20 74 6f 20  been written to 
14e00 74 68 65 20 64 69 73 6b 20 73 75 72 66 61 63 65  the disk surface
14e10 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
14e20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f  ummary>..      O
14e30 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20  ff = 0,....     
14e40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14e50 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61        /// The da
14e60 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69  tabase engine wi
14e70 6c 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20 61 74  ll still sync at
14e80 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74 69 63   the most critic
14e90 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75 74 0d  al moments, but.
14ea0 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20  .      /// less 
14eb0 6f 66 74 65 6e 20 74 68 61 6e 20 69 6e 20 46 55  often than in FU
14ec0 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72 65 20  LL mode.  There 
14ed0 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c 6c 20  is a very small 
14ee0 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f  (though non-zero
14ef0 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 68 61  )..      /// cha
14f00 6e 63 65 20 74 68 61 74 20 61 20 70 6f 77 65 72  nce that a power
14f10 20 66 61 69 6c 75 72 65 20 61 74 20 6a 75 73 74   failure at just
14f20 20 74 68 65 20 77 72 6f 6e 67 20 74 69 6d 65 20   the wrong time 
14f30 63 6f 75 6c 64 20 63 6f 72 72 75 70 74 20 74 68  could corrupt th
14f40 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  e..      /// dat
14f50 61 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41 4c 20  abase in NORMAL 
14f60 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mode...      ///
14f70 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14f80 20 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c 0d 0a     Normal = 1,..
14f90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
14fa0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
14fb0 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   The database en
14fc0 67 69 6e 65 20 77 69 6c 6c 20 75 73 65 20 74 68  gine will use th
14fd0 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f  e xSync method o
14fe0 66 20 74 68 65 20 56 46 53 20 74 6f 20 65 6e 73  f the VFS to ens
14ff0 75 72 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20  ure that..      
15000 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e 74 20  /// all content 
15010 69 73 20 73 61 66 65 6c 79 20 77 72 69 74 74 65  is safely writte
15020 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75  n to the disk su
15030 72 66 61 63 65 20 70 72 69 6f 72 20 74 6f 20 63  rface prior to c
15040 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20 20 20  ontinuing...    
15050 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73 75 72    /// This ensur
15060 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61  es that an opera
15070 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73  ting system cras
15080 68 20 6f 72 20 70 6f 77 65 72 20 66 61 69 6c 75  h or power failu
15090 72 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20 20 20  re will not..   
150a0 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 20 74     /// corrupt t
150b0 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 46 55  he database.  FU
150c0 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69  LL synchronous i
150d0 73 20 76 65 72 79 20 73 61 66 65 2c 20 62 75 74  s very safe, but
150e0 20 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20 20 20   it is also..   
150f0 20 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e 0d 0a     /// slower...
15100 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15110 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75 6c 6c  ary>..      Full
15120 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f   = 2..  }....  /
15130 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15140 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65  /// The requeste
15150 64 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74  d command execut
15160 69 6f 6e 20 74 79 70 65 2e 20 20 54 68 69 73 20  ion type.  This 
15170 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20 6d  controls which m
15180 65 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a 20 20  ethod of the..  
15190 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
151a0 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e  QLiteCommand" />
151b0 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62 65 20   object will be 
151c0 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c  called...  /// <
151d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
151e0 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 45  lic enum SQLiteE
151f0 78 65 63 75 74 65 54 79 70 65 0d 0a 20 20 7b 0d  xecuteType..  {.
15200 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15210 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15220 44 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e 6f 20  Do nothing.  No 
15230 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63  method will be c
15240 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  alled...      //
15250 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15260 20 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 0d      None = 0,...
15270 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15280 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15290 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e  The command is n
152a0 6f 74 20 65 78 70 65 63 74 65 64 20 74 6f 20 72  ot expected to r
152b0 65 74 75 72 6e 20 61 20 72 65 73 75 6c 74 20 2d  eturn a result -
152c0 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74 20 69  OR- the result i
152d0 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  s not..      ///
152e0 20 6e 65 65 64 65 64 2e 20 20 54 68 65 20 3c 73   needed.  The <s
152f0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
15300 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f  ommand.ExecuteNo
15310 6e 51 75 65 72 79 28 29 22 20 2f 3e 20 6f 72 0d  nQuery()" /> or.
15320 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
15330 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
15340 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75  and.ExecuteNonQu
15350 65 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76  ery(CommandBehav
15360 69 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68 6f 64  ior)" />  method
15370 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c  ..      /// will
15380 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20   be called...   
15390 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
153a0 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75 65 72  >..      NonQuer
153b0 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20  y = 1,....      
153c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
153d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
153e0 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74 65 64  mand is expected
153f0 20 74 6f 20 72 65 74 75 72 6e 20 61 20 73 63 61   to return a sca
15400 6c 61 72 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20  lar result -OR- 
15410 74 68 65 20 72 65 73 75 6c 74 20 73 68 6f 75 6c  the result shoul
15420 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  d..      /// be 
15430 6c 69 6d 69 74 65 64 20 74 6f 20 61 20 73 63 61  limited to a sca
15440 6c 61 72 20 72 65 73 75 6c 74 2e 20 20 54 68 65  lar result.  The
15450 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
15460 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74  teCommand.Execut
15470 65 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d 0a 20  eScalar()" />.. 
15480 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65       /// or <see
15490 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d   cref="SQLiteCom
154a0 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63 61 6c  mand.ExecuteScal
154b0 61 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69  ar(CommandBehavi
154c0 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  or)" /> method w
154d0 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  ill..      /// b
154e0 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20  e called...     
154f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15500 0a 20 20 20 20 20 20 53 63 61 6c 61 72 20 3d 20  .      Scalar = 
15510 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  2,....      /// 
15520 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15530 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64   /// The command
15540 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20   is expected to 
15550 72 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65 66  return <see cref
15560 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64  ="SQLiteDataRead
15570 65 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e 0d 0a  er" /> result...
15580 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73        /// The <s
15590 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
155a0 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52 65  ommand.ExecuteRe
155b0 61 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d 0a 20  ader()" /> or.. 
155c0 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
155d0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ef="SQLiteComman
155e0 64 2e 45 78 65 63 75 74 65 52 65 61 64 65 72 28  d.ExecuteReader(
155f0 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 29  CommandBehavior)
15600 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c  " /> method will
15610 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 63  ..      /// be c
15620 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  alled...      //
15630 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15640 20 20 20 20 52 65 61 64 65 72 20 3d 20 33 2c 0d      Reader = 3,.
15650 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15660 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15670 2f 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c  / Use the defaul
15680 74 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74  t command execut
15690 69 6f 6e 20 74 79 70 65 2e 20 20 55 73 69 6e 67  ion type.  Using
156a0 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 74   this value is t
156b0 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 2f  he same..      /
156c0 2f 2f 20 61 73 20 75 73 69 6e 67 20 74 68 65 20  // as using the 
156d0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
156e0 65 45 78 65 63 75 74 65 54 79 70 65 2e 4e 6f 6e  eExecuteType.Non
156f0 51 75 65 72 79 22 20 2f 3e 20 76 61 6c 75 65 2e  Query" /> value.
15700 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15710 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65  mmary>..      De
15720 66 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65 72 79  fault = NonQuery
15730 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 64   /* TODO: Good d
15740 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20 7d 0d  efault? */..  }.
15750 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
15760 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 61 63  y>..  /// The ac
15770 74 69 6f 6e 20 63 6f 64 65 20 72 65 73 70 6f 6e  tion code respon
15780 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20 63 75  sible for the cu
15790 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20  rrent call into 
157a0 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d  the authorizer..
157b0 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
157c0 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
157d0 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
157e0 72 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20 20 7b  rActionCode..  {
157f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15800 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15810 20 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20 62 65   No action is be
15820 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e 20 20  ing performed.  
15830 54 68 69 73 20 76 61 6c 75 65 20 73 68 6f 75 6c  This value shoul
15840 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 66 72  d not be used fr
15850 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78  om..      /// ex
15860 74 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a 20 20  ternal code...  
15870 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15880 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d  y>..      None =
15890 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   -1,....      //
158a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
158b0 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67 65 72     /// No longer
158c0 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f   used...      //
158d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
158e0 20 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d 0a 0d      Copy = 0,...
158f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15900 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15910 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  An index will be
15920 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
15930 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
15940 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
15950 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65  ..      /// inde
15960 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
15970 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
15980 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f    ///..      ///
15990 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
159a0 20 20 20 43 72 65 61 74 65 49 6e 64 65 78 20 3d     CreateIndex =
159b0 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   1,....      ///
159c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
159d0 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69    /// A table wi
159e0 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20  ll be created.  
159f0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
15a00 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
15a10 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
15a20 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
15a30 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
15a40 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15a50 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74  ry>..      Creat
15a60 65 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d 0a 20  eTable = 2,.... 
15a70 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15a80 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
15a90 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 20  temporary index 
15aa0 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
15ab0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
15ac0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
15ad0 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
15ae0 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e  he index name an
15af0 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  d the table name
15b00 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
15b10 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
15b20 72 65 61 74 65 54 65 6d 70 49 6e 64 65 78 20 3d  reateTempIndex =
15b30 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   3,....      ///
15b40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15b50 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72    /// A temporar
15b60 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20  y table will be 
15b70 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
15b80 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
15b90 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
15ba0 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
15bb0 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
15bc0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
15bd0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15be0 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 54       CreateTempT
15bf0 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  able = 4,....   
15c00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15c10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
15c20 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65 72 20  mporary trigger 
15c30 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
15c40 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
15c50 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
15c60 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
15c70 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  he trigger name 
15c80 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
15c90 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
15ca0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15cb0 20 43 72 65 61 74 65 54 65 6d 70 54 72 69 67 67   CreateTempTrigg
15cc0 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20  er = 5,....     
15cd0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15ce0 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70        /// A temp
15cf0 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c 20  orary view will 
15d00 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
15d10 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
15d20 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a   arguments are..
15d30 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69        /// the vi
15d40 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  ew name and a nu
15d50 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
15d60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15d70 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
15d80 70 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a 20 20  pView = 6,....  
15d90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15da0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
15db0 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 63  rigger will be c
15dc0 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
15dd0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
15de0 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
15df0 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65        /// trigge
15e00 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  r name and the t
15e10 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
15e20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15e30 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 72  ..      CreateTr
15e40 69 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a 20 20  igger = 7,....  
15e50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15e60 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76  >..      /// A v
15e70 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61  iew will be crea
15e80 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
15e90 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
15ea0 6e 74 73 20 61 72 65 20 74 68 65 20 76 69 65 77  nts are the view
15eb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65  ..      /// name
15ec0 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
15ed0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
15ee0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15ef0 43 72 65 61 74 65 56 69 65 77 20 3d 20 38 2c 0d  CreateView = 8,.
15f00 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15f10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15f20 2f 20 41 20 44 45 4c 45 54 45 20 73 74 61 74 65  / A DELETE state
15f30 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65  ment will be exe
15f40 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  cuted.  The acti
15f50 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
15f60 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
15f70 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e   are the table n
15f80 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
15f90 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
15fa0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15fb0 20 20 20 44 65 6c 65 74 65 20 3d 20 39 2c 0d 0a     Delete = 9,..
15fc0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15fd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15fe0 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62   An index will b
15ff0 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
16000 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16010 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
16020 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64  e..      /// ind
16030 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20  ex name and the 
16040 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  table name...   
16050 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16060 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 49 6e 64  >..      DropInd
16070 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20  ex = 10,....    
16080 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16090 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62  .      /// A tab
160a0 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  le will be dropp
160b0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
160c0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
160d0 74 73 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  ts are the table
160e0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d  s..      /// nam
160f0 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
16100 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
16110 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16120 20 44 72 6f 70 54 61 62 6c 65 20 3d 20 31 31 2c   DropTable = 11,
16130 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16140 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16150 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 69  // A temporary i
16160 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64 72 6f  ndex will be dro
16170 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16180 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16190 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
161a0 2f 2f 2f 20 74 68 65 20 69 6e 64 65 78 20 6e 61  /// the index na
161b0 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65  me and the table
161c0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
161d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
161e0 20 20 20 20 44 72 6f 70 54 65 6d 70 49 6e 64 65      DropTempInde
161f0 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20  x = 12,....     
16200 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16210 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70        /// A temp
16220 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c  orary table will
16230 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16240 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16250 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d  c arguments are.
16260 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 74  .      /// the t
16270 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
16280 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16290 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
162a0 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d  >..      DropTem
162b0 70 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a 0d 0a  pTable = 13,....
162c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
162d0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
162e0 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67   temporary trigg
162f0 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  er will be dropp
16300 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16310 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16320 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
16330 65 20 74 68 65 20 74 72 69 67 67 65 72 20 6e 61  e the trigger na
16340 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65  me and the table
16350 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
16360 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16370 20 20 20 20 44 72 6f 70 54 65 6d 70 54 72 69 67      DropTempTrig
16380 67 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20  ger = 14,....   
16390 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
163a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
163b0 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c  mporary view wil
163c0 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
163d0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
163e0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
163f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
16400 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20  view name and a 
16410 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16420 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16430 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d  >..      DropTem
16440 70 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d 0a 20  pView = 15,.... 
16450 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16460 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16470 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20  trigger will be 
16480 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63  dropped.  The ac
16490 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
164a0 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d  guments are the.
164b0 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67  .      /// trigg
164c0 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20  er name and the 
164d0 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  table name...   
164e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
164f0 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 72 69  >..      DropTri
16500 67 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20  gger = 16,....  
16510 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16520 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76  >..      /// A v
16530 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  iew will be drop
16540 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
16550 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16560 6e 74 73 20 61 72 65 20 74 68 65 20 76 69 65 77  nts are the view
16570 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65  ..      /// name
16580 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
16590 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
165a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
165b0 44 72 6f 70 56 69 65 77 20 3d 20 31 37 2c 0d 0a  DropView = 17,..
165c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
165d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
165e0 20 41 6e 20 49 4e 53 45 52 54 20 73 74 61 74 65   An INSERT state
165f0 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65  ment will be exe
16600 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  cuted.  The acti
16610 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16620 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
16630 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e   are the table n
16640 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
16650 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
16660 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
16670 20 20 20 49 6e 73 65 72 74 20 3d 20 31 38 2c 0d     Insert = 18,.
16680 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16690 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
166a0 2f 20 41 20 50 52 41 47 4d 41 20 73 74 61 74 65  / A PRAGMA state
166b0 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65  ment will be exe
166c0 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  cuted.  The acti
166d0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
166e0 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
166f0 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66   are the name of
16700 20 74 68 65 20 50 52 41 47 4d 41 20 61 6e 64 20   the PRAGMA and 
16710 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20 6f 72  the new value or
16720 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
16730 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16740 61 72 79 3e 0d 0a 20 20 20 20 20 20 50 72 61 67  ary>..      Prag
16750 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20 20 20  ma = 19,....    
16760 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16770 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62  .      /// A tab
16780 6c 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20 62  le column will b
16790 65 20 72 65 61 64 2e 20 20 54 68 65 20 61 63 74  e read.  The act
167a0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
167b0 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
167c0 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20        /// table 
167d0 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f 6c  name and the col
167e0 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  umn name...     
167f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16800 0a 20 20 20 20 20 20 52 65 61 64 20 3d 20 32 30  .      Read = 20
16810 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16820 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16830 2f 2f 2f 20 41 20 53 45 4c 45 43 54 20 73 74 61  /// A SELECT sta
16840 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
16850 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
16860 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16870 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
16880 2f 2f 20 61 72 65 20 62 6f 74 68 20 6e 75 6c 6c  // are both null
16890 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20   values...      
168a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
168b0 20 20 20 20 20 20 53 65 6c 65 63 74 20 3d 20 32        Select = 2
168c0 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
168d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
168e0 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63 74 69   /// A transacti
168f0 6f 6e 20 77 69 6c 6c 20 62 65 20 73 74 61 72 74  on will be start
16900 65 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c 20 6f  ed, committed, o
16910 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20  r rolled back.  
16920 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  The..      /// a
16930 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16940 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
16950 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65   name of the ope
16960 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a  ration (BEGIN,..
16970 20 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d 49 54        /// COMMIT
16980 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61  , or ROLLBACK) a
16990 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
169a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
169b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 54 72  mmary>..      Tr
169c0 61 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32 2c 0d  ansaction = 22,.
169d0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
169e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
169f0 2f 20 41 6e 20 55 50 44 41 54 45 20 73 74 61 74  / An UPDATE stat
16a00 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78  ement will be ex
16a10 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74  ecuted.  The act
16a20 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16a30 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
16a40 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  / are the table 
16a50 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f 6c  name and the col
16a60 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  umn name...     
16a70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16a80 0a 20 20 20 20 20 20 55 70 64 61 74 65 20 3d 20  .      Update = 
16a90 32 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  23,....      ///
16aa0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16ab0 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73 65    /// A database
16ac0 20 77 69 6c 6c 20 62 65 20 61 74 74 61 63 68 65   will be attache
16ad0 64 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74  d to the connect
16ae0 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ion.  The action
16af0 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20  -specific..     
16b00 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 61   /// arguments a
16b10 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  re the database 
16b20 66 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  file name and a 
16b30 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16b40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16b50 3e 0d 0a 20 20 20 20 20 20 41 74 74 61 63 68 20  >..      Attach 
16b60 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 24,....      /
16b70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16b80 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61      /// A databa
16b90 73 65 20 77 69 6c 6c 20 62 65 20 64 65 74 61 63  se will be detac
16ba0 68 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e  hed from the con
16bb0 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63  nection.  The ac
16bc0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20  tion-specific.. 
16bd0 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e       /// argumen
16be0 74 73 20 61 72 65 20 74 68 65 20 64 61 74 61 62  ts are the datab
16bf0 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ase name and a n
16c00 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
16c10 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16c20 0d 0a 20 20 20 20 20 20 44 65 74 61 63 68 20 3d  ..      Detach =
16c30 20 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   25,....      //
16c40 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16c50 20 20 20 2f 2f 2f 20 54 68 65 20 73 63 68 65 6d     /// The schem
16c60 61 20 6f 66 20 61 20 74 61 62 6c 65 20 77 69 6c  a of a table wil
16c70 6c 20 62 65 20 61 6c 74 65 72 65 64 2e 20 20 54  l be altered.  T
16c80 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16c90 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
16ca0 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20      /// are the 
16cb0 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61 6e  database name an
16cc0 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  d the table name
16cd0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16ce0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
16cf0 6c 74 65 72 54 61 62 6c 65 20 3d 20 32 36 2c 0d  lterTable = 26,.
16d00 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16d10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16d20 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20  / An index will 
16d30 62 65 20 64 65 6c 65 74 65 64 20 61 6e 64 20 74  be deleted and t
16d40 68 65 6e 20 72 65 63 72 65 61 74 65 64 2e 20 20  hen recreated.  
16d50 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16d60 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  fic..      /// a
16d70 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
16d80 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
16d90 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16da0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16db0 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 69 6e 64  ry>..      Reind
16dc0 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20 20 20  ex = 27,....    
16dd0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16de0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62  .      /// A tab
16df0 6c 65 20 77 69 6c 6c 20 62 65 20 61 6e 61 6c 79  le will be analy
16e00 7a 65 64 20 74 6f 20 67 61 74 68 65 72 73 20 73  zed to gathers s
16e10 74 61 74 69 73 74 69 63 73 20 61 62 6f 75 74 20  tatistics about 
16e20 69 74 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20  it.  The..      
16e30 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  /// action-speci
16e40 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
16e50 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  e the table name
16e60 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
16e70 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16e80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16e90 41 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d 0a 0d  Analyze = 28,...
16ea0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16eb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16ec0 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  A virtual table 
16ed0 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
16ee0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16ef0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
16f00 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  are..      /// t
16f10 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
16f20 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d  d the module nam
16f30 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16f40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16f50 43 72 65 61 74 65 56 74 61 62 6c 65 20 3d 20 32  CreateVtable = 2
16f60 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  9,....      /// 
16f70 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16f80 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20 74   /// A virtual t
16f90 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
16fa0 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16fb0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16fc0 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
16fd0 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61  /// the table na
16fe0 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c  me and the modul
16ff0 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
17000 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17010 20 20 20 20 20 44 72 6f 70 56 74 61 62 6c 65 20       DropVtable 
17020 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 30,....      /
17030 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17040 20 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20 66 75      /// A SQL fu
17050 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63  nction will be c
17060 61 6c 6c 65 64 2e 20 20 54 68 65 20 61 63 74 69  alled.  The acti
17070 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17080 6d 65 6e 74 73 20 61 72 65 20 61 0d 0a 20 20 20  ments are a..   
17090 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61 6c 75     /// null valu
170a0 65 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69  e and the functi
170b0 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  on name...      
170c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
170d0 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 20 3d        Function =
170e0 20 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   31,....      //
170f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17100 20 20 20 2f 2f 2f 20 41 20 73 61 76 65 70 6f 69     /// A savepoi
17110 6e 74 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74  nt will be creat
17120 65 64 2c 20 72 65 6c 65 61 73 65 64 2c 20 6f 72  ed, released, or
17130 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54   rolled back.  T
17140 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63  he..      /// ac
17150 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
17160 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
17170 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72  name of the oper
17180 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20  ation (BEGIN,.. 
17190 20 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41 53 45       /// RELEASE
171a0 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61  , or ROLLBACK) a
171b0 6e 64 20 74 68 65 20 73 61 76 65 70 6f 69 6e 74  nd the savepoint
171c0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
171d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
171e0 20 20 20 20 53 61 76 65 70 6f 69 6e 74 20 3d 20      Savepoint = 
171f0 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  32,....      ///
17200 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17210 20 20 2f 2f 2f 20 41 20 72 65 63 75 72 73 69 76    /// A recursiv
17220 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62 65 20  e query will be 
17230 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61  executed.  The a
17240 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
17250 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
17260 2f 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75 6c 6c  /// are two null
17270 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20   values...      
17280 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17290 20 20 20 20 20 20 52 65 63 75 72 73 69 76 65 20        Recursive 
172a0 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  = 33..  }....  /
172b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
172c0 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e 20 63  /// The return c
172d0 6f 64 65 20 66 6f 72 20 74 68 65 20 63 75 72 72  ode for the curr
172e0 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68  ent call into th
172f0 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20  e authorizer... 
17300 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17310 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53  .  public enum S
17320 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 52  QLiteAuthorizerR
17330 65 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a  eturnCode..  {..
17340 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17350 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
17360 68 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62  he action will b
17370 65 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20 20  e allowed...    
17380 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17390 0d 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30 2c 0d  ..      Ok = 0,.
173a0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
173b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
173c0 2f 20 54 68 65 20 6f 76 65 72 61 6c 6c 20 61 63  / The overall ac
173d0 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69 73  tion will be dis
173e0 61 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e 20 65  allowed and an e
173f0 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77 69 6c  rror message wil
17400 6c 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  l be..      /// 
17410 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68  returned from th
17420 65 20 71 75 65 72 79 20 70 72 65 70 61 72 61 74  e query preparat
17430 69 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  ion method...   
17440 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17450 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 20 3d 20  >..      Deny = 
17460 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
17470 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17480 20 2f 2f 2f 20 54 68 65 20 73 70 65 63 69 66 69   /// The specifi
17490 63 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  c action will be
174a0 20 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68 6f 77   disallowed; how
174b0 65 76 65 72 2c 20 74 68 65 20 6f 76 65 72 61 6c  ever, the overal
174c0 6c 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  l action..      
174d0 2f 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75  /// will continu
174e0 65 2e 20 20 54 68 65 20 65 78 61 63 74 20 65 66  e.  The exact ef
174f0 66 65 63 74 73 20 6f 66 20 74 68 69 73 20 72 65  fects of this re
17500 74 75 72 6e 20 63 6f 64 65 20 76 61 72 79 20 64  turn code vary d
17510 65 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20  epending..      
17520 2f 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65 63 69  /// on the speci
17530 66 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c 65 61  fic action, plea
17540 73 65 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  se refer to the 
17550 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
17560 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  ary..      /// d
17570 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
17580 20 66 75 74 68 65 72 20 64 65 74 61 69 6c 73 2e   futher details.
17590 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
175a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 67  mmary>..      Ig
175b0 6e 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d  nore = 2..  }...
175c0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
175d0 0d 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20 75 73  ..  /// Class us
175e0 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f  ed internally to
175f0 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 64   determine the d
17600 61 74 61 74 79 70 65 20 6f 66 20 61 20 63 6f 6c  atatype of a col
17610 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c 74 73  umn in a results
17620 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  et..  /// </summ
17630 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
17640 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
17650 4c 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20  LiteType..  {.. 
17660 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17670 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44 62  ..    /// The Db
17680 54 79 70 65 20 6f 66 20 74 68 65 20 63 6f 6c 75  Type of the colu
17690 6d 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e 4f 62  mn, or DbType.Ob
176a0 6a 65 63 74 20 69 66 20 69 74 20 63 61 6e 6e 6f  ject if it canno
176b0 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d  t be determined.
176c0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
176d0 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
176e0 6c 20 44 62 54 79 70 65 20 54 79 70 65 3b 0d 0a  l DbType Type;..
176f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17700 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 61  >..    /// The a
17710 66 66 69 6e 69 74 79 20 6f 66 20 61 20 63 6f 6c  ffinity of a col
17720 75 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20 65 78  umn, used for ex
17730 70 72 65 73 73 69 6f 6e 73 20 6f 72 20 77 68 65  pressions or whe
17740 6e 20 54 79 70 65 20 69 73 20 44 62 54 79 70 65  n Type is DbType
17750 2e 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f  .Object..    ///
17760 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17770 20 69 6e 74 65 72 6e 61 6c 20 54 79 70 65 41 66   internal TypeAf
17780 66 69 6e 69 74 79 20 41 66 66 69 6e 69 74 79 3b  finity Affinity;
17790 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
177f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
17800 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 20 64  / Constructs a d
17810 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63 65 20  efault instance 
17820 6f 66 20 74 68 69 73 20 74 79 70 65 2e 0d 0a 20  of this type... 
17830 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17840 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51  >..    public SQ
17850 4c 69 74 65 54 79 70 65 28 29 0d 0a 20 20 20 20  LiteType()..    
17860 7b 0d 0a 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e  {..      // do n
17870 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d 0a  othing...    }..
17880 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
17890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178d0 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  /....    /// <su
178e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
178f0 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e  Constructs an in
17900 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 74  stance of this t
17910 79 70 65 20 77 69 74 68 20 74 68 65 20 73 70 65  ype with the spe
17920 63 69 66 69 65 64 20 66 69 65 6c 64 20 76 61 6c  cified field val
17930 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ues...    /// </
17940 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
17950 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61  / <param name="a
17960 66 66 69 6e 69 74 79 22 3e 0d 0a 20 20 20 20 2f  ffinity">..    /
17970 2f 2f 20 54 68 65 20 74 79 70 65 20 61 66 66 69  // The type affi
17980 6e 69 74 79 20 74 6f 20 75 73 65 20 66 6f 72 20  nity to use for 
17990 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65  the new instance
179a0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
179b0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
179c0 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e  ram name="type">
179d0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61  ..    /// The da
179e0 74 61 62 61 73 65 20 74 79 70 65 20 74 6f 20 75  tabase type to u
179f0 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77 20 69  se for the new i
17a00 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
17a10 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17a20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79 70  public SQLiteTyp
17a30 65 28 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  e(..      TypeAf
17a40 66 69 6e 69 74 79 20 61 66 66 69 6e 69 74 79 2c  finity affinity,
17a50 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 20 74  ..      DbType t
17a60 79 70 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20  ype..      )..  
17a70 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
17a80 20 20 7b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e    {..      this.
17a90 41 66 66 69 6e 69 74 79 20 3d 20 61 66 66 69 6e  Affinity = affin
17aa0 69 74 79 3b 0d 0a 20 20 20 20 20 20 74 68 69 73  ity;..      this
17ab0 2e 54 79 70 65 20 3d 20 74 79 70 65 3b 0d 0a 20  .Type = type;.. 
17ac0 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f     }..  }....  /
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17b20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
17b30 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62  d class SQLiteDb
17b40 54 79 70 65 4d 61 70 0d 0a 20 20 20 20 20 20 3a  TypeMap..      :
17b50 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
17b60 6e 67 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65  ng, SQLiteDbType
17b70 4d 61 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20  Mapping>..  {.. 
17b80 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
17b90 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
17ba0 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e   private Diction
17bb0 61 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69  ary<DbType, SQLi
17bc0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e  teDbTypeMapping>
17bd0 20 72 65 76 65 72 73 65 3b 0d 0a 20 20 20 20 20   reverse;..     
17be0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
17bf0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17c40 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20  ..      #region 
17c50 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
17c60 6f 72 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ors..      publi
17c70 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  c SQLiteDbTypeMa
17c80 70 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a  p()..          :
17c90 20 62 61 73 65 28 6e 65 77 20 54 79 70 65 4e 61   base(new TypeNa
17ca0 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72  meStringComparer
17cb0 28 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ())..      {..  
17cc0 20 20 20 20 20 20 20 20 72 65 76 65 72 73 65 20          reverse 
17cd0 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79  = new Dictionary
17ce0 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44  <DbType, SQLiteD
17cf0 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 28 29 3b  bTypeMapping>();
17d00 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
17d10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17d60 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
17d70 69 74 65 44 62 54 79 70 65 4d 61 70 28 0d 0a 20  iteDbTypeMap(.. 
17d80 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72           IEnumer
17d90 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70  able<SQLiteDbTyp
17da0 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63  eMapping> collec
17db0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
17dc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 74  )..          : t
17dd0 68 69 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  his()..      {..
17de0 20 20 20 20 20 20 20 20 20 20 41 64 64 28 63 6f            Add(co
17df0 6c 6c 65 63 74 69 6f 6e 29 3b 0d 0a 20 20 20 20  llection);..    
17e00 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
17e10 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
17e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17e70 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d    #region System
17e80 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e  .Collections.Gen
17e90 65 72 69 63 2e 44 69 63 74 69 6f 6e 61 72 79 20  eric.Dictionary 
17ea0 22 4f 76 65 72 72 69 64 65 73 22 0d 0a 20 20 20  "Overrides"..   
17eb0 20 20 20 70 75 62 6c 69 63 20 6e 65 77 20 69 6e     public new in
17ec0 74 20 43 6c 65 61 72 28 29 0d 0a 20 20 20 20 20  t Clear()..     
17ed0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e   {..          in
17ee0 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d  t result = 0;...
17ef0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72  .          if (r
17f00 65 76 65 72 73 65 20 21 3d 20 6e 75 6c 6c 29 0d  everse != null).
17f10 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
17f20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
17f30 6c 74 20 2b 3d 20 72 65 76 65 72 73 65 2e 43 6f  lt += reverse.Co
17f40 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  unt;..          
17f50 20 20 20 20 72 65 76 65 72 73 65 2e 43 6c 65 61      reverse.Clea
17f60 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
17f70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
17f80 65 73 75 6c 74 20 2b 3d 20 62 61 73 65 2e 43 6f  esult += base.Co
17f90 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  unt;..          
17fa0 62 61 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d  base.Clear();...
17fb0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
17fc0 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
17fd0 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
17fe0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18040 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 44   #region SQLiteD
18050 62 54 79 70 65 4d 61 70 70 69 6e 67 20 48 65 6c  bTypeMapping Hel
18060 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
18070 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41     public void A
18080 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49  dd(..          I
18090 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74  Enumerable<SQLit
180a0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20  eDbTypeMapping> 
180b0 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20  collection..    
180c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b        )..      {
180d0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
180e0 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e 75  collection == nu
180f0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18100 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
18110 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
18120 6f 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 29  on("collection")
18130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ;....          f
18140 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65 44 62  oreach (SQLiteDb
18150 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d  TypeMapping item
18160 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d   in collection).
18170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41  .              A
18180 64 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20  dd(item);..     
18190 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
181a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
181f0 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28 53  ublic void Add(S
18200 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
18210 6e 67 20 69 74 65 6d 29 0d 0a 20 20 20 20 20 20  ng item)..      
18220 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
18230 28 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (item == null)..
18240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
18250 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
18260 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 69  NullException("i
18270 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  tem");....      
18280 20 20 20 20 69 66 20 28 69 74 65 6d 2e 74 79 70      if (item.typ
18290 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eName == null)..
182a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
182b0 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
182c0 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d 20  Exception("item 
182d0 74 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e 6f 74  type name cannot
182e0 20 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a 20   be null");.... 
182f0 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 41 64           base.Ad
18300 64 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 2c  d(item.typeName,
18310 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20   item);....     
18320 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 70 72       if (item.pr
18330 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20 20 20  imary)..        
18340 20 20 20 20 20 20 72 65 76 65 72 73 65 2e 41 64        reverse.Ad
18350 64 28 69 74 65 6d 2e 64 61 74 61 54 79 70 65 2c  d(item.dataType,
18360 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d   item);..      }
18370 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
18380 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
18390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
183e0 72 65 67 69 6f 6e 20 44 62 54 79 70 65 20 48 65  region DbType He
183f0 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
18400 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
18410 43 6f 6e 74 61 69 6e 73 4b 65 79 28 44 62 54 79  ContainsKey(DbTy
18420 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b  pe key)..      {
18430 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
18440 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29  reverse == null)
18450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18460 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
18470 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
18480 6e 20 72 65 76 65 72 73 65 2e 43 6f 6e 74 61 69  n reverse.Contai
18490 6e 73 4b 65 79 28 6b 65 79 29 3b 0d 0a 20 20 20  nsKey(key);..   
184a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
184b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18500 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79   public bool Try
18510 47 65 74 56 61 6c 75 65 28 44 62 54 79 70 65 20  GetValue(DbType 
18520 6b 65 79 2c 20 6f 75 74 20 53 51 4c 69 74 65 44  key, out SQLiteD
18530 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
18540 75 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ue)..      {..  
18550 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65          if (reve
18560 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rse == null)..  
18570 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18580 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
18590 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
185a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
185b0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
185c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
185d0 74 75 72 6e 20 72 65 76 65 72 73 65 2e 54 72 79  turn reverse.Try
185e0 47 65 74 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75  GetValue(key, ou
185f0 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
18600 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
18660 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 6d 6f 76  ublic bool Remov
18670 65 28 44 62 54 79 70 65 20 6b 65 79 29 0d 0a 20  e(DbType key).. 
18680 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18690 20 20 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d    if (reverse ==
186a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
186b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
186c0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
186d0 20 72 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e   return reverse.
186e0 52 65 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a 20 20  Remove(key);..  
186f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
18700 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a  dregion..  }....
18710 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18760 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  ...  internal se
18770 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
18780 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 0d 0a  eDbTypeMapping..
18790 20 20 7b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61    {..    interna
187a0 6c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  l SQLiteDbTypeMa
187b0 70 70 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  pping(..        
187c0 73 74 72 69 6e 67 20 6e 65 77 54 79 70 65 4e 61  string newTypeNa
187d0 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54  me,..        DbT
187e0 79 70 65 20 6e 65 77 44 61 74 61 54 79 70 65 2c  ype newDataType,
187f0 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e  ..        bool n
18800 65 77 50 72 69 6d 61 72 79 0d 0a 20 20 20 20 20  ewPrimary..     
18810 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
18820 20 20 20 74 79 70 65 4e 61 6d 65 20 3d 20 6e 65     typeName = ne
18830 77 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  wTypeName;..    
18840 20 20 64 61 74 61 54 79 70 65 20 3d 20 6e 65 77    dataType = new
18850 44 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  DataType;..     
18860 20 70 72 69 6d 61 72 79 20 3d 20 6e 65 77 50 72   primary = newPr
18870 69 6d 61 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  imary;..    }...
18880 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18890 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a  ring typeName;..
188a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54      internal DbT
188b0 79 70 65 20 64 61 74 61 54 79 70 65 3b 0d 0a 20  ype dataType;.. 
188c0 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c     internal bool
188d0 20 70 72 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d 0a   primary;..  }..
188e0 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61  ..  internal sea
188f0 6c 65 64 20 63 6c 61 73 73 20 54 79 70 65 4e 61  led class TypeNa
18900 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72  meStringComparer
18910 20 3a 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70   : IEqualityComp
18920 61 72 65 72 3c 73 74 72 69 6e 67 3e 0d 0a 20 20  arer<string>..  
18930 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49  {..    #region I
18940 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72  EqualityComparer
18950 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73  <string> Members
18960 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
18970 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  l Equals(..     
18980 20 73 74 72 69 6e 67 20 6c 65 66 74 2c 0d 0a 20   string left,.. 
18990 20 20 20 20 20 73 74 72 69 6e 67 20 72 69 67 68       string righ
189a0 74 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20  t..      )..    
189b0 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
189c0 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 6c 65  String.Equals(le
189d0 66 74 2c 20 72 69 67 68 74 2c 20 53 74 72 69 6e  ft, right, Strin
189e0 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
189f0 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
18a00 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18a60 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74 48   public int GetH
18a70 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20 20 20  ashCode(..      
18a80 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
18a90 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
18aa0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
18ab0 20 4e 4f 54 45 3a 20 54 68 65 20 6f 6e 6c 79 20   NOTE: The only 
18ac0 74 68 69 6e 67 20 74 68 61 74 20 77 65 20 6d 75  thing that we mu
18ad0 73 74 20 67 75 61 72 61 6e 74 65 65 20 68 65 72  st guarantee her
18ae0 65 2c 20 61 63 63 6f 72 64 69 6e 67 0d 0a 20 20  e, according..  
18af0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20      //       to 
18b00 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
18b10 74 61 74 69 6f 6e 20 66 6f 72 20 49 45 71 75 61  tation for IEqua
18b20 6c 69 74 79 43 6f 6d 70 61 72 65 72 2c 20 69 73  lityComparer, is
18b30 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
18b40 20 74 68 61 74 20 66 6f 72 20 74 77 6f 20 67 69   that for two gi
18b50 76 65 6e 20 73 74 72 69 6e 67 73 2c 20 69 66 20  ven strings, if 
18b60 45 71 75 61 6c 73 20 72 65 74 75 72 6e 20 74 72  Equals return tr
18b70 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 2f  ue then..      /
18b80 2f 20 20 20 20 20 20 20 74 68 65 20 74 77 6f 20  /       the two 
18b90 73 74 72 69 6e 67 73 20 6d 75 73 74 20 68 61 73  strings must has
18ba0 68 20 74 6f 20 74 68 65 20 73 61 6d 65 20 76 61  h to the same va
18bb0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  lue...      //..
18bc0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
18bd0 21 3d 20 6e 75 6c 6c 29 0d 0a 23 69 66 20 21 50  != null)..#if !P
18be0 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
18bf0 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
18c00 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54    return value.T
18c10 6f 4c 6f 77 65 72 49 6e 76 61 72 69 61 6e 74 28  oLowerInvariant(
18c20 29 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b  ).GetHashCode();
18c30 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
18c40 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f   return value.To
18c50 4c 6f 77 65 72 28 29 2e 47 65 74 48 61 73 68 43  Lower().GetHashC
18c60 6f 64 65 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  ode();..#endif..
18c70 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
18c80 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
18c90 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
18ca0 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20  ion("value");.. 
18cb0 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
18cc0 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a        gion..  }..}..