System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 7665ceacf7df93039eee7e4089046c005e1d6c6b:


0000: ef bb bf 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .../************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a  ************.. *
0040: 20 41 44 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74   ADO.NET 2.0 Dat
0050: 61 20 50 72 6f 76 69 64 65 72 20 66 6f 72 20 53  a Provider for S
0060: 51 4c 69 74 65 20 56 65 72 73 69 6f 6e 20 33 2e  QLite Version 3.
0070: 58 0d 0a 20 2a 20 57 72 69 74 74 65 6e 20 62 79  X.. * Written by
0080: 20 52 6f 62 65 72 74 20 53 69 6d 70 73 6f 6e 20   Robert Simpson 
0090: 28 72 6f 62 65 72 74 40 62 6c 61 63 6b 63 61 73  (robert@blackcas
00a0: 74 6c 65 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a  tlesoft.com).. *
00b0: 20 0d 0a 20 2a 20 52 65 6c 65 61 73 65 64 20 74   .. * Released t
00c0: 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d  o the public dom
00d0: 61 69 6e 2c 20 75 73 65 20 61 74 20 79 6f 75 72  ain, use at your
00e0: 20 6f 77 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a   own risk!.. ***
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70  *****/....namesp
0130: 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ace System.Data.
0140: 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 75 73 69  SQLite..{..  usi
0150: 6e 67 20 53 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69  ng System;....#i
0160: 66 20 44 45 42 55 47 0d 0a 20 20 75 73 69 6e 67  f DEBUG..  using
0170: 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73 74   System.Diagnost
0180: 69 63 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  ics;..#endif....
0190: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52    using System.R
01a0: 75 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65  untime.InteropSe
01b0: 72 76 69 63 65 73 3b 0d 0a 20 20 75 73 69 6e 67  rvices;..  using
01c0: 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69   System.Collecti
01d0: 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 20 20  ons.Generic;..  
01e0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 47 6c 6f  using System.Glo
01f0: 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 20 20 75  balization;..  u
0200: 73 69 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74  sing System.Text
0210: 3b 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;....  /// <summ
0220: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73  ary>..  /// This
0230: 20 62 61 73 65 20 63 6c 61 73 73 20 70 72 6f 76   base class prov
0240: 69 64 65 73 20 64 61 74 61 74 79 70 65 20 63 6f  ides datatype co
0250: 6e 76 65 72 73 69 6f 6e 20 73 65 72 76 69 63 65  nversion service
0260: 73 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65  s for the SQLite
0270: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 2f 2f   provider...  //
0280: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0290: 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20  public abstract 
02a0: 63 6c 61 73 73 20 53 51 4c 69 74 65 43 6f 6e 76  class SQLiteConv
02b0: 65 72 74 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ert..  {..    //
02c0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
02d0: 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65 20 66   /// The value f
02e0: 6f 72 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  or the Unix epoc
02f0: 68 20 28 65 2e 67 2e 20 4a 61 6e 75 61 72 79 20  h (e.g. January 
0300: 31 2c 20 31 39 37 30 20 61 74 20 6d 69 64 6e 69  1, 1970 at midni
0310: 67 68 74 2c 20 69 6e 20 55 54 43 29 2e 0d 0a 20  ght, in UTC)... 
0320: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0330: 3e 0d 0a 20 20 20 20 70 72 6f 74 65 63 74 65 64  >..    protected
0340: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0350: 20 44 61 74 65 54 69 6d 65 20 55 6e 69 78 45 70   DateTime UnixEp
0360: 6f 63 68 20 3d 0d 0a 20 20 20 20 20 20 20 20 6e  och =..        n
0370: 65 77 20 44 61 74 65 54 69 6d 65 28 31 39 37 30  ew DateTime(1970
0380: 2c 20 31 2c 20 31 2c 20 30 2c 20 30 2c 20 30 2c  , 1, 1, 0, 0, 0,
0390: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
03a0: 63 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  c);....    /// <
03b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
03c0: 2f 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74  / The value of t
03d0: 68 65 20 4f 4c 45 20 41 75 74 6f 6d 61 74 69 6f  he OLE Automatio
03e0: 6e 20 65 70 6f 63 68 20 72 65 70 72 65 73 65 6e  n epoch represen
03f0: 74 65 64 20 61 73 20 61 20 4a 75 6c 69 61 6e 20  ted as a Julian 
0400: 64 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  day...    /// </
0410: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
0420: 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
0430: 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20 4f 6c 65  donly double Ole
0440: 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f 63 68 41  AutomationEpochA
0450: 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32 34 31  sJulianDay = 241
0460: 35 30 31 38 2e 35 3b 0d 0a 0d 0a 20 20 20 20 2f  5018.5;....    /
0470: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0480: 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74    /// The format
0490: 20 73 74 72 69 6e 67 20 66 6f 72 20 44 61 74 65   string for Date
04a0: 54 69 6d 65 20 76 61 6c 75 65 73 20 77 68 65 6e  Time values when
04b0: 20 75 73 69 6e 67 20 74 68 65 20 49 6e 76 61 72   using the Invar
04c0: 69 61 6e 74 43 75 6c 74 75 72 65 20 6f 72 20 43  iantCulture or C
04d0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 66 6f  urrentCulture fo
04e0: 72 6d 61 74 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rmats...    /// 
04f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0500: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
0510: 72 69 6e 67 20 46 75 6c 6c 46 6f 72 6d 61 74 20  ring FullFormat 
0520: 3d 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  = "yyyy-MM-ddTHH
0530: 3a 6d 6d 3a 73 73 2e 66 66 66 66 66 66 66 4b 22  :mm:ss.fffffffK"
0540: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
0550: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0560: 41 6e 20 61 72 72 61 79 20 6f 66 20 49 53 4f 38  An array of ISO8
0570: 36 30 31 20 64 61 74 65 74 69 6d 65 20 66 6f 72  601 datetime for
0580: 6d 61 74 73 20 77 65 20 73 75 70 70 6f 72 74 20  mats we support 
0590: 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 0d  conversion from.
05a0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
05b0: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
05c0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d   static string[]
05d0: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
05e0: 73 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 5d  s = new string[]
05f0: 20 7b 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d   {..      "THHmm
0600: 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22 54 48  ssK",..      "TH
0610: 48 6d 6d 4b 22 2c 0d 0a 20 20 20 20 20 20 22 48  HmmK",..      "H
0620: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0630: 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d  ",..      "HH:mm
0640: 3a 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22 48  :ssK",..      "H
0650: 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20 20 20 20 22  H:mmK",..      "
0660: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0670: 3a 73 73 2e 46 46 46 46 46 46 46 4b 22 2c 20 2f  :ss.FFFFFFFK", /
0680: 2a 20 4e 4f 54 45 3a 20 55 54 43 20 64 65 66 61  * NOTE: UTC defa
0690: 75 6c 74 20 28 35 29 2e 20 2a 2f 0d 0a 20 20 20  ult (5). */..   
06a0: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48     "yyyy-MM-dd H
06b0: 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20 20  H:mm:ssK",..    
06c0: 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48    "yyyy-MM-dd HH
06d0: 3a 6d 6d 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79  :mmK",..      "y
06e0: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a  yyy-MM-ddTHH:mm:
06f0: 73 73 2e 46 46 46 46 46 46 46 4b 22 2c 0d 0a 20  ss.FFFFFFFK",.. 
0700: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64       "yyyy-MM-dd
0710: 54 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20 20 20  THH:mmK",..     
0720: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a   "yyyy-MM-ddTHH:
0730: 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20  mm:ssK",..      
0740: 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73 4b  "yyyyMMddHHmmssK
0750: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d  ",..      "yyyyM
0760: 4d 64 64 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20 20  MddHHmmK",..    
0770: 20 20 22 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d    "yyyyMMddTHHmm
0780: 73 73 46 46 46 46 46 46 46 4b 22 2c 0d 0a 20 20  ssFFFFFFFK",..  
0790: 20 20 20 20 22 54 48 48 6d 6d 73 73 22 2c 0d 0a      "THHmmss",..
07a0: 20 20 20 20 20 20 22 54 48 48 6d 6d 22 2c 0d 0a        "THHmm",..
07b0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e        "HH:mm:ss.
07c0: 46 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20  FFFFFFF",..     
07d0: 20 22 48 48 3a 6d 6d 3a 73 73 22 2c 0d 0a 20 20   "HH:mm:ss",..  
07e0: 20 20 20 20 22 48 48 3a 6d 6d 22 2c 0d 0a 20 20      "HH:mm",..  
07f0: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0800: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0810: 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 4e 6f 6e 2d  ", /* NOTE: Non-
0820: 55 54 43 20 64 65 66 61 75 6c 74 20 28 31 39 29  UTC default (19)
0830: 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 22 79 79 79  . */..      "yyy
0840: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
0850: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0860: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 22 2c 0d 0a 20  MM-dd HH:mm",.. 
0870: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64       "yyyy-MM-dd
0880: 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  THH:mm:ss.FFFFFF
0890: 46 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  F",..      "yyyy
08a0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 22 2c 0d 0a  -MM-ddTHH:mm",..
08b0: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
08c0: 64 54 48 48 3a 6d 6d 3a 73 73 22 2c 0d 0a 20 20  dTHH:mm:ss",..  
08d0: 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d      "yyyyMMddHHm
08e0: 6d 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 79 79  mss",..      "yy
08f0: 79 79 4d 4d 64 64 48 48 6d 6d 22 2c 0d 0a 20 20  yyMMddHHmm",..  
0900: 20 20 20 20 22 79 79 79 79 4d 4d 64 64 54 48 48      "yyyyMMddTHH
0910: 6d 6d 73 73 46 46 46 46 46 46 46 22 2c 0d 0a 20  mmssFFFFFFF",.. 
0920: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64       "yyyy-MM-dd
0930: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d  ",..      "yyyyM
0940: 4d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22 79 79  Mdd",..      "yy
0950: 2d 4d 4d 2d 64 64 22 0d 0a 20 20 20 20 7d 3b 0d  -MM-dd"..    };.
0960: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
0970: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e  ary>..    /// An
0980: 20 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20   UTF-8 Encoding 
0990: 69 6e 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20  instance, so we 
09a0: 63 61 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69  can convert stri
09b0: 6e 67 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20  ngs to and from 
09c0: 55 54 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c  UTF-8..    /// <
09d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
09e0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 45 6e  rivate static En
09f0: 63 6f 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e  coding _utf8 = n
0a00: 65 77 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28  ew UTF8Encoding(
0a10: 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  );..    /// <sum
0a20: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
0a30: 68 65 20 64 65 66 61 75 6c 74 20 44 61 74 65 54  he default DateT
0a40: 69 6d 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74  ime format for t
0a50: 68 69 73 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  his instance..  
0a60: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0a70: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53  ..    internal S
0a80: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
0a90: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0aa0: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;..    /// <summ
0ab0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
0ac0: 65 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69  e default DateTi
0ad0: 6d 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20  meKind for this 
0ae0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0af0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0b00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65     internal Date
0b10: 54 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69  TimeKind _dateti
0b20: 6d 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f  meKind;..    ///
0b30: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0b40: 2f 2f 2f 20 49 6e 69 74 69 61 6c 69 7a 65 73 20  /// Initializes 
0b50: 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 63  the conversion c
0b60: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lass..    /// </
0b70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0b80: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
0b90: 6d 74 22 3e 54 68 65 20 64 65 66 61 75 6c 74 20  mt">The default 
0ba0: 64 61 74 65 2f 74 69 6d 65 20 66 6f 72 6d 61 74  date/time format
0bb0: 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 69 73   to use for this
0bc0: 20 69 6e 73 74 61 6e 63 65 3c 2f 70 61 72 61 6d   instance</param
0bd0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
0be0: 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68  m name="kind">Th
0bf0: 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74  e DateTimeKind t
0c00: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
0c10: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
0c20: 69 74 65 43 6f 6e 76 65 72 74 28 53 51 4c 69 74  iteConvert(SQLit
0c30: 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74  eDateFormats fmt
0c40: 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b  , DateTimeKind k
0c50: 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ind)..    {..   
0c60: 20 20 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d     _datetimeForm
0c70: 61 74 20 3d 20 66 6d 74 3b 0d 0a 20 20 20 20 20  at = fmt;..     
0c80: 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 20 3d   _datetimeKind =
0c90: 20 6b 69 6e 64 3b 0d 0a 20 20 20 20 7d 0d 0a 0d   kind;..    }...
0ca0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46  .    #region UTF
0cb0: 2d 38 20 43 6f 6e 76 65 72 73 69 6f 6e 20 46 75  -8 Conversion Fu
0cc0: 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f  nctions..    ///
0cd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0ce0: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73  /// Converts a s
0cf0: 74 72 69 6e 67 20 74 6f 20 61 20 55 54 46 2d 38  tring to a UTF-8
0d00: 20 65 6e 63 6f 64 65 64 20 62 79 74 65 20 61 72   encoded byte ar
0d10: 72 61 79 20 73 69 7a 65 64 20 74 6f 20 69 6e 63  ray sized to inc
0d20: 6c 75 64 65 20 61 20 6e 75 6c 6c 2d 74 65 72 6d  lude a null-term
0d30: 69 6e 61 74 69 6e 67 20 63 68 61 72 61 63 74 65  inating characte
0d40: 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  r...    /// </su
0d50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0d60: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
0d70: 72 63 65 54 65 78 74 22 3e 54 68 65 20 73 74 72  rceText">The str
0d80: 69 6e 67 20 74 6f 20 63 6f 6e 76 65 72 74 20 74  ing to convert t
0d90: 6f 20 55 54 46 2d 38 3c 2f 70 61 72 61 6d 3e 0d  o UTF-8</param>.
0da0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
0db0: 73 3e 41 20 62 79 74 65 20 61 72 72 61 79 20 63  s>A byte array c
0dc0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 63 6f  ontaining the co
0dd0: 6e 76 65 72 74 65 64 20 73 74 72 69 6e 67 20 70  nverted string p
0de0: 6c 75 73 20 61 6e 20 65 78 74 72 61 20 30 20 74  lus an extra 0 t
0df0: 65 72 6d 69 6e 61 74 69 6e 67 20 62 79 74 65 20  erminating byte 
0e00: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  at the end of th
0e10: 65 20 61 72 72 61 79 2e 3c 2f 72 65 74 75 72 6e  e array.</return
0e20: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
0e30: 74 61 74 69 63 20 62 79 74 65 5b 5d 20 54 6f 55  tatic byte[] ToU
0e40: 54 46 38 28 73 74 72 69 6e 67 20 73 6f 75 72 63  TF8(string sourc
0e50: 65 54 65 78 74 29 0d 0a 20 20 20 20 7b 0d 0a 20  eText)..    {.. 
0e60: 20 20 20 20 20 42 79 74 65 5b 5d 20 62 79 74 65       Byte[] byte
0e70: 41 72 72 61 79 3b 0d 0a 20 20 20 20 20 20 69 6e  Array;..      in
0e80: 74 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38 2e 47  t nlen = _utf8.G
0e90: 65 74 42 79 74 65 43 6f 75 6e 74 28 73 6f 75 72  etByteCount(sour
0ea0: 63 65 54 65 78 74 29 20 2b 20 31 3b 0d 0a 0d 0a  ceText) + 1;....
0eb0: 20 20 20 20 20 20 62 79 74 65 41 72 72 61 79 20        byteArray 
0ec0: 3d 20 6e 65 77 20 62 79 74 65 5b 6e 6c 65 6e 5d  = new byte[nlen]
0ed0: 3b 0d 0a 20 20 20 20 20 20 6e 6c 65 6e 20 3d 20  ;..      nlen = 
0ee0: 5f 75 74 66 38 2e 47 65 74 42 79 74 65 73 28 73  _utf8.GetBytes(s
0ef0: 6f 75 72 63 65 54 65 78 74 2c 20 30 2c 20 73 6f  ourceText, 0, so
0f00: 75 72 63 65 54 65 78 74 2e 4c 65 6e 67 74 68 2c  urceText.Length,
0f10: 20 62 79 74 65 41 72 72 61 79 2c 20 30 29 3b 0d   byteArray, 0);.
0f20: 0a 20 20 20 20 20 20 62 79 74 65 41 72 72 61 79  .      byteArray
0f30: 5b 6e 6c 65 6e 5d 20 3d 20 30 3b 0d 0a 0d 0a 20  [nlen] = 0;.... 
0f40: 20 20 20 20 20 72 65 74 75 72 6e 20 62 79 74 65       return byte
0f50: 41 72 72 61 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  Array;..    }...
0f60: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f70: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
0f80: 65 72 74 20 61 20 44 61 74 65 54 69 6d 65 20 74  ert a DateTime t
0f90: 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  o a UTF-8 encode
0fa0: 64 2c 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  d, zero-terminat
0fb0: 65 64 20 62 79 74 65 20 61 72 72 61 79 2e 0d 0a  ed byte array...
0fc0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0fd0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
0fe0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
0ff0: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
1000: 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75  a convenience fu
1010: 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20 66 69  nction, which fi
1020: 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74 72 69  rst calls ToStri
1030: 6e 67 28 29 20 6f 6e 20 74 68 65 20 44 61 74 65  ng() on the Date
1040: 54 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e 20 63  Time, and then c
1050: 61 6c 6c 73 20 54 6f 55 54 46 38 28 29 20 77 69  alls ToUTF8() wi
1060: 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  th the..    /// 
1070: 73 74 72 69 6e 67 20 72 65 73 75 6c 74 2e 0d 0a  string result...
1080: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
1090: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
10a0: 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 69 6d  am name="dateTim
10b0: 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65  eValue">The Date
10c0: 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e  Time to convert.
10d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
10e0: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 55  / <returns>The U
10f0: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72  TF-8 encoded str
1100: 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67 20 61  ing, including a
1110: 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67 20 62   0 terminating b
1120: 79 74 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f  yte at the end o
1130: 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f 72 65  f the array.</re
1140: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
1150: 69 63 20 62 79 74 65 5b 5d 20 54 6f 55 54 46 38  ic byte[] ToUTF8
1160: 28 44 61 74 65 54 69 6d 65 20 64 61 74 65 54 69  (DateTime dateTi
1170: 6d 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  meValue)..    {.
1180: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f  .      return To
1190: 55 54 46 38 28 54 6f 53 74 72 69 6e 67 28 64 61  UTF8(ToString(da
11a0: 74 65 54 69 6d 65 56 61 6c 75 65 29 29 3b 0d 0a  teTimeValue));..
11b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
11c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11d0: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 55  /// Converts a U
11e0: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49 6e 74  TF-8 encoded Int
11f0: 50 74 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  Ptr of the speci
1200: 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f  fied length into
1210: 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67 0d 0a   a .NET string..
1220: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1230: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
1240: 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73  am name="natives
1250: 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69 6e 74  tring">The point
1260: 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79  er to the memory
1270: 20 77 68 65 72 65 20 74 68 65 20 55 54 46 2d 38   where the UTF-8
1280: 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63 6f 64   string is encod
1290: 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  ed</param>..    
12a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12b0: 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e  "nativestringlen
12c0: 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  ">The number of 
12d0: 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64 65 3c  bytes to decode<
12e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
12f0: 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69   <returns>A stri
1300: 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
1310: 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63 68 61  e translated cha
1320: 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74 75 72  racter(s)</retur
1330: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
1340: 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20 54  virtual string T
1350: 6f 53 74 72 69 6e 67 28 49 6e 74 50 74 72 20 6e  oString(IntPtr n
1360: 61 74 69 76 65 73 74 72 69 6e 67 2c 20 69 6e 74  ativestring, int
1370: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1380: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1390: 72 65 74 75 72 6e 20 55 54 46 38 54 6f 53 74 72  return UTF8ToStr
13a0: 69 6e 67 28 6e 61 74 69 76 65 73 74 72 69 6e 67  ing(nativestring
13b0: 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65  , nativestringle
13c0: 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  n);..    }....  
13d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13e0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
13f0: 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  s a UTF-8 encode
1400: 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20  d IntPtr of the 
1410: 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
1420: 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73 74 72   into a .NET str
1430: 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ing..    /// </s
1440: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1450: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
1460: 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68 65 20  tivestring">The 
1470: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
1480: 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68 65 20  emory where the 
1490: 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69 73 20  UTF-8 string is 
14a0: 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d  encoded</param>.
14b0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
14c0: 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69  name="nativestri
14d0: 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65  nglen">The numbe
14e0: 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 64 65  r of bytes to de
14f0: 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  code</param>..  
1500: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
1510: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
1520: 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61 74 65  ng the translate
1530: 64 20 63 68 61 72 61 63 74 65 72 28 73 29 3c 2f  d character(s)</
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 73 74 72 69  blic static stri
1560: 6e 67 20 55 54 46 38 54 6f 53 74 72 69 6e 67 28  ng UTF8ToString(
1570: 49 6e 74 50 74 72 20 6e 61 74 69 76 65 73 74 72  IntPtr nativestr
1580: 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76 65 73  ing, int natives
1590: 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b  tringlen)..    {
15a0: 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61 74 69  ..      if (nati
15b0: 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20 30  vestringlen == 0
15c0: 20 7c 7c 20 6e 61 74 69 76 65 73 74 72 69 6e 67   || nativestring
15d0: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
15e0: 20 72 65 74 75 72 6e 20 22 22 3b 0d 0a 20 20 20   return "";..   
15f0: 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72     if (nativestr
1600: 69 6e 67 6c 65 6e 20 3d 3d 20 2d 31 29 0d 0a 20  inglen == -1).. 
1610: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1620: 64 6f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  do..        {.. 
1630: 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 73           natives
1640: 74 72 69 6e 67 6c 65 6e 2b 2b 3b 0d 0a 20 20 20  tringlen++;..   
1650: 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 4d 61       } while (Ma
1660: 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65 28 6e  rshal.ReadByte(n
1670: 61 74 69 76 65 73 74 72 69 6e 67 2c 20 6e 61 74  ativestring, nat
1680: 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 20 21 3d  ivestringlen) !=
1690: 20 30 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d   0);..      }...
16a0: 0a 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79  .      byte[] by
16b0: 74 65 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79  teArray = new by
16c0: 74 65 5b 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  te[nativestringl
16d0: 65 6e 5d 3b 0d 0a 20 20 20 20 20 20 0d 0a 20 20  en];..      ..  
16e0: 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79      Marshal.Copy
16f0: 28 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20 62  (nativestring, b
1700: 79 74 65 41 72 72 61 79 2c 20 30 2c 20 6e 61 74  yteArray, 0, nat
1710: 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a  ivestringlen);..
1720: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
1730: 75 74 66 38 2e 47 65 74 53 74 72 69 6e 67 28 62  utf8.GetString(b
1740: 79 74 65 41 72 72 61 79 2c 20 30 2c 20 6e 61 74  yteArray, 0, nat
1750: 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a  ivestringlen);..
1760: 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 23      }......    #
1770: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1780: 20 23 72 65 67 69 6f 6e 20 44 61 74 65 54 69 6d   #region DateTim
1790: 65 20 43 6f 6e 76 65 72 73 69 6f 6e 20 46 75 6e  e Conversion Fun
17a0: 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20  ctions..    /// 
17b0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
17c0: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74  // Converts a st
17d0: 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65  ring into a Date
17e0: 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20  Time, using the 
17f0: 63 75 72 72 65 6e 74 20 44 61 74 65 54 69 6d 65  current DateTime
1800: 46 6f 72 6d 61 74 20 73 70 65 63 69 66 69 65 64  Format specified
1810: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
1820: 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20  ion when it was 
1830: 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  opened...    ///
1840: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1850: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
1860: 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74 61 62      /// Acceptab
1870: 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74 65 54  le ISO8601 DateT
1880: 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72 65 3a  ime formats are:
1890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20  ..    /// <list 
18a0: 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a  type="bullet">..
18b0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
18c0: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
18d0: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
18e0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
18f0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
1900: 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64 65 73  tion>THHmmK</des
1910: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
1920: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1930: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
1940: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f  mm:ss.FFFFFFFK</
1950: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
1960: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
1970: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
1980: 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72  HH:mm:ssK</descr
1990: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
19a0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
19b0: 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d  escription>HH:mm
19c0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
19d0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
19e0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
19f0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
1a00: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c  :mm:ss.FFFFFFFK<
1a10: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
1a20: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
1a30: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1a40: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
1a50: 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  m:ssK</descripti
1a60: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
1a70: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
1a80: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
1a90: 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69  d HH:mmK</descri
1aa0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
1ab0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
1ac0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
1ad0: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-ddTHH:mm:ss.FF
1ae0: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
1af0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
1b00: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
1b10: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
1b20: 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72  ddTHH:mmK</descr
1b30: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
1b40: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
1b50: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
1b60: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 4b 3c  MM-ddTHH:mm:ssK<
1b70: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
1b80: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
1b90: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1ba0: 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73 4b  >yyyyMMddHHmmssK
1bb0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
1bc0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
1bd0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
1be0: 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 3c  n>yyyyMMddHHmmK<
1bf0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
1c00: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
1c10: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1c20: 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d 73 73  >yyyyMMddTHHmmss
1c30: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
1c40: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
1c50: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
1c60: 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 73  scription>THHmms
1c70: 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  s</description><
1c80: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1c90: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1ca0: 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63 72 69  on>THHmm</descri
1cb0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
1cc0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
1cd0: 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a  scription>HH:mm:
1ce0: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63  ss.FFFFFFF</desc
1cf0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
1d00: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
1d10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
1d20: 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  m:ss</descriptio
1d30: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
1d40: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
1d50: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64 65 73  ption>HH:mm</des
1d60: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
1d70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1d80: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
1d90: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
1da0: 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72 69  .FFFFFFF</descri
1db0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
1dc0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
1dd0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
1de0: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c 2f 64  M-dd HH:mm:ss</d
1df0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
1e00: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
1e10: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
1e20: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3c  yyy-MM-dd HH:mm<
1e30: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
1e40: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
1e50: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1e60: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
1e70: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
1e80: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
1e90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
1ea0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
1eb0: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3c 2f  yy-MM-ddTHH:mm</
1ec0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
1ed0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
1ee0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
1ef0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
1f00: 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :ss</description
1f10: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
1f20: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
1f30: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
1f40: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mss</description
1f50: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
1f60: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
1f70: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
1f80: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
1f90: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1fa0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1fb0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d  on>yyyyMMddTHHmm
1fc0: 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72  ssFFFFFFF</descr
1fd0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
1fe0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
1ff0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
2000: 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70 74 69  MM-dd</descripti
2010: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
2020: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2030: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 3c  iption>yyyyMMdd<
2040: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2050: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2060: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2070: 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72  >yy-MM-dd</descr
2080: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2090: 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d      /// </list>.
20a0: 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20  .    /// If the 
20b0: 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20 62 65  string cannot be
20c0: 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e 65 20   matched to one 
20d0: 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66 6f 72  of the above for
20e0: 6d 61 74 73 2c 20 61 6e 20 65 78 63 65 70 74 69  mats, an excepti
20f0: 6f 6e 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77  on will be throw
2100: 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  n...    /// </re
2110: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
2120: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74  <param name="dat
2130: 65 54 65 78 74 22 3e 54 68 65 20 73 74 72 69 6e  eText">The strin
2140: 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 69 74  g containing eit
2150: 68 65 72 20 61 20 6c 6f 6e 67 20 69 6e 74 65 67  her a long integ
2160: 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30  er number of 100
2170: 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74  -nanosecond unit
2180: 73 20 73 69 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f  s since..    ///
2190: 20 53 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65   System.DateTime
21a0: 2e 4d 69 6e 56 61 6c 75 65 2c 20 61 20 4a 75 6c  .MinValue, a Jul
21b0: 69 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20  ian day double, 
21c0: 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65  an integer numbe
21d0: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
21e0: 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  ce the Unix epoc
21f0: 68 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 75  h, a..    /// cu
2200: 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e  lture-independen
2210: 74 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  t formatted date
2220: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
2230: 2c 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61  , a formatted da
2240: 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69  te and time stri
2250: 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  ng in the curren
2260: 74 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75  t..    /// cultu
2270: 72 65 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30  re, or an ISO860
2280: 31 2d 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e  1-format string.
2290: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
22a0: 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 44 61 74  / <returns>A Dat
22b0: 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74  eTime value</ret
22c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
22d0: 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74  c DateTime ToDat
22e0: 65 54 69 6d 65 28 73 74 72 69 6e 67 20 64 61 74  eTime(string dat
22f0: 65 54 65 78 74 29 0d 0a 20 20 20 20 7b 0d 0a 20  eText)..    {.. 
2300: 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61       return ToDa
2310: 74 65 54 69 6d 65 28 64 61 74 65 54 65 78 74 2c  teTime(dateText,
2320: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
2330: 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 29  , _datetimeKind)
2340: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
2350: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2360: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2370: 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20  a string into a 
2380: 44 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20  DateTime, using 
2390: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44 61  the specified Da
23a0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 20 61 6e 64  teTimeFormat and
23b0: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a   DateTimeKind...
23c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
23d0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
23e0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  arks>..    /// A
23f0: 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36 30  cceptable ISO860
2400: 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  1 DateTime forma
2410: 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f  ts are:..    ///
2420: 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c   <list type="bul
2430: 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  let">..    /// <
2440: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2450: 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63  n>THHmmssK</desc
2460: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2470: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2480: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
2490: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
24a0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
24b0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
24c0: 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  ion>HH:mm:ss.FFF
24d0: 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69  FFFFK</descripti
24e0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
24f0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2500: 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b  iption>HH:mm:ssK
2510: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2520: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2530: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2540: 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69  n>HH:mmK</descri
2550: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2560: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2570: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
2580: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
2590: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
25a0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
25b0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
25c0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
25d0: 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65  dd HH:mm:ssK</de
25e0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
25f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2600: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2610: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c  yy-MM-dd HH:mmK<
2620: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2630: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2640: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2650: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
2660: 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64  m:ss.FFFFFFFK</d
2670: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
2680: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
2690: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
26a0: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b  yyy-MM-ddTHH:mmK
26b0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
26c0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
26d0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
26e0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
26f0: 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  mm:ssK</descript
2700: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2710: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2720: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
2730: 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70  HHmmssK</descrip
2740: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
2750: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
2760: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
2770: 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74  dHHmmK</descript
2780: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2790: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
27a0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
27b0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c  THHmmssFFFFFFFK<
27c0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
27d0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
27e0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
27f0: 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69  >THHmmss</descri
2800: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2810: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2820: 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c  scription>THHmm<
2830: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2840: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2850: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2860: 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  >HH:mm:ss.FFFFFF
2870: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
2880: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
2890: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
28a0: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73  on>HH:mm:ss</des
28b0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
28c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
28d0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
28e0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
28f0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2900: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2910: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
2920: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
2930: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2940: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2950: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2960: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
2970: 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  m:ss</descriptio
2980: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2990: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
29a0: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
29b0: 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74   HH:mm</descript
29c0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
29d0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
29e0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
29f0: 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  ddTHH:mm:ss.FFFF
2a00: 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFF</description
2a10: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2a20: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
2a30: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54  tion>yyyy-MM-ddT
2a40: 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69  HH:mm</descripti
2a50: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
2a60: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2a70: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
2a80: 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63  dTHH:mm:ss</desc
2a90: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2aa0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2ab0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
2ac0: 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63  MMddHHmmss</desc
2ad0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2ae0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2af0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
2b00: 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69  MMddHHmm</descri
2b10: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2b20: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2b30: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
2b40: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
2b50: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2b60: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2b70: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2b80: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65  n>yyyy-MM-dd</de
2b90: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2ba0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2bb0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2bc0: 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70 74  yyMMdd</descript
2bd0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2be0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2bf0: 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64  ription>yy-MM-dd
2c00: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2c10: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2c20: 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /list>..    /// 
2c30: 49 66 20 74 68 65 20 73 74 72 69 6e 67 20 63 61  If the string ca
2c40: 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64 20  nnot be matched 
2c50: 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  to one of the ab
2c60: 6f 76 65 20 66 6f 72 6d 61 74 73 2c 20 61 6e 20  ove formats, an 
2c70: 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62  exception will b
2c80: 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f  e thrown...    /
2c90: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
2ca0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2cb0: 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68  me="dateText">Th
2cc0: 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
2cd0: 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e  ing either a lon
2ce0: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
2cf0: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
2d00: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a  nd units since..
2d10: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44      /// System.D
2d20: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
2d30: 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  , a Julian day d
2d40: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
2d50: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
2d60: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
2d70: 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20  ix epoch, a..   
2d80: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64   /// culture-ind
2d90: 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74  ependent formatt
2da0: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ed date and time
2db0: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
2dc0: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
2dd0: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
2de0: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f   current..    //
2df0: 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e  / culture, or an
2e00: 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20   ISO8601-format 
2e10: 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d  string.</param>.
2e20: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
2e30: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68  name="format">Th
2e40: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
2e50: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ats to use.</par
2e60: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
2e70: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
2e80: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
2e90: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
2ea0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
2eb0: 6e 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61  ns>A DateTime va
2ec0: 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  lue</returns>.. 
2ed0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
2ee0: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65   DateTime ToDate
2ef0: 54 69 6d 65 28 73 74 72 69 6e 67 20 64 61 74 65  Time(string date
2f00: 54 65 78 74 2c 20 53 51 4c 69 74 65 44 61 74 65  Text, SQLiteDate
2f10: 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 2c 20  Formats format, 
2f20: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e  DateTimeKind kin
2f30: 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  d)..    {..     
2f40: 20 20 20 73 77 69 74 63 68 20 28 66 6f 72 6d 61     switch (forma
2f50: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
2f60: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
2f70: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
2f80: 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 20 20 20  s.Ticks:..      
2f90: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb0: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65   return new Date
2fc0: 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 49  Time(Convert.ToI
2fd0: 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20  nt64(..         
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
2ff0: 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65  ateText, Culture
3000: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
3010: 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a  lture), kind);..
3020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3030: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
3040: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
3050: 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79 3a  rmats.JulianDay:
3060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3070: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3080: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3090: 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65  ToDateTime(Conve
30a0: 72 74 2e 54 6f 44 6f 75 62 6c 65 28 0d 0a 20 20  rt.ToDouble(..  
30b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c0: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
30d0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
30e0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b  riantCulture), k
30f0: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
3100: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3110: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
3120: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69  eDateFormats.Uni
3130: 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20  xEpoch:..       
3140: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3160: 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e  return DateTime.
3170: 53 70 65 63 69 66 79 4b 69 6e 64 28 0d 0a 20 20  SpecifyKind(..  
3180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3190: 20 20 20 20 20 20 55 6e 69 78 45 70 6f 63 68 2e        UnixEpoch.
31a0: 41 64 64 53 65 63 6f 6e 64 73 28 43 6f 6e 76 65  AddSeconds(Conve
31b0: 72 74 2e 54 6f 49 6e 74 33 32 28 0d 0a 20 20 20  rt.ToInt32(..   
31c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 43       dateText, C
31e0: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
31f0: 69 61 6e 74 43 75 6c 74 75 72 65 29 29 2c 20 6b  iantCulture)), k
3200: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
3210: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3220: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
3230: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76  eDateFormats.Inv
3240: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a  ariantCulture:..
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3260: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3270: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
3280: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
3290: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73  nd(DateTime.Pars
32a0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
32b0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
32c0: 54 65 78 74 2c 20 44 61 74 65 54 69 6d 65 46 6f  Text, DateTimeFo
32d0: 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61  rmatInfo.Invaria
32e0: 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20  ntInfo,..       
32f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3300: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
3310: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3330: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
3340: 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f  eStyles.AdjustTo
3350: 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20  Universal :..   
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
3380: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
3390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a0: 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a          kind);..
33b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
33d0: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
33e0: 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75 6c  rmats.CurrentCul
33f0: 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20  ture:..         
3400: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3420: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
3430: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
3440: 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20  me.Parse(..     
3450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3460: 20 20 20 64 61 74 65 54 65 78 74 2c 20 44 61 74     dateText, Dat
3470: 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e  eTimeFormatInfo.
3480: 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20  CurrentInfo,..  
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34a0: 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61        kind == Da
34b0: 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f  teTimeKind.Utc ?
34c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
34e0: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a  teTimeStyles.Adj
34f0: 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a  ustToUniversal :
3500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
3520: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e  teTimeStyles.Non
3530: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
3540: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e               kin
3550: 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
3560: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3570: 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
3580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
3590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35a0: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
35b0: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
35c0: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
35d0: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
35e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
35f0: 61 74 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69  ateText, _dateti
3600: 6d 65 46 6f 72 6d 61 74 73 2c 0d 0a 20 20 20 20  meFormats,..    
3610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3620: 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d      DateTimeForm
3630: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
3640: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
3650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
3660: 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b  ind == DateTimeK
3670: 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20  ind.Utc ?..     
3680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3690: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
36a0: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
36b0: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
36c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
36e0: 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20  tyles.None),..  
36f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3700: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
3720: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
3730: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
3740: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
3750: 43 6f 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61  Converts a julia
3760: 6e 64 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20  nday value into 
3770: 61 20 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20  a DateTime..    
3780: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
3790: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
37a0: 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e  ame="julianDay">
37b0: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  The value to con
37c0: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
37d0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
37e0: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
37f0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
3800: 62 6c 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  blic DateTime To
3810: 44 61 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20  DateTime(double 
3820: 6a 75 6c 69 61 6e 44 61 79 29 0d 0a 20 20 20 20  julianDay)..    
3830: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
3840: 54 6f 44 61 74 65 54 69 6d 65 28 6a 75 6c 69 61  ToDateTime(julia
3850: 6e 44 61 79 2c 20 5f 64 61 74 65 74 69 6d 65 4b  nDay, _datetimeK
3860: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
3870: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3880: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
3890: 72 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20  rts a julianday 
38a0: 76 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74  value into a Dat
38b0: 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  eTime..    /// <
38c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
38d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
38e0: 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76  julianDay">The v
38f0: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
3900: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
3910: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
3920: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
3930: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</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 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
3960: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
3970: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
3980: 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44  tic DateTime ToD
3990: 61 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20 6a  ateTime(double j
39a0: 75 6c 69 61 6e 44 61 79 2c 20 44 61 74 65 54 69  ulianDay, DateTi
39b0: 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a 20 20  meKind kind)..  
39c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
39d0: 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65  urn DateTime.Spe
39e0: 63 69 66 79 4b 69 6e 64 28 0d 0a 20 20 20 20 20  cifyKind(..     
39f0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 2e         DateTime.
3a00: 46 72 6f 6d 4f 41 44 61 74 65 28 6a 75 6c 69 61  FromOADate(julia
3a10: 6e 44 61 79 20 2d 20 4f 6c 65 41 75 74 6f 6d 61  nDay - OleAutoma
3a20: 74 69 6f 6e 45 70 6f 63 68 41 73 4a 75 6c 69 61  tionEpochAsJulia
3a30: 6e 44 61 79 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20  nDay), kind);.. 
3a40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
3a50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
3a60: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 44 61  // Converts a Da
3a70: 74 65 54 69 6d 65 20 73 74 72 75 63 74 20 74 6f  teTime struct to
3a80: 20 61 20 4a 75 6c 69 61 6e 44 61 79 20 64 6f 75   a JulianDay dou
3a90: 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ble..    /// </s
3aa0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
3ab0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61   <param name="va
3ac0: 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d  lue">The DateTim
3ad0: 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61  e to convert</pa
3ae0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
3af0: 65 74 75 72 6e 73 3e 54 68 65 20 4a 75 6c 69 61  eturns>The Julia
3b00: 6e 44 61 79 20 76 61 6c 75 65 20 74 68 65 20 44  nDay value the D
3b10: 61 74 65 74 69 6d 65 20 72 65 70 72 65 73 65 6e  atetime represen
3b20: 74 73 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  ts</returns>..  
3b30: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
3b40: 64 6f 75 62 6c 65 20 54 6f 4a 75 6c 69 61 6e 44  double ToJulianD
3b50: 61 79 28 44 61 74 65 54 69 6d 65 20 76 61 6c 75  ay(DateTime valu
3b60: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
3b70: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f   return value.To
3b80: 4f 41 44 61 74 65 28 29 20 2b 20 4f 6c 65 41 75  OADate() + OleAu
3b90: 74 6f 6d 61 74 69 6f 6e 45 70 6f 63 68 41 73 4a  tomationEpochAsJ
3ba0: 75 6c 69 61 6e 44 61 79 3b 0d 0a 20 20 20 20 7d  ulianDay;..    }
3bb0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
3bc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
3bd0: 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54 69  onverts a DateTi
3be0: 6d 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20 76  me to a string v
3bf0: 61 6c 75 65 2c 20 75 73 69 6e 67 20 74 68 65 20  alue, using the 
3c00: 63 75 72 72 65 6e 74 20 44 61 74 65 54 69 6d 65  current DateTime
3c10: 46 6f 72 6d 61 74 20 73 70 65 63 69 66 69 65 64  Format specified
3c20: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
3c30: 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20  ion when it was 
3c40: 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  opened...    ///
3c50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
3c60: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
3c70: 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68 65  ="dateValue">The
3c80: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 20   DateTime value 
3c90: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
3ca0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
3cb0: 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73 74  urns>Either a st
3cc0: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
3cd0: 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72  the long integer
3ce0: 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e   number of 100-n
3cf0: 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20  anosecond units 
3d00: 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61 74  since System.Dat
3d10: 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20  eTime.MinValue, 
3d20: 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61  a..    /// Julia
3d30: 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e  n day double, an
3d40: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
3d50: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
3d60: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c   the Unix epoch,
3d70: 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70   a culture-indep
3d80: 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64  endent formatted
3d90: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d 0a   date and time..
3da0: 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20      /// string, 
3db0: 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  a formatted date
3dc0: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
3dd0: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
3de0: 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49  culture, or an I
3df0: 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64 61  SO8601-format da
3e00: 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e 3c  te/time string.<
3e10: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
3e20: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 54 6f 53  ublic string ToS
3e30: 74 72 69 6e 67 28 44 61 74 65 54 69 6d 65 20 64  tring(DateTime d
3e40: 61 74 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  ateValue)..    {
3e50: 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68 20 28  ..      switch (
3e60: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 29  _datetimeFormat)
3e70: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
3e80: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
3e90: 74 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a  teFormats.Ticks:
3ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
3eb0: 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 69 63  rn dateValue.Tic
3ec0: 6b 73 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  ks.ToString(Cult
3ed0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
3ee0: 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20  tCulture);..    
3ef0: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
3f00: 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69 61  ateFormats.Julia
3f10: 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 20  nDay:..         
3f20: 20 72 65 74 75 72 6e 20 54 6f 4a 75 6c 69 61 6e   return ToJulian
3f30: 44 61 79 28 64 61 74 65 56 61 6c 75 65 29 2e 54  Day(dateValue).T
3f40: 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49  oString(CultureI
3f50: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
3f60: 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ture);..        
3f70: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
3f80: 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63 68  ormats.UnixEpoch
3f90: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  :..          ret
3fa0: 75 72 6e 20 28 28 6c 6f 6e 67 29 28 64 61 74 65  urn ((long)(date
3fb0: 56 61 6c 75 65 2e 53 75 62 74 72 61 63 74 28 55  Value.Subtract(U
3fc0: 6e 69 78 45 70 6f 63 68 29 2e 54 69 63 6b 73 20  nixEpoch).Ticks 
3fd0: 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69 63 6b 73  / TimeSpan.Ticks
3fe0: 50 65 72 53 65 63 6f 6e 64 29 29 2e 54 6f 53 74  PerSecond)).ToSt
3ff0: 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20  ring();..       
4000: 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65   case SQLiteDate
4010: 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e  Formats.Invarian
4020: 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20  tCulture:..     
4030: 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65       return date
4040: 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 46  Value.ToString(F
4050: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
4060: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
4070: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
4080: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
4090: 74 65 46 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e  teFormats.Curren
40a0: 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20  tCulture:..     
40b0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65       return date
40c0: 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 46  Value.ToString(F
40d0: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
40e0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
40f0: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
4100: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
4110: 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 61 74       return (dat
4120: 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d 3d 20 44  eValue.Kind == D
4130: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29  ateTimeKind.Utc)
4140: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
4150: 20 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74    dateValue.ToSt
4160: 72 69 6e 67 28 5f 64 61 74 65 74 69 6d 65 46 6f  ring(_datetimeFo
4170: 72 6d 61 74 73 5b 35 5d 2c 20 43 75 6c 74 75 72  rmats[5], Cultur
4180: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
4190: 75 6c 74 75 72 65 29 20 3a 20 2f 2f 20 69 6e 63  ulture) : // inc
41a0: 6c 75 64 65 20 22 5a 22 0d 0a 20 20 20 20 20 20  lude "Z"..      
41b0: 20 20 20 20 20 20 20 20 64 61 74 65 56 61 6c 75          dateValu
41c0: 65 2e 54 6f 53 74 72 69 6e 67 28 5f 64 61 74 65  e.ToString(_date
41d0: 74 69 6d 65 46 6f 72 6d 61 74 73 5b 31 39 5d 2c  timeFormats[19],
41e0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
41f0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
4200: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d  .      }..    }.
4210: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
4220: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e  ary>..    /// In
4230: 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 20  ternal function 
4240: 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 55 54 46  to convert a UTF
4250: 2d 38 20 65 6e 63 6f 64 65 64 20 49 6e 74 50 74  -8 encoded IntPt
4260: 72 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  r of the specifi
4270: 65 64 20 6c 65 6e 67 74 68 20 74 6f 20 61 20 44  ed length to a D
4280: 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f  ateTime...    //
4290: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
42a0: 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
42b0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73  .    /// This is
42c0: 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66   a convenience f
42d0: 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20 66  unction, which f
42e0: 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74 72  irst calls ToStr
42f0: 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 49 6e 74  ing() on the Int
4300: 50 74 72 20 74 6f 20 63 6f 6e 76 65 72 74 20 69  Ptr to convert i
4310: 74 20 74 6f 20 61 20 73 74 72 69 6e 67 2c 20 74  t to a string, t
4320: 68 65 6e 20 63 61 6c 6c 73 0d 0a 20 20 20 20 2f  hen calls..    /
4330: 2f 2f 20 54 6f 44 61 74 65 54 69 6d 65 28 29 20  // ToDateTime() 
4340: 6f 6e 20 74 68 65 20 73 74 72 69 6e 67 20 74 6f  on the string to
4350: 20 72 65 74 75 72 6e 20 61 20 44 61 74 65 54 69   return a DateTi
4360: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  me...    /// </r
4370: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
4380: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 74   <param name="pt
4390: 72 22 3e 41 20 70 6f 69 6e 74 65 72 20 74 6f 20  r">A pointer to 
43a0: 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  the UTF-8 encode
43b0: 64 20 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e  d string</param>
43c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
43d0: 20 6e 61 6d 65 3d 22 6c 65 6e 22 3e 54 68 65 20   name="len">The 
43e0: 6c 65 6e 67 74 68 20 69 6e 20 62 79 74 65 73 20  length in bytes 
43f0: 6f 66 20 74 68 65 20 73 74 72 69 6e 67 3c 2f 70  of the string</p
4400: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
4410: 72 65 74 75 72 6e 73 3e 54 68 65 20 70 61 72 73  returns>The pars
4420: 65 64 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  ed DateTime valu
4430: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
4440: 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54 69   internal DateTi
4450: 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28 49 6e  me ToDateTime(In
4460: 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20 6c 65  tPtr ptr, int le
4470: 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  n)..    {..     
4480: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
4490: 6d 65 28 54 6f 53 74 72 69 6e 67 28 70 74 72 2c  me(ToString(ptr,
44a0: 20 6c 65 6e 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a   len));..    }..
44b0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
44c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
44d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  mary>..    /// S
44e0: 6d 61 72 74 20 6d 65 74 68 6f 64 20 6f 66 20 73  mart method of s
44f0: 70 6c 69 74 74 69 6e 67 20 61 20 73 74 72 69 6e  plitting a strin
4500: 67 2e 20 20 53 6b 69 70 73 20 71 75 6f 74 65 64  g.  Skips quoted
4510: 20 65 6c 65 6d 65 6e 74 73 2c 20 72 65 6d 6f 76   elements, remov
4520: 65 73 20 74 68 65 20 71 75 6f 74 65 73 2e 0d 0a  es the quotes...
4530: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4540: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
4550: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
4560: 68 69 73 20 73 70 6c 69 74 20 66 75 6e 63 74 69  his split functi
4570: 6f 6e 20 77 6f 72 6b 73 20 73 6f 6d 65 77 68 61  on works somewha
4580: 74 20 6c 69 6b 65 20 74 68 65 20 53 74 72 69 6e  t like the Strin
4590: 67 2e 53 70 6c 69 74 28 29 20 66 75 6e 63 74 69  g.Split() functi
45a0: 6f 6e 20 69 6e 20 74 68 61 74 20 69 74 20 62 72  on in that it br
45b0: 65 61 6b 73 20 61 70 61 72 74 20 61 20 73 74 72  eaks apart a str
45c0: 69 6e 67 20 69 6e 74 6f 0d 0a 20 20 20 20 2f 2f  ing into..    //
45d0: 2f 20 70 69 65 63 65 73 20 61 6e 64 20 72 65 74  / pieces and ret
45e0: 75 72 6e 73 20 74 68 65 20 70 69 65 63 65 73 20  urns the pieces 
45f0: 61 73 20 61 6e 20 61 72 72 61 79 2e 20 20 54 68  as an array.  Th
4600: 65 20 70 72 69 6d 61 72 79 20 64 69 66 66 65 72  e primary differ
4610: 65 6e 63 65 73 20 61 72 65 3a 0d 0a 20 20 20 20  ences are:..    
4620: 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22  /// <list type="
4630: 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f  bullet">..    //
4640: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4650: 74 69 6f 6e 3e 4f 6e 6c 79 20 6f 6e 65 20 63 68  tion>Only one ch
4660: 61 72 61 63 74 65 72 20 63 61 6e 20 62 65 20 70  aracter can be p
4670: 72 6f 76 69 64 65 64 20 61 73 20 61 20 73 65 70  rovided as a sep
4680: 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72  arator character
4690: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
46a0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
46b0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
46c0: 6e 3e 51 75 6f 74 65 64 20 74 65 78 74 20 69 6e  n>Quoted text in
46d0: 73 69 64 65 20 74 68 65 20 73 74 72 69 6e 67 20  side the string 
46e0: 69 73 20 73 6b 69 70 70 65 64 20 6f 76 65 72 20  is skipped over 
46f0: 77 68 65 6e 20 73 65 61 72 63 68 69 6e 67 20 66  when searching f
4700: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
4710: 2c 20 61 6e 64 20 74 68 65 20 71 75 6f 74 65 73  , and the quotes
4720: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 64   are removed.</d
4730: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4740: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69  m>..    /// </li
4750: 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 75  st>..    /// Thu
4760: 73 2c 20 69 66 20 73 70 6c 69 74 74 69 6e 67 20  s, if splitting 
4770: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74  the following st
4780: 72 69 6e 67 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72  ring looking for
4790: 20 61 20 63 6f 6d 6d 61 3a 3c 62 72 2f 3e 0d 0a   a comma:<br/>..
47a0: 20 20 20 20 2f 2f 2f 20 4f 6e 65 2c 54 77 6f 2c      /// One,Two,
47b0: 20 22 54 68 72 65 65 2c 20 46 6f 75 72 22 2c 20   "Three, Four", 
47c0: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
47d0: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
47e0: 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / The resulting 
47f0: 61 72 72 61 79 20 77 6f 75 6c 64 20 63 6f 6e 74  array would cont
4800: 61 69 6e 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  ain<br/>..    //
4810: 2f 20 5b 30 5d 20 4f 6e 65 3c 62 72 2f 3e 0d 0a  / [0] One<br/>..
4820: 20 20 20 20 2f 2f 2f 20 5b 31 5d 20 54 77 6f 3c      /// [1] Two<
4830: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 32  br/>..    /// [2
4840: 5d 20 54 68 72 65 65 2c 20 46 6f 75 72 3c 62 72  ] Three, Four<br
4850: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 33 5d 20  />..    /// [3] 
4860: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
4870: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
4880: 2f 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  / Note that the 
4890: 6c 65 61 64 69 6e 67 20 61 6e 64 20 74 72 61 69  leading and trai
48a0: 6c 69 6e 67 20 73 70 61 63 65 73 20 77 65 72 65  ling spaces were
48b0: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 65 61   removed from ea
48c0: 63 68 20 69 74 65 6d 20 64 75 72 69 6e 67 20 74  ch item during t
48d0: 68 65 20 73 70 6c 69 74 2e 0d 0a 20 20 20 20 2f  he split...    /
48e0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
48f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
4900: 6d 65 3d 22 73 6f 75 72 63 65 22 3e 53 6f 75 72  me="source">Sour
4910: 63 65 20 73 74 72 69 6e 67 20 74 6f 20 73 70 6c  ce string to spl
4920: 69 74 20 61 70 61 72 74 3c 2f 70 61 72 61 6d 3e  it apart</param>
4930: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4940: 20 6e 61 6d 65 3d 22 73 65 70 61 72 61 74 6f 72   name="separator
4950: 22 3e 53 65 70 61 72 61 74 6f 72 20 63 68 61 72  ">Separator char
4960: 61 63 74 65 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20  acter</param>.. 
4970: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4980: 41 20 73 74 72 69 6e 67 20 61 72 72 61 79 20 6f  A string array o
4990: 66 20 74 68 65 20 73 70 6c 69 74 20 75 70 20 65  f the split up e
49a0: 6c 65 6d 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73  lements</returns
49b0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
49c0: 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53 70  atic string[] Sp
49d0: 6c 69 74 28 73 74 72 69 6e 67 20 73 6f 75 72 63  lit(string sourc
49e0: 65 2c 20 63 68 61 72 20 73 65 70 61 72 61 74 6f  e, char separato
49f0: 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  r)..    {..     
4a00: 20 63 68 61 72 5b 5d 20 74 6f 6b 73 20 3d 20 6e   char[] toks = n
4a10: 65 77 20 63 68 61 72 5b 32 5d 20 7b 20 27 5c 22  ew char[2] { '\"
4a20: 27 2c 20 73 65 70 61 72 61 74 6f 72 20 7d 3b 0d  ', separator };.
4a30: 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 71 75  .      char[] qu
4a40: 6f 74 20 3d 20 6e 65 77 20 63 68 61 72 5b 31 5d  ot = new char[1]
4a50: 20 7b 20 27 5c 22 27 20 7d 3b 0d 0a 20 20 20 20   { '\"' };..    
4a60: 20 20 69 6e 74 20 6e 20 3d 20 30 3b 0d 0a 20 20    int n = 0;..  
4a70: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
4a80: 20 6c 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73   ls = new List<s
4a90: 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20  tring>();..     
4aa0: 20 73 74 72 69 6e 67 20 73 3b 0d 0a 0d 0a 20 20   string s;....  
4ab0: 20 20 20 20 77 68 69 6c 65 20 28 73 6f 75 72 63      while (sourc
4ac0: 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  e.Length > 0).. 
4ad0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4ae0: 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65 78  n = source.Index
4af0: 4f 66 41 6e 79 28 74 6f 6b 73 2c 20 6e 29 3b 0d  OfAny(toks, n);.
4b00: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d  .        if (n =
4b10: 3d 20 2d 31 29 20 62 72 65 61 6b 3b 0d 0a 20 20  = -1) break;..  
4b20: 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65        if (source
4b30: 5b 6e 5d 20 3d 3d 20 74 6f 6b 73 5b 30 5d 29 0d  [n] == toks[0]).
4b40: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4b50: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
4b60: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
4b70: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
4b80: 20 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65   n = source.Inde
4b90: 78 4f 66 41 6e 79 28 71 75 6f 74 2c 20 6e 20 2b  xOfAny(quot, n +
4ba0: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   1);..          
4bb0: 69 66 20 28 6e 20 3d 3d 20 2d 31 29 0d 0a 20 20  if (n == -1)..  
4bc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4bd0: 20 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20         //source 
4be0: 3d 20 22 5c 22 22 20 2b 20 73 6f 75 72 63 65 3b  = "\"" + source;
4bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ..            br
4c00: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
4c10: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 2b 2b  }..          n++
4c20: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73  ;..          //s
4c30: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52  ource = source.R
4c40: 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20  emove(n, 1);..  
4c50: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4c60: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
4c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20  ..          s = 
4c80: 73 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67  source.Substring
4c90: 28 30 2c 20 6e 29 2e 54 72 69 6d 28 29 3b 0d 0a  (0, n).Trim();..
4ca0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
4cb0: 4c 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b  Length > 1 && s[
4cc0: 30 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26  0] == quot[0] &&
4cd0: 20 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d   s[s.Length - 1]
4ce0: 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20   == s[0])..     
4cf0: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 53 75 62         s = s.Sub
4d00: 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67  string(1, s.Leng
4d10: 74 68 20 2d 20 32 29 3b 0d 0a 0d 0a 20 20 20 20  th - 2);....    
4d20: 20 20 20 20 20 20 73 6f 75 72 63 65 20 3d 20 73        source = s
4d30: 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67 28  ource.Substring(
4d40: 6e 20 2b 20 31 29 2e 54 72 69 6d 28 29 3b 0d 0a  n + 1).Trim();..
4d50: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
4d60: 4c 65 6e 67 74 68 20 3e 20 30 29 20 6c 73 2e 41  Length > 0) ls.A
4d70: 64 64 28 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  dd(s);..        
4d80: 20 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20    n = 0;..      
4d90: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
4da0: 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 2e 4c      if (source.L
4db0: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
4dc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 20 3d    {..        s =
4dd0: 20 73 6f 75 72 63 65 2e 54 72 69 6d 28 29 3b 0d   source.Trim();.
4de0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 2e 4c  .        if (s.L
4df0: 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b 30  ength > 1 && s[0
4e00: 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20  ] == quot[0] && 
4e10: 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20  s[s.Length - 1] 
4e20: 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  == s[0])..      
4e30: 20 20 20 20 73 20 3d 20 73 2e 53 75 62 73 74 72      s = s.Substr
4e40: 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20  ing(1, s.Length 
4e50: 2d 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 6c  - 2);..        l
4e60: 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20 20 20 20  s.Add(s);..     
4e70: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72 69   }....      stri
4e80: 6e 67 5b 5d 20 61 72 20 3d 20 6e 65 77 20 73 74  ng[] ar = new st
4e90: 72 69 6e 67 5b 6c 73 2e 43 6f 75 6e 74 5d 3b 0d  ring[ls.Count];.
4ea0: 0a 20 20 20 20 20 20 6c 73 2e 43 6f 70 79 54 6f  .      ls.CopyTo
4eb0: 28 61 72 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20  (ar, 0);....    
4ec0: 20 20 72 65 74 75 72 6e 20 61 72 3b 0d 0a 20 20    return ar;..  
4ed0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
4ee0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
4ef0: 2f 20 43 6f 6e 76 65 72 74 20 61 20 76 61 6c 75  / Convert a valu
4f00: 65 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c  e to true or fal
4f10: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
4f20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4f30: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
4f40: 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 6f  urce">A string o
4f50: 72 20 6e 75 6d 62 65 72 20 72 65 70 72 65 73 65  r number represe
4f60: 6e 74 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61  nting true or fa
4f70: 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  lse</param>..   
4f80: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f   /// <returns></
4f90: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
4fa0: 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c  blic static bool
4fb0: 20 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 65 63   ToBoolean(objec
4fc0: 74 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b  t source)..    {
4fd0: 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75 72  ..      if (sour
4fe0: 63 65 20 69 73 20 62 6f 6f 6c 29 20 72 65 74 75  ce is bool) retu
4ff0: 72 6e 20 28 62 6f 6f 6c 29 73 6f 75 72 63 65 3b  rn (bool)source;
5000: 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ....      return
5010: 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 6f 75 72 63   ToBoolean(sourc
5020: 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a  e.ToString());..
5030: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
5040: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5050: 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 73 74  /// Convert a st
5060: 72 69 6e 67 20 74 6f 20 74 72 75 65 20 6f 72 20  ring to true or 
5070: 66 61 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  false...    /// 
5080: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
5090: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
50a0: 22 73 6f 75 72 63 65 22 3e 41 20 73 74 72 69 6e  "source">A strin
50b0: 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  g representing t
50c0: 72 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61  rue or false</pa
50d0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
50e0: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
50f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61  >..    /// <rema
5100: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 22 79  rks>..    /// "y
5110: 65 73 22 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20  es", "no", "y", 
5120: 22 6e 22 2c 20 22 30 22 2c 20 22 31 22 2c 20 22  "n", "0", "1", "
5130: 6f 6e 22 2c 20 22 6f 66 66 22 20 61 73 20 77 65  on", "off" as we
5140: 6c 6c 20 61 73 20 42 6f 6f 6c 65 61 6e 2e 46 61  ll as Boolean.Fa
5150: 6c 73 65 53 74 72 69 6e 67 20 61 6e 64 20 42 6f  lseString and Bo
5160: 6f 6c 65 61 6e 2e 54 72 75 65 53 74 72 69 6e 67  olean.TrueString
5170: 20 77 69 6c 6c 20 61 6c 6c 20 62 65 0d 0a 20 20   will all be..  
5180: 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20    /// converted 
5190: 74 6f 20 61 20 70 72 6f 70 65 72 20 62 6f 6f 6c  to a proper bool
51a0: 65 61 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ean value...    
51b0: 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
51c0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
51d0: 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e  c bool ToBoolean
51e0: 28 73 74 72 69 6e 67 20 73 6f 75 72 63 65 29 0d  (string source).
51f0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
5200: 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65   (String.Compare
5210: 28 73 6f 75 72 63 65 2c 20 62 6f 6f 6c 2e 54 72  (source, bool.Tr
5220: 75 65 53 74 72 69 6e 67 2c 20 53 74 72 69 6e 67  ueString, String
5230: 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
5240: 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d  alIgnoreCase) ==
5250: 20 30 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b   0) return true;
5260: 0d 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20  ..      else if 
5270: 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28  (String.Compare(
5280: 73 6f 75 72 63 65 2c 20 62 6f 6f 6c 2e 46 61 6c  source, bool.Fal
5290: 73 65 53 74 72 69 6e 67 2c 20 53 74 72 69 6e 67  seString, String
52a0: 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
52b0: 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d  alIgnoreCase) ==
52c0: 20 30 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65   0) return false
52d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 73 77 69 74 63  ;....      switc
52e0: 68 28 73 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72  h(source.ToLower
52f0: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
5300: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 29 0d  ariantCulture)).
5310: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
5320: 20 20 63 61 73 65 20 22 79 65 73 22 3a 0d 0a 20    case "yes":.. 
5330: 20 20 20 20 20 20 20 63 61 73 65 20 22 79 22 3a         case "y":
5340: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
5350: 31 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  1":..        cas
5360: 65 20 22 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 20  e "on":..       
5370: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
5380: 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6e  .        case "n
5390: 6f 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  o":..        cas
53a0: 65 20 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "n":..        
53b0: 63 61 73 65 20 22 30 22 3a 0d 0a 20 20 20 20 20  case "0":..     
53c0: 20 20 20 63 61 73 65 20 22 6f 66 66 22 3a 0d 0a     case "off":..
53d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
53e0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
53f0: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
5400: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
5410: 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e  rgumentException
5420: 28 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20  ("source");..   
5430: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
5440: 20 20 20 23 72 65 67 69 6f 6e 20 54 79 70 65 20     #region Type 
5450: 43 6f 6e 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20  Conversions..   
5460: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
5470: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
5480: 65 73 20 74 68 65 20 64 61 74 61 20 74 79 70 65  es the data type
5490: 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20   of a column in 
54a0: 61 20 73 74 61 74 65 6d 65 6e 74 0d 0a 20 20 20  a statement..   
54b0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
54c0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
54d0: 6e 61 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20  name="stmt">The 
54e0: 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 72 65 74  statement to ret
54f0: 72 69 65 76 65 20 69 6e 66 6f 72 6d 61 74 69 6f  rieve informatio
5500: 6e 20 66 6f 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20  n for</param>.. 
5510: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5520: 6d 65 3d 22 69 22 3e 54 68 65 20 63 6f 6c 75 6d  me="i">The colum
5530: 6e 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 79  n to retrieve ty
5540: 70 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f  pe information o
5550: 6e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  n</param>..    /
5560: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
5570: 74 79 70 22 3e 54 68 65 20 53 51 4c 69 74 65 54  typ">The SQLiteT
5580: 79 70 65 20 74 6f 20 72 65 63 65 69 76 65 20 74  ype to receive t
5590: 68 65 20 61 66 66 69 6e 69 74 79 20 66 6f 72 20  he affinity for 
55a0: 74 68 65 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e  the given column
55b0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e  </param>..    in
55c0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f  ternal static vo
55d0: 69 64 20 43 6f 6c 75 6d 6e 54 6f 54 79 70 65 28  id ColumnToType(
55e0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
55f0: 73 74 6d 74 2c 20 69 6e 74 20 69 2c 20 53 51 4c  stmt, int i, SQL
5600: 69 74 65 54 79 70 65 20 74 79 70 29 0d 0a 20 20  iteType typ)..  
5610: 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 2e 54    {..      typ.T
5620: 79 70 65 20 3d 20 54 79 70 65 4e 61 6d 65 54 6f  ype = TypeNameTo
5630: 44 62 54 79 70 65 28 73 74 6d 74 2e 5f 73 71 6c  DbType(stmt._sql
5640: 2e 43 6f 6c 75 6d 6e 54 79 70 65 28 73 74 6d 74  .ColumnType(stmt
5650: 2c 20 69 2c 20 6f 75 74 20 74 79 70 2e 41 66 66  , i, out typ.Aff
5660: 69 6e 69 74 79 29 29 3b 0d 0a 20 20 20 20 7d 0d  inity));..    }.
5670: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
5680: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
5690: 6e 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54  nverts a SQLiteT
56a0: 79 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79  ype to a .NET Ty
56b0: 70 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe object..    /
56c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
56d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
56e0: 6d 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74  me="t">The SQLit
56f0: 65 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  eType to convert
5700: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
5710: 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72  / <returns>Retur
5720: 6e 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f  ns a .NET Type o
5730: 62 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d  bject</returns>.
5740: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
5750: 61 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65  atic Type SQLite
5760: 54 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74  TypeToType(SQLit
5770: 65 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d  eType t)..    {.
5780: 0a 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70  .      if (t.Typ
5790: 65 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65  e == DbType.Obje
57a0: 63 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ct)..        ret
57b0: 75 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74  urn _affinitytot
57c0: 79 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e  ype[(int)t.Affin
57d0: 69 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73  ity];..      els
57e0: 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  e..        retur
57f0: 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  n SQLiteConvert.
5800: 44 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54  DbTypeToType(t.T
5810: 79 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ype);..    }....
5820: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
5830: 69 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e  ic Type[] _affin
5840: 69 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20  itytotype = {.. 
5850: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
5860: 63 74 29 2c 0d 0a 20 20 20 20 20 20 74 79 70 65  ct),..      type
5870: 6f 66 28 49 6e 74 36 34 29 2c 0d 0a 20 20 20 20  of(Int64),..    
5880: 20 20 74 79 70 65 6f 66 28 44 6f 75 62 6c 65 29    typeof(Double)
5890: 2c 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  ,..      typeof(
58a0: 73 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20  string),..      
58b0: 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 2c 0d  typeof(byte[]),.
58c0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62  .      typeof(ob
58d0: 6a 65 63 74 29 2c 0d 0a 20 20 20 20 20 20 74 79  ject),..      ty
58e0: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 0d  peof(DateTime),.
58f0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62  .      typeof(ob
5900: 6a 65 63 74 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d  ject)..    };...
5910: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
5920: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20  y>..    /// For 
5930: 61 20 67 69 76 65 6e 20 69 6e 74 72 69 6e 73 69  a given intrinsi
5940: 63 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 61  c type, return a
5950: 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f 2f 2f   DbType..    ///
5960: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5970: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5980: 3d 22 74 79 70 22 3e 54 68 65 20 6e 61 74 69 76  ="typ">The nativ
5990: 65 20 74 79 70 65 20 74 6f 20 63 6f 6e 76 65 72  e type to conver
59a0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
59b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
59c0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 28 63  corresponding (c
59d0: 6c 6f 73 65 73 74 20 6d 61 74 63 68 29 20 44 62  losest match) Db
59e0: 54 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  Type</returns>..
59f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
5a00: 74 69 63 20 44 62 54 79 70 65 20 54 79 70 65 54  tic DbType TypeT
5a10: 6f 44 62 54 79 70 65 28 54 79 70 65 20 74 79 70  oDbType(Type typ
5a20: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
5a30: 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54 79  TypeCode tc = Ty
5a40: 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28 74  pe.GetTypeCode(t
5a50: 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 28  yp);..      if (
5a60: 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e 4f  tc == TypeCode.O
5a70: 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b 0d  bject)..      {.
5a80: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
5a90: 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 5b   == typeof(byte[
5aa0: 5d 29 29 20 72 65 74 75 72 6e 20 44 62 54 79 70  ])) return DbTyp
5ab0: 65 2e 42 69 6e 61 72 79 3b 0d 0a 20 20 20 20 20  e.Binary;..     
5ac0: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
5ad0: 70 65 6f 66 28 47 75 69 64 29 29 20 72 65 74 75  peof(Guid)) retu
5ae0: 72 6e 20 44 62 54 79 70 65 2e 47 75 69 64 3b 0d  rn DbType.Guid;.
5af0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
5b00: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3b 0d 0a  DbType.String;..
5b10: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72        }..      r
5b20: 65 74 75 72 6e 20 5f 74 79 70 65 74 6f 64 62 74  eturn _typetodbt
5b30: 79 70 65 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a 20  ype[(int)tc];.. 
5b40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
5b50: 61 74 65 20 73 74 61 74 69 63 20 44 62 54 79 70  ate static DbTyp
5b60: 65 5b 5d 20 5f 74 79 70 65 74 6f 64 62 74 79 70  e[] _typetodbtyp
5b70: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 62 54  e = {..      DbT
5b80: 79 70 65 2e 4f 62 6a 65 63 74 2c 0d 0a 20 20 20  ype.Object,..   
5b90: 20 20 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79     DbType.Binary
5ba0: 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  ,..      DbType.
5bb0: 4f 62 6a 65 63 74 2c 0d 0a 20 20 20 20 20 20 44  Object,..      D
5bc0: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 0d 0a  bType.Boolean,..
5bd0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 42 79        DbType.SBy
5be0: 74 65 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70  te,..      DbTyp
5bf0: 65 2e 53 42 79 74 65 2c 0d 0a 20 20 20 20 20 20  e.SByte,..      
5c00: 44 62 54 79 70 65 2e 42 79 74 65 2c 0d 0a 20 20  DbType.Byte,..  
5c10: 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74 31 36      DbType.Int16
5c20: 2c 20 2f 2f 20 37 0d 0a 20 20 20 20 20 20 44 62  , // 7..      Db
5c30: 54 79 70 65 2e 55 49 6e 74 31 36 2c 0d 0a 20 20  Type.UInt16,..  
5c40: 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74 33 32      DbType.Int32
5c50: 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  ,..      DbType.
5c60: 55 49 6e 74 33 32 2c 0d 0a 20 20 20 20 20 20 44  UInt32,..      D
5c70: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 2f 2f 20  bType.Int64, // 
5c80: 31 31 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  11..      DbType
5c90: 2e 55 49 6e 74 36 34 2c 0d 0a 20 20 20 20 20 20  .UInt64,..      
5ca0: 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 0d 0a  DbType.Single,..
5cb0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f 75        DbType.Dou
5cc0: 62 6c 65 2c 0d 0a 20 20 20 20 20 20 44 62 54 79  ble,..      DbTy
5cd0: 70 65 2e 44 65 63 69 6d 61 6c 2c 0d 0a 20 20 20  pe.Decimal,..   
5ce0: 20 20 20 44 62 54 79 70 65 2e 44 61 74 65 54 69     DbType.DateTi
5cf0: 6d 65 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70  me,..      DbTyp
5d00: 65 2e 4f 62 6a 65 63 74 2c 0d 0a 20 20 20 20 20  e.Object,..     
5d10: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 0d   DbType.String,.
5d20: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
5d30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5d40: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
5d50: 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f 72  e ColumnSize for
5d60: 20 74 68 65 20 67 69 76 65 6e 20 44 62 54 79 70   the given DbTyp
5d70: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
5d80: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
5d90: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
5da0: 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f 20 67  >The DbType to g
5db0: 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 3c 2f  et the size of</
5dc0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5dd0: 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72  <returns></retur
5de0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
5df0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44 62 54  l static int DbT
5e00: 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65 28  ypeToColumnSize(
5e10: 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  DbType typ)..   
5e20: 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   {..      return
5e30: 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e   _dbtypetocolumn
5e40: 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d  size[(int)typ];.
5e50: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
5e60: 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
5e70: 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75  [] _dbtypetocolu
5e80: 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20 20  mnsize = {..    
5e90: 20 20 32 31 34 37 34 38 33 36 34 37 2c 20 20 20    2147483647,   
5ea0: 2f 2f 20 30 0d 0a 20 20 20 20 20 20 32 31 34 37  // 0..      2147
5eb0: 34 38 33 36 34 37 2c 20 20 20 2f 2f 20 31 0d 0a  483647,   // 1..
5ec0: 20 20 20 20 20 20 31 2c 20 20 20 20 20 2f 2f 20        1,     // 
5ed0: 32 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20 20  2..      1,     
5ee0: 2f 2f 20 33 0d 0a 20 20 20 20 20 20 38 2c 20 20  // 3..      8,  
5ef0: 2f 2f 20 34 0d 0a 20 20 20 20 20 20 38 2c 20 2f  // 4..      8, /
5f00: 2f 20 35 0d 0a 20 20 20 20 20 20 38 2c 20 2f 2f  / 5..      8, //
5f10: 20 36 0d 0a 20 20 20 20 20 20 38 2c 20 20 2f 2f   6..      8,  //
5f20: 20 37 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 2f   7..      8,   /
5f30: 2f 20 38 0d 0a 20 20 20 20 20 20 31 36 2c 20 20  / 8..      16,  
5f40: 20 20 20 2f 2f 20 39 0d 0a 20 20 20 20 20 20 32     // 9..      2
5f50: 2c 0d 0a 20 20 20 20 20 20 34 2c 0d 0a 20 20 20  ,..      4,..   
5f60: 20 20 20 38 2c 0d 0a 20 20 20 20 20 20 32 31 34     8,..      214
5f70: 37 34 38 33 36 34 37 2c 0d 0a 20 20 20 20 20 20  7483647,..      
5f80: 31 2c 0d 0a 20 20 20 20 20 20 34 2c 0d 0a 20 20  1,..      4,..  
5f90: 20 20 20 20 32 31 34 37 34 38 33 36 34 37 2c 0d      2147483647,.
5fa0: 0a 20 20 20 20 20 20 38 2c 0d 0a 20 20 20 20 20  .      8,..     
5fb0: 20 32 2c 0d 0a 20 20 20 20 20 20 34 2c 0d 0a 20   2,..      4,.. 
5fc0: 20 20 20 20 20 38 2c 0d 0a 20 20 20 20 20 20 38       8,..      8
5fd0: 2c 0d 0a 20 20 20 20 20 20 32 31 34 37 34 38 33  ,..      2147483
5fe0: 36 34 37 2c 0d 0a 20 20 20 20 20 20 32 31 34 37  647,..      2147
5ff0: 34 38 33 36 34 37 2c 0d 0a 20 20 20 20 20 20 32  483647,..      2
6000: 31 34 37 34 38 33 36 34 37 2c 0d 0a 20 20 20 20  147483647,..    
6010: 20 20 32 31 34 37 34 38 33 36 34 37 2c 20 20 20    2147483647,   
6020: 2f 2f 20 32 35 20 28 58 6d 6c 29 0d 0a 20 20 20  // 25 (Xml)..   
6030: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72   };....    inter
6040: 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63  nal static objec
6050: 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69  t DbTypeToNumeri
6060: 63 50 72 65 63 69 73 69 6f 6e 28 44 62 54 79 70  cPrecision(DbTyp
6070: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
6080: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74       return _dbt
6090: 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63  ypetonumericprec
60a0: 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79 70 5d 3b  ision[(int)typ];
60b0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
60c0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
60d0: 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f  ject[] _dbtypeto
60e0: 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e  numericprecision
60f0: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
6100: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 30 0d 0a  ll.Value, // 0..
6110: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
6120: 75 65 2c 20 2f 2f 20 31 0d 0a 20 20 20 20 20 20  ue, // 1..      
6130: 33 2c 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  3,..      DBNull
6140: 2e 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 31  .Value,..      1
6150: 39 2c 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  9,..      DBNull
6160: 2e 56 61 6c 75 65 2c 20 2f 2f 20 35 0d 0a 20 20  .Value, // 5..  
6170: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
6180: 2c 20 2f 2f 20 36 0d 0a 20 20 20 20 20 20 35 33  , // 6..      53
6190: 2c 0d 0a 20 20 20 20 20 20 35 33 2c 0d 0a 20 20  ,..      53,..  
61a0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
61b0: 2c 0d 0a 20 20 20 20 20 20 35 2c 0d 0a 20 20 20  ,..      5,..   
61c0: 20 20 20 31 30 2c 0d 0a 20 20 20 20 20 20 31 39     10,..      19
61d0: 2c 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  ,..      DBNull.
61e0: 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 33 2c  Value,..      3,
61f0: 0d 0a 20 20 20 20 20 20 32 34 2c 0d 0a 20 20 20  ..      24,..   
6200: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
6210: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
6220: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 35 2c 0d  alue,..      5,.
6230: 0a 20 20 20 20 20 20 31 30 2c 0d 0a 20 20 20 20  .      10,..    
6240: 20 20 31 39 2c 0d 0a 20 20 20 20 20 20 35 33 2c    19,..      53,
6250: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
6260: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 44 42 4e  alue,..      DBN
6270: 75 6c 6c 2e 56 61 6c 75 65 2c 0d 0a 20 20 20 20  ull.Value,..    
6280: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 0d 0a    DBNull.Value..
6290: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e      };....    in
62a0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f 62  ternal static ob
62b0: 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75 6d  ject DbTypeToNum
62c0: 65 72 69 63 53 63 61 6c 65 28 44 62 54 79 70 65  ericScale(DbType
62d0: 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20   typ)..    {..  
62e0: 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79      return _dbty
62f0: 70 65 74 6f 6e 75 6d 65 72 69 63 73 63 61 6c 65  petonumericscale
6300: 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20  [(int)typ];..   
6310: 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
6320: 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 5b  e static object[
6330: 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72  ] _dbtypetonumer
6340: 69 63 73 63 61 6c 65 20 3d 20 7b 0d 0a 20 20 20  icscale = {..   
6350: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
6360: 20 2f 2f 20 30 0d 0a 20 20 20 20 20 20 44 42 4e   // 0..      DBN
6370: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 31 0d  ull.Value, // 1.
6380: 0a 20 20 20 20 20 20 30 2c 0d 0a 20 20 20 20 20  .      0,..     
6390: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 0d 0a   DBNull.Value,..
63a0: 20 20 20 20 20 20 34 2c 0d 0a 20 20 20 20 20 20        4,..      
63b0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
63c0: 20 35 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c   5..      DBNull
63d0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 36 0d 0a 20 20  .Value, // 6..  
63e0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
63f0: 2c 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  ,..      DBNull.
6400: 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 44 42  Value,..      DB
6410: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 0d 0a 20 20 20  Null.Value,..   
6420: 20 20 20 30 2c 0d 0a 20 20 20 20 20 20 30 2c 0d     0,..      0,.
6430: 0a 20 20 20 20 20 20 30 2c 0d 0a 20 20 20 20 20  .      0,..     
6440: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 0d 0a   DBNull.Value,..
6450: 20 20 20 20 20 20 30 2c 0d 0a 20 20 20 20 20 20        0,..      
6460: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 0d 0a 20  DBNull.Value,.. 
6470: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
6480: 65 2c 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  e,..      DBNull
6490: 2e 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 30  .Value,..      0
64a0: 2c 0d 0a 20 20 20 20 20 20 30 2c 0d 0a 20 20 20  ,..      0,..   
64b0: 20 20 20 30 2c 0d 0a 20 20 20 20 20 20 30 2c 0d     0,..      0,.
64c0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
64d0: 6c 75 65 2c 0d 0a 20 20 20 20 20 20 44 42 4e 75  lue,..      DBNu
64e0: 6c 6c 2e 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ll.Value,..     
64f0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 0d 0a 20   DBNull.Value.. 
6500: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74     };....    int
6510: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
6520: 69 6e 67 20 44 62 54 79 70 65 54 6f 54 79 70 65  ing DbTypeToType
6530: 4e 61 6d 65 28 44 62 54 79 70 65 20 74 79 70 29  Name(DbType typ)
6540: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 66  ..    {..      f
6550: 6f 72 20 28 69 6e 74 20 6e 20 3d 20 30 3b 20 6e  or (int n = 0; n
6560: 20 3c 20 5f 64 62 74 79 70 65 4e 61 6d 65 73 2e   < _dbtypeNames.
6570: 4c 65 6e 67 74 68 3b 20 6e 2b 2b 29 0d 0a 20 20  Length; n++)..  
6580: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
6590: 66 20 28 5f 64 62 74 79 70 65 4e 61 6d 65 73 5b  f (_dbtypeNames[
65a0: 6e 5d 2e 64 61 74 61 54 79 70 65 20 3d 3d 20 74  n].dataType == t
65b0: 79 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 72  yp)..          r
65c0: 65 74 75 72 6e 20 5f 64 62 74 79 70 65 4e 61 6d  eturn _dbtypeNam
65d0: 65 73 5b 6e 5d 2e 74 79 70 65 4e 61 6d 65 3b 0d  es[n].typeName;.
65e0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
65f0: 20 20 73 74 72 69 6e 67 20 64 65 66 61 75 6c 74    string default
6600: 54 79 70 65 4e 61 6d 65 20 3d 20 53 74 72 69 6e  TypeName = Strin
6610: 67 2e 45 6d 70 74 79 3b 0d 0a 0d 0a 23 69 66 20  g.Empty;....#if 
6620: 44 45 42 55 47 0d 0a 20 20 20 20 20 20 54 72 61  DEBUG..      Tra
6630: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
6640: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
6650: 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a         "WARNING:
6660: 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61   Type mapping fa
6670: 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20  iled, returning 
6680: 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b  default name \"{
6690: 30 7d 5c 22 20 66 6f 72 20 74 79 70 65 20 7b 31  0}\" for type {1
66a0: 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  }.",..          
66b0: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 2c  defaultTypeName,
66c0: 20 74 79 70 29 29 3b 0d 0a 23 65 6e 64 69 66 0d   typ));..#endif.
66d0: 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
66e0: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b  defaultTypeName;
66f0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
6700: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51  rivate static SQ
6710: 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 5b 5d 20  LiteTypeNames[] 
6720: 5f 64 62 74 79 70 65 4e 61 6d 65 73 20 3d 20 7b  _dbtypeNames = {
6730: 0d 0a 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69  ..      new SQLi
6740: 74 65 54 79 70 65 4e 61 6d 65 73 28 22 49 4e 54  teTypeNames("INT
6750: 45 47 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e  EGER", DbType.In
6760: 74 36 34 29 2c 0d 0a 20 20 20 20 20 20 6e 65 77  t64),..      new
6770: 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73   SQLiteTypeNames
6780: 28 22 54 49 4e 59 49 4e 54 22 2c 20 44 62 54 79  ("TINYINT", DbTy
6790: 70 65 2e 42 79 74 65 29 2c 0d 0a 20 20 20 20 20  pe.Byte),..     
67a0: 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e   new SQLiteTypeN
67b0: 61 6d 65 73 28 22 49 4e 54 22 2c 20 44 62 54 79  ames("INT", DbTy
67c0: 70 65 2e 49 6e 74 33 32 29 2c 0d 0a 20 20 20 20  pe.Int32),..    
67d0: 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65    new SQLiteType
67e0: 4e 61 6d 65 73 28 22 56 41 52 43 48 41 52 22 2c  Names("VARCHAR",
67f0: 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69   DbType.AnsiStri
6800: 6e 67 29 2c 0d 0a 20 20 20 20 20 20 6e 65 77 20  ng),..      new 
6810: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
6820: 22 4e 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  "NVARCHAR", DbTy
6830: 70 65 2e 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20  pe.String),..   
6840: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70     new SQLiteTyp
6850: 65 4e 61 6d 65 73 28 22 43 48 41 52 22 2c 20 44  eNames("CHAR", D
6860: 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67  bType.AnsiString
6870: 46 69 78 65 64 4c 65 6e 67 74 68 29 2c 0d 0a 20  FixedLength),.. 
6880: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54       new SQLiteT
6890: 79 70 65 4e 61 6d 65 73 28 22 4e 43 48 41 52 22  ypeNames("NCHAR"
68a0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 46  , DbType.StringF
68b0: 69 78 65 64 4c 65 6e 67 74 68 29 2c 0d 0a 20 20  ixedLength),..  
68c0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79      new SQLiteTy
68d0: 70 65 4e 61 6d 65 73 28 22 46 4c 4f 41 54 22 2c  peNames("FLOAT",
68e0: 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 29 2c   DbType.Double),
68f0: 0d 0a 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69  ..      new SQLi
6900: 74 65 54 79 70 65 4e 61 6d 65 73 28 22 52 45 41  teTypeNames("REA
6910: 4c 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c  L", DbType.Doubl
6920: 65 29 2c 0d 0a 20 20 20 20 20 20 6e 65 77 20 53  e),..      new S
6930: 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28 22  QLiteTypeNames("
6940: 42 49 54 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f  BIT", DbType.Boo
6950: 6c 65 61 6e 29 2c 0d 0a 20 20 20 20 20 20 6e 65  lean),..      ne
6960: 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65  w SQLiteTypeName
6970: 73 28 22 44 45 43 49 4d 41 4c 22 2c 20 44 62 54  s("DECIMAL", DbT
6980: 79 70 65 2e 44 65 63 69 6d 61 6c 29 2c 0d 0a 20  ype.Decimal),.. 
6990: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54       new SQLiteT
69a0: 79 70 65 4e 61 6d 65 73 28 22 44 41 54 45 54 49  ypeNames("DATETI
69b0: 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  ME", DbType.Date
69c0: 54 69 6d 65 29 2c 0d 0a 20 20 20 20 20 20 6e 65  Time),..      ne
69d0: 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65  w SQLiteTypeName
69e0: 73 28 22 42 4c 4f 42 22 2c 20 44 62 54 79 70 65  s("BLOB", DbType
69f0: 2e 42 69 6e 61 72 79 29 2c 0d 0a 20 20 20 20 20  .Binary),..     
6a00: 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e   new SQLiteTypeN
6a10: 61 6d 65 73 28 22 55 4e 49 51 55 45 49 44 45 4e  ames("UNIQUEIDEN
6a20: 54 49 46 49 45 52 22 2c 20 44 62 54 79 70 65 2e  TIFIER", DbType.
6a30: 47 75 69 64 29 2c 0d 0a 20 20 20 20 20 20 6e 65  Guid),..      ne
6a40: 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65  w SQLiteTypeName
6a50: 73 28 22 53 4d 41 4c 4c 49 4e 54 22 2c 20 44 62  s("SMALLINT", Db
6a60: 54 79 70 65 2e 49 6e 74 31 36 29 2c 0d 0a 20 20  Type.Int16),..  
6a70: 20 20 7d 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73    };..    /// <s
6a80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6a90: 20 43 6f 6e 76 65 72 74 20 61 20 44 62 54 79 70   Convert a DbTyp
6aa0: 65 20 74 6f 20 61 20 54 79 70 65 0d 0a 20 20 20  e to a Type..   
6ab0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6ac0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6ad0: 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44  name="typ">The D
6ae0: 62 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  bType to convert
6af0: 20 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20   from</param>.. 
6b00: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6b10: 54 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63  The closest-matc
6b20: 68 20 2e 4e 45 54 20 74 79 70 65 3c 2f 72 65 74  h .NET type</ret
6b30: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
6b40: 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65 20  nal static Type 
6b50: 44 62 54 79 70 65 54 6f 54 79 70 65 28 44 62 54  DbTypeToType(DbT
6b60: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
6b70: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64  .      return _d
6b80: 62 74 79 70 65 54 6f 54 79 70 65 5b 28 69 6e 74  btypeToType[(int
6b90: 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  )typ];..    }...
6ba0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
6bb0: 74 69 63 20 54 79 70 65 5b 5d 20 5f 64 62 74 79  tic Type[] _dbty
6bc0: 70 65 54 6f 54 79 70 65 20 3d 20 7b 0d 0a 20 20  peToType = {..  
6bd0: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
6be0: 67 29 2c 20 20 20 2f 2f 20 30 0d 0a 20 20 20 20  g),   // 0..    
6bf0: 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29    typeof(byte[])
6c00: 2c 20 20 20 2f 2f 20 31 0d 0a 20 20 20 20 20 20  ,   // 1..      
6c10: 74 79 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20  typeof(byte),   
6c20: 20 20 2f 2f 20 32 0d 0a 20 20 20 20 20 20 74 79    // 2..      ty
6c30: 70 65 6f 66 28 62 6f 6f 6c 29 2c 20 20 20 20 20  peof(bool),     
6c40: 2f 2f 20 33 0d 0a 20 20 20 20 20 20 74 79 70 65  // 3..      type
6c50: 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f  of(decimal),  //
6c60: 20 34 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66   4..      typeof
6c70: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 35  (DateTime), // 5
6c80: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44  ..      typeof(D
6c90: 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 36 0d 0a  ateTime), // 6..
6ca0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 65 63        typeof(dec
6cb0: 69 6d 61 6c 29 2c 20 20 2f 2f 20 37 0d 0a 20 20  imal),  // 7..  
6cc0: 20 20 20 20 74 79 70 65 6f 66 28 64 6f 75 62 6c      typeof(doubl
6cd0: 65 29 2c 20 20 20 2f 2f 20 38 0d 0a 20 20 20 20  e),   // 8..    
6ce0: 20 20 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20    typeof(Guid), 
6cf0: 20 20 20 20 2f 2f 20 39 0d 0a 20 20 20 20 20 20      // 9..      
6d00: 74 79 70 65 6f 66 28 49 6e 74 31 36 29 2c 0d 0a  typeof(Int16),..
6d10: 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74        typeof(Int
6d20: 33 32 29 2c 0d 0a 20 20 20 20 20 20 74 79 70 65  32),..      type
6d30: 6f 66 28 49 6e 74 36 34 29 2c 0d 0a 20 20 20 20  of(Int64),..    
6d40: 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29    typeof(object)
6d50: 2c 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  ,..      typeof(
6d60: 73 62 79 74 65 29 2c 0d 0a 20 20 20 20 20 20 74  sbyte),..      t
6d70: 79 70 65 6f 66 28 66 6c 6f 61 74 29 2c 0d 0a 20  ypeof(float),.. 
6d80: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
6d90: 6e 67 29 2c 0d 0a 20 20 20 20 20 20 74 79 70 65  ng),..      type
6da0: 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 0d 0a 20  of(DateTime),.. 
6db0: 20 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74       typeof(UInt
6dc0: 31 36 29 2c 0d 0a 20 20 20 20 20 20 74 79 70 65  16),..      type
6dd0: 6f 66 28 55 49 6e 74 33 32 29 2c 0d 0a 20 20 20  of(UInt32),..   
6de0: 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74 36 34     typeof(UInt64
6df0: 29 2c 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  ),..      typeof
6e00: 28 64 6f 75 62 6c 65 29 2c 0d 0a 20 20 20 20 20  (double),..     
6e10: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c   typeof(string),
6e20: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
6e30: 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 74  tring),..      t
6e40: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 0d 0a  ypeof(string),..
6e50: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
6e60: 69 6e 67 29 2c 20 20 20 2f 2f 20 32 35 20 28 58  ing),   // 25 (X
6e70: 6d 6c 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  ml)..    };.... 
6e80: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6e90: 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20  ..    /// For a 
6ea0: 67 69 76 65 6e 20 74 79 70 65 2c 20 72 65 74 75  given type, retu
6eb0: 72 6e 20 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d  rn the closest-m
6ec0: 61 74 63 68 20 53 51 4c 69 74 65 20 54 79 70 65  atch SQLite Type
6ed0: 41 66 66 69 6e 69 74 79 2c 20 77 68 69 63 68 20  Affinity, which 
6ee0: 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64 73  only understands
6ef0: 20 61 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20   a very limited 
6f00: 73 75 62 73 65 74 20 6f 66 20 74 79 70 65 73 2e  subset of types.
6f10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6f20: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
6f30: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
6f40: 54 68 65 20 74 79 70 65 20 74 6f 20 65 76 61 6c  The type to eval
6f50: 75 61 74 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  uate</param>..  
6f60: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
6f70: 68 65 20 53 51 4c 69 74 65 20 74 79 70 65 20 61  he SQLite type a
6f80: 66 66 69 6e 69 74 79 20 66 6f 72 20 74 68 61 74  ffinity for that
6f90: 20 74 79 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e   type.</returns>
6fa0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
6fb0: 74 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69  tatic TypeAffini
6fc0: 74 79 20 54 79 70 65 54 6f 41 66 66 69 6e 69 74  ty TypeToAffinit
6fd0: 79 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  y(Type typ)..   
6fe0: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f   {..      TypeCo
6ff0: 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74  de tc = Type.Get
7000: 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a  TypeCode(typ);..
7010: 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20        if (tc == 
7020: 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29  TypeCode.Object)
7030: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
7040: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
7050: 70 65 6f 66 28 62 79 74 65 5b 5d 29 20 7c 7c 20  peof(byte[]) || 
7060: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75  typ == typeof(Gu
7070: 69 64 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  id))..          
7080: 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e  return TypeAffin
7090: 69 74 79 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20 20  ity.Blob;..     
70a0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
70b0: 20 20 20 72 65 74 75 72 6e 20 54 79 70 65 41 66     return TypeAf
70c0: 66 69 6e 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20  finity.Text;..  
70d0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74      }..      ret
70e0: 75 72 6e 20 5f 74 79 70 65 63 6f 64 65 41 66 66  urn _typecodeAff
70f0: 69 6e 69 74 69 65 73 5b 28 69 6e 74 29 74 63 5d  inities[(int)tc]
7100: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
7110: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 54  private static T
7120: 79 70 65 41 66 66 69 6e 69 74 79 5b 5d 20 5f 74  ypeAffinity[] _t
7130: 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74 69 65  ypecodeAffinitie
7140: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 54 79 70  s = {..      Typ
7150: 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 0d  eAffinity.Null,.
7160: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
7170: 69 74 79 2e 42 6c 6f 62 2c 0d 0a 20 20 20 20 20  ity.Blob,..     
7180: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
7190: 6c 6c 2c 0d 0a 20 20 20 20 20 20 54 79 70 65 41  ll,..      TypeA
71a0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 0d 0a  ffinity.Int64,..
71b0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
71c0: 74 79 2e 49 6e 74 36 34 2c 0d 0a 20 20 20 20 20  ty.Int64,..     
71d0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
71e0: 74 36 34 2c 0d 0a 20 20 20 20 20 20 54 79 70 65  t64,..      Type
71f0: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 0d  Affinity.Int64,.
7200: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
7210: 69 74 79 2e 49 6e 74 36 34 2c 20 2f 2f 20 37 0d  ity.Int64, // 7.
7220: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
7230: 69 74 79 2e 49 6e 74 36 34 2c 0d 0a 20 20 20 20  ity.Int64,..    
7240: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
7250: 6e 74 36 34 2c 0d 0a 20 20 20 20 20 20 54 79 70  nt64,..      Typ
7260: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
7270: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
7280: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 2f 2f 20 31  nity.Int64, // 1
7290: 31 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  1..      TypeAff
72a0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 0d 0a 20 20  inity.Int64,..  
72b0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
72c0: 2e 44 6f 75 62 6c 65 2c 0d 0a 20 20 20 20 20 20  .Double,..      
72d0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75  TypeAffinity.Dou
72e0: 62 6c 65 2c 0d 0a 20 20 20 20 20 20 54 79 70 65  ble,..      Type
72f0: 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c  Affinity.Double,
7300: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
7310: 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 0d 0a  nity.DateTime,..
7320: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
7330: 74 79 2e 4e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20  ty.Null,..      
7340: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
7350: 74 2c 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  t,..    };....  
7360: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7370: 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67  .    /// For a g
7380: 69 76 65 6e 20 74 79 70 65 20 6e 61 6d 65 2c 20  iven type name, 
7390: 72 65 74 75 72 6e 20 61 20 63 6c 6f 73 65 73 74  return a closest
73a0: 2d 6d 61 74 63 68 20 2e 4e 45 54 20 74 79 70 65  -match .NET type
73b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
73c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
73d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 4e 61 6d 65 22  aram name="Name"
73e0: 3e 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  >The name of the
73f0: 20 74 79 70 65 20 74 6f 20 6d 61 74 63 68 3c 2f   type to match</
7400: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
7410: 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 2e 4e 45  <returns>The .NE
7420: 54 20 44 42 54 79 70 65 20 74 68 65 20 74 65 78  T DBType the tex
7430: 74 20 65 76 61 6c 75 61 74 65 73 20 74 6f 2e 3c  t evaluates to.<
7440: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
7450: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44  nternal static D
7460: 62 54 79 70 65 20 54 79 70 65 4e 61 6d 65 54 6f  bType TypeNameTo
7470: 44 62 54 79 70 65 28 73 74 72 69 6e 67 20 4e 61  DbType(string Na
7480: 6d 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  me)..    {..    
7490: 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
74a0: 75 6c 6c 4f 72 45 6d 70 74 79 28 4e 61 6d 65 29  ullOrEmpty(Name)
74b0: 29 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e  ) return DbType.
74c0: 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20 20 20 20  Object;....     
74d0: 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74   lock (_syncRoot
74e0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
74f0: 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d      if (_typeNam
7500: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
7510: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7520: 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 6e    _typeNames = n
7530: 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74  ew Dictionary<st
7540: 72 69 6e 67 2c 20 53 51 4c 69 74 65 54 79 70 65  ring, SQLiteType
7550: 4e 61 6d 65 73 3e 28 0d 0a 20 20 20 20 20 20 20  Names>(..       
7560: 20 20 20 20 20 20 20 6e 65 77 20 54 79 70 65 4e         new TypeN
7570: 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65  ameStringCompare
7580: 72 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  r());....       
7590: 20 20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69     foreach (SQLi
75a0: 74 65 54 79 70 65 4e 61 6d 65 73 20 74 79 70 65  teTypeNames type
75b0: 4e 61 6d 65 20 69 6e 20 6e 65 77 20 53 51 4c 69  Name in new SQLi
75c0: 74 65 54 79 70 65 4e 61 6d 65 73 5b 5d 20 7b 0d  teTypeNames[] {.
75d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
75e0: 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d  ew SQLiteTypeNam
75f0: 65 73 28 22 43 4f 55 4e 54 45 52 22 2c 20 44 62  es("COUNTER", Db
7600: 54 79 70 65 2e 49 6e 74 36 34 29 2c 0d 0a 20 20  Type.Int64),..  
7610: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
7620: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
7630: 22 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22 2c  "AUTOINCREMENT",
7640: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 29 2c 0d   DbType.Int64),.
7650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
7660: 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d  ew SQLiteTypeNam
7670: 65 73 28 22 49 44 45 4e 54 49 54 59 22 2c 20 44  es("IDENTITY", D
7680: 62 54 79 70 65 2e 49 6e 74 36 34 29 2c 0d 0a 20  bType.Int64),.. 
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
76a0: 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73   SQLiteTypeNames
76b0: 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62 54  ("LONGTEXT", DbT
76c0: 79 70 65 2e 53 74 72 69 6e 67 29 2c 0d 0a 20 20  ype.String),..  
76d0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
76e0: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
76f0: 22 4c 4f 4e 47 43 48 41 52 22 2c 20 44 62 54 79  "LONGCHAR", DbTy
7700: 70 65 2e 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20  pe.String),..   
7710: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
7720: 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28 22  QLiteTypeNames("
7730: 4c 4f 4e 47 56 41 52 43 48 41 52 22 2c 20 44 62  LONGVARCHAR", Db
7740: 54 79 70 65 2e 53 74 72 69 6e 67 29 2c 0d 0a 20  Type.String),.. 
7750: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
7760: 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73   SQLiteTypeNames
7770: 28 22 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e  ("LONG", DbType.
7780: 49 6e 74 36 34 29 2c 0d 0a 20 20 20 20 20 20 20  Int64),..       
7790: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
77a0: 65 54 79 70 65 4e 61 6d 65 73 28 22 54 49 4e 59  eTypeNames("TINY
77b0: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 42 79 74  INT", DbType.Byt
77c0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
77d0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70     new SQLiteTyp
77e0: 65 4e 61 6d 65 73 28 22 49 4e 54 45 47 45 52 22  eNames("INTEGER"
77f0: 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 29 2c  , DbType.Int64),
7800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7810: 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61  new SQLiteTypeNa
7820: 6d 65 73 28 22 49 4e 54 22 2c 20 44 62 54 79 70  mes("INT", DbTyp
7830: 65 2e 49 6e 74 33 32 29 2c 0d 0a 20 20 20 20 20  e.Int32),..     
7840: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
7850: 69 74 65 54 79 70 65 4e 61 6d 65 73 28 22 56 41  iteTypeNames("VA
7860: 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  RCHAR", DbType.S
7870: 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20  tring),..       
7880: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
7890: 65 54 79 70 65 4e 61 6d 65 73 28 22 4e 56 41 52  eTypeNames("NVAR
78a0: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74  CHAR", DbType.St
78b0: 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20  ring),..        
78c0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
78d0: 54 79 70 65 4e 61 6d 65 73 28 22 43 48 41 52 22  TypeNames("CHAR"
78e0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 29  , DbType.String)
78f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
7900: 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e   new SQLiteTypeN
7910: 61 6d 65 73 28 22 4e 43 48 41 52 22 2c 20 44 62  ames("NCHAR", Db
7920: 54 79 70 65 2e 53 74 72 69 6e 67 29 2c 0d 0a 20  Type.String),.. 
7930: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
7940: 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73   SQLiteTypeNames
7950: 28 22 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e  ("TEXT", DbType.
7960: 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20  String),..      
7970: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
7980: 74 65 54 79 70 65 4e 61 6d 65 73 28 22 4e 54 45  teTypeNames("NTE
7990: 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  XT", DbType.Stri
79a0: 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ng),..          
79b0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79      new SQLiteTy
79c0: 70 65 4e 61 6d 65 73 28 22 53 54 52 49 4e 47 22  peNames("STRING"
79d0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 29  , DbType.String)
79e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
79f0: 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e   new SQLiteTypeN
7a00: 61 6d 65 73 28 22 44 4f 55 42 4c 45 22 2c 20 44  ames("DOUBLE", D
7a10: 62 54 79 70 65 2e 44 6f 75 62 6c 65 29 2c 0d 0a  bType.Double),..
7a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
7a30: 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65  w SQLiteTypeName
7a40: 73 28 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70  s("FLOAT", DbTyp
7a50: 65 2e 44 6f 75 62 6c 65 29 2c 0d 0a 20 20 20 20  e.Double),..    
7a60: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
7a70: 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28 22 52  LiteTypeNames("R
7a80: 45 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 6f 75  EAL", DbType.Dou
7a90: 62 6c 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ble),..         
7aa0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54       new SQLiteT
7ab0: 79 70 65 4e 61 6d 65 73 28 22 42 49 54 22 2c 20  ypeNames("BIT", 
7ac0: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 29 2c  DbType.Boolean),
7ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7ae0: 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61  new SQLiteTypeNa
7af0: 6d 65 73 28 22 59 45 53 4e 4f 22 2c 20 44 62 54  mes("YESNO", DbT
7b00: 79 70 65 2e 42 6f 6f 6c 65 61 6e 29 2c 0d 0a 20  ype.Boolean),.. 
7b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
7b20: 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73   SQLiteTypeNames
7b30: 28 22 4c 4f 47 49 43 41 4c 22 2c 20 44 62 54 79  ("LOGICAL", DbTy
7b40: 70 65 2e 42 6f 6f 6c 65 61 6e 29 2c 0d 0a 20 20  pe.Boolean),..  
7b50: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
7b60: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
7b70: 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70 65 2e 42  "BOOL", DbType.B
7b80: 6f 6f 6c 65 61 6e 29 2c 0d 0a 20 20 20 20 20 20  oolean),..      
7b90: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
7ba0: 74 65 54 79 70 65 4e 61 6d 65 73 28 22 42 4f 4f  teTypeNames("BOO
7bb0: 4c 45 41 4e 22 2c 20 44 62 54 79 70 65 2e 42 6f  LEAN", DbType.Bo
7bc0: 6f 6c 65 61 6e 29 2c 0d 0a 20 20 20 20 20 20 20  olean),..       
7bd0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
7be0: 65 54 79 70 65 4e 61 6d 65 73 28 22 4e 55 4d 45  eTypeNames("NUME
7bf0: 52 49 43 22 2c 20 44 62 54 79 70 65 2e 44 65 63  RIC", DbType.Dec
7c00: 69 6d 61 6c 29 2c 0d 0a 20 20 20 20 20 20 20 20  imal),..        
7c10: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
7c20: 54 79 70 65 4e 61 6d 65 73 28 22 44 45 43 49 4d  TypeNames("DECIM
7c30: 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  AL", DbType.Deci
7c40: 6d 61 6c 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  mal),..         
7c50: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54       new SQLiteT
7c60: 79 70 65 4e 61 6d 65 73 28 22 4d 4f 4e 45 59 22  ypeNames("MONEY"
7c70: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
7c80: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
7c90: 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65    new SQLiteType
7ca0: 4e 61 6d 65 73 28 22 43 55 52 52 45 4e 43 59 22  Names("CURRENCY"
7cb0: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
7cc0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
7cd0: 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65    new SQLiteType
7ce0: 4e 61 6d 65 73 28 22 54 49 4d 45 22 2c 20 44 62  Names("TIME", Db
7cf0: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 29 2c 0d  Type.DateTime),.
7d00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
7d10: 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d  ew SQLiteTypeNam
7d20: 65 73 28 22 44 41 54 45 22 2c 20 44 62 54 79 70  es("DATE", DbTyp
7d30: 65 2e 44 61 74 65 54 69 6d 65 29 2c 0d 0a 20 20  e.DateTime),..  
7d40: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
7d50: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
7d60: 22 44 41 54 45 54 49 4d 45 22 2c 20 44 62 54 79  "DATETIME", DbTy
7d70: 70 65 2e 44 61 74 65 54 69 6d 65 29 2c 0d 0a 20  pe.DateTime),.. 
7d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
7d90: 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73   SQLiteTypeNames
7da0: 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62  ("SMALLDATE", Db
7db0: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 29 2c 0d  Type.DateTime),.
7dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e  .              n
7dd0: 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d  ew SQLiteTypeNam
7de0: 65 73 28 22 54 49 4d 45 53 54 41 4d 50 22 2c 20  es("TIMESTAMP", 
7df0: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 29  DbType.DateTime)
7e00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
7e10: 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e   new SQLiteTypeN
7e20: 61 6d 65 73 28 22 42 4c 4f 42 22 2c 20 44 62 54  ames("BLOB", DbT
7e30: 79 70 65 2e 42 69 6e 61 72 79 29 2c 0d 0a 20 20  ype.Binary),..  
7e40: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
7e50: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
7e60: 22 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65  "BINARY", DbType
7e70: 2e 42 69 6e 61 72 79 29 2c 0d 0a 20 20 20 20 20  .Binary),..     
7e80: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
7e90: 69 74 65 54 79 70 65 4e 61 6d 65 73 28 22 56 41  iteTypeNames("VA
7ea0: 52 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65  RBINARY", DbType
7eb0: 2e 42 69 6e 61 72 79 29 2c 0d 0a 20 20 20 20 20  .Binary),..     
7ec0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
7ed0: 69 74 65 54 79 70 65 4e 61 6d 65 73 28 22 49 4d  iteTypeNames("IM
7ee0: 41 47 45 22 2c 20 44 62 54 79 70 65 2e 42 69 6e  AGE", DbType.Bin
7ef0: 61 72 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ary),..         
7f00: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54       new SQLiteT
7f10: 79 70 65 4e 61 6d 65 73 28 22 47 45 4e 45 52 41  ypeNames("GENERA
7f20: 4c 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  L", DbType.Binar
7f30: 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y),..           
7f40: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70     new SQLiteTyp
7f50: 65 4e 61 6d 65 73 28 22 4f 4c 45 4f 42 4a 45 43  eNames("OLEOBJEC
7f60: 54 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  T", DbType.Binar
7f70: 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y),..           
7f80: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70     new SQLiteTyp
7f90: 65 4e 61 6d 65 73 28 22 47 55 49 44 22 2c 20 44  eNames("GUID", D
7fa0: 62 54 79 70 65 2e 47 75 69 64 29 2c 0d 0a 20 20  bType.Guid),..  
7fb0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
7fc0: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
7fd0: 22 55 4e 49 51 55 45 49 44 45 4e 54 49 46 49 45  "UNIQUEIDENTIFIE
7fe0: 52 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 29  R", DbType.Guid)
7ff0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
8000: 20 6e 65 77 20 53 51 4c 69 74 65 54 79 70 65 4e   new SQLiteTypeN
8010: 61 6d 65 73 28 22 4d 45 4d 4f 22 2c 20 44 62 54  ames("MEMO", DbT
8020: 79 70 65 2e 53 74 72 69 6e 67 29 2c 0d 0a 20 20  ype.String),..  
8030: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
8040: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 28  SQLiteTypeNames(
8050: 22 4e 4f 54 45 22 2c 20 44 62 54 79 70 65 2e 53  "NOTE", DbType.S
8060: 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20  tring),..       
8070: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
8080: 65 54 79 70 65 4e 61 6d 65 73 28 22 53 4d 41 4c  eTypeNames("SMAL
8090: 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e  LINT", DbType.In
80a0: 74 31 36 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  t16),..         
80b0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 54       new SQLiteT
80c0: 79 70 65 4e 61 6d 65 73 28 22 42 49 47 49 4e 54  ypeNames("BIGINT
80d0: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 29  ", DbType.Int64)
80e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 29  ..            })
80f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
8100: 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70 65             _type
8110: 4e 61 6d 65 73 2e 41 64 64 28 74 79 70 65 4e 61  Names.Add(typeNa
8120: 6d 65 2e 74 79 70 65 4e 61 6d 65 2c 20 74 79 70  me.typeName, typ
8130: 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  eName);..       
8140: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
8150: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
8160: 20 20 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65    SQLiteTypeName
8170: 73 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  s value;....    
8180: 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73    if (_typeNames
8190: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 4e 61 6d  .TryGetValue(Nam
81a0: 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  e, out value))..
81b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
81c0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61   return value.da
81d0: 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 7d  taType;..      }
81e0: 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20  ..      else..  
81f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
8200: 6e 74 20 69 6e 64 65 78 20 3d 20 4e 61 6d 65 2e  nt index = Name.
8210: 49 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d  IndexOf('(');...
8220: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 69 6e  .        if ((in
8230: 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20 20  dex > 0) &&..   
8240: 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61           _typeNa
8250: 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
8260: 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 30  Name.Substring(0
8270: 2c 20 69 6e 64 65 78 29 2c 20 6f 75 74 20 76 61  , index), out va
8280: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
8290: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
82a0: 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
82b0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
82c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
82d0: 44 62 54 79 70 65 20 64 65 66 61 75 6c 74 44 62  DbType defaultDb
82e0: 54 79 70 65 20 3d 20 44 62 54 79 70 65 2e 4f 62  Type = DbType.Ob
82f0: 6a 65 63 74 3b 0d 0a 0d 0a 23 69 66 20 44 45 42  ject;....#if DEB
8300: 55 47 0d 0a 20 20 20 20 20 20 54 72 61 63 65 2e  UG..      Trace.
8310: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
8320: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
8330: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
8340: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
8350: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
8360: 61 75 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f  ault type {0} fo
8370: 72 20 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22  r name \"{1}\"."
8380: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 64 65 66  ,..          def
8390: 61 75 6c 74 44 62 54 79 70 65 2c 20 4e 61 6d 65  aultDbType, Name
83a0: 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  ));..#endif.... 
83b0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
83c0: 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
83d0: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
83e0: 6e 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  n....    private
83f0: 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 5f   static object _
8400: 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
8410: 62 6a 65 63 74 28 29 3b 0d 0a 20 20 20 20 70 72  bject();..    pr
8420: 69 76 61 74 65 20 73 74 61 74 69 63 20 44 69 63  ivate static Dic
8430: 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20  tionary<string, 
8440: 53 51 4c 69 74 65 54 79 70 65 4e 61 6d 65 73 3e  SQLiteTypeNames>
8450: 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 6e 75   _typeNames = nu
8460: 6c 6c 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  ll;..  }....  //
8470: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
8480: 2f 2f 20 53 51 4c 69 74 65 20 68 61 73 20 76 65  // SQLite has ve
8490: 72 79 20 6c 69 6d 69 74 65 64 20 74 79 70 65 73  ry limited types
84a0: 2c 20 61 6e 64 20 69 73 20 69 6e 68 65 72 65 6e  , and is inheren
84b0: 74 6c 79 20 74 65 78 74 2d 62 61 73 65 64 2e 20  tly text-based. 
84c0: 20 54 68 65 20 66 69 72 73 74 20 35 20 74 79 70   The first 5 typ
84d0: 65 73 20 62 65 6c 6f 77 20 72 65 70 72 65 73 65  es below represe
84e0: 6e 74 20 74 68 65 20 73 75 6d 20 6f 66 20 61 6c  nt the sum of al
84f0: 6c 20 74 79 70 65 73 20 53 51 4c 69 74 65 0d 0a  l types SQLite..
8500: 20 20 2f 2f 2f 20 75 6e 64 65 72 73 74 61 6e 64    /// understand
8510: 73 2e 20 20 54 68 65 20 44 61 74 65 54 69 6d 65  s.  The DateTime
8520: 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68   extension to th
8530: 65 20 73 70 65 63 20 69 73 20 66 6f 72 20 69 6e  e spec is for in
8540: 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2e  ternal use only.
8550: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
8560: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
8570: 6d 20 54 79 70 65 41 66 66 69 6e 69 74 79 0d 0a  m TypeAffinity..
8580: 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    {..    /// <su
8590: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
85a0: 4e 6f 74 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f  Not used..    //
85b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
85c0: 20 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20    Uninitialized 
85d0: 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 0,..    /// <s
85e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
85f0: 20 41 6c 6c 20 69 6e 74 65 67 65 72 73 20 69 6e   All integers in
8600: 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20   SQLite default 
8610: 74 6f 20 49 6e 74 36 34 0d 0a 20 20 20 20 2f 2f  to Int64..    //
8620: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8630: 20 20 49 6e 74 36 34 20 3d 20 31 2c 0d 0a 20 20    Int64 = 1,..  
8640: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8650: 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f  .    /// All flo
8660: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
8670: 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65  ers in SQLite de
8680: 66 61 75 6c 74 20 74 6f 20 64 6f 75 62 6c 65 0d  fault to double.
8690: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
86a0: 72 79 3e 0d 0a 20 20 20 20 44 6f 75 62 6c 65 20  ry>..    Double 
86b0: 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 2,..    /// <s
86c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
86d0: 20 54 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   The default dat
86e0: 61 20 74 79 70 65 20 6f 66 20 53 51 4c 69 74 65  a type of SQLite
86f0: 20 69 73 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f   is text..    //
8700: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8710: 20 20 54 65 78 74 20 3d 20 33 2c 0d 0a 20 20 20    Text = 3,..   
8720: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8730: 20 20 20 20 2f 2f 2f 20 54 79 70 69 63 61 6c 6c      /// Typicall
8740: 79 20 62 6c 6f 62 20 74 79 70 65 73 20 61 72 65  y blob types are
8750: 20 6f 6e 6c 79 20 73 65 65 6e 20 77 68 65 6e 20   only seen when 
8760: 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 61 20  returned from a 
8770: 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  function..    //
8780: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8790: 20 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a 20 20 20    Blob = 4,..   
87a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
87b0: 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70      /// Null typ
87c0: 65 73 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e  es can be return
87d0: 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e  ed from function
87e0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  s..    /// </sum
87f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20  mary>..    Null 
8800: 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 5,..    /// <s
8810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
8820: 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79   Used internally
8830: 20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65   by this provide
8840: 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  r..    /// </sum
8850: 6d 61 72 79 3e 0d 0a 20 20 20 20 44 61 74 65 54  mary>..    DateT
8860: 69 6d 65 20 3d 20 31 30 2c 0d 0a 20 20 20 20 2f  ime = 10,..    /
8870: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8880: 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
8890: 6e 61 6c 6c 79 0d 0a 20 20 20 20 2f 2f 2f 20 3c  nally..    /// <
88a0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e  /summary>..    N
88b0: 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d 0a  one = 11,..  }..
88c0: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
88d0: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69 6d  >..  /// This im
88e0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
88f0: 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f 2e 4e  SQLite for ADO.N
8900: 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73 20 64  ET can process d
8910: 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64 73 20  ate/time fields 
8920: 69 6e 20 64 61 74 61 62 61 73 65 73 20 69 6e 20  in databases in 
8930: 6f 6e 6c 79 20 6f 6e 65 20 6f 66 20 74 68 72 65  only one of thre
8940: 65 20 66 6f 72 6d 61 74 73 2e 20 20 54 69 63 6b  e formats.  Tick
8950: 73 2c 20 49 53 4f 38 36 30 31 0d 0a 20 20 2f 2f  s, ISO8601..  //
8960: 2f 20 61 6e 64 20 4a 75 6c 69 61 6e 44 61 79 2e  / and JulianDay.
8970: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
8980: 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72  y>..  /// <remar
8990: 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53 4f 38 36  ks>..  /// ISO86
89a0: 30 31 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61  01 is more compa
89b0: 74 69 62 6c 65 2c 20 72 65 61 64 61 62 6c 65 2c  tible, readable,
89c0: 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73 73 61 62   fully-processab
89d0: 6c 65 2c 20 62 75 74 20 6c 65 73 73 20 61 63 63  le, but less acc
89e0: 75 72 61 74 65 20 61 73 20 69 74 20 64 6f 65 73  urate as it does
89f0: 6e 27 74 20 70 72 6f 76 69 64 65 20 74 69 6d 65  n't provide time
8a00: 20 64 6f 77 6e 20 74 6f 20 66 72 61 63 74 69 6f   down to fractio
8a10: 6e 73 20 6f 66 20 61 20 73 65 63 6f 6e 64 2e 0d  ns of a second..
8a20: 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44 61 79  .  /// JulianDay
8a30: 20 69 73 20 74 68 65 20 6e 75 6d 65 72 69 63 20   is the numeric 
8a40: 66 6f 72 6d 61 74 20 74 68 65 20 53 51 4c 69 74  format the SQLit
8a50: 65 20 75 73 65 73 20 69 6e 74 65 72 6e 61 6c 6c  e uses internall
8a60: 79 20 61 6e 64 20 69 73 20 61 72 67 75 61 62 6c  y and is arguabl
8a70: 79 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 70 61  y the most compa
8a80: 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 20 70  tible with 3rd p
8a90: 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49 74 20  arty tools.  It 
8aa0: 69 73 0d 0a 20 20 2f 2f 2f 20 6e 6f 74 20 72 65  is..  /// not re
8ab0: 61 64 61 62 6c 65 20 61 73 20 74 65 78 74 20 77  adable as text w
8ac0: 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63  ithout post-proc
8ad0: 65 73 73 69 6e 67 2e 0d 0a 20 20 2f 2f 2f 20 54  essing...  /// T
8ae0: 69 63 6b 73 20 6c 65 73 73 20 63 6f 6d 70 61 74  icks less compat
8af0: 69 62 6c 65 20 77 69 74 68 20 33 72 64 20 70 61  ible with 3rd pa
8b00: 72 74 79 20 74 6f 6f 6c 73 20 74 68 61 74 20 71  rty tools that q
8b10: 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61 73  uery the databas
8b20: 65 2c 20 61 6e 64 20 72 65 6e 64 65 72 73 20 74  e, and renders t
8b30: 68 65 20 44 61 74 65 54 69 6d 65 20 66 69 65 6c  he DateTime fiel
8b40: 64 20 75 6e 72 65 61 64 61 62 6c 65 20 61 73 20  d unreadable as 
8b50: 74 65 78 74 20 77 69 74 68 6f 75 74 20 70 6f 73  text without pos
8b60: 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 0d 0a 20  t-processing... 
8b70: 20 2f 2f 2f 20 0d 0a 20 20 2f 2f 2f 20 54 68 65   /// ..  /// The
8b80: 20 70 72 65 66 65 72 72 65 64 20 6f 72 64 65 72   preferred order
8b90: 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20 61 20 64   of choosing a d
8ba0: 61 74 65 74 69 6d 65 20 66 6f 72 6d 61 74 20 69  atetime format i
8bb0: 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20 49 53 4f  s JulianDay, ISO
8bc0: 38 36 30 31 2c 20 61 6e 64 20 74 68 65 6e 20 54  8601, and then T
8bd0: 69 63 6b 73 2e 20 20 54 69 63 6b 73 20 69 73 20  icks.  Ticks is 
8be0: 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e 74 20 66  mainly present f
8bf0: 6f 72 20 6c 65 67 61 63 79 20 0d 0a 20 20 2f 2f  or legacy ..  //
8c00: 2f 20 63 6f 64 65 20 73 75 70 70 6f 72 74 2e 0d  / code support..
8c10: 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73  .  /// </remarks
8c20: 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
8c30: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
8c40: 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f  ts..  {..    ///
8c50: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8c60: 2f 2f 2f 20 55 73 69 6e 67 20 74 69 63 6b 73 20  /// Using ticks 
8c70: 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64  is not recommend
8c80: 65 64 20 61 6e 64 20 69 73 20 6e 6f 74 20 77 65  ed and is not we
8c90: 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 77 69 74  ll supported wit
8ca0: 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f  h LINQ...    ///
8cb0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
8cc0: 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a 20 20 20   Ticks = 0,..   
8cd0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8ce0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 49 53 4f 38      /// The ISO8
8cf0: 36 30 31 20 66 6f 72 6d 61 74 0d 0a 20 20 20 20  601 format..    
8d00: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
8d10: 20 20 20 20 49 53 4f 38 36 30 31 20 3d 20 31 2c      ISO8601 = 1,
8d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
8d30: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c  ry>..    /// Jul
8d40: 69 61 6e 44 61 79 20 66 6f 72 6d 61 74 2c 20 77  ianDay format, w
8d50: 68 69 63 68 20 69 73 20 77 68 61 74 20 53 51 4c  hich is what SQL
8d60: 69 74 65 20 75 73 65 73 20 69 6e 74 65 72 6e 61  ite uses interna
8d70: 6c 6c 79 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  lly..    /// </s
8d80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75 6c  ummary>..    Jul
8d90: 69 61 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20 20  ianDay = 2,..   
8da0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8db0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f 6c      /// The whol
8dc0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  e number of seco
8dd0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
8de0: 69 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61 72  ix epoch (Januar
8df0: 79 20 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20 20  y 1, 1970)...   
8e00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8e10: 0a 20 20 20 20 55 6e 69 78 45 70 6f 63 68 20 3d  .    UnixEpoch =
8e20: 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   3,..    /// <su
8e30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
8e40: 41 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  Any culture-inde
8e50: 70 65 6e 64 65 6e 74 20 73 74 72 69 6e 67 20 76  pendent string v
8e60: 61 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e 4e  alue that the .N
8e70: 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e  ET Framework can
8e80: 20 69 6e 74 65 72 70 72 65 74 20 61 73 20 61 20   interpret as a 
8e90: 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65 2e 0d  valid DateTime..
8ea0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
8eb0: 72 79 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69 61  ry>..    Invaria
8ec0: 6e 74 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d 0a  ntCulture = 4,..
8ed0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8ee0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 73  >..    /// Any s
8ef0: 74 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74  tring value that
8f00: 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77   the .NET Framew
8f10: 6f 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65  ork can interpre
8f20: 74 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74  t as a valid Dat
8f30: 65 54 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20  eTime using the 
8f40: 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2e  current culture.
8f50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8f60: 61 72 79 3e 0d 0a 20 20 20 20 43 75 72 72 65 6e  ary>..    Curren
8f70: 74 43 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a 20  tCulture = 5,.. 
8f80: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
8f90: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
8fa0: 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72  fault format for
8fb0: 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d   this provider..
8fc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
8fd0: 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74  ry>..    Default
8fe0: 20 3d 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d 0d   = ISO8601..  }.
8ff0: 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
9000: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 65  y>..  /// This e
9010: 6e 75 6d 20 64 65 74 65 72 6d 69 6e 65 73 20 68  num determines h
9020: 6f 77 20 53 51 4c 69 74 65 20 74 72 65 61 74 73  ow SQLite treats
9030: 20 69 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c   its journal fil
9040: 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  e...  /// </summ
9050: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d  ary>..  /// <rem
9060: 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20  arks>..  /// By 
9070: 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20 77  default SQLite w
9080: 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64  ill create and d
9090: 65 6c 65 74 65 20 74 68 65 20 6a 6f 75 72 6e 61  elete the journa
90a0: 6c 20 66 69 6c 65 20 77 68 65 6e 20 6e 65 65 64  l file when need
90b0: 65 64 20 64 75 72 69 6e 67 20 61 20 74 72 61 6e  ed during a tran
90c0: 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20  saction...  /// 
90d0: 48 6f 77 65 76 65 72 2c 20 66 6f 72 20 73 6f 6d  However, for som
90e0: 65 20 63 6f 6d 70 75 74 65 72 73 20 72 75 6e 6e  e computers runn
90f0: 69 6e 67 20 63 65 72 74 61 69 6e 20 66 69 6c 65  ing certain file
9100: 73 79 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e  system monitorin
9110: 67 20 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61 70  g tools, the rap
9120: 69 64 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74 69  id..  /// creati
9130: 6f 6e 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e 20  on and deletion 
9140: 6f 66 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66  of the journal f
9150: 69 6c 65 20 63 61 6e 20 63 61 75 73 65 20 74 68  ile can cause th
9160: 6f 73 65 20 70 72 6f 67 72 61 6d 73 20 74 6f 20  ose programs to 
9170: 66 61 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74 65  fail, or to inte
9180: 72 66 65 72 65 20 77 69 74 68 20 53 51 4c 69 74  rfere with SQLit
9190: 65 2e 0d 0a 20 20 2f 2f 2f 20 0d 0a 20 20 2f 2f  e...  /// ..  //
91a0: 2f 20 49 66 20 61 20 70 72 6f 67 72 61 6d 20 6f  / If a program o
91b0: 72 20 76 69 72 75 73 20 73 63 61 6e 6e 65 72 20  r virus scanner 
91c0: 69 73 20 69 6e 74 65 72 66 65 72 69 6e 67 20 77  is interfering w
91d0: 69 74 68 20 53 51 4c 69 74 65 27 73 20 6a 6f 75  ith SQLite's jou
91e0: 72 6e 61 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d  rnal file, you m
91f0: 61 79 20 72 65 63 65 69 76 65 20 65 72 72 6f 72  ay receive error
9200: 73 20 6c 69 6b 65 20 22 75 6e 61 62 6c 65 20 74  s like "unable t
9210: 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20  o open database 
9220: 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65  file"..  /// whe
9230: 6e 20 73 74 61 72 74 69 6e 67 20 61 20 74 72 61  n starting a tra
9240: 6e 73 61 63 74 69 6f 6e 2e 20 20 49 66 20 74 68  nsaction.  If th
9250: 69 73 20 69 73 20 68 61 70 70 65 6e 69 6e 67 2c  is is happening,
9260: 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f   you may want to
9270: 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
9280: 75 6c 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65  ult journal mode
9290: 20 74 6f 20 50 65 72 73 69 73 74 2e 0d 0a 20 20   to Persist...  
92a0: 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
92b0: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
92c0: 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45  LiteJournalModeE
92d0: 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  num..  {..    //
92e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
92f0: 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
9300: 20 6d 6f 64 65 2c 20 74 68 69 73 20 63 61 75 73   mode, this caus
9310: 65 73 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  es SQLite to use
9320: 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 6a 6f   the existing jo
9330: 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f  urnaling mode fo
9340: 72 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d  r the database..
9350: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
9360: 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74  ry>..    Default
9370: 20 3d 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20   = -1,..    /// 
9380: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
9390: 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63  // SQLite will c
93a0: 72 65 61 74 65 20 61 6e 64 20 64 65 73 74 72 6f  reate and destro
93b0: 79 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  y the journal fi
93c0: 6c 65 20 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20  le as-needed... 
93d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
93e0: 3e 0d 0a 20 20 20 20 44 65 6c 65 74 65 20 3d 20  >..    Delete = 
93f0: 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  0,..    /// <sum
9400: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57  mary>..    /// W
9410: 68 65 6e 20 74 68 69 73 20 69 73 20 73 65 74 2c  hen this is set,
9420: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65   SQLite will kee
9430: 70 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  p the journal fi
9440: 6c 65 20 65 76 65 6e 20 61 66 74 65 72 20 61 20  le even after a 
9450: 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20  transaction has 
9460: 63 6f 6d 70 6c 65 74 65 64 2e 20 20 49 74 27 73  completed.  It's
9470: 20 63 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62   contents will b
9480: 65 20 65 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f  e erased,..    /
9490: 2f 2f 20 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e  // and the journ
94a0: 61 6c 20 72 65 2d 75 73 65 64 20 61 73 20 6f 66  al re-used as of
94b0: 74 65 6e 20 61 73 20 6e 65 65 64 65 64 2e 20 20  ten as needed.  
94c0: 49 66 20 69 74 20 69 73 20 64 65 6c 65 74 65 64  If it is deleted
94d0: 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 63  , it will be rec
94e0: 72 65 61 74 65 64 20 74 68 65 20 6e 65 78 74 20  reated the next 
94f0: 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65  time it is neede
9500: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
9510: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 50 65 72 73  mmary>..    Pers
9520: 69 73 74 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  ist = 1,..    //
9530: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9540: 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
9550: 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 72 6f   disables the ro
9560: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65  llback journal e
9570: 6e 74 69 72 65 6c 79 2e 20 20 49 6e 74 65 72 72  ntirely.  Interr
9580: 75 70 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  upted transactio
9590: 6e 73 20 6f 72 20 61 20 70 72 6f 67 72 61 6d 20  ns or a program 
95a0: 63 72 61 73 68 20 63 61 6e 20 63 61 75 73 65 20  crash can cause 
95b0: 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f  database..    //
95c0: 2f 20 63 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20  / corruption in 
95d0: 74 68 69 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20  this mode!..    
95e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
95f0: 20 20 20 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20      Off = 2,..  
9600: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9610: 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  .    /// SQLite 
9620: 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68  will truncate th
9630: 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74  e journal file t
9640: 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e  o zero-length in
9650: 73 74 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e  stead of deletin
9660: 67 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  g it...    /// <
9670: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54  /summary>..    T
9680: 72 75 6e 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20  runcate = 3,..  
9690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
96a0: 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  .    /// SQLite 
96b0: 77 69 6c 6c 20 73 74 6f 72 65 20 74 68 65 20 6a  will store the j
96c0: 6f 75 72 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69  ournal in volati
96d0: 6c 65 20 52 41 4d 2e 20 20 54 68 69 73 20 73 61  le RAM.  This sa
96e0: 76 65 73 20 64 69 73 6b 20 49 2f 4f 20 62 75 74  ves disk I/O but
96f0: 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
9700: 6f 66 20 64 61 74 61 62 61 73 65 20 73 61 66 65  of database safe
9710: 74 79 20 61 6e 64 20 69 6e 74 65 67 72 69 74 79  ty and integrity
9720: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  ...    /// If th
9730: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
9740: 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61 73 68  ing SQLite crash
9750: 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65  es in the middle
9760: 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f   of a transactio
9770: 6e 20 77 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52  n when the MEMOR
9780: 59 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64  Y journaling mod
9790: 65 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74  e is set, then t
97a0: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61  he..    /// data
97b0: 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 76  base file will v
97c0: 65 72 79 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f  ery likely go co
97d0: 72 72 75 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rrupt...    /// 
97e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
97f0: 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20  Memory = 4,..   
9800: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
9810: 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75      /// SQLite u
9820: 73 65 73 20 61 20 77 72 69 74 65 2d 61 68 65 61  ses a write-ahea
9830: 64 20 6c 6f 67 20 69 6e 73 74 65 61 64 20 6f 66  d log instead of
9840: 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72   a rollback jour
9850: 6e 61 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  nal to implement
9860: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20   transactions.  
9870: 54 68 65 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69  The WAL journali
9880: 6e 67 20 6d 6f 64 65 20 69 73 20 70 65 72 73 69  ng mode is persi
9890: 73 74 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20  stent;..    /// 
98a0: 61 66 74 65 72 20 62 65 69 6e 67 20 73 65 74 20  after being set 
98b0: 69 74 20 73 74 61 79 73 20 69 6e 20 65 66 66 65  it stays in effe
98c0: 63 74 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70  ct across multip
98d0: 6c 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  le database conn
98e0: 65 63 74 69 6f 6e 73 20 61 6e 64 20 61 66 74 65  ections and afte
98f0: 72 20 63 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65  r closing and re
9900: 6f 70 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61  opening the data
9910: 62 61 73 65 2e 20 41 20 64 61 74 61 62 61 73 65  base. A database
9920: 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c  ..    /// in WAL
9930: 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65   journaling mode
9940: 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63   can only be acc
9950: 65 73 73 65 64 20 62 79 20 53 51 4c 69 74 65 20  essed by SQLite 
9960: 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72  version 3.7.0 or
9970: 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f   later...    ///
9980: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9990: 20 57 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d   Wal = 5..  }...
99a0: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
99b0: 0d 0a 20 20 2f 2f 2f 20 53 74 72 75 63 74 20 75  ..  /// Struct u
99c0: 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74  sed internally t
99d0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
99e0: 64 61 74 61 74 79 70 65 20 6f 66 20 61 20 63 6f  datatype of a co
99f0: 6c 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c 74  lumn in a result
9a00: 73 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  set..  /// </sum
9a10: 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61  mary>..  interna
9a20: 6c 20 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79  l class SQLiteTy
9a30: 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f  pe..  {..    ///
9a40: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9a50: 2f 2f 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f  /// The DbType o
9a60: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72  f the column, or
9a70: 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69   DbType.Object i
9a80: 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64  f it cannot be d
9a90: 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f  etermined..    /
9aa0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
9ab0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79     internal DbTy
9ac0: 70 65 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f  pe Type;..    //
9ad0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9ae0: 20 2f 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74   /// The affinit
9af0: 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75  y of a column, u
9b00: 73 65 64 20 66 6f 72 20 65 78 70 72 65 73 73 69  sed for expressi
9b10: 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65  ons or when Type
9b20: 20 69 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63   is DbType.Objec
9b30: 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  t..    /// </sum
9b40: 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
9b50: 6e 61 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79  nal TypeAffinity
9b60: 20 41 66 66 69 6e 69 74 79 3b 0d 0a 20 20 7d 0d   Affinity;..  }.
9b70: 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  ...  internal st
9b80: 72 75 63 74 20 53 51 4c 69 74 65 54 79 70 65 4e  ruct SQLiteTypeN
9b90: 61 6d 65 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 69  ames..  {..    i
9ba0: 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 54 79  nternal SQLiteTy
9bb0: 70 65 4e 61 6d 65 73 28 73 74 72 69 6e 67 20 6e  peNames(string n
9bc0: 65 77 74 79 70 65 4e 61 6d 65 2c 20 44 62 54 79  ewtypeName, DbTy
9bd0: 70 65 20 6e 65 77 64 61 74 61 54 79 70 65 29 0d  pe newdataType).
9be0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 79  .    {..      ty
9bf0: 70 65 4e 61 6d 65 20 3d 20 6e 65 77 74 79 70 65  peName = newtype
9c00: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64 61 74  Name;..      dat
9c10: 61 54 79 70 65 20 3d 20 6e 65 77 64 61 74 61 54  aType = newdataT
9c20: 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ype;..    }.... 
9c30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69     internal stri
9c40: 6e 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  ng typeName;..  
9c50: 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70    internal DbTyp
9c60: 65 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 7d  e dataType;..  }
9c70: 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 63  ....  internal c
9c80: 6c 61 73 73 20 54 79 70 65 4e 61 6d 65 53 74 72  lass TypeNameStr
9c90: 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20 49 45  ingComparer : IE
9ca0: 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c  qualityComparer<
9cb0: 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20  string>..  {..  
9cc0: 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75 61 6c    #region IEqual
9cd0: 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72 69  ityComparer<stri
9ce0: 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ng> Members..   
9cf0: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75   public bool Equ
9d00: 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74 72 69  als(..      stri
9d10: 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20  ng left,..      
9d20: 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a 20 20  string right..  
9d30: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
9d40: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
9d50: 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c 20 72  g.Equals(left, r
9d60: 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70  ight, StringComp
9d70: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
9d80: 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20  noreCase);..    
9d90: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9de0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c  ////....    publ
9df0: 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43 6f  ic int GetHashCo
9e00: 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  de(..      strin
9e10: 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 29  g value..      )
9e20: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ..    {..      /
9e30: 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
9e40: 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67  : The only thing
9e50: 20 74 68 61 74 20 77 65 20 6d 75 73 74 20 67 75   that we must gu
9e60: 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20 61 63  arantee here, ac
9e70: 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  cording..      /
9e80: 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65 20 4d  /       to the M
9e90: 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
9ea0: 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74 79 43  n for IEqualityC
9eb0: 6f 6d 70 61 72 65 72 2c 20 69 73 20 0d 0a 20 20  omparer, is ..  
9ec0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 61      //       tha
9ed0: 74 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e 20  t for two given 
9ee0: 73 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75 61  strings, if Equa
9ef0: 6c 73 20 72 65 74 75 72 6e 20 74 72 75 65 20 74  ls return true t
9f00: 68 65 6e 20 0d 0a 20 20 20 20 20 20 2f 2f 20 20  hen ..      //  
9f10: 20 20 20 20 20 74 68 65 20 74 77 6f 20 73 74 72       the two str
9f20: 69 6e 67 73 20 6d 75 73 74 20 68 61 73 68 20 74  ings must hash t
9f30: 6f 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  o the same value
9f40: 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
9f50: 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
9f60: 6e 75 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41 54  null)..#if !PLAT
9f70: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
9f80: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 72  EWORK..        r
9f90: 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f  eturn value.ToLo
9fa0: 77 65 72 49 6e 76 61 72 69 61 6e 74 28 29 2e 47  werInvariant().G
9fb0: 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23  etHashCode();..#
9fc0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65  else..        re
9fd0: 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77  turn value.ToLow
9fe0: 65 72 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65  er().GetHashCode
9ff0: 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
a000: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
a010: 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
a020: 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
a030: 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20  ("value");..    
a040: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
a050: 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a                 n..  }..}..