System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 6f5a7be2cbebd6bbc20a121b661e81388b1586a1:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
0380: 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63 6b   DbType Fallback
0390: 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  DefaultDbType = 
03a0: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d 0a  DbType.Object;..
03b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
03c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
03d0: 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c   fallback defaul
03e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
03f0: 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63 61  name when one ca
0400: 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64  nnot be obtained
0410: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 61   from..    /// a
0420: 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
0430: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ction instance..
0440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0450: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0470: 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61 63 6b   string Fallback
0480: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  DefaultTypeName 
0490: 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
04a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
04b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
04c0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
04d0: 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e  Unix epoch (e.g.
04e0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30   January 1, 1970
04f0: 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e   at midnight, in
0500: 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   UTC)...    /// 
0510: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0520: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
0530: 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69   readonly DateTi
0540: 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a  me UnixEpoch =..
0550: 20 20 20 20 20 20 20 20 6e 65 77 20 44 61 74 65          new Date
0560: 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c  Time(1970, 1, 1,
0570: 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69   0, 0, 0, DateTi
0580: 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a  meKind.Utc);....
0590: 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e      #pragma warn
05a0: 69 6e 67 20 64 69 73 61 62 6c 65 20 34 31 34 0d  ing disable 414.
05b0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
05d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c 45  value of the OLE
05e0: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63   Automation epoc
05f0: 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  h represented as
0600: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 20 20   a Julian day.  
0610: 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 66 69  This..    /// fi
0620: 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  eld cannot be re
0630: 6d 6f 76 65 64 20 61 73 20 74 68 65 20 74 65 73  moved as the tes
0640: 74 20 73 75 69 74 65 20 72 65 6c 69 65 73 20 75  t suite relies u
0650: 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  pon it...    ///
0660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0670: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0680: 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
0690: 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f  OleAutomationEpo
06a0: 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20  chAsJulianDay = 
06b0: 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20 20 20 20  2415018.5;..    
06c0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20  #pragma warning 
06d0: 72 65 73 74 6f 72 65 20 34 31 34 0d 0a 0d 0a 20  restore 414.... 
06e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
06f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
0700: 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20  rmat string for 
0710: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
0720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 49  when using the I
0730: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
0740: 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72  or CurrentCultur
0750: 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20 20  e formats...    
0760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0770: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0780: 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f 72  t string FullFor
0790: 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  mat = "yyyy-MM-d
07a0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66 66  dTHH:mm:ss.fffff
07b0: 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ffK";....    ///
07c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
07e0: 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61 6e 20 44  minimum Julian D
07f0: 61 79 20 76 61 6c 75 65 20 73 75 70 70 6f 72 74  ay value support
0800: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
0810: 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28 31 34 38  ry..    /// (148
0820: 37 33 31 31 36 33 32 30 30 30 30 30 29 2e 0d 0a  731163200000)...
0830: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0840: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
0850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
0860: 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a 64 20 3d  long MinimumJd =
0870: 20 63 6f 6d 70 75 74 65 4a 44 28 44 61 74 65 54   computeJD(DateT
0880: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29 3b 0d 0a  ime.MinValue);..
0890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
08b0: 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  s is the maximum
08c0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
08d0: 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  e supported by t
08e0: 68 69 73 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  his library..   
08f0: 20 2f 2f 2f 20 28 34 36 34 32 36 39 30 36 30 37   /// (4642690607
0900: 39 39 30 30 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f  99000)...    ///
0910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0920: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0930: 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67 20 4d 61  readonly long Ma
0940: 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d 70 75 74  ximumJd = comput
0950: 65 4a 44 28 44 61 74 65 54 69 6d 65 2e 4d 61 78  eJD(DateTime.Max
0960: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  Value);....    /
0970: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0980: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
0990: 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54  f ISO-8601 DateT
09a0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74  ime formats that
09b0: 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73   we support pars
09c0: 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
09e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
09f0: 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46  ing[] _datetimeF
0a00: 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72  ormats = new str
0a10: 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22  ing[] {..      "
0a20: 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  THHmmssK",..    
0a30: 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20    "THHmmK",..   
0a40: 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46     "HH:mm:ss.FFF
0a50: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
0a60: 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20  HH:mm:ssK",..   
0a70: 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20     "HH:mmK",..  
0a80: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a90: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0aa0: 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43  K", /* NOTE: UTC
0ab0: 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f   default (5). */
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
0ad0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d  -dd HH:mm:ssK",.
0ae0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0af0: 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20  dd HH:mmK",..   
0b00: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
0b10: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0b20: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0b30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-ddTHH:mmK",..
0b40: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0b50: 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20  dTHH:mm:ssK",.. 
0b60: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
0b70: 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22  mmssK",..      "
0b80: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d  yyyyMMddHHmmK",.
0b90: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ba0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22  THHmmssFFFFFFFK"
0bb0: 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73  ,..      "THHmms
0bc0: 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d  s",..      "THHm
0bd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  m",..      "HH:m
0be0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a  m:ss.FFFFFFF",..
0bf0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22        "HH:mm:ss"
0c00: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22  ,..      "HH:mm"
0c10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0c20: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0c30: 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a  FFFFF", /* NOTE:
0c40: 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74   Non-UTC default
0c50: 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20   (19). */..     
0c60: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
0c70: 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22  mm:ss",..      "
0c80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0c90: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ca0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
0cb0: 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20  FFFFFF",..      
0cc0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0cd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0ce0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22  -MM-ddTHH:mm:ss"
0cf0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d00: 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20  ddHHmmss",..    
0d10: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22    "yyyyMMddHHmm"
0d20: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d30: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
0d40: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0d50: 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22  MM-dd",..      "
0d60: 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20  yyyyMMdd",..    
0d70: 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20    "yy-MM-dd"..  
0d80: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
0d90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0da0: 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  // The internal 
0db0: 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66  default format f
0dc0: 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
0dd0: 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76  values when conv
0de0: 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20  erting..    /// 
0df0: 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  to a string...  
0e00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
0e20: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0e30: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
0e40: 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74  rmatUtc = _datet
0e50: 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a  imeFormats[5];..
0e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e80: 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c   internal defaul
0e90: 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  t format for loc
0ea0: 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
0eb0: 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  es when converti
0ec0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61  ng..    /// to a
0ed0: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
0ee0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0ef0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f00: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0f10: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f20: 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d  Local = _datetim
0f30: 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d  eFormats[19];...
0f40: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55  y>..    /// An U
0f60: 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e  TF-8 Encoding in
0f70: 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61  stance, so we ca
0f80: 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67  n convert string
0f90: 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54  s to and from UT
0fa0: 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  F-8..    /// </s
0fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
0fc0: 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f  vate static Enco
0fd0: 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77  ding _utf8 = new
0fe0: 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b   UTF8Encoding();
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1000: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1010: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
1020: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  e format for thi
1030: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1050: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
1060: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
1070: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b  _datetimeFormat;
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1090: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
10a0: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
10b0: 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69  eKind for this i
10c0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54    internal DateT
10f0: 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d  imeKind _datetim
1100: 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20  eKind;..    /// 
1110: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1120: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44  // The default D
1130: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1140: 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69  tring for this i
1150: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
1160: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
1180: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
1190: 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d  tString = null;.
11a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74  y>..    /// Init
11c0: 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76  ializes the conv
11d0: 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20  ersion class..  
11e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1200: 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20   name="fmt">The 
1210: 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d  default date/tim
1220: 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20  e format to use 
1230: 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
1240: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1260: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
1270: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
1280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1290: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74  <param name="fmt
12a0: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
12b0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
12c0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
12d0: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
12e0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d   SQLiteConvert(.
12f0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44  .        SQLiteD
1300: 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d  ateFormats fmt,.
1310: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
1320: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
1330: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53       string fmtS
1340: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
1350: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
1360: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d  datetimeFormat =
1370: 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61   fmt;..      _da
1380: 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e  tetimeKind = kin
1390: 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74  d;..      _datet
13a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
13b0: 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20  = fmtString;..  
13c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69    }....    #regi
13d0: 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73  on UTF-8 Convers
13e0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
13f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1400: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1410: 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61  ts a string to a
1420: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62   UTF-8 encoded b
1430: 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20  yte array sized 
1440: 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c  to include a nul
1450: 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68  l-terminating ch
1460: 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f  aracter...    //
1470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1480: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1490: 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54  e="sourceText">T
14a0: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  he string to con
14b0: 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70  vert to UTF-8</p
14c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14d0: 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61  returns>A byte a
14e0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  rray containing 
14f0: 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74  the converted st
1500: 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74  ring plus an ext
1510: 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67  ra 0 terminating
1520: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1530: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1550: 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
1560: 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67  [] ToUTF8(string
1570: 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20   sourceText)..  
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 73    {..      if (s
1590: 6f 75 72 63 65 54 65 78 74 20 3d 3d 20 6e 75 6c  ourceText == nul
15a0: 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d  l) return null;.
15b0: 0a 20 20 20 20 20 20 42 79 74 65 5b 5d 20 62 79  .      Byte[] by
15c0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 20 20  teArray;..      
15d0: 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38  int nlen = _utf8
15e0: 2e 47 65 74 42 79 74 65 43 6f 75 6e 74 28 73 6f  .GetByteCount(so
15f0: 75 72 63 65 54 65 78 74 29 20 2b 20 31 3b 0d 0a  urceText) + 1;..
1600: 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72 61  ..      byteArra
1610: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 6c 65  y = new byte[nle
1620: 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c 65 6e 20  n];..      nlen 
1630: 3d 20 5f 75 74 66 38 2e 47 65 74 42 79 74 65 73  = _utf8.GetBytes
1640: 28 73 6f 75 72 63 65 54 65 78 74 2c 20 30 2c 20  (sourceText, 0, 
1650: 73 6f 75 72 63 65 54 65 78 74 2e 4c 65 6e 67 74  sourceText.Lengt
1660: 68 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 29  h, byteArray, 0)
1670: 3b 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72  ;..      byteArr
1680: 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b 0d 0a 0d  ay[nlen] = 0;...
1690: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79  .      return by
16a0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 7d 0d  teArray;..    }.
16b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
16c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
16d0: 6e 76 65 72 74 20 61 20 44 61 74 65 54 69 6d 65  nvert a DateTime
16e0: 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f   to a UTF-8 enco
16f0: 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  ded, zero-termin
1700: 61 74 65 64 20 62 79 74 65 20 61 72 72 61 79 2e  ated byte array.
1710: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1720: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
1730: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1740: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
1750: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
1760: 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20  function, which 
1770: 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74  first calls ToSt
1780: 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 44 61  ring() on the Da
1790: 74 65 54 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e  teTime, and then
17a0: 20 63 61 6c 6c 73 20 54 6f 55 54 46 38 28 29 20   calls ToUTF8() 
17b0: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f  with the..    //
17c0: 2f 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 2e  / string result.
17d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61  ..    /// </rema
17e0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  rks>..    /// <p
17f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
1800: 69 6d 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61  imeValue">The Da
1810: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
1820: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
1830: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
1840: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73   UTF-8 encoded s
1850: 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  tring, including
1860: 20 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67   a 0 terminating
1870: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1880: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
18a0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 54 6f 55 54  blic byte[] ToUT
18b0: 46 38 28 44 61 74 65 54 69 6d 65 20 64 61 74 65  F8(DateTime date
18c0: 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  TimeValue)..    
18d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
18e0: 54 6f 55 54 46 38 28 54 6f 53 74 72 69 6e 67 28  ToUTF8(ToString(
18f0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 29 3b  dateTimeValue));
1900: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1920: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1930: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49   UTF-8 encoded I
1940: 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73 70 65  ntPtr of the spe
1950: 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e  cified length in
1960: 74 6f 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67  to a .NET string
1970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1980: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1990: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
19a0: 65 73 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69  estring">The poi
19b0: 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
19c0: 72 79 20 77 68 65 72 65 20 74 68 65 20 55 54 46  ry where the UTF
19d0: 2d 38 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63  -8 string is enc
19e0: 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  oded</param>..  
19f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a00: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  e="nativestringl
1a10: 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  en">The number o
1a20: 66 20 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64  f bytes to decod
1a30: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1a40: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74  // <returns>A st
1a50: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
1a60: 74 68 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63  the translated c
1a70: 68 61 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74  haracter(s)</ret
1a80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
1a90: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
1aa0: 20 54 6f 53 74 72 69 6e 67 28 49 6e 74 50 74 72   ToString(IntPtr
1ab0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20 69   nativestring, i
1ac0: 6e 74 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  nt nativestringl
1ad0: 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  en)..    {..    
1ae0: 20 20 72 65 74 75 72 6e 20 55 54 46 38 54 6f 53    return UTF8ToS
1af0: 74 72 69 6e 67 28 6e 61 74 69 76 65 73 74 72 69  tring(nativestri
1b00: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1b10: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  len);..    }....
1b20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
1b40: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f  rts a UTF-8 enco
1b50: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68  ded IntPtr of th
1b60: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1b70: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73  th into a .NET s
1b80: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tring..    /// <
1b90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ba0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1bb0: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68  nativestring">Th
1bc0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1bd0: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68   memory where th
1be0: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69  e UTF-8 string i
1bf0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d  s encoded</param
1c00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1c10: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74  m name="nativest
1c20: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d  ringlen">The num
1c30: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1c40: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a  decode</param>..
1c50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c60: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  >A string contai
1c70: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61  ning the transla
1c80: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29  ted character(s)
1c90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1ca0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1cb0: 72 69 6e 67 20 55 54 46 38 54 6f 53 74 72 69 6e  ring UTF8ToStrin
1cc0: 67 28 49 6e 74 50 74 72 20 6e 61 74 69 76 65 73  g(IntPtr natives
1cd0: 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76  tring, int nativ
1ce0: 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20  estringlen)..   
1cf0: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61   {..      if (na
1d00: 74 69 76 65 73 74 72 69 6e 67 20 3d 3d 20 49 6e  tivestring == In
1d10: 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20 6e 61 74  tPtr.Zero || nat
1d20: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20  ivestringlen == 
1d30: 30 29 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67  0) return String
1d40: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 69  .Empty;..      i
1d50: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  f (nativestringl
1d60: 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 7b  en < 0)..      {
1d70: 0d 0a 20 20 20 20 20 20 20 20 6e 61 74 69 76 65  ..        native
1d80: 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30 3b 0d 0a  stringlen = 0;..
1d90: 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
1da0: 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
1db0: 65 28 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20  e(nativestring, 
1dc0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29  nativestringlen)
1dd0: 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
1de0: 20 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65    nativestringle
1df0: 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n++;....        
1e00: 69 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67  if (nativestring
1e10: 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  len == 0) return
1e20: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
1e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e40: 20 62 79 74 65 5b 5d 20 62 79 74 65 41 72 72 61   byte[] byteArra
1e50: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 61 74  y = new byte[nat
1e60: 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d 3b 0d 0a  ivestringlen];..
1e70: 0d 0a 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e  ..      Marshal.
1e80: 43 6f 70 79 28 6e 61 74 69 76 65 73 74 72 69 6e  Copy(nativestrin
1e90: 67 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 2c  g, byteArray, 0,
1ea0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1eb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
1ec0: 72 6e 20 5f 75 74 66 38 2e 47 65 74 53 74 72 69  rn _utf8.GetStri
1ed0: 6e 67 28 62 79 74 65 41 72 72 61 79 2c 20 30 2c  ng(byteArray, 0,
1ee0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1ef0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
1f00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f10: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f60: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 61 74 65      #region Date
1f70: 54 69 6d 65 20 43 6f 6e 76 65 72 73 69 6f 6e 20  Time Conversion 
1f80: 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 23  Functions..    #
1f90: 72 65 67 69 6f 6e 20 4e 65 77 20 4a 75 6c 69 61  region New Julia
1fa0: 6e 20 44 61 79 20 43 6f 6e 76 65 72 73 69 6f 6e  n Day Conversion
1fb0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 2f 2f   Methods..    //
1fc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1fd0: 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20 74   /// Checks if t
1fe0: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
1ff0: 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
2000: 3e 20 69 73 20 77 69 74 68 69 6e 20 74 68 65 0d  > is within the.
2010: 0a 20 20 20 20 2f 2f 2f 20 73 75 70 70 6f 72 74  .    /// support
2020: 65 64 20 72 61 6e 67 65 20 66 6f 72 20 61 20 4a  ed range for a J
2030: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e  ulian Day value.
2040: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2050: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2060: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d  aram name="jd">.
2070: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c  .    /// The Jul
2080: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2090: 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f   check...    ///
20a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
20b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20c0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
20d0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
20e0: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
20f0: 20 69 73 20 69 6e 20 74 68 65 20 73 75 70 70 6f   is in the suppo
2100: 72 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72 61  rted..    /// ra
2110: 6e 67 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  nge; otherwise, 
2120: 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  zero...    /// <
2130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2140: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
2150: 6f 6c 20 69 73 56 61 6c 69 64 4a 64 28 0d 0a 20  ol isValidJd(.. 
2160: 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a         long jd..
2170: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
2180: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2190: 20 28 28 6a 64 20 3e 3d 20 4d 69 6e 69 6d 75 6d   ((jd >= Minimum
21a0: 4a 64 29 20 26 26 20 28 6a 64 20 3c 3d 20 4d 61  Jd) && (jd <= Ma
21b0: 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a 20 20 20 20  ximumJd));..    
21c0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
2220: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2230: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75  // Converts a Ju
2240: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66  lian Day value f
2250: 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d  rom a <see cref=
2260: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 61  "Double" /> to a
2270: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  n..    /// <see 
2280: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 2e  cref="Int64" />.
2290: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
22a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
22b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61  aram name="julia
22c0: 6e 44 61 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nDay">..    /// 
22d0: 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c  The Julian Day <
22e0: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
22f0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2300: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2310: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2320: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2330: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2340: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2350: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
2360: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
2370: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2390: 63 20 6c 6f 6e 67 20 44 6f 75 62 6c 65 54 6f 4a  c long DoubleToJ
23a0: 64 28 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62  d(..        doub
23b0: 6c 65 20 6a 75 6c 69 61 6e 44 61 79 0d 0a 20 20  le julianDay..  
23c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
23d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
23e0: 6c 6f 6e 67 29 4d 61 74 68 2e 52 6f 75 6e 64 28  long)Math.Round(
23f0: 6a 75 6c 69 61 6e 44 61 79 20 2a 20 38 36 34 30  julianDay * 8640
2400: 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20 20 7d 0d  0000.0);..    }.
2410: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2460: 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
2470: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2480: 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c 69   Converts a Juli
2490: 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66 72 6f  an Day value fro
24a0: 6d 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  m an <see cref="
24b0: 49 6e 74 36 34 22 20 2f 3e 20 74 6f 20 61 0d 0a  Int64" /> to a..
24c0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
24d0: 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 2e 0d 0a  f="Double" />...
24e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24f0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2500: 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20  am name="jd">.. 
2510: 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61     /// The Julia
2520: 6e 20 44 61 79 20 3c 73 65 65 20 63 72 65 66 3d  n Day <see cref=
2530: 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
2540: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
2550: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2560: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2570: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
2580: 65 73 75 6c 74 69 6e 67 20 4a 75 6c 69 61 6e 20  esulting Julian 
2590: 44 61 79 20 3c 73 65 65 20 63 72 65 66 3d 22 44  Day <see cref="D
25a0: 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e  ouble" /> value.
25b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
25c0: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
25d0: 65 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20  e static double 
25e0: 4a 64 54 6f 44 6f 75 62 6c 65 28 0d 0a 20 20 20  JdToDouble(..   
25f0: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a 20 20       long jd..  
2600: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
2610: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2620: 64 6f 75 62 6c 65 29 28 6a 64 20 2f 20 38 36 34  double)(jd / 864
2630: 30 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20 20 7d  00000.0);..    }
2640: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
26a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
26b0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c  / Converts a Jul
26c0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
26d0: 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
26e0: 74 65 54 69 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20  teTime" />...   
26f0: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
2700: 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20   was translated 
2710: 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74  from the "comput
2720: 65 59 4d 44 22 20 66 75 6e 63 74 69 6f 6e 20 69  eYMD" function i
2730: 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 22  n the..    /// "
2740: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
2750: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
2760: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2770: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
2780: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2790: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22  <param name="jd"
27a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a  >..    /// The J
27b0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
27c0: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
27d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27f0: 6d 65 3d 22 62 61 64 56 61 6c 75 65 22 3e 0d 0a  me="badValue">..
2800: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2810: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
2820: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 72 65 74   /> value to ret
2830: 75 72 6e 20 69 6e 20 74 68 65 20 65 76 65 6e 74  urn in the event
2840: 20 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 2f   that the..    /
2850: 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 69 73  // Julian Day is
2860: 20 6f 75 74 20 6f 66 20 74 68 65 20 73 75 70 70   out of the supp
2870: 6f 72 74 65 64 20 72 61 6e 67 65 2e 20 20 49 66  orted range.  If
2880: 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e   this value is n
2890: 75 6c 6c 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ull,..    /// an
28a0: 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20   exception will 
28b0: 62 65 20 74 68 72 6f 77 6e 20 69 6e 73 74 65 61  be thrown instea
28c0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
28d0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
28e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
28f0: 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   A <see cref="Da
2900: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
2910: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74   that contains t
2920: 68 65 20 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20  he year, month, 
2930: 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 79  and..    /// day
2940: 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72 65   values that are
2950: 20 63 6c 6f 73 65 73 74 20 74 6f 20 74 68 65 20   closest to the 
2960: 73 70 65 63 69 66 69 65 64 20 4a 75 6c 69 61 6e  specified Julian
2970: 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20   Day value...   
2980: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2990: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
29a0: 74 69 63 20 44 61 74 65 54 69 6d 65 20 63 6f 6d  tic DateTime com
29b0: 70 75 74 65 59 4d 44 28 0d 0a 20 20 20 20 20 20  puteYMD(..      
29c0: 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20    long jd,..    
29d0: 20 20 20 20 44 61 74 65 54 69 6d 65 3f 20 62 61      DateTime? ba
29e0: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  dValue..        
29f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2a00: 20 20 69 66 20 28 21 69 73 56 61 6c 69 64 4a 64    if (!isValidJd
2a10: 28 6a 64 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  (jd))..        {
2a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2a30: 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75   (badValue == nu
2a40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a60: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2a70: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
2a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a90: 20 20 20 20 20 20 22 4e 6f 74 20 61 20 73 75 70        "Not a sup
2aa0: 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e 20 44 61  ported Julian Da
2ab0: 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20  y value.");..   
2ac0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2ad0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ae0: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
2af0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
2b00: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 5a  ...        int Z
2b10: 2c 20 41 2c 20 42 2c 20 43 2c 20 44 2c 20 45 2c  , A, B, C, D, E,
2b20: 20 58 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   X1;....        
2b30: 5a 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b 20  Z = (int)((jd + 
2b40: 34 33 32 30 30 30 30 30 29 20 2f 20 38 36 34 30  43200000) / 8640
2b50: 30 30 30 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  0000);..        
2b60: 41 20 3d 20 28 69 6e 74 29 28 28 5a 20 2d 20 31  A = (int)((Z - 1
2b70: 38 36 37 32 31 36 2e 32 35 29 20 2f 20 33 36 35  867216.25) / 365
2b80: 32 34 2e 32 35 29 3b 0d 0a 20 20 20 20 20 20 20  24.25);..       
2b90: 20 41 20 3d 20 5a 20 2b 20 31 20 2b 20 41 20 2d   A = Z + 1 + A -
2ba0: 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20   (A / 4);..     
2bb0: 20 20 20 42 20 3d 20 41 20 2b 20 31 35 32 34 3b     B = A + 1524;
2bc0: 0d 0a 20 20 20 20 20 20 20 20 43 20 3d 20 28 69  ..        C = (i
2bd0: 6e 74 29 28 28 42 20 2d 20 31 32 32 2e 31 29 20  nt)((B - 122.1) 
2be0: 2f 20 33 36 35 2e 32 35 29 3b 0d 0a 20 20 20 20  / 365.25);..    
2bf0: 20 20 20 20 44 20 3d 20 28 33 36 35 32 35 20 2a      D = (36525 *
2c00: 20 43 29 20 2f 20 31 30 30 3b 0d 0a 20 20 20 20   C) / 100;..    
2c10: 20 20 20 20 45 20 3d 20 28 69 6e 74 29 28 28 42      E = (int)((B
2c20: 20 2d 20 44 29 20 2f 20 33 30 2e 36 30 30 31 29   - D) / 30.6001)
2c30: 3b 0d 0a 20 20 20 20 20 20 20 20 58 31 20 3d 20  ;..        X1 = 
2c40: 28 69 6e 74 29 28 33 30 2e 36 30 30 31 20 2a 20  (int)(30.6001 * 
2c50: 45 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  E);....        i
2c60: 6e 74 20 64 61 79 2c 20 6d 6f 6e 74 68 2c 20 79  nt day, month, y
2c70: 65 61 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ear;....        
2c80: 64 61 79 20 3d 20 42 20 2d 20 44 20 2d 20 58 31  day = B - D - X1
2c90: 3b 0d 0a 20 20 20 20 20 20 20 20 6d 6f 6e 74 68  ;..        month
2ca0: 20 3d 20 45 20 3c 20 31 34 20 3f 20 45 20 2d 20   = E < 14 ? E - 
2cb0: 31 20 3a 20 45 20 2d 20 31 33 3b 0d 0a 20 20 20  1 : E - 13;..   
2cc0: 20 20 20 20 20 79 65 61 72 20 3d 20 6d 6f 6e 74       year = mont
2cd0: 68 20 3e 20 32 20 3f 20 43 20 2d 20 34 37 31 36  h > 2 ? C - 4716
2ce0: 20 3a 20 43 20 2d 20 34 37 31 35 3b 0d 0a 0d 0a   : C - 4715;....
2cf0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2d00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d10: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44      return new D
2d20: 61 74 65 54 69 6d 65 28 79 65 61 72 2c 20 6d 6f  ateTime(year, mo
2d30: 6e 74 68 2c 20 64 61 79 29 3b 0d 0a 20 20 20 20  nth, day);..    
2d40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63      }..        c
2d50: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d  atch..        {.
2d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2d70: 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c  (badValue == nul
2d80: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2d90: 20 20 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a 20 20      throw;....  
2da0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2db0: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
2dc0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
2dd0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2e40: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
2e50: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
2e60: 6c 75 65 20 74 6f 20 61 20 3c 73 65 65 20 63 72  lue to a <see cr
2e70: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
2e80: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
2e90: 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73  method was trans
2ea0: 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22  lated from the "
2eb0: 63 6f 6d 70 75 74 65 48 4d 53 22 20 66 75 6e 63  computeHMS" func
2ec0: 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20  tion in the..   
2ed0: 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22 20 66 69   /// "date.c" fi
2ee0: 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20  le belonging to 
2ef0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2f00: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
2f10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f20: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2f30: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
2f40: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
2f50: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
2f60: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2f70: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
2f80: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c  ram name="badVal
2f90: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
2fa0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  e <see cref="Dat
2fb0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
2fc0: 74 6f 20 72 65 74 75 72 6e 20 69 6e 20 74 68 65  to return in the
2fd0: 20 65 76 65 6e 74 20 74 68 61 74 20 74 68 65 0d   event that the.
2fe0: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
2ff0: 44 61 79 20 76 61 6c 75 65 20 69 73 20 6f 75 74  Day value is out
3000: 20 6f 66 20 74 68 65 20 73 75 70 70 6f 72 74 65   of the supporte
3010: 64 20 72 61 6e 67 65 2e 20 20 49 66 20 74 68 69  d range.  If thi
3020: 73 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20 20  s value is..    
3030: 2f 2f 2f 20 6e 75 6c 6c 2c 20 61 6e 20 65 78 63  /// null, an exc
3040: 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74  eption will be t
3050: 68 72 6f 77 6e 20 69 6e 73 74 65 61 64 2e 0d 0a  hrown instead...
3060: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3070: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
3080: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 3c  ns>..    /// A <
3090: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
30a0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 68 61  me" /> value tha
30b0: 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 68  t contains the h
30c0: 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 61 6e 64  our, minute, and
30d0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 63 6f 6e 64  ..    /// second
30e0: 2c 20 61 6e 64 20 6d 69 6c 6c 69 73 65 63 6f 6e  , and millisecon
30f0: 64 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72  d values that ar
3100: 65 20 63 6c 6f 73 65 73 74 20 74 6f 20 74 68 65  e closest to the
3110: 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
3120: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  /// Julian Day v
3130: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
3140: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
3150: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 61  rivate static Da
3160: 74 65 54 69 6d 65 20 63 6f 6d 70 75 74 65 48 4d  teTime computeHM
3170: 53 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67  S(..        long
3180: 20 6a 64 2c 0d 0a 20 20 20 20 20 20 20 20 44 61   jd,..        Da
3190: 74 65 54 69 6d 65 3f 20 62 61 64 56 61 6c 75 65  teTime? badValue
31a0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
31b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
31c0: 21 69 73 56 61 6c 69 64 4a 64 28 6a 64 29 29 0d  !isValidJd(jd)).
31d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
31e0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
31f0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
3200: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
3220: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
3230: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
3240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3250: 22 4e 6f 74 20 61 20 73 75 70 70 6f 72 74 65 64  "Not a supported
3260: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
3270: 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e.");..         
3280: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3290: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
32a0: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
32b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
32c0: 20 20 20 20 20 69 6e 74 20 73 69 3b 0d 0a 0d 0a       int si;....
32d0: 20 20 20 20 20 20 20 20 73 69 20 3d 20 28 69 6e          si = (in
32e0: 74 29 28 28 6a 64 20 2b 20 34 33 32 30 30 30 30  t)((jd + 4320000
32f0: 30 29 20 25 20 38 36 34 30 30 30 30 30 29 3b 0d  0) % 86400000);.
3300: 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 63 69 6d  ...        decim
3310: 61 6c 20 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20  al sd;....      
3320: 20 20 73 64 20 3d 20 73 69 20 2f 20 31 30 30 30    sd = si / 1000
3330: 2e 30 4d 3b 0d 0a 20 20 20 20 20 20 20 20 73 69  .0M;..        si
3340: 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a 0d 0a 20   = (int)sd;.... 
3350: 20 20 20 20 20 20 20 69 6e 74 20 6d 69 6c 6c 69         int milli
3360: 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29 28 28  second = (int)((
3370: 73 64 20 2d 20 73 69 29 20 2a 20 31 30 30 30 2e  sd - si) * 1000.
3380: 30 4d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  0M);....        
3390: 73 64 20 2d 3d 20 73 69 3b 0d 0a 0d 0a 20 20 20  sd -= si;....   
33a0: 20 20 20 20 20 69 6e 74 20 68 6f 75 72 3b 0d 0a       int hour;..
33b0: 0d 0a 20 20 20 20 20 20 20 20 68 6f 75 72 20 3d  ..        hour =
33c0: 20 73 69 20 2f 20 33 36 30 30 3b 0d 0a 20 20 20   si / 3600;..   
33d0: 20 20 20 20 20 73 69 20 2d 3d 20 68 6f 75 72 20       si -= hour 
33e0: 2a 20 33 36 30 30 3b 0d 0a 0d 0a 20 20 20 20 20  * 3600;....     
33f0: 20 20 20 69 6e 74 20 6d 69 6e 75 74 65 3b 0d 0a     int minute;..
3400: 0d 0a 20 20 20 20 20 20 20 20 6d 69 6e 75 74 65  ..        minute
3410: 20 3d 20 73 69 20 2f 20 36 30 3b 0d 0a 20 20 20   = si / 60;..   
3420: 20 20 20 20 20 73 64 20 2b 3d 20 73 69 20 2d 20       sd += si - 
3430: 6d 69 6e 75 74 65 20 2a 20 36 30 3b 0d 0a 0d 0a  minute * 60;....
3440: 20 20 20 20 20 20 20 20 69 6e 74 20 73 65 63 6f          int seco
3450: 6e 64 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a 0d  nd = (int)sd;...
3460: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
3470: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3480: 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 6d 69       DateTime mi
3490: 6e 56 61 6c 75 65 20 3d 20 44 61 74 65 54 69 6d  nValue = DateTim
34a0: 65 2e 4d 69 6e 56 61 6c 75 65 3b 0d 0a 0d 0a 20  e.MinValue;.... 
34b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34c0: 6e 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 0d  n new DateTime(.
34d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34e0: 20 6d 69 6e 56 61 6c 75 65 2e 59 65 61 72 2c 20   minValue.Year, 
34f0: 6d 69 6e 56 61 6c 75 65 2e 4d 6f 6e 74 68 2c 20  minValue.Month, 
3500: 6d 69 6e 56 61 6c 75 65 2e 44 61 79 2c 0d 0a 20  minValue.Day,.. 
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
3520: 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 73 65 63  our, minute, sec
3530: 6f 6e 64 2c 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  ond, millisecond
3540: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
3550: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
3560: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3570: 20 20 20 20 20 69 66 20 28 62 61 64 56 61 6c 75       if (badValu
3580: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
3590: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
35a0: 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  w;....          
35b0: 20 20 72 65 74 75 72 6e 20 28 44 61 74 65 54 69    return (DateTi
35c0: 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20  me)badValue;..  
35d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
35e0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3630: 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  /....    /// <su
3640: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
3650: 43 6f 6e 76 65 72 74 73 20 61 20 3c 73 65 65 20  Converts a <see 
3660: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
3670: 2f 3e 20 74 6f 20 61 20 4a 75 6c 69 61 6e 20 44  /> to a Julian D
3680: 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  ay value...    /
3690: 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 77  // This method w
36a0: 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20 66 72  as translated fr
36b0: 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74 65 4a  om the "computeJ
36c0: 44 22 20 66 75 6e 63 74 69 6f 6e 20 69 6e 0d 0a  D" function in..
36d0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 22 64 61 74      /// the "dat
36e0: 65 2e 63 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67  e.c" file belong
36f0: 69 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ing to the SQLit
3700: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
3710: 0a 20 20 20 20 2f 2f 2f 20 53 69 6e 63 65 20 74  .    /// Since t
3720: 68 65 20 72 61 6e 67 65 20 6f 66 20 4a 75 6c 69  he range of Juli
3730: 61 6e 20 44 61 79 20 76 61 6c 75 65 73 20 73 75  an Day values su
3740: 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20  pported by this 
3750: 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f 2f 2f 20  method..    /// 
3760: 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20 70 6f 73  includes all pos
3770: 73 69 62 6c 65 20 28 76 61 6c 69 64 29 20 76 61  sible (valid) va
3780: 6c 75 65 73 20 6f 66 20 61 20 3c 73 65 65 20 63  lues of a <see c
3790: 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f  ref="DateTime" /
37a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65  >..    /// value
37b0: 2c 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 65  , it should be e
37c0: 78 74 72 65 6d 65 6c 79 20 64 69 66 66 69 63 75  xtremely difficu
37d0: 6c 74 20 66 6f 72 20 74 68 69 73 20 6d 65 74 68  lt for this meth
37e0: 6f 64 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 72  od to..    /// r
37f0: 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f  aise an exceptio
3800: 6e 20 6f 72 20 72 65 74 75 72 6e 20 61 6e 20 75  n or return an u
3810: 6e 64 65 66 69 6e 65 64 20 72 65 73 75 6c 74 2e  ndefined result.
3820: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
3830: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
3840: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
3850: 69 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ime">..    /// T
3860: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  he <see cref="Da
3870: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
3880: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 20 20 54 68   to convert.  Th
3890: 69 73 20 76 61 6c 75 65 0d 0a 20 20 20 20 2f 2f  is value..    //
38a0: 2f 20 77 69 6c 6c 20 62 65 20 77 69 74 68 69 6e  / will be within
38b0: 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 3c 73   the range of <s
38c0: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
38d0: 65 2e 4d 69 6e 56 61 6c 75 65 22 20 2f 3e 0d 0a  e.MinValue" />..
38e0: 20 20 20 20 2f 2f 2f 20 28 30 30 3a 30 30 3a 30      /// (00:00:0
38f0: 30 2e 30 30 30 30 30 30 30 2c 20 4a 61 6e 75 61  0.0000000, Janua
3900: 72 79 20 31 2c 20 30 30 30 31 29 20 74 6f 0d 0a  ry 1, 0001) to..
3910: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
3920: 66 3d 22 44 61 74 65 54 69 6d 65 2e 4d 61 78 56  f="DateTime.MaxV
3930: 61 6c 75 65 22 20 2f 3e 20 28 32 33 3a 35 39 3a  alue" /> (23:59:
3940: 35 39 2e 39 39 39 39 39 39 39 2c 20 44 65 63 65  59.9999999, Dece
3950: 6d 62 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 33 31  mber..    /// 31
3960: 2c 20 39 39 39 39 29 2e 0d 0a 20 20 20 20 2f 2f  , 9999)...    //
3970: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
3980: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3990: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 61 72 65     /// The neare
39a0: 73 74 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61  st Julian Day va
39b0: 6c 75 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  lue correspondin
39c0: 67 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  g to the specifi
39d0: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ed..    /// <see
39e0: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
39f0: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
3a00: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3a10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
3a20: 69 63 20 6c 6f 6e 67 20 63 6f 6d 70 75 74 65 4a  ic long computeJ
3a30: 44 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  D(..        Date
3a40: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 0d 0a 20  Time dateTime.. 
3a50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
3a60: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 59 2c 20  .        int Y, 
3a70: 4d 2c 20 44 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  M, D;....       
3a80: 20 59 20 3d 20 64 61 74 65 54 69 6d 65 2e 59 65   Y = dateTime.Ye
3a90: 61 72 3b 0d 0a 20 20 20 20 20 20 20 20 4d 20 3d  ar;..        M =
3aa0: 20 64 61 74 65 54 69 6d 65 2e 4d 6f 6e 74 68 3b   dateTime.Month;
3ab0: 0d 0a 20 20 20 20 20 20 20 20 44 20 3d 20 64 61  ..        D = da
3ac0: 74 65 54 69 6d 65 2e 44 61 79 3b 0d 0a 0d 0a 20  teTime.Day;.... 
3ad0: 20 20 20 20 20 20 20 69 66 20 28 4d 20 3c 3d 20         if (M <= 
3ae0: 32 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  2)..        {.. 
3af0: 20 20 20 20 20 20 20 20 20 20 20 59 2d 2d 3b 0d             Y--;.
3b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 20 2b  .            M +
3b10: 3d 20 31 32 3b 0d 0a 20 20 20 20 20 20 20 20 7d  = 12;..        }
3b20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
3b30: 41 2c 20 42 2c 20 58 31 2c 20 58 32 3b 0d 0a 0d  A, B, X1, X2;...
3b40: 0a 20 20 20 20 20 20 20 20 41 20 3d 20 59 20 2f  .        A = Y /
3b50: 20 31 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 42   100;..        B
3b60: 20 3d 20 32 20 2d 20 41 20 2b 20 28 41 20 2f 20   = 2 - A + (A / 
3b70: 34 29 3b 0d 0a 20 20 20 20 20 20 20 20 58 31 20  4);..        X1 
3b80: 3d 20 33 36 35 32 35 20 2a 20 28 59 20 2b 20 34  = 36525 * (Y + 4
3b90: 37 31 36 29 20 2f 20 31 30 30 3b 0d 0a 20 20 20  716) / 100;..   
3ba0: 20 20 20 20 20 58 32 20 3d 20 33 30 36 30 30 31       X2 = 306001
3bb0: 20 2a 20 28 4d 20 2b 20 31 29 20 2f 20 31 30 30   * (M + 1) / 100
3bc0: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c  00;....        l
3bd0: 6f 6e 67 20 6a 64 3b 0d 0a 0d 0a 20 20 20 20 20  ong jd;....     
3be0: 20 20 20 6a 64 20 3d 20 28 6c 6f 6e 67 29 28 28     jd = (long)((
3bf0: 58 31 20 2b 20 58 32 20 2b 20 44 20 2b 20 42 20  X1 + X2 + D + B 
3c00: 2d 20 31 35 32 34 2e 35 29 20 2a 20 38 36 34 30  - 1524.5) * 8640
3c10: 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  0000);....      
3c20: 20 20 6a 64 20 2b 3d 20 28 64 61 74 65 54 69 6d    jd += (dateTim
3c30: 65 2e 48 6f 75 72 20 2a 20 33 36 30 30 30 30 30  e.Hour * 3600000
3c40: 29 20 2b 20 28 64 61 74 65 54 69 6d 65 2e 4d 69  ) + (dateTime.Mi
3c50: 6e 75 74 65 20 2a 20 36 30 30 30 30 29 20 2b 0d  nute * 60000) +.
3c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61  .            (da
3c70: 74 65 54 69 6d 65 2e 53 65 63 6f 6e 64 20 2a 20  teTime.Second * 
3c80: 31 30 30 30 29 20 2b 20 64 61 74 65 54 69 6d 65  1000) + dateTime
3c90: 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 3b 0d 0a 0d  .Millisecond;...
3ca0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
3cb0: 6a 64 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  jd;..    }..    
3cc0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3cd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3d20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
3d30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
3d40: 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e  erts a string in
3d50: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75  to a DateTime, u
3d60: 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d  sing the DateTim
3d70: 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d  eFormat, DateTim
3d80: 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20  eKind,..    /// 
3d90: 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  and DateTimeForm
3da0: 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69  atString specifi
3db0: 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  ed for the conne
3dc0: 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61  ction when it wa
3dd0: 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f  s opened...    /
3de0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3df0: 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e     /// <remarks>
3e00: 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74  ..    /// Accept
3e10: 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74  able ISO8601 Dat
3e20: 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72  eTime formats ar
3e30: 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73  e:..    /// <lis
3e40: 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e  t type="bullet">
3e50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3e60: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
3e70: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  mmssK</descripti
3e80: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
3e90: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
3ea0: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64  iption>THHmmK</d
3eb0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
3ec0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
3ed0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
3ee0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
3ef0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
3f00: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
3f10: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
3f20: 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  n>HH:mm:ssK</des
3f30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
3f40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3f50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
3f60: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
3f70: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3f80: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3f90: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
3fa0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
3fb0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
3fc0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
3fd0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3fe0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
3ff0: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
4000: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4010: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4020: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4030: 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  -dd HH:mmK</desc
4040: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4050: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4060: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4070: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e  -MM-ddTHH:mm:ss.
4080: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
4090: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
40a0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
40b0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
40c0: 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-ddTHH:mmK</des
40d0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
40e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
40f0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4100: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4110: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4120: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4130: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4140: 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73  on>yyyyMMddHHmms
4150: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4160: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4170: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4180: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
4190: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
41a0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
41b0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
41c0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d  on>yyyyMMddTHHmm
41d0: 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  ssFFFFFFFK</desc
41e0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
41f0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4200: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
4210: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mss</description
4220: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4230: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4240: 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63  tion>THHmm</desc
4250: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4260: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4270: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
4280: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
4290: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
42a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
42b0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
42c0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
42d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
42e0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
42f0: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64  ription>HH:mm</d
4300: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4310: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4320: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4330: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
4340: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63  ss.FFFFFFF</desc
4350: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4360: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4370: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4380: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c  -MM-dd HH:mm:ss<
4390: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
43a0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
43b0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
43c0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
43d0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
43e0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
43f0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4400: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4410: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
4420: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4430: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4440: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4450: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
4460: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4470: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4480: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4490: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
44a0: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
44b0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
44c0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
44d0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
44e0: 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69  Hmmss</descripti
44f0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4500: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4510: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
4520: 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  Hmm</description
4530: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4540: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4550: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48  tion>yyyyMMddTHH
4560: 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73  mmssFFFFFFF</des
4570: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4580: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4590: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
45a0: 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70  y-MM-dd</descrip
45b0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
45c0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
45d0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
45e0: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
45f0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4600: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4610: 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73  on>yy-MM-dd</des
4620: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4630: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74  ..    /// </list
4640: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  >..    /// If th
4650: 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20  e string cannot 
4660: 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e  be matched to on
4670: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66  e of the above f
4680: 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20  ormats -OR-..   
4690: 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d   /// the DateTim
46a0: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66  eFormatString if
46b0: 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65   one was provide
46c0: 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20  d, an exception 
46d0: 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  will..    /// be
46e0: 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f   thrown...    //
46f0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
4700: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4710: 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 65  e="dateText">The
4720: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
4730: 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67  ng either a long
4740: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
4750: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
4760: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20  d units since.. 
4770: 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61     /// System.Da
4780: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
4790: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f   a Julian day do
47a0: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
47b0: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
47c0: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
47d0: 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20  x epoch, a..    
47e0: 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  /// culture-inde
47f0: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
4800: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  d date and time 
4810: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
4820: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
4830: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
4840: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f  current..    ///
4850: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
4860: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73  ISO8601-format s
4870: 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  tring.</param>..
4880: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4890: 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  >A DateTime valu
48a0: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
48b0: 20 70 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65   public DateTime
48c0: 20 54 6f 44 61 74 65 54 69 6d 65 28 73 74 72 69   ToDateTime(stri
48d0: 6e 67 20 64 61 74 65 54 65 78 74 29 0d 0a 20 20  ng dateText)..  
48e0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
48f0: 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 64 61 74  n ToDateTime(dat
4900: 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65  eText, _datetime
4910: 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d  Format, _datetim
4920: 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65  eKind, _datetime
4930: 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a  FormatString);..
4940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
4950: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4960: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73  /// Converts a s
4970: 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74  tring into a Dat
4980: 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65  eTime, using the
4990: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54   specified DateT
49a0: 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  imeFormat,..    
49b0: 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  /// DateTimeKind
49c0: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72   and DateTimeFor
49d0: 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20 20 20 20  matString...    
49e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
49f0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
4a00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70  >..    /// Accep
4a10: 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61  table ISO8601 Da
4a20: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61  teTime formats a
4a30: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
4a40: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
4a50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4a60: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4a70: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  HmmssK</descript
4a80: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4a90: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4aa0: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f  ription>THHmmK</
4ab0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4ac0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4ad0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4ae0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4af0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4b00: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4b10: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4b20: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65  on>HH:mm:ssK</de
4b30: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4b40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4b50: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
4b60: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :mmK</descriptio
4b70: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4b80: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4b90: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4ba0: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
4bb0: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FK</description>
4bc0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4bd0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4be0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
4bf0: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
4c00: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4c10: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4c20: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4c30: 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-dd HH:mmK</des
4c40: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4c50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4c60: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4c70: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4c80: 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72  .FFFFFFFK</descr
4c90: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4ca0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4cb0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
4cc0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65  MM-ddTHH:mmK</de
4cd0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4ce0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4cf0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4d00: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
4d10: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4d20: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4d30: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4d40: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
4d50: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
4d60: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4d70: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4d80: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
4d90: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
4da0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4db0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4dc0: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d  ion>yyyyMMddTHHm
4dd0: 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  mssFFFFFFFK</des
4de0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4df0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4e00: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
4e10: 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  mmss</descriptio
4e20: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4e30: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4e40: 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73  ption>THHmm</des
4e50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4e70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
4e80: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
4e90: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ea0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4eb0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4ec0: 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70  H:mm:ss</descrip
4ed0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4ee0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4ef0: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f  cription>HH:mm</
4f00: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4f10: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4f20: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4f30: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
4f40: 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73  :ss.FFFFFFF</des
4f50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4f60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4f70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4f80: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
4f90: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4fa0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4fb0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4fc0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4fd0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
4fe0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4ff0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5000: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
5010: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
5020: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
5030: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
5040: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
5050: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
5060: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
5070: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5080: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
5090: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
50a0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
50b0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
50c0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
50d0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
50e0: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74  HHmmss</descript
50f0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
5100: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
5110: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
5120: 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  HHmm</descriptio
5130: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
5140: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
5150: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48  ption>yyyyMMddTH
5160: 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65  HmmssFFFFFFF</de
5170: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5180: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5190: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
51a0: 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69  yy-MM-dd</descri
51b0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
51c0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
51d0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
51e0: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
51f0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5200: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5210: 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65  ion>yy-MM-dd</de
5220: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5230: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73  >..    /// </lis
5240: 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74  t>..    /// If t
5250: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74  he string cannot
5260: 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f   be matched to o
5270: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
5280: 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20  formats -OR-..  
5290: 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69    /// the DateTi
52a0: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69  meFormatString i
52b0: 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64  f one was provid
52c0: 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ed, an exception
52d0: 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62   will..    /// b
52e0: 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f  e thrown...    /
52f0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
5300: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5310: 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68  me="dateText">Th
5320: 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
5330: 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e  ing either a lon
5340: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
5350: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
5360: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a  nd units since..
5370: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44      /// System.D
5380: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
5390: 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  , a Julian day d
53a0: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
53b0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
53c0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
53d0: 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20  ix epoch, a..   
53e0: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64   /// culture-ind
53f0: 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74  ependent formatt
5400: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ed date and time
5410: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
5420: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
5430: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
5440: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f   current..    //
5450: 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e  / culture, or an
5460: 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20   ISO8601-format 
5470: 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d  string.</param>.
5480: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5490: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68  name="format">Th
54a0: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
54b0: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ats to use.</par
54c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
54d0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
54e0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
54f0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
5500: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5510: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72   name="formatStr
5520: 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d  ing">The DateTim
5530: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
5540: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
5550: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
5560: 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c  s>A DateTime val
5570: 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  ue</returns>..  
5580: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
5590: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
55a0: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ime(..        st
55b0: 72 69 6e 67 20 64 61 74 65 54 65 78 74 2c 0d 0a  ring dateText,..
55c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
55d0: 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74  teFormats format
55e0: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  ,..        DateT
55f0: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20  imeKind kind,.. 
5600: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f         string fo
5610: 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20  rmatString..    
5620: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
5630: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 66 6f        switch (fo
5640: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  rmat)..        {
5650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
5660: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
5670: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20  mats.Ticks:..   
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56a0: 20 20 20 20 72 65 74 75 72 6e 20 54 69 63 6b 73      return Ticks
56b0: 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65  ToDateTime(Conve
56c0: 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20 20  rt.ToInt64(..   
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56e0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 43       dateText, C
56f0: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
5700: 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69  iantCulture), ki
5710: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
5720: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5730: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
5740: 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69  DateFormats.Juli
5750: 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20 20  anDay:..        
5760: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5780: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65  eturn ToDateTime
5790: 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62 6c  (Convert.ToDoubl
57a0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
57c0: 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66  Text, CultureInf
57d0: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
57e0: 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  re), kind);..   
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5800: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5810: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
5820: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5850: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 69        return Uni
5860: 78 45 70 6f 63 68 54 6f 44 61 74 65 54 69 6d 65  xEpochToDateTime
5870: 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 36 34  (Convert.ToInt64
5880: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5890: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
58a0: 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
58b0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
58c0: 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20  e), kind);..    
58d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
58e0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
58f0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
5900: 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  s.InvariantCultu
5910: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re:..           
5920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5930: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5940: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20  formatString != 
5950: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5970: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
5980: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
5990: 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d  ime.ParseExact(.
59a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
59b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
59c0: 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72  eText, formatStr
59d0: 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59f0: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
5a00: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e  Info.InvariantIn
5a10: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a30: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
5a40: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5a70: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
5a80: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
5a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ab0: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5ac0: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ae0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5b20: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
5b30: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
5b40: 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20  me.Parse(..     
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
5b70: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
5b80: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
5b90: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
5ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bb0: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
5bc0: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5bf0: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
5c00: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c30: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
5c40: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c60: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
5c70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5c80: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
5c90: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
5ca0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3a  .CurrentCulture:
5cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5cc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5cd0: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72           if (for
5ce0: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
5cf0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5d10: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
5d20: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
5d30: 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20  .ParseExact(..  
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d50: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
5d60: 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  xt, formatString
5d70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
5d90: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
5da0: 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a  o.CurrentInfo,..
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
5dd0: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
5de0: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e00: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5e10: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
5e20: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5e50: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
5e60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
5e80: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5e90: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
5ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5eb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5ec0: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
5ed0: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
5ee0: 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rse(..          
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f00: 20 20 64 61 74 65 54 65 78 74 2c 20 44 61 74 65    dateText, Date
5f10: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 43  TimeFormatInfo.C
5f20: 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  urrentInfo,..   
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f40: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
5f50: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
5f60: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f80: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5f90: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
5fa0: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
5fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fc0: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5fd0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
6000: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
6010: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
6020: 20 20 20 64 65 66 61 75 6c 74 3a 20 2f 2a 20 49     default: /* I
6030: 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a 20 20 20 20  SO-8601 */..    
6040: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6060: 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72     if (formatStr
6070: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing != null)..  
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6090: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
60a0: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
60b0: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
60c0: 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20  Exact(..        
60d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60e0: 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f      dateText, fo
60f0: 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20  rmatString,..   
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6110: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
6120: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
6130: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6150: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
6160: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
6170: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
61a0: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
61b0: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
61e0: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
6210: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6220: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
6230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6240: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
6250: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
6260: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
6270: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6290: 20 20 20 64 61 74 65 54 65 78 74 2c 20 5f 64 61     dateText, _da
62a0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 2c 0d 0a  tetimeFormats,..
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
62d0: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49  TimeFormatInfo.I
62e0: 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20  nvariantInfo,.. 
62f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6300: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
6310: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
6320: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6340: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
6350: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
6360: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
6390: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
63a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
63c0: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
63d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
63e0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
63f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6400: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
6410: 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c   a julianday val
6420: 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69  ue into a DateTi
6430: 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  me..    /// </su
6440: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6450: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c  <param name="jul
6460: 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75  ianDay">The valu
6470: 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61  e to convert</pa
6480: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
6490: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
64a0: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
64b0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61 74  ..    public Dat
64c0: 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65  eTime ToDateTime
64d0: 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61  (double julianDa
64e0: 79 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  y)..    {..     
64f0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
6500: 6d 65 28 6a 75 6c 69 61 6e 44 61 79 2c 20 5f 64  me(julianDay, _d
6510: 61 74 65 74 69 6d 65 4b 69 6e 64 29 3b 0d 0a 20  atetimeKind);.. 
6520: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
6530: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6540: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6a 75  // Converts a ju
6550: 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 20 69 6e  lianday value in
6560: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 0d 0a 20  to a DateTime.. 
6570: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6580: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6590: 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61  m name="julianDa
65a0: 79 22 3e 54 68 65 20 76 61 6c 75 65 20 74 6f 20  y">The value to 
65b0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
65c0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
65d0: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20  name="kind">The 
65e0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20  DateTimeKind to 
65f0: 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  use.</param>..  
6600: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
6610: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
6620: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
6630: 62 6c 69 63 20 73 74 61 74 69 63 20 44 61 74 65  blic static Date
6640: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
6650: 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65  ..        double
6660: 20 6a 75 6c 69 61 6e 44 61 79 2c 0d 0a 20 20 20   julianDay,..   
6670: 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e       DateTimeKin
6680: 64 20 6b 69 6e 64 0d 0a 20 20 20 20 20 20 20 20  d kind..        
6690: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
66a0: 20 20 6c 6f 6e 67 20 6a 64 20 3d 20 44 6f 75 62    long jd = Doub
66b0: 6c 65 54 6f 4a 64 28 6a 75 6c 69 61 6e 44 61 79  leToJd(julianDay
66c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  );..        Date
66d0: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 59 4d 44  Time dateTimeYMD
66e0: 20 3d 20 63 6f 6d 70 75 74 65 59 4d 44 28 6a 64   = computeYMD(jd
66f0: 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
6700: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
6710: 69 6d 65 48 4d 53 20 3d 20 63 6f 6d 70 75 74 65  imeHMS = compute
6720: 48 4d 53 28 6a 64 2c 20 6e 75 6c 6c 29 3b 0d 0a  HMS(jd, null);..
6730: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
6740: 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 0d 0a   new DateTime(..
6750: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
6760: 54 69 6d 65 59 4d 44 2e 59 65 61 72 2c 20 64 61  TimeYMD.Year, da
6770: 74 65 54 69 6d 65 59 4d 44 2e 4d 6f 6e 74 68 2c  teTimeYMD.Month,
6780: 20 64 61 74 65 54 69 6d 65 59 4d 44 2e 44 61 79   dateTimeYMD.Day
6790: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  ,..            d
67a0: 61 74 65 54 69 6d 65 48 4d 53 2e 48 6f 75 72 2c  ateTimeHMS.Hour,
67b0: 20 64 61 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6e   dateTimeHMS.Min
67c0: 75 74 65 2c 20 64 61 74 65 54 69 6d 65 48 4d 53  ute, dateTimeHMS
67d0: 2e 53 65 63 6f 6e 64 2c 0d 0a 20 20 20 20 20 20  .Second,..      
67e0: 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 48 4d        dateTimeHM
67f0: 53 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 2c 20 6b  S.Millisecond, k
6800: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6810: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6820: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6830: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
6840: 64 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  d number of seco
6850: 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 55 6e 69  nds from the Uni
6860: 78 20 65 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a  x epoch into a..
6870: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
6880: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
6890: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
68a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
68b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
68c0: 22 73 65 63 6f 6e 64 73 22 3e 0d 0a 20 20 20 20  "seconds">..    
68d0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
68e0: 66 20 77 68 6f 6c 65 20 73 65 63 6f 6e 64 73 20  f whole seconds 
68f0: 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
6900: 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  poch...    /// <
6910: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6920: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
6930: 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69  nd">..    /// Ei
6940: 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61  ther Utc or Loca
6950: 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  l time...    ///
6960: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
6970: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
6980: 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
6990: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
69a0: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
69b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
69c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
69d0: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 55  tatic DateTime U
69e0: 6e 69 78 45 70 6f 63 68 54 6f 44 61 74 65 54 69  nixEpochToDateTi
69f0: 6d 65 28 6c 6f 6e 67 20 73 65 63 6f 6e 64 73 2c  me(long seconds,
6a00: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
6a10: 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nd)..    {..    
6a20: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
6a30: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
6a40: 55 6e 69 78 45 70 6f 63 68 2e 41 64 64 53 65 63  UnixEpoch.AddSec
6a50: 6f 6e 64 73 28 73 65 63 6f 6e 64 73 29 2c 20 6b  onds(seconds), k
6a60: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6a70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6a90: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
6aa0: 64 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b  d number of tick
6ab0: 73 20 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63  s since the epoc
6ac0: 68 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f  h into a..    //
6ad0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
6ae0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
6af0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6b00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
6b10: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b 73  aram name="ticks
6b20: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
6b30: 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20  number of whole 
6b40: 74 69 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20  ticks since the 
6b50: 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20  epoch...    /// 
6b60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6b70: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b  / <param name="k
6b80: 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45  ind">..    /// E
6b90: 69 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63  ither Utc or Loc
6ba0: 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f  al time...    //
6bb0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6bc0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6bd0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
6be0: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
6bf0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
6c00: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
6c10: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6c20: 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20  static DateTime 
6c30: 54 69 63 6b 73 54 6f 44 61 74 65 54 69 6d 65 28  TicksToDateTime(
6c40: 6c 6f 6e 67 20 74 69 63 6b 73 2c 20 44 61 74 65  long ticks, Date
6c50: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a  TimeKind kind)..
6c60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
6c70: 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69  eturn new DateTi
6c80: 6d 65 28 74 69 63 6b 73 2c 20 6b 69 6e 64 29 3b  me(ticks, kind);
6c90: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
6ca0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6cb0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
6cc0: 20 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74   DateTime struct
6cd0: 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44 61 79 20   to a JulianDay 
6ce0: 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20  double..    /// 
6cf0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6d00: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6d10: 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65  "value">The Date
6d20: 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  Time to convert<
6d30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6d40: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 4a 75   <returns>The Ju
6d50: 6c 69 61 6e 44 61 79 20 76 61 6c 75 65 20 74 68  lianDay value th
6d60: 65 20 44 61 74 65 74 69 6d 65 20 72 65 70 72 65  e Datetime repre
6d70: 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73 3e 0d  sents</returns>.
6d80: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
6d90: 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a 75 6c 69  ic double ToJuli
6da0: 61 6e 44 61 79 28 44 61 74 65 54 69 6d 65 20 76  anDay(DateTime v
6db0: 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
6dc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 4a 64 54        return JdT
6dd0: 6f 44 6f 75 62 6c 65 28 63 6f 6d 70 75 74 65 4a  oDouble(computeJ
6de0: 44 28 76 61 6c 75 65 29 29 3b 0d 0a 20 20 20 20  D(value));..    
6df0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
6e00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6e10: 43 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54  Converts a DateT
6e20: 69 6d 65 20 73 74 72 75 63 74 20 74 6f 20 74 68  ime struct to th
6e30: 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f  e whole number o
6e40: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
6e50: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 6e 69  the..    /// Uni
6e60: 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f  x epoch...    //
6e70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6e80: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6e90: 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61  e="value">The Da
6ea0: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
6eb0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
6ec0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
6ed0: 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20  whole number of 
6ee0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
6ef0: 65 20 55 6e 69 78 20 65 70 6f 63 68 3c 2f 72 65  e Unix epoch</re
6f00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
6f10: 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 54  ic static long T
6f20: 6f 55 6e 69 78 45 70 6f 63 68 28 44 61 74 65 54  oUnixEpoch(DateT
6f30: 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  ime value)..    
6f40: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
6f50: 6e 20 28 76 61 6c 75 65 2e 53 75 62 74 72 61 63  n (value.Subtrac
6f60: 74 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63  t(UnixEpoch).Tic
6f70: 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69  ks / TimeSpan.Ti
6f80: 63 6b 73 50 65 72 53 65 63 6f 6e 64 29 3b 0d 0a  cksPerSecond);..
6f90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
6fa0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6fb0: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
6fc0: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20  DateTime format 
6fd0: 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f  string to use fo
6fe0: 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
6ff0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20  DateTimeKind... 
7000: 20 20 20 2f 2f 2f 20 49 66 20 3c 70 61 72 61 6d     /// If <param
7010: 72 65 66 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ref name="format
7020: 53 74 72 69 6e 67 22 20 2f 3e 20 69 73 20 6e 6f  String" /> is no
7030: 74 20 6e 75 6c 6c 2c 20 69 74 20 77 69 6c 6c 20  t null, it will 
7040: 62 65 20 72 65 74 75 72 6e 65 64 20 76 65 72 62  be returned verb
7050: 61 74 69 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  atim...    /// <
7060: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
7070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7080: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
7090: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
70a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
70b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
70c0: 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  matString">The D
70d0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
70e0: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
70f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
7100: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
7110: 2f 20 54 68 65 20 44 61 74 65 54 69 6d 65 20 66  / The DateTime f
7120: 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20  ormat string to 
7130: 75 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  use for the spec
7140: 69 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69  ified DateTimeKi
7150: 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  nd...    /// </r
7160: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
7170: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
7180: 6e 67 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69  ng GetDateTimeKi
7190: 6e 64 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ndFormat(..     
71a0: 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20     DateTimeKind 
71b0: 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73  kind,..        s
71c0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69  tring formatStri
71d0: 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  ng..        ).. 
71e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
71f0: 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21   (formatString !
7200: 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 66  = null) return f
7210: 6f 72 6d 61 74 53 74 72 69 6e 67 3b 0d 0a 20 20  ormatString;..  
7220: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6b 69        return (ki
7230: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
7240: 6e 64 2e 55 74 63 29 20 3f 20 5f 64 61 74 65 74  nd.Utc) ? _datet
7250: 69 6d 65 46 6f 72 6d 61 74 55 74 63 20 3a 20 5f  imeFormatUtc : _
7260: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 4c 6f  datetimeFormatLo
7270: 63 61 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  cal;..    }.... 
7280: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7290: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
72a0: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
72b0: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
72c0: 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65 46  ng the DateTimeF
72d0: 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65 4b  ormat, DateTimeK
72e0: 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ind,..    /// an
72f0: 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  d DateTimeFormat
7300: 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65 64  String specified
7310: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
7320: 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20  ion when it was 
7330: 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  opened...    ///
7340: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7350: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7360: 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68 65  ="dateValue">The
7370: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 20   DateTime value 
7380: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
7390: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
73a0: 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73 74  urns>Either a st
73b0: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
73c0: 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72  the long integer
73d0: 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e   number of 100-n
73e0: 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20  anosecond units 
73f0: 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61 74  since System.Dat
7400: 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20  eTime.MinValue, 
7410: 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61  a..    /// Julia
7420: 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e  n day double, an
7430: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
7440: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
7450: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c   the Unix epoch,
7460: 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70   a culture-indep
7470: 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64  endent formatted
7480: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d 0a   date and time..
7490: 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20      /// string, 
74a0: 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  a formatted date
74b0: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
74c0: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
74d0: 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49  culture, or an I
74e0: 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64 61  SO8601-format da
74f0: 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e 3c  te/time string.<
7500: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
7510: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 54 6f 53  ublic string ToS
7520: 74 72 69 6e 67 28 44 61 74 65 54 69 6d 65 20 64  tring(DateTime d
7530: 61 74 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  ateValue)..    {
7540: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
7550: 20 54 6f 53 74 72 69 6e 67 28 64 61 74 65 56 61   ToString(dateVa
7560: 6c 75 65 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  lue, _datetimeFo
7570: 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d 65 4b  rmat, _datetimeK
7580: 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ind, _datetimeFo
7590: 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a 20 20  rmatString);..  
75a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
75b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
75c0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
75d0: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
75e0: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44  ime, using the D
75f0: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44  ateTimeFormat, D
7600: 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20  ateTimeKind,..  
7610: 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69    /// and DateTi
7620: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73  meFormatString s
7630: 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65  pecified for the
7640: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e   connection when
7650: 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d   it was opened..
7660: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
7670: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
7680: 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56 61  ram name="dateVa
7690: 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d  lue">The DateTim
76a0: 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65  e value to conve
76b0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
76c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
76d0: 22 66 6f 72 6d 61 74 22 3e 54 68 65 20 53 51 4c  "format">The SQL
76e0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 74  iteDateFormats t
76f0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
7700: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7710: 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44  ame="kind">The D
7720: 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75  ateTimeKind to u
7730: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
7740: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7750: 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e  ="formatString">
7760: 54 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72  The DateTime for
7770: 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73  mat string to us
7780: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
7790: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69 74  /// <returns>Eit
77a0: 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  her a string con
77b0: 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e 67  taining the long
77c0: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
77d0: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
77e0: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53 79  d units since Sy
77f0: 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69  stem.DateTime.Mi
7800: 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20 2f  nValue, a..    /
7810: 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f  // Julian day do
7820: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
7830: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
7840: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
7850: 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74 75  x epoch, a cultu
7860: 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66  re-independent f
7870: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
7880: 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20  d time..    /// 
7890: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
78a0: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
78b0: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
78c0: 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2c  current culture,
78d0: 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66   or an ISO8601-f
78e0: 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65 20  ormat date/time 
78f0: 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e 73  string.</returns
7900: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
7910: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 53 74  atic string ToSt
7920: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 44  ring(..        D
7930: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
7940: 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  e,..        SQLi
7950: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6f  teDateFormats fo
7960: 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 44  rmat,..        D
7970: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
7980: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
7990: 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a  g formatString..
79a0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
79b0: 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  ..        switch
79c0: 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20   (format)..     
79d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
79e0: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
79f0: 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d  eFormats.Ticks:.
7a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7a10: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
7a20: 65 2e 54 69 63 6b 73 2e 54 6f 53 74 72 69 6e 67  e.Ticks.ToString
7a30: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
7a40: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7a60: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
7a70: 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a  ats.JulianDay:..
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a90: 72 65 74 75 72 6e 20 54 6f 4a 75 6c 69 61 6e 44  return ToJulianD
7aa0: 61 79 28 64 61 74 65 56 61 6c 75 65 29 2e 54 6f  ay(dateValue).To
7ab0: 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e  String(CultureIn
7ac0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7ad0: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ure);..         
7ae0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
7af0: 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70  teFormats.UnixEp
7b00: 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  och:..          
7b10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c        return ((l
7b20: 6f 6e 67 29 28 64 61 74 65 56 61 6c 75 65 2e 53  ong)(dateValue.S
7b30: 75 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63  ubtract(UnixEpoc
7b40: 68 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53  h).Ticks / TimeS
7b50: 70 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f  pan.TicksPerSeco
7b60: 6e 64 29 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b  nd)).ToString();
7b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
7b80: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
7b90: 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e 74 43 75  mats.InvariantCu
7ba0: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
7bb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
7bc0: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
7bd0: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
7be0: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
7bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c00: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
7c10: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
7c20: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
7c30: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
7c40: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
7c50: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75  teDateFormats.Cu
7c60: 72 72 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20  rrentCulture:.. 
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7c80: 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e  eturn dateValue.
7c90: 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d 61 74  ToString((format
7ca0: 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20  String != null) 
7cb0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
7cc0: 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53 74 72         formatStr
7cd0: 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74  ing : FullFormat
7ce0: 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75  , CultureInfo.Cu
7cf0: 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  rrentCulture);..
7d00: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
7d10: 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
7d20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 61        return (da
7d30: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d 3d 20  teValue.Kind == 
7d40: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e 73  DateTimeKind.Uns
7d50: 70 65 63 69 66 69 65 64 29 20 3f 0d 0a 20 20 20  pecified) ?..   
7d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d70: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
7d80: 79 4b 69 6e 64 28 64 61 74 65 56 61 6c 75 65 2c  yKind(dateValue,
7d90: 20 6b 69 6e 64 29 2e 54 6f 53 74 72 69 6e 67 28   kind).ToString(
7da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7db0: 20 20 20 20 20 20 20 20 20 20 47 65 74 44 61 74            GetDat
7dc0: 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28  eTimeKindFormat(
7dd0: 6b 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74 72 69  kind, formatStri
7de0: 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ng),..          
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e00: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
7e10: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 20  variantCulture) 
7e20: 3a 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74  : dateValue.ToSt
7e30: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
7e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
7e50: 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f  etDateTimeKindFo
7e60: 72 6d 61 74 28 64 61 74 65 56 61 6c 75 65 2e 4b  rmat(dateValue.K
7e70: 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e  ind, formatStrin
7e80: 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g),..           
7e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ea0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
7eb0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7ec0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7ed0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
7ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7ef0: 49 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f  Internal functio
7f00: 6e 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 55  n to convert a U
7f10: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49 6e 74  TF-8 encoded Int
7f20: 50 74 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  Ptr of the speci
7f30: 66 69 65 64 20 6c 65 6e 67 74 68 20 74 6f 20 61  fied length to a
7f40: 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20   DateTime...    
7f50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7f60: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
7f70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
7f80: 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65  is a convenience
7f90: 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68   function, which
7fa0: 20 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53   first calls ToS
7fb0: 74 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 49  tring() on the I
7fc0: 6e 74 50 74 72 20 74 6f 20 63 6f 6e 76 65 72 74  ntPtr to convert
7fd0: 20 69 74 20 74 6f 20 61 20 73 74 72 69 6e 67 2c   it to a string,
7fe0: 20 74 68 65 6e 20 63 61 6c 6c 73 0d 0a 20 20 20   then calls..   
7ff0: 20 2f 2f 2f 20 54 6f 44 61 74 65 54 69 6d 65 28   /// ToDateTime(
8000: 29 20 6f 6e 20 74 68 65 20 73 74 72 69 6e 67 20  ) on the string 
8010: 74 6f 20 72 65 74 75 72 6e 20 61 20 44 61 74 65  to return a Date
8020: 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Time...    /// <
8030: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  /remarks>..    /
8040: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8050: 70 74 72 22 3e 41 20 70 6f 69 6e 74 65 72 20 74  ptr">A pointer t
8060: 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  o the UTF-8 enco
8070: 64 65 64 20 73 74 72 69 6e 67 3c 2f 70 61 72 61  ded string</para
8080: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
8090: 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 22 3e 54 68  am name="len">Th
80a0: 65 20 6c 65 6e 67 74 68 20 69 6e 20 62 79 74 65  e length in byte
80b0: 73 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 3c  s of the string<
80c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
80d0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 70 61   <returns>The pa
80e0: 72 73 65 64 20 44 61 74 65 54 69 6d 65 20 76 61  rsed DateTime va
80f0: 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  lue</returns>.. 
8100: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65     internal Date
8110: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
8120: 49 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20  IntPtr ptr, int 
8130: 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  len)..    {..   
8140: 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65     return ToDate
8150: 54 69 6d 65 28 54 6f 53 74 72 69 6e 67 28 70 74  Time(ToString(pt
8160: 72 2c 20 6c 65 6e 29 29 3b 0d 0a 20 20 20 20 7d  r, len));..    }
8170: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8180: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
8190: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  mary>..    /// S
81a0: 6d 61 72 74 20 6d 65 74 68 6f 64 20 6f 66 20 73  mart method of s
81b0: 70 6c 69 74 74 69 6e 67 20 61 20 73 74 72 69 6e  plitting a strin
81c0: 67 2e 20 20 53 6b 69 70 73 20 71 75 6f 74 65 64  g.  Skips quoted
81d0: 20 65 6c 65 6d 65 6e 74 73 2c 20 72 65 6d 6f 76   elements, remov
81e0: 65 73 20 74 68 65 20 71 75 6f 74 65 73 2e 0d 0a  es the quotes...
81f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8200: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
8210: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
8220: 68 69 73 20 73 70 6c 69 74 20 66 75 6e 63 74 69  his split functi
8230: 6f 6e 20 77 6f 72 6b 73 20 73 6f 6d 65 77 68 61  on works somewha
8240: 74 20 6c 69 6b 65 20 74 68 65 20 53 74 72 69 6e  t like the Strin
8250: 67 2e 53 70 6c 69 74 28 29 20 66 75 6e 63 74 69  g.Split() functi
8260: 6f 6e 20 69 6e 20 74 68 61 74 20 69 74 20 62 72  on in that it br
8270: 65 61 6b 73 20 61 70 61 72 74 20 61 20 73 74 72  eaks apart a str
8280: 69 6e 67 20 69 6e 74 6f 0d 0a 20 20 20 20 2f 2f  ing into..    //
8290: 2f 20 70 69 65 63 65 73 20 61 6e 64 20 72 65 74  / pieces and ret
82a0: 75 72 6e 73 20 74 68 65 20 70 69 65 63 65 73 20  urns the pieces 
82b0: 61 73 20 61 6e 20 61 72 72 61 79 2e 20 20 54 68  as an array.  Th
82c0: 65 20 70 72 69 6d 61 72 79 20 64 69 66 66 65 72  e primary differ
82d0: 65 6e 63 65 73 20 61 72 65 3a 0d 0a 20 20 20 20  ences are:..    
82e0: 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22  /// <list type="
82f0: 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f  bullet">..    //
8300: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
8310: 74 69 6f 6e 3e 4f 6e 6c 79 20 6f 6e 65 20 63 68  tion>Only one ch
8320: 61 72 61 63 74 65 72 20 63 61 6e 20 62 65 20 70  aracter can be p
8330: 72 6f 76 69 64 65 64 20 61 73 20 61 20 73 65 70  rovided as a sep
8340: 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72  arator character
8350: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
8360: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
8370: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
8380: 6e 3e 51 75 6f 74 65 64 20 74 65 78 74 20 69 6e  n>Quoted text in
8390: 73 69 64 65 20 74 68 65 20 73 74 72 69 6e 67 20  side the string 
83a0: 69 73 20 73 6b 69 70 70 65 64 20 6f 76 65 72 20  is skipped over 
83b0: 77 68 65 6e 20 73 65 61 72 63 68 69 6e 67 20 66  when searching f
83c0: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
83d0: 2c 20 61 6e 64 20 74 68 65 20 71 75 6f 74 65 73  , and the quotes
83e0: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 64   are removed.</d
83f0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
8400: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69  m>..    /// </li
8410: 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 75  st>..    /// Thu
8420: 73 2c 20 69 66 20 73 70 6c 69 74 74 69 6e 67 20  s, if splitting 
8430: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74  the following st
8440: 72 69 6e 67 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72  ring looking for
8450: 20 61 20 63 6f 6d 6d 61 3a 3c 62 72 2f 3e 0d 0a   a comma:<br/>..
8460: 20 20 20 20 2f 2f 2f 20 4f 6e 65 2c 54 77 6f 2c      /// One,Two,
8470: 20 22 54 68 72 65 65 2c 20 46 6f 75 72 22 2c 20   "Three, Four", 
8480: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
8490: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
84a0: 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / The resulting 
84b0: 61 72 72 61 79 20 77 6f 75 6c 64 20 63 6f 6e 74  array would cont
84c0: 61 69 6e 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  ain<br/>..    //
84d0: 2f 20 5b 30 5d 20 4f 6e 65 3c 62 72 2f 3e 0d 0a  / [0] One<br/>..
84e0: 20 20 20 20 2f 2f 2f 20 5b 31 5d 20 54 77 6f 3c      /// [1] Two<
84f0: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 32  br/>..    /// [2
8500: 5d 20 54 68 72 65 65 2c 20 46 6f 75 72 3c 62 72  ] Three, Four<br
8510: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 33 5d 20  />..    /// [3] 
8520: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
8530: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
8540: 2f 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  / Note that the 
8550: 6c 65 61 64 69 6e 67 20 61 6e 64 20 74 72 61 69  leading and trai
8560: 6c 69 6e 67 20 73 70 61 63 65 73 20 77 65 72 65  ling spaces were
8570: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 65 61   removed from ea
8580: 63 68 20 69 74 65 6d 20 64 75 72 69 6e 67 20 74  ch item during t
8590: 68 65 20 73 70 6c 69 74 2e 0d 0a 20 20 20 20 2f  he split...    /
85a0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
85b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
85c0: 6d 65 3d 22 73 6f 75 72 63 65 22 3e 53 6f 75 72  me="source">Sour
85d0: 63 65 20 73 74 72 69 6e 67 20 74 6f 20 73 70 6c  ce string to spl
85e0: 69 74 20 61 70 61 72 74 3c 2f 70 61 72 61 6d 3e  it apart</param>
85f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8600: 20 6e 61 6d 65 3d 22 73 65 70 61 72 61 74 6f 72   name="separator
8610: 22 3e 53 65 70 61 72 61 74 6f 72 20 63 68 61 72  ">Separator char
8620: 61 63 74 65 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20  acter</param>.. 
8630: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8640: 41 20 73 74 72 69 6e 67 20 61 72 72 61 79 20 6f  A string array o
8650: 66 20 74 68 65 20 73 70 6c 69 74 20 75 70 20 65  f the split up e
8660: 6c 65 6d 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73  lements</returns
8670: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
8680: 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53 70  atic string[] Sp
8690: 6c 69 74 28 73 74 72 69 6e 67 20 73 6f 75 72 63  lit(string sourc
86a0: 65 2c 20 63 68 61 72 20 73 65 70 61 72 61 74 6f  e, char separato
86b0: 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  r)..    {..     
86c0: 20 63 68 61 72 5b 5d 20 74 6f 6b 73 20 3d 20 6e   char[] toks = n
86d0: 65 77 20 63 68 61 72 5b 32 5d 20 7b 20 27 5c 22  ew char[2] { '\"
86e0: 27 2c 20 73 65 70 61 72 61 74 6f 72 20 7d 3b 0d  ', separator };.
86f0: 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 71 75  .      char[] qu
8700: 6f 74 20 3d 20 6e 65 77 20 63 68 61 72 5b 31 5d  ot = new char[1]
8710: 20 7b 20 27 5c 22 27 20 7d 3b 0d 0a 20 20 20 20   { '\"' };..    
8720: 20 20 69 6e 74 20 6e 20 3d 20 30 3b 0d 0a 20 20    int n = 0;..  
8730: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
8740: 20 6c 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73   ls = new List<s
8750: 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20  tring>();..     
8760: 20 73 74 72 69 6e 67 20 73 3b 0d 0a 0d 0a 20 20   string s;....  
8770: 20 20 20 20 77 68 69 6c 65 20 28 73 6f 75 72 63      while (sourc
8780: 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  e.Length > 0).. 
8790: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
87a0: 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65 78  n = source.Index
87b0: 4f 66 41 6e 79 28 74 6f 6b 73 2c 20 6e 29 3b 0d  OfAny(toks, n);.
87c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d  .        if (n =
87d0: 3d 20 2d 31 29 20 62 72 65 61 6b 3b 0d 0a 20 20  = -1) break;..  
87e0: 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65        if (source
87f0: 5b 6e 5d 20 3d 3d 20 74 6f 6b 73 5b 30 5d 29 0d  [n] == toks[0]).
8800: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8810: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
8820: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
8830: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
8840: 20 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65   n = source.Inde
8850: 78 4f 66 41 6e 79 28 71 75 6f 74 2c 20 6e 20 2b  xOfAny(quot, n +
8860: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   1);..          
8870: 69 66 20 28 6e 20 3d 3d 20 2d 31 29 0d 0a 20 20  if (n == -1)..  
8880: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8890: 20 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20         //source 
88a0: 3d 20 22 5c 22 22 20 2b 20 73 6f 75 72 63 65 3b  = "\"" + source;
88b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ..            br
88c0: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
88d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 2b 2b  }..          n++
88e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73  ;..          //s
88f0: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52  ource = source.R
8900: 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20  emove(n, 1);..  
8910: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8920: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
8930: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20  ..          s = 
8940: 73 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67  source.Substring
8950: 28 30 2c 20 6e 29 2e 54 72 69 6d 28 29 3b 0d 0a  (0, n).Trim();..
8960: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
8970: 4c 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b  Length > 1 && s[
8980: 30 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26  0] == quot[0] &&
8990: 20 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d   s[s.Length - 1]
89a0: 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20   == s[0])..     
89b0: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 53 75 62         s = s.Sub
89c0: 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67  string(1, s.Leng
89d0: 74 68 20 2d 20 32 29 3b 0d 0a 0d 0a 20 20 20 20  th - 2);....    
89e0: 20 20 20 20 20 20 73 6f 75 72 63 65 20 3d 20 73        source = s
89f0: 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67 28  ource.Substring(
8a00: 6e 20 2b 20 31 29 2e 54 72 69 6d 28 29 3b 0d 0a  n + 1).Trim();..
8a10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
8a20: 4c 65 6e 67 74 68 20 3e 20 30 29 20 6c 73 2e 41  Length > 0) ls.A
8a30: 64 64 28 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  dd(s);..        
8a40: 20 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20    n = 0;..      
8a50: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
8a60: 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 2e 4c      if (source.L
8a70: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
8a80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 20 3d    {..        s =
8a90: 20 73 6f 75 72 63 65 2e 54 72 69 6d 28 29 3b 0d   source.Trim();.
8aa0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 2e 4c  .        if (s.L
8ab0: 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b 30  ength > 1 && s[0
8ac0: 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20  ] == quot[0] && 
8ad0: 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20  s[s.Length - 1] 
8ae0: 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  == s[0])..      
8af0: 20 20 20 20 73 20 3d 20 73 2e 53 75 62 73 74 72      s = s.Substr
8b00: 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20  ing(1, s.Length 
8b10: 2d 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 6c  - 2);..        l
8b20: 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20 20 20 20  s.Add(s);..     
8b30: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72 69   }....      stri
8b40: 6e 67 5b 5d 20 61 72 20 3d 20 6e 65 77 20 73 74  ng[] ar = new st
8b50: 72 69 6e 67 5b 6c 73 2e 43 6f 75 6e 74 5d 3b 0d  ring[ls.Count];.
8b60: 0a 20 20 20 20 20 20 6c 73 2e 43 6f 70 79 54 6f  .      ls.CopyTo
8b70: 28 61 72 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20  (ar, 0);....    
8b80: 20 20 72 65 74 75 72 6e 20 61 72 3b 0d 0a 20 20    return ar;..  
8b90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
8ba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
8bb0: 2f 20 53 70 6c 69 74 73 20 74 68 65 20 73 70 65  / Splits the spe
8bc0: 63 69 66 69 65 64 20 73 74 72 69 6e 67 20 69 6e  cified string in
8bd0: 74 6f 20 6d 75 6c 74 69 70 6c 65 20 73 74 72 69  to multiple stri
8be0: 6e 67 73 20 62 61 73 65 64 20 6f 6e 20 61 20 73  ngs based on a s
8bf0: 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 2f 2f  eparator..    //
8c00: 2f 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  / and returns th
8c10: 65 20 72 65 73 75 6c 74 20 61 73 20 61 6e 20 61  e result as an a
8c20: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 2e  rray of strings.
8c30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8c40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
8c50: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
8c60: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
8c70: 73 74 72 69 6e 67 20 74 6f 20 73 70 6c 69 74 20  string to split 
8c80: 69 6e 74 6f 20 70 69 65 63 65 73 20 62 61 73 65  into pieces base
8c90: 64 20 6f 6e 20 74 68 65 20 73 65 70 61 72 61 74  d on the separat
8ca0: 6f 72 20 63 68 61 72 61 63 74 65 72 2e 20 20 49  or character.  I
8cb0: 66 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 69 73 20  f..    /// this 
8cc0: 73 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 2c 20  string is null, 
8cd0: 6e 75 6c 6c 20 77 69 6c 6c 20 61 6c 77 61 79 73  null will always
8ce0: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20 49   be returned.  I
8cf0: 66 20 74 68 69 73 20 73 74 72 69 6e 67 20 69 73  f this string is
8d00: 0d 0a 20 20 20 20 2f 2f 2f 20 65 6d 70 74 79 2c  ..    /// empty,
8d10: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 7a 65 72   an array of zer
8d20: 6f 20 73 74 72 69 6e 67 73 20 77 69 6c 6c 20 61  o strings will a
8d30: 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 6e 65  lways be returne
8d40: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8d50: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8d60: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70 61 72  aram name="separ
8d70: 61 74 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ator">..    /// 
8d80: 54 68 65 20 63 68 61 72 61 63 74 65 72 20 75 73  The character us
8d90: 65 64 20 74 6f 20 64 69 76 69 64 65 20 74 68 65  ed to divide the
8da0: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
8db0: 20 69 6e 74 6f 20 73 75 62 2d 73 74 72 69 6e 67   into sub-string
8dc0: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  s...    /// This
8dd0: 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f   character canno
8de0: 74 20 62 65 20 61 20 62 61 63 6b 73 6c 61 73 68  t be a backslash
8df0: 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f   or a double-quo
8e00: 74 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 6e  te; otherwise, n
8e10: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 77 6f 72 6b 20  o..    /// work 
8e20: 77 69 6c 6c 20 62 65 20 70 65 72 66 6f 72 6d 65  will be performe
8e30: 64 20 61 6e 64 20 6e 75 6c 6c 20 77 69 6c 6c 20  d and null will 
8e40: 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
8e50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
8e60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8e70: 61 6d 65 3d 22 6b 65 65 70 51 75 6f 74 65 22 3e  ame="keepQuote">
8e80: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 69  ..    /// If thi
8e90: 73 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 6e  s parameter is n
8ea0: 6f 6e 2d 7a 65 72 6f 2c 20 61 6c 6c 20 64 6f 75  on-zero, all dou
8eb0: 62 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63  ble-quote charac
8ec0: 74 65 72 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20  ters will be..  
8ed0: 20 20 2f 2f 2f 20 72 65 74 61 69 6e 65 64 20 69    /// retained i
8ee0: 6e 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 6c  n the returned l
8ef0: 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 3b 20  ist of strings; 
8f00: 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 79 20  otherwise, they 
8f10: 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f  will be..    ///
8f20: 20 64 72 6f 70 70 65 64 2e 0d 0a 20 20 20 20 2f   dropped...    /
8f30: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
8f40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8f50: 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f  ="error">..    /
8f60: 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
8f70: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
8f80: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
8f90: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61   to contain an a
8fa0: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
8fb0: 2f 2f 2f 20 65 72 72 6f 72 20 6d 65 73 73 61 67  /// error messag
8fc0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
8fd0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
8fe0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
8ff0: 20 54 68 65 20 6e 65 77 20 61 72 72 61 79 20 6f   The new array o
9000: 66 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c  f strings or nul
9010: 6c 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 73  l if the input s
9020: 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 20 2d 4f  tring is null -O
9030: 52 2d 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  R- the..    /// 
9040: 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63  separator charac
9050: 74 65 72 20 69 73 20 61 20 62 61 63 6b 73 6c 61  ter is a backsla
9060: 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71  sh or a double-q
9070: 75 6f 74 65 20 2d 4f 52 2d 20 74 68 65 20 73 74  uote -OR- the st
9080: 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f  ring..    /// co
9090: 6e 74 61 69 6e 73 20 61 6e 20 75 6e 62 61 6c 61  ntains an unbala
90a0: 6e 63 65 64 20 62 61 63 6b 73 6c 61 73 68 20 6f  nced backslash o
90b0: 72 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63  r double-quote c
90c0: 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f  haracter...    /
90d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
90e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
90f0: 69 63 20 73 74 72 69 6e 67 5b 5d 20 4e 65 77 53  ic string[] NewS
9100: 70 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20 73  plit(..        s
9110: 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20  tring value,..  
9120: 20 20 20 20 20 20 63 68 61 72 20 73 65 70 61 72        char separ
9130: 61 74 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 62  ator,..        b
9140: 6f 6f 6c 20 6b 65 65 70 51 75 6f 74 65 2c 0d 0a  ool keepQuote,..
9150: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
9160: 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
9170: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
9180: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 45      const char E
9190: 73 63 61 70 65 43 68 61 72 20 3d 20 27 5c 5c 27  scapeChar = '\\'
91a0: 3b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74  ;..        const
91b0: 20 63 68 61 72 20 51 75 6f 74 65 43 68 61 72 20   char QuoteChar 
91c0: 3d 20 27 5c 22 27 3b 0d 0a 0d 0a 20 20 20 20 20  = '\"';....     
91d0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f     //..        /
91e0: 2f 20 4e 4f 54 45 3a 20 49 74 20 69 73 20 69 6c  / NOTE: It is il
91f0: 6c 65 67 61 6c 20 66 6f 72 20 74 68 65 20 73 65  legal for the se
9200: 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65  parator characte
9210: 72 20 74 6f 20 62 65 20 65 69 74 68 65 72 20 61  r to be either a
9220: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20  ..        //    
9230: 20 20 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20     backslash or 
9240: 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 62  a double-quote b
9250: 65 63 61 75 73 65 20 62 6f 74 68 20 6f 66 20 74  ecause both of t
9260: 68 6f 73 65 20 63 68 61 72 61 63 74 65 72 73 0d  hose characters.
9270: 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20  .        //     
9280: 20 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 65    are used for e
9290: 73 63 61 70 69 6e 67 20 6f 74 68 65 72 20 63 68  scaping other ch
92a0: 61 72 61 63 74 65 72 73 20 28 65 2e 67 2e 20 74  aracters (e.g. t
92b0: 68 65 20 73 65 70 61 72 61 74 6f 72 0d 0a 20 20  he separator..  
92c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
92d0: 68 61 72 61 63 74 65 72 29 2e 0d 0a 20 20 20 20  haracter)...    
92e0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
92f0: 69 66 20 28 28 73 65 70 61 72 61 74 6f 72 20 3d  if ((separator =
9300: 3d 20 45 73 63 61 70 65 43 68 61 72 29 20 7c 7c  = EscapeChar) ||
9310: 20 28 73 65 70 61 72 61 74 6f 72 20 3d 3d 20 51   (separator == Q
9320: 75 6f 74 65 43 68 61 72 29 29 0d 0a 20 20 20 20  uoteChar))..    
9330: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9340: 20 20 20 65 72 72 6f 72 20 3d 20 22 73 65 70 61     error = "sepa
9350: 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 20  rator character 
9360: 63 61 6e 6e 6f 74 20 62 65 20 74 68 65 20 65 73  cannot be the es
9370: 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68  cape or quote ch
9380: 61 72 61 63 74 65 72 73 22 3b 0d 0a 20 20 20 20  aracters";..    
9390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
93a0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
93b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76  ...        if (v
93c0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
93d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
93e0: 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 73        error = "s
93f0: 74 72 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 73  tring value to s
9400: 70 6c 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 6e  plit cannot be n
9410: 75 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull";..         
9420: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
9430: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9440: 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
9450: 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b   = value.Length;
9460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
9470: 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  length == 0)..  
9480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9490: 20 6e 65 77 20 73 74 72 69 6e 67 5b 30 5d 3b 0d   new string[0];.
94a0: 0a 0d 0a 20 20 20 20 20 20 20 20 4c 69 73 74 3c  ...        List<
94b0: 73 74 72 69 6e 67 3e 20 6c 69 73 74 20 3d 20 6e  string> list = n
94c0: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
94d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 53 74 72 69  );..        Stri
94e0: 6e 67 42 75 69 6c 64 65 72 20 65 6c 65 6d 65 6e  ngBuilder elemen
94f0: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
9500: 69 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ilder();..      
9510: 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b    int index = 0;
9520: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65  ..        bool e
9530: 73 63 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a  scape = false;..
9540: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 71 75 6f          bool quo
9550: 74 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  te = false;.... 
9560: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 6e         while (in
9570: 64 65 78 20 3c 20 6c 65 6e 67 74 68 29 0d 0a 20  dex < length).. 
9580: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9590: 20 20 20 20 20 20 63 68 61 72 20 63 68 61 72 61        char chara
95a0: 63 74 65 72 20 3d 20 76 61 6c 75 65 5b 69 6e 64  cter = value[ind
95b0: 65 78 2b 2b 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ex++];....      
95c0: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
95d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
95e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9600: 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f        // HACK: O
9610: 6e 6c 79 20 63 6f 6e 73 69 64 65 72 20 74 68 65  nly consider the
9620: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
9630: 72 20 74 6f 20 62 65 20 61 6e 20 61 63 74 75 61  r to be an actua
9640: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l..             
9650: 20 20 20 2f 2f 20 20 20 20 20 20 20 22 65 73 63     //       "esc
9660: 61 70 65 22 20 69 66 20 69 74 20 69 73 20 66 6f  ape" if it is fo
9670: 6c 6c 6f 77 65 64 20 62 79 20 61 20 72 65 73 65  llowed by a rese
9680: 72 76 65 64 20 63 68 61 72 61 63 74 65 72 3b 0d  rved character;.
9690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
96a0: 20 2f 2f 20 20 20 20 20 20 20 6f 74 68 65 72 77   //       otherw
96b0: 69 73 65 2c 20 65 6d 69 74 20 74 68 65 20 6f 72  ise, emit the or
96c0: 69 67 69 6e 61 6c 20 65 73 63 61 70 65 20 63 68  iginal escape ch
96d0: 61 72 61 63 74 65 72 20 61 6e 64 0d 0a 20 20 20  aracter and..   
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
96f0: 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e        the curren
9700: 74 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 61  t character in a
9710: 6e 20 65 66 66 6f 72 74 20 74 6f 20 68 65 6c 70  n effort to help
9720: 20 70 72 65 73 65 72 76 65 0d 0a 20 20 20 20 20   preserve..     
9730: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
9740: 20 20 20 20 74 68 65 20 6f 72 69 67 69 6e 61 6c      the original
9750: 20 73 74 72 69 6e 67 20 63 6f 6e 74 65 6e 74 2e   string content.
9760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9770: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9780: 20 20 20 20 20 20 69 66 20 28 28 63 68 61 72 61        if ((chara
9790: 63 74 65 72 20 21 3d 20 45 73 63 61 70 65 43 68  cter != EscapeCh
97a0: 61 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ar) &&..        
97b0: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61              (cha
97c0: 72 61 63 74 65 72 20 21 3d 20 51 75 6f 74 65 43  racter != QuoteC
97d0: 68 61 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20  har) &&..       
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68               (ch
97f0: 61 72 61 63 74 65 72 20 21 3d 20 73 65 70 61 72  aracter != separ
9800: 61 74 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  ator))..        
9810: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
9830: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 45 73  lement.Append(Es
9840: 63 61 70 65 43 68 61 72 29 3b 0d 0a 20 20 20 20  capeChar);..    
9850: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
9860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9870: 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28   element.Append(
9880: 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20  character);..   
9890: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 73 63               esc
98a0: 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  ape = false;..  
98b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
98c0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
98d0: 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d 20 45   (character == E
98e0: 73 63 61 70 65 43 68 61 72 29 0d 0a 20 20 20 20  scapeChar)..    
98f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9900: 20 20 20 20 20 20 20 20 20 20 20 65 73 63 61 70             escap
9910: 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  e = true;..     
9920: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9930: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63        else if (c
9940: 68 61 72 61 63 74 65 72 20 3d 3d 20 51 75 6f 74  haracter == Quot
9950: 65 43 68 61 72 29 0d 0a 20 20 20 20 20 20 20 20  eChar)..        
9960: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9970: 20 20 20 20 20 20 20 69 66 20 28 6b 65 65 70 51         if (keepQ
9980: 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20  uote)..         
9990: 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65             eleme
99a0: 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63  nt.Append(charac
99b0: 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
99c0: 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 20 3d           quote =
99d0: 20 21 71 75 6f 74 65 3b 0d 0a 20 20 20 20 20 20   !quote;..      
99e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
99f0: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 68       else if (ch
9a00: 61 72 61 63 74 65 72 20 3d 3d 20 73 65 70 61 72  aracter == separ
9a10: 61 74 6f 72 29 0d 0a 20 20 20 20 20 20 20 20 20  ator)..         
9a20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9a30: 20 20 20 20 20 20 69 66 20 28 71 75 6f 74 65 29        if (quote)
9a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9a60: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
9a70: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
9a80: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9a90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9aa0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ad0: 20 20 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c       list.Add(el
9ae0: 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ement.ToString()
9af0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9b00: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
9b10: 4c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 20 20 20  Length = 0;..   
9b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9b40: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
9b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b70: 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63  element.Append(c
9b80: 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20  haracter);..    
9b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9ba0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9bb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e  //..        // N
9bc0: 4f 54 45 3a 20 41 6e 20 75 6e 62 61 6c 61 6e 63  OTE: An unbalanc
9bd0: 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f  ed escape or quo
9be0: 74 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20  te character in 
9bf0: 74 68 65 20 73 74 72 69 6e 67 20 69 73 0d 0a 20  the string is.. 
9c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9c10: 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65  considered to be
9c20: 20 61 20 66 61 74 61 6c 20 65 72 72 6f 72 3b 20   a fatal error; 
9c30: 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72  therefore, retur
9c40: 6e 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  n null...       
9c50: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 69 66 20   //..        if 
9c60: 28 65 73 63 61 70 65 20 7c 7c 20 71 75 6f 74 65  (escape || quote
9c70: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
9c80: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
9c90: 3d 20 22 75 6e 62 61 6c 61 6e 63 65 64 20 65 73  = "unbalanced es
9ca0: 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68  cape or quote ch
9cb0: 61 72 61 63 74 65 72 20 66 6f 75 6e 64 22 3b 0d  aracter found";.
9cc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
9cd0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
9ce0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9cf0: 69 66 20 28 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67  if (element.Leng
9d00: 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
9d10: 20 20 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c       list.Add(el
9d20: 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ement.ToString()
9d30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  );....        re
9d40: 74 75 72 6e 20 6c 69 73 74 2e 54 6f 41 72 72 61  turn list.ToArra
9d50: 79 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  y();..    }.... 
9d60: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9d70: 0d 0a 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65  ..    /// Querie
9d80: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
9d90: 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65  e string represe
9da0: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 6f  ntation for an o
9db0: 62 6a 65 63 74 2c 20 75 73 69 6e 67 20 74 68 65  bject, using the
9dc0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66  ..    /// specif
9dd0: 69 65 64 20 28 6f 72 20 63 75 72 72 65 6e 74 29  ied (or current)
9de0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9df0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
9e00: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
9e10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22  param name="obj"
9e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  >..    /// The o
9e30: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
9e40: 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72  o return the str
9e50: 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
9e60: 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20 2f 2f 2f  on for...    ///
9e70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
9e80: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9e90: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
9ea0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 70  /// The format p
9eb0: 72 6f 76 69 64 65 72 20 74 6f 20 75 73 65 20 2d  rovider to use -
9ec0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 65 20  OR- null if the 
9ed0: 63 75 72 72 65 6e 74 20 66 6f 72 6d 61 74 20 70  current format p
9ee0: 72 6f 76 69 64 65 72 20 66 6f 72 0d 0a 20 20 20  rovider for..   
9ef0: 20 2f 2f 2f 20 74 68 65 20 74 68 72 65 61 64 20   /// the thread 
9f00: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69  should be used i
9f10: 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f  nstead...    ///
9f20: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
9f30: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9f40: 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67    /// The string
9f50: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
9f60: 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 20 69  for the object i
9f70: 6e 73 74 61 6e 63 65 20 2d 4f 52 2d 20 6e 75 6c  nstance -OR- nul
9f80: 6c 20 69 66 20 74 68 65 0d 0a 20 20 20 20 2f 2f  l if the..    //
9f90: 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
9fa0: 65 20 69 73 20 61 6c 73 6f 20 6e 75 6c 6c 2e 0d  e is also null..
9fb0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
9fc0: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
9fd0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f  static string To
9fe0: 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76 69 64  StringWithProvid
9ff0: 65 72 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  er(..        obj
a000: 65 63 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20  ect obj,..      
a010: 20 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65    IFormatProvide
a020: 72 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20  r provider..    
a030: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
a040: 20 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d        if (obj ==
a050: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
a060: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
a070: 20 2f 2a 20 6e 75 6c 6c 20 2d 2d 3e 20 6e 75 6c   /* null --> nul
a080: 6c 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  l */....        
a090: 69 66 20 28 6f 62 6a 20 69 73 20 73 74 72 69 6e  if (obj is strin
a0a0: 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
a0b0: 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29 6f  return (string)o
a0c0: 62 6a 3b 20 2f 2a 20 69 64 65 6e 74 69 74 79 20  bj; /* identity 
a0d0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 49 43  */....        IC
a0e0: 6f 6e 76 65 72 74 69 62 6c 65 20 63 6f 6e 76 65  onvertible conve
a0f0: 72 74 69 62 6c 65 20 3d 20 6f 62 6a 20 61 73 20  rtible = obj as 
a100: 49 43 6f 6e 76 65 72 74 69 62 6c 65 3b 0d 0a 0d  IConvertible;...
a110: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
a120: 76 65 72 74 69 62 6c 65 20 21 3d 20 6e 75 6c 6c  vertible != null
a130: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
a140: 65 74 75 72 6e 20 63 6f 6e 76 65 72 74 69 62 6c  eturn convertibl
a150: 65 2e 54 6f 53 74 72 69 6e 67 28 70 72 6f 76 69  e.ToString(provi
a160: 64 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  der);....       
a170: 20 72 65 74 75 72 6e 20 6f 62 6a 2e 54 6f 53 74   return obj.ToSt
a180: 72 69 6e 67 28 29 3b 20 2f 2a 20 6e 6f 74 20 49  ring(); /* not I
a190: 43 6f 6e 76 65 72 74 69 62 6c 65 20 2a 2f 0d 0a  Convertible */..
a1a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
a1b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a1c0: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
a1d0: 63 6f 6e 76 65 72 74 20 61 6e 20 61 72 62 69 74  convert an arbit
a1e0: 72 61 72 79 20 6f 62 6a 65 63 74 20 74 6f 20 74  rary object to t
a1f0: 68 65 20 42 6f 6f 6c 65 61 6e 20 64 61 74 61 20  he Boolean data 
a200: 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  type...    /// N
a210: 75 6c 6c 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  ull object value
a220: 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20  s are converted 
a230: 74 6f 20 66 61 6c 73 65 2e 20 20 54 68 72 6f 77  to false.  Throw
a240: 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 0d 0a  s an exception..
a250: 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69      /// upon fai
a260: 6c 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  lure...    /// <
a270: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
a280: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
a290: 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  obj">..    /// T
a2a0: 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20  he object value 
a2b0: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
a2c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
a2d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a2e0: 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a  me="provider">..
a2f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d      /// The form
a300: 61 74 20 70 72 6f 76 69 64 65 72 20 74 6f 20 75  at provider to u
a310: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  se...    /// </p
a320: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
a330: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46  param name="viaF
a340: 72 61 6d 65 77 6f 72 6b 22 3e 0d 0a 20 20 20 20  ramework">..    
a350: 2f 2f 2f 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c  /// If non-zero,
a360: 20 61 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20   a string value 
a370: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
a380: 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
a390: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
a3a0: 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61  Convert.ToBoolea
a3b0: 6e 28 4f 62 6a 65 63 74 2c 20 49 46 6f 72 6d 61  n(Object, IForma
a3c0: 74 50 72 6f 76 69 64 65 72 29 22 20 2f 3e 0d 0a  tProvider)" />..
a3d0: 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20      /// method; 
a3e0: 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c  otherwise, the <
a3f0: 73 65 65 20 63 72 65 66 3d 22 54 6f 42 6f 6f 6c  see cref="ToBool
a400: 65 61 6e 28 53 74 72 69 6e 67 29 22 20 2f 3e 0d  ean(String)" />.
a410: 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20  .    /// method 
a420: 77 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a 20  will be used... 
a430: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
a440: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
a450: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
a460: 63 6f 6e 76 65 72 74 65 64 20 62 6f 6f 6c 65 61  converted boolea
a470: 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  n value...    //
a480: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a490: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a4a0: 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e  c bool ToBoolean
a4b0: 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  (..        objec
a4c0: 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20 20 20  t obj,..        
a4d0: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20  IFormatProvider 
a4e0: 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20  provider,..     
a4f0: 20 20 20 62 6f 6f 6c 20 76 69 61 46 72 61 6d 65     bool viaFrame
a500: 77 6f 72 6b 0d 0a 20 20 20 20 20 20 20 20 29 0d  work..        ).
a510: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
a520: 69 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29  if (obj == null)
a530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
a540: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
a550: 20 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20         TypeCode 
a560: 74 79 70 65 43 6f 64 65 20 3d 20 54 79 70 65 2e  typeCode = Type.
a570: 47 65 74 54 79 70 65 43 6f 64 65 28 6f 62 6a 2e  GetTypeCode(obj.
a580: 47 65 74 54 79 70 65 28 29 29 3b 0d 0a 0d 0a 20  GetType());.... 
a590: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74         switch (t
a5a0: 79 70 65 43 6f 64 65 29 0d 0a 20 20 20 20 20 20  ypeCode)..      
a5b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a5c0: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 45   case TypeCode.E
a5d0: 6d 70 74 79 3a 0d 0a 20 20 20 20 20 20 20 20 20  mpty:..         
a5e0: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a5f0: 2e 44 42 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20  .DBNull:..      
a600: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a610: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a620: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a630: 64 65 2e 42 6f 6f 6c 65 61 6e 3a 0d 0a 20 20 20  de.Boolean:..   
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a650: 75 72 6e 20 28 62 6f 6f 6c 29 6f 62 6a 3b 0d 0a  urn (bool)obj;..
a660: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a670: 20 54 79 70 65 43 6f 64 65 2e 43 68 61 72 3a 0d   TypeCode.Char:.
a680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a690: 20 72 65 74 75 72 6e 20 28 28 63 68 61 72 29 6f   return ((char)o
a6a0: 62 6a 29 20 21 3d 20 28 63 68 61 72 29 30 20 3f  bj) != (char)0 ?
a6b0: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a6d0: 20 54 79 70 65 43 6f 64 65 2e 53 42 79 74 65 3a   TypeCode.SByte:
a6e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a6f0: 20 20 72 65 74 75 72 6e 20 28 28 73 62 79 74 65    return ((sbyte
a700: 29 6f 62 6a 29 20 21 3d 20 28 73 62 79 74 65 29  )obj) != (sbyte)
a710: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a720: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a730: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 42 79 74  ase TypeCode.Byt
a740: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
a750: 20 20 20 20 72 65 74 75 72 6e 20 28 28 62 79 74      return ((byt
a760: 65 29 6f 62 6a 29 20 21 3d 20 28 62 79 74 65 29  e)obj) != (byte)
a770: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a780: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a790: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74  ase TypeCode.Int
a7a0: 31 36 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  16:..           
a7b0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 73 68       return ((sh
a7c0: 6f 72 74 29 6f 62 6a 29 20 21 3d 20 28 73 68 6f  ort)obj) != (sho
a7d0: 72 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  rt)0 ? true : fa
a7e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a7f0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a800: 55 49 6e 74 31 36 3a 0d 0a 20 20 20 20 20 20 20  UInt16:..       
a810: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a820: 28 28 75 73 68 6f 72 74 29 6f 62 6a 29 20 21 3d  ((ushort)obj) !=
a830: 20 28 75 73 68 6f 72 74 29 30 20 3f 20 74 72 75   (ushort)0 ? tru
a840: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a850: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a860: 65 43 6f 64 65 2e 49 6e 74 33 32 3a 0d 0a 20 20  eCode.Int32:..  
a870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a880: 74 75 72 6e 20 28 28 69 6e 74 29 6f 62 6a 29 20  turn ((int)obj) 
a890: 21 3d 20 28 69 6e 74 29 30 20 3f 20 74 72 75 65  != (int)0 ? true
a8a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a8b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a8c0: 43 6f 64 65 2e 55 49 6e 74 33 32 3a 0d 0a 20 20  Code.UInt32:..  
a8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a8e0: 74 75 72 6e 20 28 28 75 69 6e 74 29 6f 62 6a 29  turn ((uint)obj)
a8f0: 20 21 3d 20 28 75 69 6e 74 29 30 20 3f 20 74 72   != (uint)0 ? tr
a900: 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ue : false;..   
a910: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
a920: 70 65 43 6f 64 65 2e 49 6e 74 36 34 3a 0d 0a 20  peCode.Int64:.. 
a930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a940: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 6f 62 6a  eturn ((long)obj
a950: 29 20 21 3d 20 28 6c 6f 6e 67 29 30 20 3f 20 74  ) != (long)0 ? t
a960: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
a970: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a980: 79 70 65 43 6f 64 65 2e 55 49 6e 74 36 34 3a 0d  ypeCode.UInt64:.
a990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a9a0: 20 72 65 74 75 72 6e 20 28 28 75 6c 6f 6e 67 29   return ((ulong)
a9b0: 6f 62 6a 29 20 21 3d 20 28 75 6c 6f 6e 67 29 30  obj) != (ulong)0
a9c0: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
a9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a9e0: 73 65 20 54 79 70 65 43 6f 64 65 2e 53 69 6e 67  se TypeCode.Sing
a9f0: 6c 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le:..           
aa00: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 66 6c       return ((fl
aa10: 6f 61 74 29 6f 62 6a 29 20 21 3d 20 28 66 6c 6f  oat)obj) != (flo
aa20: 61 74 29 30 2e 30 20 3f 20 74 72 75 65 20 3a 20  at)0.0 ? true : 
aa30: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
aa40: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
aa50: 65 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  e.Double:..     
aa60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
aa70: 6e 20 28 28 64 6f 75 62 6c 65 29 6f 62 6a 29 20  n ((double)obj) 
aa80: 21 3d 20 28 64 6f 75 62 6c 65 29 30 2e 30 20 3f  != (double)0.0 ?
aa90: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
aab0: 20 54 79 70 65 43 6f 64 65 2e 44 65 63 69 6d 61   TypeCode.Decima
aac0: 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l:..            
aad0: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 65 63      return ((dec
aae0: 69 6d 61 6c 29 6f 62 6a 29 20 21 3d 20 44 65 63  imal)obj) != Dec
aaf0: 69 6d 61 6c 2e 5a 65 72 6f 20 3f 20 74 72 75 65  imal.Zero ? true
ab00: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
ab10: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
ab20: 43 6f 64 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20  Code.String:..  
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ab40: 74 75 72 6e 20 76 69 61 46 72 61 6d 65 77 6f 72  turn viaFramewor
ab50: 6b 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k ?..           
ab60: 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74           Convert
ab70: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 2c 20  .ToBoolean(obj, 
ab80: 70 72 6f 76 69 64 65 72 29 20 3a 0d 0a 20 20 20  provider) :..   
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aba0: 20 54 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74 72   ToBoolean(ToStr
abb0: 69 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72 28  ingWithProvider(
abc0: 6f 62 6a 2c 20 70 72 6f 76 69 64 65 72 29 29 3b  obj, provider));
abd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
abe0: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
abf0: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
ac00: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
ac10: 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  n(HelperMethods.
ac20: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac40: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
ac50: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76      "Cannot conv
ac80: 65 72 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20  ert type {0} to 
ac90: 62 6f 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20  boolean",..     
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
acb0: 79 70 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20  ypeCode));..    
acc0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
acd0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ace0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
acf0: 72 74 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72  rt a value to tr
ad00: 75 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20  ue or false...  
ad10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ad20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
ad30: 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41   name="source">A
ad40: 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65   string or numbe
ad50: 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  r representing t
ad60: 72 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61  rue or false</pa
ad70: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
ad80: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
ad90: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
ada0: 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c  atic bool ToBool
adb0: 65 61 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63  ean(object sourc
adc0: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
add0: 20 69 66 20 28 73 6f 75 72 63 65 20 69 73 20 62   if (source is b
ade0: 6f 6f 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f  ool) return (boo
adf0: 6c 29 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20  l)source;....   
ae00: 20 20 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c     return ToBool
ae10: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
ae20: 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20  Provider(..     
ae30: 20 20 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c       source, Cul
ae40: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
ae50: 6e 74 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20  ntCulture));..  
ae60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
aec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
aed0: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e   /// Converts an
aee0: 20 69 6e 74 65 67 65 72 20 74 6f 20 61 20 73 74   integer to a st
aef0: 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65  ring that can be
af00: 20 72 6f 75 6e 64 2d 74 72 69 70 70 65 64 20 75   round-tripped u
af10: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f  sing the..    //
af20: 2f 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74  / invariant cult
af30: 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ure...    /// </
af40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
af50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
af60: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
af70: 54 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  The integer valu
af80: 65 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20  e to return the 
af90: 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
afa0: 61 74 69 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20  ation for...    
afb0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
afc0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
afd0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72  .    /// The str
afe0: 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
aff0: 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  on of the specif
b000: 69 65 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75  ied integer valu
b010: 65 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  e, using the..  
b020: 20 20 2f 2f 2f 20 69 6e 76 61 72 69 61 6e 74 20    /// invariant 
b030: 63 75 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f  culture...    //
b040: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
b050: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b060: 63 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  c string ToStrin
b070: 67 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  g(int value)..  
b080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
b090: 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  urn value.ToStri
b0a0: 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
b0b0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
b0c0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b120: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
b130: 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70  ..    /// Attemp
b140: 74 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20  ts to convert a 
b150: 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e  <see cref="Strin
b160: 67 22 20 2f 3e 20 69 6e 74 6f 20 61 20 3c 73 65  g" /> into a <se
b170: 65 20 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22  e cref="Boolean"
b180: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
b190: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b1a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
b1b0: 6f 75 72 63 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ource">..    ///
b1c0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
b1d0: 53 74 72 69 6e 67 22 20 2f 3e 20 74 6f 20 63 6f  String" /> to co
b1e0: 6e 76 65 72 74 2c 20 63 61 6e 6e 6f 74 20 62 65  nvert, cannot be
b1f0: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20   null...    /// 
b200: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b210: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
b220: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
b230: 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 42 6f  ed <see cref="Bo
b240: 6f 6c 65 61 6e 22 20 2f 3e 20 76 61 6c 75 65 2e  olean" /> value.
b250: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
b260: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  rns>..    /// <r
b270: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
b280: 20 54 68 65 20 73 75 70 70 6f 72 74 65 64 20 73   The supported s
b290: 74 72 69 6e 67 73 20 61 72 65 20 22 79 65 73 22  trings are "yes"
b2a0: 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22  , "no", "y", "n"
b2b0: 2c 20 22 6f 6e 22 2c 20 22 6f 66 66 22 2c 20 22  , "on", "off", "
b2c0: 30 22 2c 20 22 31 22 2c 0d 0a 20 20 20 20 2f 2f  0", "1",..    //
b2d0: 2f 20 61 73 20 77 65 6c 6c 20 61 73 20 61 6e 79  / as well as any
b2e0: 20 70 72 65 66 69 78 20 6f 66 20 74 68 65 20 73   prefix of the s
b2f0: 74 72 69 6e 67 73 20 3c 73 65 65 20 63 72 65 66  trings <see cref
b300: 3d 22 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53  ="Boolean.FalseS
b310: 74 72 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 2f  tring" />..    /
b320: 2f 2f 20 61 6e 64 20 3c 73 65 65 20 63 72 65 66  // and <see cref
b330: 3d 22 42 6f 6f 6c 65 61 6e 2e 54 72 75 65 53 74  ="Boolean.TrueSt
b340: 72 69 6e 67 22 20 2f 3e 2e 20 20 41 6c 6c 20 73  ring" />.  All s
b350: 74 72 69 6e 67 73 20 61 72 65 20 74 72 65 61 74  trings are treat
b360: 65 64 20 69 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f  ed in a..    ///
b370: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
b380: 65 20 6d 61 6e 6e 65 72 2e 0d 0a 20 20 20 20 2f  e manner...    /
b390: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
b3a0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
b3b0: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28   bool ToBoolean(
b3c0: 73 74 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a  string source)..
b3d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
b3e0: 66 20 28 73 6f 75 72 63 65 20 3d 3d 20 6e 75 6c  f (source == nul
b3f0: 6c 29 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67  l) throw new Arg
b400: 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
b410: 6f 6e 28 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20  on("source");.. 
b420: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
b430: 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65  g.Compare(source
b440: 2c 20 30 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74  , 0, bool.TrueSt
b450: 72 69 6e 67 2c 20 30 2c 20 73 6f 75 72 63 65 2e  ring, 0, source.
b460: 4c 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f  Length, StringCo
b470: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
b480: 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30  IgnoreCase) == 0
b490: 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
b4a0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
b4b0: 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28  (String.Compare(
b4c0: 73 6f 75 72 63 65 2c 20 30 2c 20 62 6f 6f 6c 2e  source, 0, bool.
b4d0: 46 61 6c 73 65 53 74 72 69 6e 67 2c 20 30 2c 20  FalseString, 0, 
b4e0: 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 2c 20 53  source.Length, S
b4f0: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
b500: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
b510: 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20  e) == 0) return 
b520: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
b530: 20 20 73 77 69 74 63 68 20 28 73 6f 75 72 63 65    switch (source
b540: 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65  .ToLower(Culture
b550: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
b560: 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  lture))..       
b570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b580: 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20 20 20  case "y":..     
b590: 20 20 20 20 20 20 20 63 61 73 65 20 22 79 65 73         case "yes
b5a0: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
b5b0: 63 61 73 65 20 22 6f 6e 22 3a 0d 0a 20 20 20 20  case "on":..    
b5c0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22          case "1"
b5d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
b5e0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
b5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
b600: 65 20 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "n":..        
b610: 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a      case "no":..
b620: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
b630: 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20 20   "off":..       
b640: 20 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a       case "0":..
b650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b660: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
b670: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b680: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
b690: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
b6a0: 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20  "source");..    
b6b0: 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  }....    #region
b6c0: 20 54 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e   Type Conversion
b6d0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
b6e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
b6f0: 6e 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54  nverts a SQLiteT
b700: 79 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79  ype to a .NET Ty
b710: 70 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe object..    /
b720: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b730: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b740: 6d 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74  me="t">The SQLit
b750: 65 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  eType to convert
b760: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b770: 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72  / <returns>Retur
b780: 6e 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f  ns a .NET Type o
b790: 62 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d  bject</returns>.
b7a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b7b0: 61 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65  atic Type SQLite
b7c0: 54 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74  TypeToType(SQLit
b7d0: 65 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d  eType t)..    {.
b7e0: 0a 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70  .      if (t.Typ
b7f0: 65 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65  e == DbType.Obje
b800: 63 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ct)..        ret
b810: 75 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74  urn _affinitytot
b820: 79 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e  ype[(int)t.Affin
b830: 69 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73  ity];..      els
b840: 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  e..        retur
b850: 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  n SQLiteConvert.
b860: 44 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54  DbTypeToType(t.T
b870: 79 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ype);..    }....
b880: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b890: 69 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e  ic Type[] _affin
b8a0: 69 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20  itytotype = {.. 
b8b0: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
b8c0: 63 74 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74  ct),   // Uninit
b8d0: 69 61 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20  ialized (0)..   
b8e0: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29     typeof(Int64)
b8f0: 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31  ,    // Int64 (1
b900: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b910: 44 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f  Double),   // Do
b920: 75 62 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20  uble (2)..      
b930: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
b940: 20 20 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20    // Text (3).. 
b950: 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65       typeof(byte
b960: 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28  []),   // Blob (
b970: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  4)..      typeof
b980: 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e  (object),   // N
b990: 75 6c 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 6e  ull (5)..      n
b9a0: 75 6c 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20  ull,            
b9b0: 20 2f 2f 20 55 6e 64 65 66 69 6e 65 64 20 28 36   // Undefined (6
b9c0: 29 0d 0a 20 20 20 20 20 20 6e 75 6c 6c 2c 20 20  )..      null,  
b9d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 6e             // Un
b9e0: 64 65 66 69 6e 65 64 20 28 37 29 0d 0a 20 20 20  defined (7)..   
b9f0: 20 20 20 6e 75 6c 6c 2c 20 20 20 20 20 20 20 20     null,        
ba00: 20 20 20 20 20 2f 2f 20 55 6e 64 65 66 69 6e 65       // Undefine
ba10: 64 20 28 38 29 0d 0a 20 20 20 20 20 20 6e 75 6c  d (8)..      nul
ba20: 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  l,             /
ba30: 2f 20 55 6e 64 65 66 69 6e 65 64 20 28 39 29 0d  / Undefined (9).
ba40: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
ba50: 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65  teTime), // Date
ba60: 54 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20  Time (10)..     
ba70: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20   typeof(object) 
ba80: 20 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d     // None (11).
ba90: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
baa0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
bab0: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
bac0: 6e 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65  n intrinsic type
bad0: 2c 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70  , return a DbTyp
bae0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
baf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
bb00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
bb10: 3e 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65  >The native type
bb20: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
bb30: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
bb40: 74 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73  turns>The corres
bb50: 70 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74  ponding (closest
bb60: 20 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f   match) DbType</
bb70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
bb80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62  ternal static Db
bb90: 54 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70  Type TypeToDbTyp
bba0: 65 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  e(Type typ)..   
bbb0: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f   {..      TypeCo
bbc0: 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74  de tc = Type.Get
bbd0: 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a  TypeCode(typ);..
bbe0: 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20        if (tc == 
bbf0: 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29  TypeCode.Object)
bc00: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
bc10: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
bc20: 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65  peof(byte[])) re
bc30: 74 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61  turn DbType.Bina
bc40: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ry;..        if 
bc50: 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47  (typ == typeof(G
bc60: 75 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54  uid)) return DbT
bc70: 79 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20  ype.Guid;..     
bc80: 20 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65     return DbType
bc90: 2e 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  .String;..      
bca0: 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
bcb0: 5f 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69  _typetodbtype[(i
bcc0: 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  nt)tc];..    }..
bcd0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
bce0: 61 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74  atic DbType[] _t
bcf0: 79 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d  ypetodbtype = {.
bd00: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62  .      DbType.Ob
bd10: 6a 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79  ject,   // Empty
bd20: 20 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (0)..      DbTy
bd30: 70 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20  pe.Binary,   // 
bd40: 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20  Object (1)..    
bd50: 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c    DbType.Object,
bd60: 20 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29     // DBNull (2)
bd70: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
bd80: 6f 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c  oolean,  // Bool
bd90: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44  ean (3)..      D
bda0: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
bdb0: 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20  // Char (4)..   
bdc0: 20 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c     DbType.SByte,
bdd0: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29      // SByte (5)
bde0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
bdf0: 79 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65  yte,     // Byte
be00: 20 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (6)..      DbTy
be10: 70 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20  pe.Int16,    // 
be20: 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20  Int16 (7)..     
be30: 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20   DbType.UInt16, 
be40: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d    // UInt16 (8).
be50: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e  .      DbType.In
be60: 74 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32  t32,    // Int32
be70: 20 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (9)..      DbTy
be80: 70 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20  pe.UInt32,   // 
be90: 55 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20  UInt32 (10)..   
bea0: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c     DbType.Int64,
beb0: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31      // Int64 (11
bec0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
bed0: 55 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e  UInt64,   // UIn
bee0: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
bef0: 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20  DbType.Single,  
bf00: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d   // Single (13).
bf10: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f  .      DbType.Do
bf20: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c  uble,   // Doubl
bf30: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62  e (14)..      Db
bf40: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f  Type.Decimal,  /
bf50: 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a  / Decimal (15)..
bf60: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74        DbType.Dat
bf70: 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69  eTime, // DateTi
bf80: 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44  me (16)..      D
bf90: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
bfa0: 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20  // ?? (17)..    
bfb0: 20 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20    DbType.String 
bfc0: 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38     // String (18
bfd0: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
bfe0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bff0: 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
c000: 74 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66  the ColumnSize f
c010: 6f 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54  or the given DbT
c020: 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ype..    /// </s
c030: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
c040: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
c050: 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f  p">The DbType to
c060: 20 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66   get the size of
c070: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
c080: 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  / <returns></ret
c090: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
c0a0: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44  nal static int D
c0b0: 62 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a  bTypeToColumnSiz
c0c0: 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  e(DbType typ).. 
c0d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
c0e0: 72 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75  rn _dbtypetocolu
c0f0: 6d 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d  mnsize[(int)typ]
c100: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
c110: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
c120: 6e 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f  nt[] _dbtypetoco
c130: 6c 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20  lumnsize = {..  
c140: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
c150: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20  , // AnsiString 
c160: 28 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  (0)..      int.M
c170: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61  axValue, // Bina
c180: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c  ry (1)..      1,
c190: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
c1a0: 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31  yte (2)..      1
c1b0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c1c0: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
c1d0: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20     8,           
c1e0: 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29   // Currency (4)
c1f0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
c200: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35        // Date (5
c210: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
c220: 20 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69         // DateTi
c230: 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c  me (6)..      8,
c240: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
c250: 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20  ecimal (7)..    
c260: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
c270: 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20  // Double (8).. 
c280: 20 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20       16,        
c290: 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a     // Guid (9)..
c2a0: 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20        2,        
c2b0: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30      // Int16 (10
c2c0: 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20  )..      4,     
c2d0: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20         // Int32 
c2e0: 28 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (11)..      8,  
c2f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
c300: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69  64 (12)..      i
c310: 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20  nt.MaxValue, // 
c320: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
c330: 20 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20     1,           
c340: 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a   // SByte (14)..
c350: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20        4,        
c360: 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31      // Single (1
c370: 35 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  5)..      int.Ma
c380: 78 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  xValue, // Strin
c390: 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c  g (16)..      8,
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
c3b0: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
c3c0: 32 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  2,            //
c3d0: 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20   UInt16 (18)..  
c3e0: 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20      4,          
c3f0: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29    // UInt32 (19)
c400: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
c410: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20        // UInt64 
c420: 28 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (20)..      8,  
c430: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72            // Var
c440: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
c450: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
c460: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46  , // AnsiStringF
c470: 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d  ixedLength (22).
c480: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
c490: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69  lue, // StringFi
c4a0: 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a  xedLength (23)..
c4b0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
c4c0: 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a  ue, // ?? (24)..
c4d0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
c4e0: 75 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ue, // Xml (25).
c4f0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
c500: 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65       // DateTime
c510: 32 20 28 32 36 29 0d 0a 20 20 20 20 20 20 31 30  2 (26)..      10
c520: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
c530: 61 74 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32  ateTimeOffset (2
c540: 37 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  7)..    };....  
c550: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c560: 63 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54  c object DbTypeT
c570: 6f 4e 75 6d 65 72 69 63 50 72 65 63 69 73 69 6f  oNumericPrecisio
c580: 6e 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  n(DbType typ).. 
c590: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
c5a0: 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65  rn _dbtypetonume
c5b0: 72 69 63 70 72 65 63 69 73 69 6f 6e 5b 28 69 6e  ricprecision[(in
c5c0: 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  t)typ];..    }..
c5d0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
c5e0: 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64  atic object[] _d
c5f0: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72  btypetonumericpr
c600: 65 63 69 73 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20  ecision = {..   
c610: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c620: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28   // AnsiString (
c630: 30 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  0)..      DBNull
c640: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72  .Value, // Binar
c650: 79 20 28 31 29 0d 0a 20 20 20 20 20 20 33 2c 20  y (1)..      3, 
c660: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79             // By
c670: 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 44 42  te (2)..      DB
c680: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42  Null.Value, // B
c690: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
c6a0: 20 20 31 39 2c 20 20 20 20 20 20 20 20 20 20 20    19,           
c6b0: 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d  // Currency (4).
c6c0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c6d0: 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20 28 35 29  lue, // Date (5)
c6e0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c6f0: 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d  alue, // DateTim
c700: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 35 33 2c  e (6)..      53,
c710: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65             // De
c720: 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20  cimal (7)..     
c730: 20 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f   53,           /
c740: 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20  / Double (8)..  
c750: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c760: 2c 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20  , // Guid (9).. 
c770: 20 20 20 20 20 35 2c 20 20 20 20 20 20 20 20 20       5,         
c780: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29     // Int16 (10)
c790: 0d 0a 20 20 20 20 20 20 31 30 2c 20 20 20 20 20  ..      10,     
c7a0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28        // Int32 (
c7b0: 31 31 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20  11)..      19,  
c7c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36           // Int6
c7d0: 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44 42  4 (12)..      DB
c7e0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f  Null.Value, // O
c7f0: 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20  bject (13)..    
c800: 20 20 33 2c 20 20 20 20 20 20 20 20 20 20 20 20    3,            
c810: 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20  // SByte (14).. 
c820: 20 20 20 20 20 32 34 2c 20 20 20 20 20 20 20 20       24,        
c830: 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35     // Single (15
c840: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c850: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
c860: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 42 4e   (16)..      DBN
c870: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69  ull.Value, // Ti
c880: 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 35  me (17)..      5
c890: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c8a0: 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20  UInt16 (18)..   
c8b0: 20 20 20 31 30 2c 20 20 20 20 20 20 20 20 20 20     10,          
c8c0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d   // UInt32 (19).
c8d0: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c8e0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28       // UInt64 (
c8f0: 32 30 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20  20)..      53,  
c900: 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e           // VarN
c910: 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20  umeric (21)..   
c920: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c930: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
c940: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
c950: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c960: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78  ue, // StringFix
c970: 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20  edLength (23).. 
c980: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c990: 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20  e, // ?? (24).. 
c9a0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c9b0: 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a  e, // Xml (25)..
c9c0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c9d0: 75 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 32  ue, // DateTime2
c9e0: 20 28 32 36 29 0d 0a 20 20 20 20 20 20 44 42 4e   (26)..      DBN
c9f0: 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 44 61  ull.Value  // Da
ca00: 74 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32 37  teTimeOffset (27
ca10: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
ca20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ca30: 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f   object DbTypeTo
ca40: 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44 62 54  NumericScale(DbT
ca50: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
ca60: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64  .      return _d
ca70: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63  btypetonumericsc
ca80: 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a  ale[(int)typ];..
ca90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
caa0: 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
cab0: 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75  ct[] _dbtypetonu
cac0: 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b 0d 0a  mericscale = {..
cad0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
cae0: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
caf0: 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42 4e  g (0)..      DBN
cb00: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69  ull.Value, // Bi
cb10: 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20  nary (1)..      
cb20: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
cb30: 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20   Byte (2)..     
cb40: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
cb50: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
cb60: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
cb70: 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28     // Currency (
cb80: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
cb90: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20  .Value, // Date 
cba0: 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (5)..      DBNul
cbb0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65  l.Value, // Date
cbc0: 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20  Time (6)..      
cbd0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
cbe0: 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20   Decimal (7)..  
cbf0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
cc00: 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d  , // Double (8).
cc10: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
cc20: 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 29  lue, // Guid (9)
cc30: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
cc40: 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28        // Int16 (
cc50: 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  10)..      0,   
cc60: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33           // Int3
cc70: 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 30 2c  2 (11)..      0,
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
cc90: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
cca0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
ccb0: 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20  / Object (13).. 
ccc0: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
ccd0: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29     // SByte (14)
cce0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ccf0: 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c 65 20  alue, // Single 
cd00: 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (15)..      DBNu
cd10: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72  ll.Value, // Str
cd20: 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20  ing (16)..      
cd30: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
cd40: 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20   Time (17)..    
cd50: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
cd60: 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a  // UInt16 (18)..
cd70: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
cd80: 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31      // UInt32 (1
cd90: 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  9)..      0,    
cda0: 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36          // UInt6
cdb0: 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 30 2c  4 (20)..      0,
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56              // V
cdd0: 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a  arNumeric (21)..
cde0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
cdf0: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
ce00: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32  gFixedLength (22
ce10: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
ce20: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
ce30: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29  FixedLength (23)
ce40: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ce50: 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29  alue, // ?? (24)
ce60: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ce70: 61 6c 75 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35  alue, // Xml (25
ce80: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
ce90: 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 54 69  Value, // DateTi
cea0: 6d 65 32 20 28 32 36 29 0d 0a 20 20 20 20 20 20  me2 (26)..      
ceb0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f  DBNull.Value  //
cec0: 20 44 61 74 65 54 69 6d 65 4f 66 66 73 65 74 20   DateTimeOffset 
ced0: 28 32 37 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a  (27)..    };....
cee0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
cef0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
cf00: 6d 69 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c  mines the defaul
cf10: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
cf20: 6e 61 6d 65 20 74 6f 20 62 65 20 75 73 65 64 20  name to be used 
cf30: 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  when a..    /// 
cf40: 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76  per-connection v
cf50: 61 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69  alue is not avai
cf60: 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lable...    /// 
cf70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
cf80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
cf90: 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20  "connection">.. 
cfa0: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
cfb0: 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f  ction context fo
cfc0: 72 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c  r type mappings,
cfd0: 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f   if any...    //
cfe0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
cff0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
d000: 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75     /// The defau
d010: 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65  lt database type
d020: 20 6e 61 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20   name to use... 
d030: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d040: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
d050: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
d060: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28  DefaultTypeName(
d070: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
d080: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
d090: 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29  ction..        )
d0a0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
d0b0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d0c0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28  nFlags flags = (
d0d0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75  connection != nu
d0e0: 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ll) ?..         
d0f0: 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c     connection.Fl
d100: 61 67 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e  ags : SQLiteConn
d110: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65  ectionFlags.None
d120: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
d130: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48  (HelperMethods.H
d140: 61 73 46 6c 61 67 73 28 0d 0a 20 20 20 20 20 20  asFlags(..      
d150: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 2c            flags,
d160: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d170: 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74  nFlags.NoConvert
d180: 53 65 74 74 69 6e 67 73 29 29 0d 0a 20 20 20 20  Settings))..    
d190: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d1a0: 20 20 20 72 65 74 75 72 6e 20 46 61 6c 6c 62 61     return Fallba
d1b0: 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  ckDefaultTypeNam
d1c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
d1d0: 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
d1e0: 6e 61 6d 65 20 3d 20 22 55 73 65 5f 53 51 4c 69  name = "Use_SQLi
d1f0: 74 65 43 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c  teConvert_Defaul
d200: 74 54 79 70 65 4e 61 6d 65 22 3b 0d 0a 20 20 20  tTypeName";..   
d210: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
d220: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  e = null;..     
d230: 20 20 20 73 74 72 69 6e 67 20 40 64 65 66 61 75     string @defau
d240: 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  lt = null;....  
d250: 20 20 20 20 20 20 69 66 20 28 28 63 6f 6e 6e 65        if ((conne
d260: 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 20 7c  ction == null) |
d270: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 21  |..            !
d280: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65  connection.TryGe
d290: 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e  tCachedSetting(n
d2a0: 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 6f  ame, @default, o
d2b0: 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
d2c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d2d0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
d2e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d2f0: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 55         value = U
d300: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
d310: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
d320: 75 65 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c  ue(name, @defaul
d330: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
d340: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
d350: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
d360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
d370: 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44  alue = FallbackD
d380: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d  efaultTypeName;.
d390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
d3a0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
d3b0: 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
d3c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d3d0: 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
d3e0: 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on != null)..   
d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d400: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 43   connection.SetC
d410: 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d  achedSetting(nam
d420: 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  e, value);..    
d430: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
d440: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d450: 72 65 74 75 72 6e 20 53 65 74 74 69 6e 67 56 61  return SettingVa
d460: 6c 75 65 54 6f 53 74 72 69 6e 67 28 76 61 6c 75  lueToString(valu
d470: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69  e);..    }....#i
d480: 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32  f !NET_COMPACT_2
d490: 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49  0 && TRACE_WARNI
d4a0: 4e 47 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  NG..    /// <sum
d4b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  mary>..    /// I
d4c0: 66 20 61 70 70 6c 69 63 61 62 6c 65 2c 20 69 73  f applicable, is
d4d0: 73 75 65 73 20 61 20 74 72 61 63 65 20 6c 6f 67  sues a trace log
d4e0: 20 6d 65 73 73 61 67 65 20 77 61 72 6e 69 6e 67   message warning
d4f0: 20 61 62 6f 75 74 20 66 61 6c 6c 69 6e 67 20 62   about falling b
d500: 61 63 6b 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20  ack to..    /// 
d510: 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61  the default data
d520: 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d  base type name..
d530: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
d540: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
d550: 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65  ram name="dbType
d560: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
d570: 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74  database value t
d580: 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ype...    /// </
d590: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
d5a0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61  <param name="fla
d5b0: 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  gs">..    /// Th
d5c0: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
d5d0: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
d5e0: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
d5f0: 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ject...    /// <
d600: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
d610: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
d620: 70 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  peName">..    //
d630: 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 6e 61  / The textual na
d640: 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  me of the databa
d650: 73 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f  se type...    //
d660: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
d670: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76  private static v
d680: 6f 69 64 20 44 65 66 61 75 6c 74 54 79 70 65 4e  oid DefaultTypeN
d690: 61 6d 65 57 61 72 6e 69 6e 67 28 0d 0a 20 20 20  ameWarning(..   
d6a0: 20 20 20 20 20 44 62 54 79 70 65 20 64 62 54 79       DbType dbTy
d6b0: 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  pe,..        SQL
d6c0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d6d0: 67 73 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20  gs flags,..     
d6e0: 20 20 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61     string typeNa
d6f0: 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  me..        ).. 
d700: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
d710: 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e   (HelperMethods.
d720: 48 61 73 46 6c 61 67 73 28 66 6c 61 67 73 2c 20  HasFlags(flags, 
d730: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d740: 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69  Flags.TraceWarni
d750: 6e 67 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng))..        {.
d760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61  .            Tra
d770: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c  ce.WriteLine(Hel
d780: 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e  perMethods.Strin
d790: 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  gFormat(..      
d7a0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
d7b0: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
d7c0: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
d7d0: 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a         "WARNING:
d7e0: 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61   Type mapping fa
d7f0: 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20  iled, returning 
d800: 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b  default name \"{
d810: 30 7d 5c 22 20 66 6f 72 20 74 79 70 65 20 7b 31  0}\" for type {1
d820: 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  }.",..          
d830: 20 20 20 20 20 20 74 79 70 65 4e 61 6d 65 2c 20        typeName, 
d840: 64 62 54 79 70 65 29 29 3b 0d 0a 20 20 20 20 20  dbType));..     
d850: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
d860: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d870: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61 70 70  ..    /// If app
d880: 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65 73 20  licable, issues 
d890: 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65 73 73  a trace log mess
d8a0: 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62 6f 75  age warning abou
d8b0: 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74  t falling back t
d8c0: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 64  o..    /// the d
d8d0: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
d8e0: 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20 20  value type...   
d8f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d900: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d910: 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e  name="typeName">
d920: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
d930: 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68  xtual name of th
d940: 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65 2e  e database type.
d950: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d960: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
d970: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
d980: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
d990: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
d9a0: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
d9b0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
d9c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
d9d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
d9e0: 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65  ram name="dbType
d9f0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
da00: 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74  database value t
da10: 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ype...    /// </
da20: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76  param>..    priv
da30: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
da40: 44 65 66 61 75 6c 74 44 62 54 79 70 65 57 61 72  DefaultDbTypeWar
da50: 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73  ning(..        s
da60: 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d  tring typeName,.
da70: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
da80: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
da90: 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 44  lags,..        D
daa0: 62 54 79 70 65 3f 20 64 62 54 79 70 65 0d 0a 20  bType? dbType.. 
dab0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
dac0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74  .        if (!St
dad0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
dae0: 74 79 28 74 79 70 65 4e 61 6d 65 29 20 26 26 0d  ty(typeName) &&.
daf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 48 65 6c  .            Hel
db00: 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c  perMethods.HasFl
db10: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
db20: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
db30: 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d  .TraceWarning)).
db40: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
db50: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
db60: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
db70: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
db80: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
db90: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
dba0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
dbb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dbc0: 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79 70 65    "WARNING: Type
dbd0: 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65 64 2c   mapping failed,
dbe0: 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66 61 75   returning defau
dbf0: 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f 72 20  lt type {0} for 
dc00: 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22 2c 0d  name \"{1}\".",.
dc10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dc20: 20 64 62 54 79 70 65 2c 20 74 79 70 65 4e 61 6d   dbType, typeNam
dc30: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e));..        }.
dc40: 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
dc50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
dc60: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72  ry>..    /// For
dc70: 20 61 20 67 69 76 65 6e 20 64 61 74 61 62 61 73   a given databas
dc80: 65 20 76 61 6c 75 65 20 74 79 70 65 2c 20 72 65  e value type, re
dc90: 74 75 72 6e 20 74 68 65 20 22 63 6c 6f 73 65 73  turn the "closes
dca0: 74 2d 6d 61 74 63 68 22 20 74 65 78 74 75 61 6c  t-match" textual
dcb0: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
dcc0: 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ame...    /// </
dcd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
dce0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
dcf0: 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63  onnection">The c
dd00: 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78  onnection contex
dd10: 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70  t for custom typ
dd20: 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61  e mappings, if a
dd30: 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ny.</param>..   
dd40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
dd50: 3d 22 64 62 54 79 70 65 22 3e 54 68 65 20 64 61  ="dbType">The da
dd60: 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70  tabase value typ
dd70: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
dd80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
dd90: 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67  "flags">The flag
dda0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
ddb0: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
ddc0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c  nection object.<
ddd0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
dde0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 74 79   <returns>The ty
ddf0: 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e 20 65 6d  pe name or an em
de00: 70 74 79 20 73 74 72 69 6e 67 20 69 66 20 69 74  pty string if it
de10: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
de20: 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e  mined.</returns>
de30: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
de40: 74 61 74 69 63 20 73 74 72 69 6e 67 20 44 62 54  tatic string DbT
de50: 79 70 65 54 6f 54 79 70 65 4e 61 6d 65 28 0d 0a  ypeToTypeName(..
de60: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
de70: 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
de80: 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 44 62  ion,..        Db
de90: 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a 20 20  Type dbType,..  
dea0: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
deb0: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
dec0: 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  s..        )..  
ded0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 74 72    {..        str
dee0: 69 6e 67 20 64 65 66 61 75 6c 74 54 79 70 65 4e  ing defaultTypeN
def0: 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ame = null;.... 
df00: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
df10: 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ction != null)..
df20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
df30: 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20         flags |= 
df40: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73  connection.Flags
df50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
df60: 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
df70: 64 73 2e 48 61 73 46 6c 61 67 73 28 66 6c 61 67  ds.HasFlags(flag
df80: 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  s, SQLiteConnect
df90: 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e  ionFlags.UseConn
dfa0: 65 63 74 69 6f 6e 54 79 70 65 73 29 29 0d 0a 20  ectionTypes)).. 
dfb0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
dfd0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 63 6f  LiteDbTypeMap co
dfe0: 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
dff0: 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f  s = connection._
e000: 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20  typeNames;....  
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e020: 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65   (connectionType
e030: 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Names != null)..
e040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e050: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e060: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
e070: 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65  ypeMapping value
e080: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e090: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
e0a0: 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
e0b0: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 64 62 54  .TryGetValue(dbT
e0c0: 79 70 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29  ype, out value))
e0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e0e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e0f0: 20 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b   value.typeName;
e100: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e110: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e120: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e130: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e140: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74    // NOTE: Use t
e150: 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62  he default datab
e160: 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20 66 6f  ase type name fo
e170: 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
e180: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
e190: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  /..            d
e1a0: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
e1b0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61   connection.Defa
e1c0: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  ultTypeName;..  
e1d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e1e0: 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74     if (HelperMet
e1f0: 68 6f 64 73 2e 48 61 73 46 6c 61 67 73 28 66 6c  hods.HasFlags(fl
e200: 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ags, SQLiteConne
e210: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f  ctionFlags.NoGlo
e220: 62 61 6c 54 79 70 65 73 29 29 0d 0a 20 20 20 20  balTypes))..    
e230: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
e240: 20 20 20 69 66 20 28 64 65 66 61 75 6c 74 54 79     if (defaultTy
e250: 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d  peName != null).
e260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e270: 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54   return defaultT
e280: 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ypeName;....    
e290: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54          defaultT
e2a0: 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66  ypeName = GetDef
e2b0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e  aultTypeName(con
e2c0: 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66  nection);....#if
e2d0: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
e2e0: 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e   && TRACE_WARNIN
e2f0: 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  G..            D
e300: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61  efaultTypeNameWa
e310: 72 6e 69 6e 67 28 64 62 54 79 70 65 2c 20 66 6c  rning(dbType, fl
e320: 61 67 73 2c 20 64 65 66 61 75 6c 74 54 79 70 65  ags, defaultType
e330: 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Name);..#endif..
e340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
e350: 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65  turn defaultType
e360: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Name;..        }
e370: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ....        {.. 
e380: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
e390: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
e3a0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
e3b0: 20 20 20 20 20 69 66 20 28 28 5f 74 79 70 65 4e       if ((_typeN
e3c0: 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ames != null) &&
e3d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e3e0: 20 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79    _typeNames.Try
e3f0: 47 65 74 56 61 6c 75 65 28 64 62 54 79 70 65 2c  GetValue(dbType,
e400: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
e410: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e420: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
e430: 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e 61  urn value.typeNa
e440: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
e450: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
e460: 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 65 66  .        if (def
e470: 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 21 3d 20  aultTypeName != 
e480: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
e490: 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c     return defaul
e4a0: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tTypeName;....  
e4b0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 70        defaultTyp
e4c0: 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61 75  eName = GetDefau
e4d0: 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65  ltTypeName(conne
e4e0: 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ction);....#if !
e4f0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
e500: 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
e510: 0a 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74  .        Default
e520: 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28  TypeNameWarning(
e530: 64 62 54 79 70 65 2c 20 66 6c 61 67 73 2c 20 64  dbType, flags, d
e540: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 29 3b  efaultTypeName);
e550: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
e560: 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75      return defau
e570: 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  ltTypeName;..   
e580: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
e590: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
e5a0: 20 43 6f 6e 76 65 72 74 20 61 20 44 62 54 79 70   Convert a DbTyp
e5b0: 65 20 74 6f 20 61 20 54 79 70 65 0d 0a 20 20 20  e to a Type..   
e5c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e5d0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
e5e0: 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44  name="typ">The D
e5f0: 62 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  bType to convert
e600: 20 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20   from</param>.. 
e610: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
e620: 54 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63  The closest-matc
e630: 68 20 2e 4e 45 54 20 74 79 70 65 3c 2f 72 65 74  h .NET type</ret
e640: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
e650: 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65 20  nal static Type 
e660: 44 62 54 79 70 65 54 6f 54 79 70 65 28 44 62 54  DbTypeToType(DbT
e670: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
e680: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64  .      return _d
e690: 62 74 79 70 65 54 6f 54 79 70 65 5b 28 69 6e 74  btypeToType[(int
e6a0: 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  )typ];..    }...
e6b0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
e6c0: 74 69 63 20 54 79 70 65 5b 5d 20 5f 64 62 74 79  tic Type[] _dbty
e6d0: 70 65 54 6f 54 79 70 65 20 3d 20 7b 0d 0a 20 20  peToType = {..  
e6e0: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
e6f0: 67 29 2c 20 20 20 20 20 20 20 20 2f 2f 20 41 6e  g),        // An
e700: 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20  siString (0)..  
e710: 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b      typeof(byte[
e720: 5d 29 2c 20 20 20 20 20 20 20 20 2f 2f 20 42 69  ]),        // Bi
e730: 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20  nary (1)..      
e740: 74 79 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20  typeof(byte),   
e750: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
e760: 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  2)..      typeof
e770: 28 62 6f 6f 6c 29 2c 20 20 20 20 20 20 20 20 20  (bool),         
e780: 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d   // Boolean (3).
e790: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 65  .      typeof(de
e7a0: 63 69 6d 61 6c 29 2c 20 20 20 20 20 20 20 2f 2f  cimal),       //
e7b0: 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20   Currency (4).. 
e7c0: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
e7d0: 54 69 6d 65 29 2c 20 20 20 20 20 20 2f 2f 20 44  Time),      // D
e7e0: 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 74  ate (5)..      t
e7f0: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c  ypeof(DateTime),
e800: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d        // DateTim
e810: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 74 79 70  e (6)..      typ
e820: 65 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 20  eof(decimal),   
e830: 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28      // Decimal (
e840: 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  7)..      typeof
e850: 28 64 6f 75 62 6c 65 29 2c 20 20 20 20 20 20 20  (double),       
e860: 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a   // Double (8)..
e870: 20 20 20 20 20 20 74 79 70 65 6f 66 28 47 75 69        typeof(Gui
e880: 64 29 2c 20 20 20 20 20 20 20 20 20 20 2f 2f 20  d),          // 
e890: 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20  Guid (9)..      
e8a0: 74 79 70 65 6f 66 28 49 6e 74 31 36 29 2c 20 20  typeof(Int16),  
e8b0: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20         // Int16 
e8c0: 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (10)..      type
e8d0: 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20 20 20  of(Int32),      
e8e0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
e8f0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49  ..      typeof(I
e900: 6e 74 36 34 29 2c 20 20 20 20 20 20 20 20 20 2f  nt64),         /
e910: 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20  / Int64 (12)..  
e920: 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63      typeof(objec
e930: 74 29 2c 20 20 20 20 20 20 20 20 2f 2f 20 4f 62  t),        // Ob
e940: 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20  ject (13)..     
e950: 20 74 79 70 65 6f 66 28 73 62 79 74 65 29 2c 20   typeof(sbyte), 
e960: 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74 65          // SByte
e970: 20 28 31 34 29 0d 0a 20 20 20 20 20 20 74 79 70   (14)..      typ
e980: 65 6f 66 28 66 6c 6f 61 74 29 2c 20 20 20 20 20  eof(float),     
e990: 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31      // Single (1
e9a0: 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  5)..      typeof
e9b0: 28 73 74 72 69 6e 67 29 2c 20 20 20 20 20 20 20  (string),       
e9c0: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d   // String (16).
e9d0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
e9e0: 74 65 54 69 6d 65 29 2c 20 20 20 20 20 20 2f 2f  teTime),      //
e9f0: 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20   Time (17)..    
ea00: 20 20 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29    typeof(UInt16)
ea10: 2c 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74  ,        // UInt
ea20: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 74  16 (18)..      t
ea30: 79 70 65 6f 66 28 55 49 6e 74 33 32 29 2c 20 20  ypeof(UInt32),  
ea40: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20        // UInt32 
ea50: 28 31 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (19)..      type
ea60: 6f 66 28 55 49 6e 74 36 34 29 2c 20 20 20 20 20  of(UInt64),     
ea70: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30     // UInt64 (20
ea80: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
ea90: 64 6f 75 62 6c 65 29 2c 20 20 20 20 20 20 20 20  double),        
eaa0: 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32  // VarNumeric (2
eab0: 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  1)..      typeof
eac0: 28 73 74 72 69 6e 67 29 2c 20 20 20 20 20 20 20  (string),       
ead0: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
eae0: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
eaf0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
eb00: 69 6e 67 29 2c 20 20 20 20 20 20 20 20 2f 2f 20  ing),        // 
eb10: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
eb20: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74 79  h (23)..      ty
eb30: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
eb40: 20 20 20 20 20 2f 2f 20 3f 3f 20 28 32 34 29 0d       // ?? (24).
eb50: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
eb60: 72 69 6e 67 29 2c 20 20 20 20 20 20 20 20 2f 2f  ring),        //
eb70: 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 20   Xml (25)..     
eb80: 20 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65   typeof(DateTime
eb90: 29 2c 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54  ),      // DateT
eba0: 69 6d 65 32 20 28 32 36 29 0d 0a 23 69 66 20 21  ime2 (26)..#if !
ebb0: 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
ebc0: 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 28 4e 45  FRAMEWORK && (NE
ebd0: 54 5f 33 35 20 7c 7c 20 4e 45 54 5f 34 30 20 7c  T_35 || NET_40 |
ebe0: 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f  | NET_45 || NET_
ebf0: 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c  451 || NET_452 |
ec00: 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f  | NET_46 || NET_
ec10: 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32 20 7c  461 || NET_462 |
ec20: 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45 54 5f  | NET_47 || NET_
ec30: 34 37 31 20 7c 7c 20 4e 45 54 5f 34 37 32 29 0d  471 || NET_472).
ec40: 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
ec50: 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 74   // NOTE: This t
ec60: 79 70 65 20 69 73 20 6f 6e 6c 79 20 61 76 61 69  ype is only avai
ec70: 6c 61 62 6c 65 20 6f 6e 20 74 68 65 0d 0a 20 20  lable on the..  
ec80: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45      //       .NE
ec90: 54 20 46 72 61 6d 65 77 6f 72 6b 20 32 2e 30 20  T Framework 2.0 
eca0: 53 50 31 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a  SP1 and later...
ecb0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
ecc0: 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 4f  typeof(DateTimeO
ecd0: 66 66 73 65 74 29 20 2f 2f 20 44 61 74 65 54 69  ffset) // DateTi
ece0: 6d 65 4f 66 66 73 65 74 20 28 32 37 29 0d 0a 23  meOffset (27)..#
ecf0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 74 79 70 65  else..      type
ed00: 6f 66 28 44 61 74 65 54 69 6d 65 29 20 20 20 20  of(DateTime)    
ed10: 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 4f 66     // DateTimeOf
ed20: 66 73 65 74 20 28 32 37 29 0d 0a 23 65 6e 64 69  fset (27)..#endi
ed30: 66 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  f..    };....   
ed40: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ed50: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69      /// For a gi
ed60: 76 65 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e  ven type, return
ed70: 20 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74   the closest-mat
ed80: 63 68 20 53 51 4c 69 74 65 20 54 79 70 65 41 66  ch SQLite TypeAf
ed90: 66 69 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e  finity, which on
eda0: 6c 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61  ly understands a
edb0: 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75   very limited su
edc0: 62 73 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a  bset of types...
edd0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ede0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
edf0: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68  am name="typ">Th
ee00: 65 20 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61  e type to evalua
ee10: 74 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  te</param>..    
ee20: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ee30: 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67  "flags">The flag
ee40: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
ee50: 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  h the connection
ee60: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
ee70: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
ee80: 53 51 4c 69 74 65 20 74 79 70 65 20 61 66 66 69  SQLite type affi
ee90: 6e 69 74 79 20 66 6f 72 20 74 68 61 74 20 74 79  nity for that ty
eea0: 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  pe.</returns>.. 
eeb0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
eec0: 69 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  ic TypeAffinity 
eed0: 54 79 70 65 54 6f 41 66 66 69 6e 69 74 79 28 0d  TypeToAffinity(.
eee0: 0a 20 20 20 20 20 20 20 20 54 79 70 65 20 74 79  .        Type ty
eef0: 70 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  p,..        SQLi
ef00: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
ef10: 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20  s flags..       
ef20: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
ef30: 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54   TypeCode tc = T
ef40: 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28  ype.GetTypeCode(
ef50: 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20  typ);..      if 
ef60: 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e  (tc == TypeCode.
ef70: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b  Object)..      {
ef80: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79  ..        if (ty
ef90: 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65  p == typeof(byte
efa0: 5b 5d 29 20 7c 7c 20 74 79 70 20 3d 3d 20 74 79  []) || typ == ty
efb0: 70 65 6f 66 28 47 75 69 64 29 29 0d 0a 20 20 20  peof(Guid))..   
efc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 79         return Ty
efd0: 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3b  peAffinity.Blob;
efe0: 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
eff0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f000: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
f010: 78 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  xt;..      }..  
f020: 20 20 20 20 69 66 20 28 28 74 63 20 3d 3d 20 54      if ((tc == T
f030: 79 70 65 43 6f 64 65 2e 44 65 63 69 6d 61 6c 29  ypeCode.Decimal)
f040: 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 48   &&..          H
f050: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73  elperMethods.Has
f060: 46 6c 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c  Flags(flags, SQL
f070: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
f080: 67 73 2e 47 65 74 44 65 63 69 6d 61 6c 41 73 54  gs.GetDecimalAsT
f090: 65 78 74 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ext))..      {..
f0a0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
f0b0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
f0c0: 78 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  xt;..      }..  
f0d0: 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65      return _type
f0e0: 63 6f 64 65 41 66 66 69 6e 69 74 69 65 73 5b 28  codeAffinities[(
f0f0: 69 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d  int)tc];..    }.
f100: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
f110: 74 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69  tatic TypeAffini
f120: 74 79 5b 5d 20 5f 74 79 70 65 63 6f 64 65 41 66  ty[] _typecodeAf
f130: 66 69 6e 69 74 69 65 73 20 3d 20 7b 0d 0a 20 20  finities = {..  
f140: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
f150: 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 45 6d  .Null,     // Em
f160: 70 74 79 20 28 30 29 0d 0a 20 20 20 20 20 20 54  pty (0)..      T
f170: 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62  ypeAffinity.Blob
f180: 2c 20 20 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20  ,     // Object 
f190: 28 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (1)..      TypeA
f1a0: 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20  ffinity.Null,   
f1b0: 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d    // DBNull (2).
f1c0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
f1d0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
f1e0: 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20   Boolean (3)..  
f1f0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
f200: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 43 68  .Int64,    // Ch
f210: 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20 54 79  ar (4)..      Ty
f220: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
f230: 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35  ,    // SByte (5
f240: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
f250: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
f260: 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20  // Byte (6)..   
f270: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
f280: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74  Int64,    // Int
f290: 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20 54 79  16 (7)..      Ty
f2a0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
f2b0: 2c 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28  ,    // UInt16 (
f2c0: 38 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  8)..      TypeAf
f2d0: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
f2e0: 20 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20   // Int32 (9).. 
f2f0: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
f300: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55  y.Int64,    // U
f310: 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20  Int32 (10)..    
f320: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
f330: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 36  nt64,    // Int6
f340: 34 20 28 31 31 29 0d 0a 20 20 20 20 20 20 54 79  4 (11)..      Ty
f350: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
f360: 2c 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28  ,    // UInt64 (
f370: 31 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  12)..      TypeA
f380: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20  ffinity.Double, 
f390: 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29    // Single (13)
f3a0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
f3b0: 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f  nity.Double,   /
f3c0: 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20  / Double (14).. 
f3d0: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
f3e0: 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44  y.Double,   // D
f3f0: 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20  ecimal (15)..   
f400: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
f410: 44 61 74 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74  DateTime, // Dat
f420: 65 54 69 6d 65 20 28 31 36 29 0d 0a 20 20 20 20  eTime (16)..    
f430: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e    TypeAffinity.N
f440: 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f 20 28  ull,     // ?? (
f450: 31 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  17)..      TypeA
f460: 66 66 69 6e 69 74 79 2e 54 65 78 74 20 20 20 20  ffinity.Text    
f470: 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29    // String (18)
f480: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
f490: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f4a0: 20 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 6e     /// Builds an
f4b0: 64 20 72 65 74 75 72 6e 73 20 61 20 6d 61 70 20  d returns a map 
f4c0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64  containing the d
f4d0: 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74  atabase column t
f4e0: 79 70 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 65  ypes..    /// re
f4f0: 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73  cognized by this
f500: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
f510: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f520: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
f530: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 6d 61 70  >..    /// A map
f540: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
f550: 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20  database column 
f560: 74 79 70 65 73 20 72 65 63 6f 67 6e 69 7a 65 64  types recognized
f570: 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f   by this..    //
f580: 2f 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20  / provider...   
f590: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
f5a0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
f5b0: 74 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  tic SQLiteDbType
f5c0: 4d 61 70 20 47 65 74 53 51 4c 69 74 65 44 62 54  Map GetSQLiteDbT
f5d0: 79 70 65 4d 61 70 28 29 0d 0a 20 20 20 20 7b 0d  ypeMap()..    {.
f5e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
f5f0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f600: 4d 61 70 28 6e 65 77 20 53 51 4c 69 74 65 44 62  Map(new SQLiteDb
f610: 54 79 70 65 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d  TypeMapping[] {.
f620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f630: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f640: 70 69 6e 67 28 22 42 49 47 49 4e 54 22 2c 20 44  ping("BIGINT", D
f650: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
f660: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f670: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f680: 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 55 49  peMapping("BIGUI
f690: 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  NT", DbType.UInt
f6a0: 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
f6b0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f6c0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f6d0: 28 22 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70  ("BINARY", DbTyp
f6e0: 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29  e.Binary, false)
f6f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f700: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f710: 61 70 70 69 6e 67 28 22 42 49 54 22 2c 20 44 62  apping("BIT", Db
f720: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72  Type.Boolean, tr
f730: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
f740: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f750: 70 65 4d 61 70 70 69 6e 67 28 22 42 4c 4f 42 22  peMapping("BLOB"
f760: 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c  , DbType.Binary,
f770: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
f780: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f790: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f  bTypeMapping("BO
f7a0: 4f 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c  OL", DbType.Bool
f7b0: 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ean, false),..  
f7c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f7d0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f7e0: 67 28 22 42 4f 4f 4c 45 41 4e 22 2c 20 44 62 54  g("BOOLEAN", DbT
f7f0: 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c  ype.Boolean, fal
f800: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f810: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f820: 70 65 4d 61 70 70 69 6e 67 28 22 43 48 41 52 22  peMapping("CHAR"
f830: 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72  , DbType.AnsiStr
f840: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20  ingFixedLength, 
f850: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f860: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f870: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 4c 4f  TypeMapping("CLO
f880: 42 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  B", DbType.Strin
f890: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
f8a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f8b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f8c0: 22 43 4f 55 4e 54 45 52 22 2c 20 44 62 54 79 70  "COUNTER", DbTyp
f8d0: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
f8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f8f0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f900: 70 70 69 6e 67 28 22 43 55 52 52 45 4e 43 59 22  pping("CURRENCY"
f910: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
f920: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f930: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f940: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f950: 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61  DATE", DbType.Da
f960: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
f970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f980: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f990: 70 69 6e 67 28 22 44 41 54 45 54 49 4d 45 22 2c  ping("DATETIME",
f9a0: 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65   DbType.DateTime
f9b0: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
f9c0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f9d0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
f9e0: 45 43 49 4d 41 4c 22 2c 20 44 62 54 79 70 65 2e  ECIMAL", DbType.
f9f0: 44 65 63 69 6d 61 6c 2c 20 74 72 75 65 29 2c 0d  Decimal, true),.
fa00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fa10: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa20: 70 69 6e 67 28 22 44 45 43 49 4d 41 4c 54 45 58  ping("DECIMALTEX
fa30: 54 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d  T", DbType.Decim
fa40: 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  al, false),..   
fa50: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fa60: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fa70: 28 22 44 4f 55 42 4c 45 22 2c 20 44 62 54 79 70  ("DOUBLE", DbTyp
fa80: 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29  e.Double, false)
fa90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
faa0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fab0: 61 70 70 69 6e 67 28 22 46 4c 4f 41 54 22 2c 20  apping("FLOAT", 
fac0: 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66  DbType.Double, f
fad0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fae0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
faf0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 45 4e  TypeMapping("GEN
fb00: 45 52 41 4c 22 2c 20 44 62 54 79 70 65 2e 42 69  ERAL", DbType.Bi
fb10: 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nary, false),.. 
fb20: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fb30: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fb40: 6e 67 28 22 47 55 49 44 22 2c 20 44 62 54 79 70  ng("GUID", DbTyp
fb50: 65 2e 47 75 69 64 2c 20 66 61 6c 73 65 29 2c 0d  e.Guid, false),.
fb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fb70: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fb80: 70 69 6e 67 28 22 49 44 45 4e 54 49 54 59 22 2c  ping("IDENTITY",
fb90: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66   DbType.Int64, f
fba0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fbb0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fbc0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4d 41  TypeMapping("IMA
fbd0: 47 45 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  GE", DbType.Bina
fbe0: 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
fbf0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fc00: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fc10: 28 22 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  ("INT", DbType.I
fc20: 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
fc30: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fc40: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fc50: 67 28 22 49 4e 54 38 22 2c 20 44 62 54 79 70 65  g("INT8", DbType
fc60: 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  .SByte, false),.
fc70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fc80: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fc90: 70 69 6e 67 28 22 49 4e 54 31 36 22 2c 20 44 62  ping("INT16", Db
fca0: 54 79 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73  Type.Int16, fals
fcb0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fcc0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fcd0: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 33 32 22  eMapping("INT32"
fce0: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
fcf0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fd00: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fd10: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
fd20: 54 36 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  T64", DbType.Int
fd30: 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
fd40: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fd50: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fd60: 28 22 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  ("INTEGER", DbTy
fd70: 70 65 2e 49 6e 74 36 34 2c 20 74 72 75 65 29 2c  pe.Int64, true),
fd80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fd90: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fda0: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 38 22  pping("INTEGER8"
fdb0: 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20  , DbType.SByte, 
fdc0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fdd0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fde0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
fdf0: 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
fe00: 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d  .Int16, false),.
fe10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fe20: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fe30: 70 69 6e 67 28 22 49 4e 54 45 47 45 52 33 32 22  ping("INTEGER32"
fe40: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
fe50: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fe60: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fe70: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
fe80: 54 45 47 45 52 36 34 22 2c 20 44 62 54 79 70 65  TEGER64", DbType
fe90: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
fea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
feb0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fec0: 70 69 6e 67 28 22 4c 4f 47 49 43 41 4c 22 2c 20  ping("LOGICAL", 
fed0: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
fee0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fef0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
ff00: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f  bTypeMapping("LO
ff10: 4e 47 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  NG", DbType.Int6
ff20: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
ff30: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ff40: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ff50: 22 4c 4f 4e 47 43 48 41 52 22 2c 20 44 62 54 79  "LONGCHAR", DbTy
ff60: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
ff70: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ff80: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
ff90: 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 54 45 58  Mapping("LONGTEX
ffa0: 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  T", DbType.Strin
ffb0: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
ffc0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ffd0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ffe0: 22 4c 4f 4e 47 56 41 52 43 48 41 52 22 2c 20 44  "LONGVARCHAR", D
fff0: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
10000 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10010 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10020 79 70 65 4d 61 70 70 69 6e 67 28 22 4d 45 4d 4f  ypeMapping("MEMO
10030 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
10040 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
10050 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10060 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10070 4d 4f 4e 45 59 22 2c 20 44 62 54 79 70 65 2e 44  MONEY", DbType.D
10080 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
10090 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
100a0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
100b0 70 69 6e 67 28 22 4e 43 48 41 52 22 2c 20 44 62  ping("NCHAR", Db
100c0 54 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64  Type.StringFixed
100d0 4c 65 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a  Length, true),..
100e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
100f0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10100 69 6e 67 28 22 4e 4f 54 45 22 2c 20 44 62 54 79  ing("NOTE", DbTy
10110 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
10120 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
10130 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10140 4d 61 70 70 69 6e 67 28 22 4e 54 45 58 54 22 2c  Mapping("NTEXT",
10150 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
10160 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10170 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10180 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55  bTypeMapping("NU
10190 4d 42 45 52 22 2c 20 44 62 54 79 70 65 2e 44 65  MBER", DbType.De
101a0 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a  cimal, false),..
101b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
101c0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
101d0 69 6e 67 28 22 4e 55 4d 45 52 49 43 22 2c 20 44  ing("NUMERIC", D
101e0 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66  bType.Decimal, f
101f0 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10200 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10210 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d  TypeMapping("NUM
10220 45 52 49 43 54 45 58 54 22 2c 20 44 62 54 79 70  ERICTEXT", DbTyp
10230 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65  e.Decimal, false
10240 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
10250 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10260 4d 61 70 70 69 6e 67 28 22 4e 56 41 52 43 48 41  Mapping("NVARCHA
10270 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  R", DbType.Strin
10280 67 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  g, true),..     
10290 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
102a0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
102b0 4f 4c 45 4f 42 4a 45 43 54 22 2c 20 44 62 54 79  OLEOBJECT", DbTy
102c0 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65  pe.Binary, false
102d0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
102e0 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
102f0 4d 61 70 70 69 6e 67 28 22 52 41 57 22 2c 20 44  Mapping("RAW", D
10300 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
10310 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10320 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10330 79 70 65 4d 61 70 70 69 6e 67 28 22 52 45 41 4c  ypeMapping("REAL
10340 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65  ", DbType.Double
10350 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
10360 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10370 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53  DbTypeMapping("S
10380 49 4e 47 4c 45 22 2c 20 44 62 54 79 70 65 2e 53  INGLE", DbType.S
10390 69 6e 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20  ingle, true),.. 
103a0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
103b0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
103c0 6e 67 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20  ng("SMALLDATE", 
103d0 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
103e0 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
103f0 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10400 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53  DbTypeMapping("S
10410 4d 41 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70 65  MALLINT", DbType
10420 2e 49 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a  .Int16, true),..
10430 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10440 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10450 69 6e 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c  ing("SMALLUINT",
10460 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20   DbType.UInt16, 
10470 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
10480 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10490 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 54 52  TypeMapping("STR
104a0 49 4e 47 22 2c 20 44 62 54 79 70 65 2e 53 74 72  ING", DbType.Str
104b0 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
104c0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
104d0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
104e0 67 28 22 54 45 58 54 22 2c 20 44 62 54 79 70 65  g("TEXT", DbType
104f0 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
10500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10510 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10520 70 70 69 6e 67 28 22 54 49 4d 45 22 2c 20 44 62  pping("TIME", Db
10530 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66  Type.DateTime, f
10540 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10550 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10560 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d  TypeMapping("TIM
10570 45 53 54 41 4d 50 22 2c 20 44 62 54 79 70 65 2e  ESTAMP", DbType.
10580 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29  DateTime, false)
10590 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
105a0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
105b0 61 70 70 69 6e 67 28 22 54 49 4e 59 49 4e 54 22  apping("TINYINT"
105c0 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c 20 74  , DbType.Byte, t
105d0 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
105e0 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
105f0 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59  ypeMapping("TINY
10600 53 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 53 42  SINT", DbType.SB
10610 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  yte, true),..   
10620 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10630 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10640 28 22 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  ("UINT", DbType.
10650 55 49 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a  UInt32, true),..
10660 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10670 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10680 69 6e 67 28 22 55 49 4e 54 38 22 2c 20 44 62 54  ing("UINT8", DbT
10690 79 70 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29  ype.Byte, false)
106a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
106b0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
106c0 61 70 70 69 6e 67 28 22 55 49 4e 54 31 36 22 2c  apping("UINT16",
106d0 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20   DbType.UInt16, 
106e0 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
106f0 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10700 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49  bTypeMapping("UI
10710 4e 54 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49  NT32", DbType.UI
10720 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt32, false),.. 
10730 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
10740 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10750 6e 67 28 22 55 49 4e 54 36 34 22 2c 20 44 62 54  ng("UINT64", DbT
10760 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73  ype.UInt64, fals
10770 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10780 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10790 65 4d 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22  eMapping("ULONG"
107a0 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c  , DbType.UInt64,
107b0 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
107c0 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
107d0 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
107e0 4e 49 51 55 45 49 44 45 4e 54 49 46 49 45 52 22  NIQUEIDENTIFIER"
107f0 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c 20 74  , DbType.Guid, t
10800 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
10810 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10820 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49  ypeMapping("UNSI
10830 47 4e 45 44 49 4e 54 45 47 45 52 22 2c 20 44 62  GNEDINTEGER", Db
10840 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 74 72 75  Type.UInt64, tru
10850 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10860 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10870 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
10880 45 44 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54  EDINTEGER8", DbT
10890 79 70 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29  ype.Byte, false)
108a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
108b0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
108c0 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
108d0 49 4e 54 45 47 45 52 31 36 22 2c 20 44 62 54 79  INTEGER16", DbTy
108e0 70 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65  pe.UInt16, false
108f0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
10900 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10910 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45  Mapping("UNSIGNE
10920 44 49 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54  DINTEGER32", DbT
10930 79 70 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73  ype.UInt32, fals
10940 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10950 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10960 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
10970 45 44 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62  EDINTEGER64", Db
10980 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c  Type.UInt64, fal
10990 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
109a0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
109b0 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 42 49  peMapping("VARBI
109c0 4e 41 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69  NARY", DbType.Bi
109d0 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nary, false),.. 
109e0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
109f0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10a00 6e 67 28 22 56 41 52 43 48 41 52 22 2c 20 44 62  ng("VARCHAR", Db
10a10 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c  Type.AnsiString,
10a20 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
10a30 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10a40 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41  bTypeMapping("VA
10a50 52 43 48 41 52 32 22 2c 20 44 62 54 79 70 65 2e  RCHAR2", DbType.
10a60 41 6e 73 69 53 74 72 69 6e 67 2c 20 66 61 6c 73  AnsiString, fals
10a70 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10a80 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10a90 65 4d 61 70 70 69 6e 67 28 22 59 45 53 4e 4f 22  eMapping("YESNO"
10aa0 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e  , DbType.Boolean
10ab0 2c 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20  , false)..      
10ac0 20 20 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a    });..    }....
10ad0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10ae0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
10af0 6d 69 6e 65 73 20 69 66 20 61 20 64 61 74 61 62  mines if a datab
10b00 61 73 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73  ase type is cons
10b10 69 64 65 72 65 64 20 74 6f 20 62 65 20 61 20 73  idered to be a s
10b20 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tring...    /// 
10b30 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
10b40 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
10b50 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  "type">..    ///
10b60 20 54 68 65 20 64 61 74 61 62 61 73 65 20 74 79   The database ty
10b70 70 65 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20  pe to check...  
10b80 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
10b90 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
10ba0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a  >..    /// Non-z
10bb0 65 72 6f 20 69 66 20 74 68 65 20 64 61 74 61 62  ero if the datab
10bc0 61 73 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73  ase type is cons
10bd0 69 64 65 72 65 64 20 74 6f 20 62 65 20 61 20 73  idered to be a s
10be0 74 72 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20 20  tring, zero..   
10bf0 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e 0d   /// otherwise..
10c00 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
10c10 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
10c20 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
10c30 53 74 72 69 6e 67 44 62 54 79 70 65 28 0d 0a 20  StringDbType(.. 
10c40 20 20 20 20 20 20 20 44 62 54 79 70 65 20 74 79         DbType ty
10c50 70 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  pe..        ).. 
10c60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77     {..        sw
10c70 69 74 63 68 20 28 74 79 70 65 29 0d 0a 20 20 20  itch (type)..   
10c80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10c90 20 20 20 20 63 61 73 65 20 44 62 54 79 70 65 2e      case DbType.
10ca0 41 6e 73 69 53 74 72 69 6e 67 3a 0d 0a 20 20 20  AnsiString:..   
10cb0 20 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62           case Db
10cc0 54 79 70 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20  Type.String:..  
10cd0 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 44            case D
10ce0 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67  bType.AnsiString
10cf0 46 69 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20  FixedLength:..  
10d00 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 44            case D
10d10 62 54 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65  bType.StringFixe
10d20 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20  dLength:..      
10d30 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
10d40 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
10d50 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
10d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10d70 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
10d80 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
10d90 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
10da0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
10db0 72 6d 69 6e 65 73 20 61 6e 64 20 72 65 74 75 72  rmines and retur
10dc0 6e 73 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63  ns the runtime c
10dd0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74  onfiguration set
10de0 74 69 6e 67 20 73 74 72 69 6e 67 20 74 68 61 74  ting string that
10df0 0d 0a 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64  ..    /// should
10e00 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63   be used in plac
10e10 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
10e20 65 64 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2e  ed object value.
10e30 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
10e40 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
10e50 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
10e60 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
10e70 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 74 6f 20  object value to 
10e80 63 6f 6e 76 65 72 74 20 74 6f 20 61 20 73 74 72  convert to a str
10e90 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
10ea0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
10eb0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
10ec0 2f 2f 20 45 69 74 68 65 72 20 74 68 65 20 73 74  // Either the st
10ed0 72 69 6e 67 20 74 6f 20 75 73 65 20 69 6e 20 70  ring to use in p
10ee0 6c 61 63 65 20 6f 66 20 74 68 65 20 6f 62 6a 65  lace of the obje
10ef0 63 74 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75  ct value -OR- nu
10f00 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20 2f 2f  ll if it..    //
10f10 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65  / cannot be dete
10f20 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  rmined...    ///
10f30 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
10f40 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
10f50 73 74 72 69 6e 67 20 53 65 74 74 69 6e 67 56 61  string SettingVa
10f60 6c 75 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20  lueToString(..  
10f70 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
10f80 75 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  ue..        ).. 
10f90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
10fa0 20 28 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e   (value is strin
10fb0 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
10fc0 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29 76  return (string)v
10fd0 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
10fe0 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
10ff0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
11000 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f   return value.To
11010 53 74 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20  String();....   
11020 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
11030 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
11040 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11050 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
11060 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 3c 73  s the default <s
11070 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65 22  ee cref="DbType"
11080 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20   /> value to be 
11090 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20  used when a..   
110a0 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74   /// per-connect
110b0 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74  ion value is not
110c0 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
110d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
110e0 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
110f0 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e  name="connection
11100 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
11110 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65  connection conte
11120 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70  xt for type mapp
11130 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  ings, if any... 
11140 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11150 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
11160 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
11170 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65  default <see cre
11180 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
11190 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  lue to use...   
111a0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
111b0 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
111c0 74 69 63 20 44 62 54 79 70 65 20 47 65 74 44 65  tic DbType GetDe
111d0 66 61 75 6c 74 44 62 54 79 70 65 28 0d 0a 20 20  faultDbType(..  
111e0 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
111f0 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
11200 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  n..        )..  
11210 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c    {..        SQL
11220 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
11230 67 73 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e 6e  gs flags = (conn
11240 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20  ection != null) 
11250 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ?..            c
11260 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 20  onnection.Flags 
11270 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  : SQLiteConnecti
11280 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d  onFlags.None;...
11290 0a 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c  .        if (Hel
112a0 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c  perMethods.HasFl
112b0 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ags(..          
112c0 20 20 20 20 20 20 66 6c 61 67 73 2c 20 53 51 4c        flags, SQL
112d0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
112e0 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
112f0 69 6e 67 73 29 29 0d 0a 20 20 20 20 20 20 20 20  ings))..        
11300 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
11310 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65  eturn FallbackDe
11320 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
11330 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11340 20 20 20 62 6f 6f 6c 20 66 6f 75 6e 64 20 3d 20     bool found = 
11350 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
11360 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55  string name = "U
11370 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  se_SQLiteConvert
11380 5f 44 65 66 61 75 6c 74 44 62 54 79 70 65 22 3b  _DefaultDbType";
11390 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
113a0 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
113b0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
113c0 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d  default = null;.
113d0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
113e0 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75  connection == nu
113f0 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ll) ||..        
11400 20 20 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e      !connection.
11410 54 72 79 47 65 74 43 61 63 68 65 64 53 65 74 74  TryGetCachedSett
11420 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75  ing(name, @defau
11430 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  lt, out value)).
11440 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11450 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
11460 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
11470 6f 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61  ods.GetSettingVa
11480 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65 66 61 75  lue(name, @defau
11490 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lt);....        
114a0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
114b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
114c0 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
114d0 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44  FallbackDefaultD
114e0 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  bType;..        
114f0 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d  }..        else.
11500 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11510 20 20 20 20 20 20 20 20 66 6f 75 6e 64 20 3d 20          found = 
11520 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  true;..        }
11530 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
11540 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11550 20 20 20 20 20 20 20 20 69 66 20 28 21 28 76 61          if (!(va
11560 6c 75 65 20 69 73 20 44 62 54 79 70 65 29 29 0d  lue is DbType)).
11570 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
11580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11590 76 61 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f  value = SQLiteCo
115a0 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 50 61 72 73  nnection.TryPars
115b0 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20  eEnum(..        
115c0 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
115d0 6f 66 28 44 62 54 79 70 65 29 2c 20 53 65 74 74  of(DbType), Sett
115e0 69 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67  ingValueToString
115f0 28 76 61 6c 75 65 29 2c 20 74 72 75 65 29 3b 0d  (value), true);.
11600 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11610 20 20 20 69 66 20 28 21 28 76 61 6c 75 65 20 69     if (!(value i
11620 73 20 44 62 54 79 70 65 29 29 0d 0a 20 20 20 20  s DbType))..    
11630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11640 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b  value = Fallback
11650 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  DefaultDbType;..
11660 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
11670 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
11680 75 72 6e 20 28 44 62 54 79 70 65 29 76 61 6c 75  urn (DbType)valu
11690 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
116a0 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
116b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
116c0 20 20 20 20 20 20 20 69 66 20 28 21 66 6f 75 6e         if (!foun
116d0 64 20 26 26 20 28 63 6f 6e 6e 65 63 74 69 6f 6e  d && (connection
116e0 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   != null))..    
116f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e              conn
11700 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64  ection.SetCached
11710 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61  Setting(name, va
11720 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  lue);..        }
11730 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11740 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11750 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74    /// Converts t
11760 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c  he object value,
11770 20 77 68 69 63 68 20 69 73 20 61 73 73 75 6d 65   which is assume
11780 64 20 74 6f 20 68 61 76 65 20 6f 72 69 67 69 6e  d to have origin
11790 61 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 66 72  ated..    /// fr
117a0 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  om a <see cref="
117b0 44 61 74 61 52 6f 77 22 20 2f 3e 2c 20 74 6f 20  DataRow" />, to 
117c0 61 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2e 0d  a string value..
117d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
117e0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
117f0 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
11800 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 76  >..    /// The v
11810 61 6c 75 65 20 74 6f 20 62 65 20 63 6f 6e 76 65  alue to be conve
11820 72 74 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67  rted to a string
11830 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
11840 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
11850 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
11860 41 20 6e 75 6c 6c 20 76 61 6c 75 65 20 77 69 6c  A null value wil
11870 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  l be returned if
11880 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 61   the original va
11890 6c 75 65 20 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d  lue is null -OR-
118a0 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 72  ..    /// the or
118b0 69 67 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20  iginal value is 
118c0 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c  <see cref="DBNul
118d0 6c 2e 56 61 6c 75 65 22 20 2f 3e 2e 20 20 4f 74  l.Value" />.  Ot
118e0 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 2f 2f  herwise,..    //
118f0 2f 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76  / the original v
11900 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e  alue will be con
11910 76 65 72 74 65 64 20 74 6f 20 61 20 73 74 72 69  verted to a stri
11920 6e 67 2c 20 75 73 69 6e 67 20 69 74 73 0d 0a 20  ng, using its.. 
11930 20 20 20 2f 2f 2f 20 28 70 6f 73 73 69 62 6c 79     /// (possibly
11940 20 6f 76 65 72 72 69 64 64 65 6e 29 20 3c 73 65   overridden) <se
11950 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 2e 54  e cref="Object.T
11960 6f 53 74 72 69 6e 67 22 20 2f 3e 20 6d 65 74 68  oString" /> meth
11970 6f 64 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  od and..    /// 
11980 74 68 65 6e 20 72 65 74 75 72 6e 65 64 2e 0d 0a  then returned...
11990 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
119a0 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
119b0 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
119c0 53 74 72 69 6e 67 4f 72 4e 75 6c 6c 28 0d 0a 20  StringOrNull(.. 
119d0 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
119e0 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  lue..        )..
119f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
11a00 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
11a10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
11a20 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
11a30 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
11a40 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
11a50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11a60 28 73 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d 0a  (string)value;..
11a70 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61  ..        if (va
11a80 6c 75 65 20 3d 3d 20 44 42 4e 75 6c 6c 2e 56 61  lue == DBNull.Va
11a90 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  lue)..          
11aa0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
11ab0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
11ac0 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28   value.ToString(
11ad0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
11ae0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11af0 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
11b00 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69 66  es if the specif
11b10 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75  ied textual valu
11b20 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20  e appears to be 
11b30 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  a..    /// <see 
11b40 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e  cref="DBNull" />
11b50 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
11b60 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11b70 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11b80 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f  ="text">..    //
11b90 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76 61  / The textual va
11ba0 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  lue to inspect..
11bb0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
11bc0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
11bd0 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  rns>..    /// No
11be0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65  n-zero if the te
11bf0 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20  xt looks like a 
11c00 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c  <see cref="DBNul
11c10 6c 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20  l" /> value,..  
11c20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72    /// zero other
11c30 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  wise...    /// <
11c40 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
11c50 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62  nternal static b
11c60 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75 6c  ool LooksLikeNul
11c70 6c 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  l(..        stri
11c80 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20  ng text..       
11c90 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
11ca0 20 20 20 72 65 74 75 72 6e 20 28 74 65 78 74 20     return (text 
11cb0 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d  == null);..    }
11cc0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
11cd0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
11ce0 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
11cf0 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75   specified textu
11d00 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73  al value appears
11d10 20 74 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20 2f   to be an..    /
11d20 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
11d30 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  t64" /> value...
11d40 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11d50 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
11d60 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d  am name="text">.
11d70 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78  .    /// The tex
11d80 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e  tual value to in
11d90 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  spect...    /// 
11da0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
11db0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
11dc0 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
11dd0 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20   the text looks 
11de0 6c 69 6b 65 20 61 6e 20 3c 73 65 65 20 63 72 65  like an <see cre
11df0 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c  f="Int64" /> val
11e00 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72  ue,..    /// zer
11e10 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
11e20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
11e30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11e40 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73  tatic bool Looks
11e50 4c 69 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20 20  LikeInt64(..    
11e60 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d      string text.
11e70 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11e80 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  {..        long 
11e90 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69  longValue;....#i
11ea0 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
11eb0 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
11ec0 20 20 20 20 20 20 69 66 20 28 21 6c 6f 6e 67 2e        if (!long.
11ed0 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20 20  TryParse(..     
11ee0 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c             text,
11ef0 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e   NumberStyles.In
11f00 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e  teger, CultureIn
11f10 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
11f20 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
11f30 20 20 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56 61        out longVa
11f40 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
11f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
11f60 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
11f70 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20       }..#else.. 
11f80 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
11f90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11fa0 20 20 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20 6c     longValue = l
11fb0 6f 6e 67 2e 50 61 72 73 65 28 0d 0a 20 20 20 20  ong.Parse(..    
11fc0 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
11fd0 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49  , NumberStyles.I
11fe0 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49  nteger, CultureI
11ff0 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
12000 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ture);..        
12010 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
12020 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
12030 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12040 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
12050 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
12060 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
12070 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ng.Equals(..    
12080 20 20 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75          longValu
12090 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75  e.ToString(Cultu
120a0 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
120b0 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d  Culture), text,.
120c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72  .            Str
120d0 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
120e0 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a  dinal);..    }..
120f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
12100 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
12110 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73  ermines if the s
12120 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c  pecified textual
12130 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74   value appears t
12140 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  o be a..    /// 
12150 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
12160 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
12170 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12180 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
12190 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20   name="text">.. 
121a0 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
121b0 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70  al value to insp
121c0 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
121d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
121e0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
121f0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
12200 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69  he text looks li
12210 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ke a <see cref="
12220 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
12230 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20  ,..    /// zero 
12240 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
12250 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
12260 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12270 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69  tic bool LooksLi
12280 6b 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  keDouble(..     
12290 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a     string text..
122a0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
122b0 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65  ..        double
122c0 20 64 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a 0d   doubleValue;...
122d0 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
122e0 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
122f0 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 64 6f  .        if (!do
12300 75 62 6c 65 2e 54 72 79 50 61 72 73 65 28 0d 0a  uble.TryParse(..
12310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12320 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c  text, NumberStyl
12330 65 73 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62 65  es.Float | Numbe
12340 72 53 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68 6f  rStyles.AllowTho
12350 75 73 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20 20  usands,..       
12360 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
12370 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
12380 6c 74 75 72 65 2c 20 6f 75 74 20 64 6f 75 62 6c  lture, out doubl
12390 65 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  eValue))..      
123a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
123b0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
123c0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
123d0 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
123e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
123f0 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75        doubleValu
12400 65 20 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73 65  e = double.Parse
12410 28 74 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e  (text, CultureIn
12420 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
12430 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ure);..        }
12440 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
12450 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12460 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
12470 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
12480 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
12490 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
124a0 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  g.Equals(..     
124b0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c         doubleVal
124c0 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  ue.ToString(Cult
124d0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
124e0 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c  tCulture), text,
124f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74  ..            St
12500 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
12510 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d  rdinal);..    }.
12520 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
12530 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
12540 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
12550 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61  specified textua
12560 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20  l value appears 
12570 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f  to be a..    ///
12580 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
12590 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  Time" /> value..
125a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
125b0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
125c0 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72  ram name="conver
125d0 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
125e0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
125f0 74 65 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f 62  teConvert" /> ob
12600 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
12610 6e 66 69 67 75 72 65 64 20 77 69 74 68 0d 0a 20  nfigured with.. 
12620 20 20 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73 65     /// the chose
12630 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  n <see cref="Dat
12640 65 54 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61 74  eTime" /> format
12650 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
12660 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
12670 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e  ram name="text">
12680 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
12690 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69  xtual value to i
126a0 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  nspect...    ///
126b0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
126c0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
126d0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
126e0 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73  f the text looks
126f0 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65   like a <see cre
12700 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
12710 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  in the..    /// 
12720 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61  configured forma
12730 74 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  t, zero otherwis
12740 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
12750 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
12760 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
12770 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54 69   LooksLikeDateTi
12780 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  me(..        SQL
12790 69 74 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76 65  iteConvert conve
127a0 72 74 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72  rt,..        str
127b0 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
127c0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
127d0 20 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74 20      if (convert 
127e0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
127f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
12800 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  se;....        t
12810 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
12820 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
12830 69 6d 65 20 64 61 74 65 54 69 6d 65 56 61 6c 75  ime dateTimeValu
12840 65 20 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44 61  e = convert.ToDa
12850 74 65 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a 0d  teTime(text);...
12860 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
12870 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d  (String.Equals(.
12880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12890 20 20 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f 53       convert.ToS
128a0 74 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61  tring(dateTimeVa
128b0 6c 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lue),..         
128c0 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c             text,
128d0 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
128e0 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20  n.Ordinal))..   
128f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12900 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12910 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
12920 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12930 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63   }..        catc
12940 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  h..        {..  
12950 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
12960 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
12970 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72    }....        r
12980 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
12990 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
129a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
129b0 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74 65  / For a given te
129c0 78 74 75 61 6c 20 64 61 74 61 62 61 73 65 20 74  xtual database t
129d0 79 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72 6e  ype name, return
129e0 20 74 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61   the "closest-ma
129f0 74 63 68 22 20 64 61 74 61 62 61 73 65 20 74 79  tch" database ty
12a00 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  pe...    /// Thi
12a10 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
12a20 65 64 20 64 75 72 69 6e 67 20 71 75 65 72 79 20  ed during query 
12a30 72 65 73 75 6c 74 20 70 72 6f 63 65 73 73 69 6e  result processin
12a40 67 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 69 74  g; therefore, it
12a50 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a 20  s performance.. 
12a60 20 20 20 2f 2f 2f 20 69 73 20 63 72 69 74 69 63     /// is critic
12a70 61 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  al...    /// </s
12a80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
12a90 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
12aa0 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f  nnection">The co
12ab0 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
12ac0 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70 65   for custom type
12ad0 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e   mappings, if an
12ae0 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  y.</param>..    
12af0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12b00 22 74 79 70 65 4e 61 6d 65 22 3e 54 68 65 20 74  "typeName">The t
12b10 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74  extual name of t
12b20 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65  he database type
12b30 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61   to match.</para
12b40 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
12b50 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
12b60 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
12b70 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
12b80 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
12b90 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d  object.</param>.
12ba0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
12bb0 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 79 70  s>The .NET DBTyp
12bc0 65 20 74 68 65 20 74 65 78 74 20 65 76 61 6c 75  e the text evalu
12bd0 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72 6e  ates to.</return
12be0 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
12bf0 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20 54   static DbType T
12c00 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 65 28  ypeNameToDbType(
12c10 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
12c20 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
12c30 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
12c40 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c  string typeName,
12c50 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
12c60 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
12c70 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29  flags..        )
12c80 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
12c90 20 44 62 54 79 70 65 3f 20 64 65 66 61 75 6c 74   DbType? default
12ca0 44 62 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a  DbType = null;..
12cb0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f  ..        if (co
12cc0 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c  nnection != null
12cd0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
12ce0 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
12cf0 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c  |= connection.Fl
12d00 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ags;....        
12d10 20 20 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65      if (HelperMe
12d20 74 68 6f 64 73 2e 48 61 73 46 6c 61 67 73 28 66  thods.HasFlags(f
12d30 6c 61 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  lags, SQLiteConn
12d40 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43  ectionFlags.UseC
12d50 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 29  onnectionTypes))
12d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
12d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12d80 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
12d90 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e   connectionTypeN
12da0 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f  ames = connectio
12db0 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d  n._typeNames;...
12dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12dd0 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54   if (connectionT
12de0 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c  ypeNames != null
12df0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12e00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12e10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 79            if (ty
12e20 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d  peName != null).
12e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12e40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e60 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
12e70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ing value;....  
12e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e90 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
12ea0 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72  tionTypeNames.Tr
12eb0 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61  yGetValue(typeNa
12ec0 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  me, out value)).
12ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12ee0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
12f10 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a  alue.dataType;..
12f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f50 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
12f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f90 69 6e 74 20 69 6e 64 65 78 20 3d 20 74 79 70 65  int index = type
12fa0 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27  Name.IndexOf('('
12fb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
12fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fd0 20 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30    if ((index > 0
12fe0 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
12ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13000 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
13010 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
13020 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2e 53  Value(typeName.S
13030 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65  ubstring(0, inde
13040 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75  x).TrimEnd(), ou
13050 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
13060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13070 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13090 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
130a0 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b   value.dataType;
130b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
130c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
130d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
130e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
130f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13100 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
13110 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13120 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13130 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
13140 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20     // NOTE: Use 
13150 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61  the default data
13160 62 61 73 65 20 74 79 70 65 20 66 6f 72 20 74 68  base type for th
13170 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
13180 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
13190 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
131a0 6c 74 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e 65  ltDbType = conne
131b0 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54  ction.DefaultDbT
131c0 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ype;..        }.
131d0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 48  ...        if (H
131e0 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73  elperMethods.Has
131f0 46 6c 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c  Flags(flags, SQL
13200 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
13210 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73  gs.NoGlobalTypes
13220 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
13230 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
13240 65 66 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20  efaultDbType != 
13250 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13260 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44         return (D
13270 62 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54  bType)defaultDbT
13280 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ype;....        
13290 20 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70      defaultDbTyp
132a0 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62  e = GetDefaultDb
132b0 54 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29  Type(connection)
132c0 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
132d0 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
132e0 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20  E_WARNING..     
132f0 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 44 62         DefaultDb
13300 54 79 70 65 57 61 72 6e 69 6e 67 28 74 79 70 65  TypeWarning(type
13310 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20 64 65 66  Name, flags, def
13320 61 75 6c 74 44 62 54 79 70 65 29 3b 0d 0a 23 65  aultDbType);..#e
13330 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
13340 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79      return (DbTy
13350 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65  pe)defaultDbType
13360 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
13370 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13380 20 20 20 20 20 20 20 69 66 20 28 28 5f 74 79 70         if ((_typ
13390 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 20  eNames != null) 
133a0 26 26 20 28 74 79 70 65 4e 61 6d 65 20 21 3d 20  && (typeName != 
133b0 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
133c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
133d0 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
133e0 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65  ypeMapping value
133f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
13400 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61       if (_typeNa
13410 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
13420 74 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61  typeName, out va
13430 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
13440 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13460 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54  turn value.dataT
13470 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
13480 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13490 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
134a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
134b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
134c0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20        int index 
134d0 3d 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78  = typeName.Index
134e0 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20  Of('(');....    
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13500 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20  if ((index > 0) 
13510 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
13520 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70              _typ
13530 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c  eNames.TryGetVal
13540 75 65 28 74 79 70 65 4e 61 6d 65 2e 53 75 62 73  ue(typeName.Subs
13550 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e  tring(0, index).
13560 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76  TrimEnd(), out v
13570 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
13580 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
135b0 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20  lue.dataType;.. 
135c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
135e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
135f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13600 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  }....        if 
13610 28 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 21  (defaultDbType !
13620 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13630 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54       return (DbT
13640 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70  ype)defaultDbTyp
13650 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65  e;....        de
13660 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65  faultDbType = Ge
13670 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 63  tDefaultDbType(c
13680 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23  onnection);....#
13690 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
136a0 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
136b0 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66  ING..        Def
136c0 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e  aultDbTypeWarnin
136d0 67 28 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67  g(typeName, flag
136e0 73 2c 20 64 65 66 61 75 6c 74 44 62 54 79 70 65  s, defaultDbType
136f0 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
13700 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62        return (Db
13710 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79  Type)defaultDbTy
13720 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  pe;..    }..    
13730 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
13740 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
13750 20 72 65 61 64 6f 6e 6c 79 20 53 51 4c 69 74 65   readonly SQLite
13760 44 62 54 79 70 65 4d 61 70 20 5f 74 79 70 65 4e  DbTypeMap _typeN
13770 61 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65  ames = GetSQLite
13780 44 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 20 20  DbTypeMap();..  
13790 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
137a0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69  ary>..  /// SQLi
137b0 74 65 20 68 61 73 20 76 65 72 79 20 6c 69 6d 69  te has very limi
137c0 74 65 64 20 74 79 70 65 73 2c 20 61 6e 64 20 69  ted types, and i
137d0 73 20 69 6e 68 65 72 65 6e 74 6c 79 20 74 65 78  s inherently tex
137e0 74 2d 62 61 73 65 64 2e 20 20 54 68 65 20 66 69  t-based.  The fi
137f0 72 73 74 20 35 20 74 79 70 65 73 20 62 65 6c 6f  rst 5 types belo
13800 77 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20  w represent the 
13810 73 75 6d 20 6f 66 20 61 6c 6c 20 74 79 70 65 73  sum of all types
13820 20 53 51 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20 75   SQLite..  /// u
13830 6e 64 65 72 73 74 61 6e 64 73 2e 20 20 54 68 65  nderstands.  The
13840 20 44 61 74 65 54 69 6d 65 20 65 78 74 65 6e 73   DateTime extens
13850 69 6f 6e 20 74 6f 20 74 68 65 20 73 70 65 63 20  ion to the spec 
13860 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20  is for internal 
13870 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f  use only...  ///
13880 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70   </summary>..  p
13890 75 62 6c 69 63 20 65 6e 75 6d 20 54 79 70 65 41  ublic enum TypeA
138a0 66 66 69 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20 20  ffinity..  {..  
138b0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
138c0 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65  .    /// Not use
138d0 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  d..    /// </sum
138e0 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 6e 69  mary>..    Unini
138f0 74 69 61 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a 20  tialized = 0,.. 
13900 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13910 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e  ..    /// All in
13920 74 65 67 65 72 73 20 69 6e 20 53 51 4c 69 74 65  tegers in SQLite
13930 20 64 65 66 61 75 6c 74 20 74 6f 20 49 6e 74 36   default to Int6
13940 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  4..    /// </sum
13950 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e 74 36 34  mary>..    Int64
13960 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 1,..    /// <
13970 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
13980 2f 20 41 6c 6c 20 66 6c 6f 61 74 69 6e 67 20 70  / All floating p
13990 6f 69 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e 20  oint numbers in 
139a0 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20 74  SQLite default t
139b0 6f 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f  o double..    //
139c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
139d0 20 20 44 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a 20    Double = 2,.. 
139e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
139f0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
13a00 66 61 75 6c 74 20 64 61 74 61 20 74 79 70 65 20  fault data type 
13a10 6f 66 20 53 51 4c 69 74 65 20 69 73 20 74 65 78  of SQLite is tex
13a20 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  t..    /// </sum
13a30 6d 61 72 79 3e 0d 0a 20 20 20 20 54 65 78 74 20  mary>..    Text 
13a40 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 3,..    /// <s
13a50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
13a60 20 54 79 70 69 63 61 6c 6c 79 20 62 6c 6f 62 20   Typically blob 
13a70 74 79 70 65 73 20 61 72 65 20 6f 6e 6c 79 20 73  types are only s
13a80 65 65 6e 20 77 68 65 6e 20 72 65 74 75 72 6e 65  een when returne
13a90 64 20 66 72 6f 6d 20 61 20 66 75 6e 63 74 69 6f  d from a functio
13aa0 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  n..    /// </sum
13ab0 6d 61 72 79 3e 0d 0a 20 20 20 20 42 6c 6f 62 20  mary>..    Blob 
13ac0 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 4,..    /// <s
13ad0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
13ae0 20 4e 75 6c 6c 20 74 79 70 65 73 20 63 61 6e 20   Null types can 
13af0 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  be returned from
13b00 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20   functions..    
13b10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13b20 20 20 20 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20      Null = 5,.. 
13b30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13b40 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69  ..    /// Used i
13b50 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68 69  nternally by thi
13b60 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20  s provider..    
13b70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13b80 20 20 20 20 44 61 74 65 54 69 6d 65 20 3d 20 31      DateTime = 1
13b90 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  0,..    /// <sum
13ba0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
13bb0 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62  sed internally b
13bc0 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 0d  y this provider.
13bd0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
13be0 72 79 3e 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d 20  ry>..    None = 
13bf0 31 31 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  11,..  }....  //
13c00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
13c10 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68 65  // These are the
13c20 20 65 76 65 6e 74 20 74 79 70 65 73 20 61 73 73   event types ass
13c30 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
13c40 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
13c50 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
13c60 69 6f 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72 22  ionEventHandler"
13c70 20 2f 3e 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65 67   />..  /// deleg
13c80 61 74 65 20 28 61 6e 64 20 69 74 73 20 63 6f 72  ate (and its cor
13c90 72 65 73 70 6f 6e 64 69 6e 67 20 65 76 65 6e 74  responding event
13ca0 29 20 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f 2f  ) and the..  ///
13cb0 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6e 6e   <see cref="Conn
13cc0 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 22  ectionEventArgs"
13cd0 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f   /> class...  //
13ce0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13cf0 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
13d00 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  teConnectionEven
13d10 74 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20  tType..  {..    
13d20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13d30 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75  .      /// Not u
13d40 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  sed...      /// 
13d50 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13d60 20 20 49 6e 76 61 6c 69 64 20 3d 20 2d 31 2c 0d    Invalid = -1,.
13d70 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13d80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13d90 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20  / Not used...   
13da0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13db0 3e 0d 0a 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e  >..      Unknown
13dc0 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 0,....      /
13dd0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13de0 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
13df0 65 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20  ection is being 
13e00 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f  opened...      /
13e10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13e20 20 20 20 20 20 4f 70 65 6e 69 6e 67 20 3d 20 31       Opening = 1
13e30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13e40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13e50 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
13e60 6f 6e 20 73 74 72 69 6e 67 20 68 61 73 20 62 65  on string has be
13e70 65 6e 20 70 61 72 73 65 64 2e 0d 0a 20 20 20 20  en parsed...    
13e80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13e90 0d 0a 20 20 20 20 20 20 43 6f 6e 6e 65 63 74 69  ..      Connecti
13ea0 6f 6e 53 74 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d  onString = 2,...
13eb0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13ec0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13ed0 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  The connection w
13ee0 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20  as opened...    
13ef0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13f00 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 20 3d  ..      Opened =
13f10 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   3,....      ///
13f20 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13f30 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
13f40 72 65 66 3d 22 43 68 61 6e 67 65 44 61 74 61 62  ref="ChangeDatab
13f50 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77  ase" /> method w
13f60 61 73 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65  as called on the
13f70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e  ..      /// conn
13f80 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  ection...      /
13f90 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13fa0 20 20 20 20 20 43 68 61 6e 67 65 44 61 74 61 62       ChangeDatab
13fb0 61 73 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20  ase = 4,....    
13fc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13fd0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 61  .      /// A tra
13fe0 6e 73 61 63 74 69 6f 6e 20 77 61 73 20 63 72 65  nsaction was cre
13ff0 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 63  ated using the c
14000 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
14010 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14020 0d 0a 20 20 20 20 20 20 4e 65 77 54 72 61 6e 73  ..      NewTrans
14030 61 63 74 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20  action = 5,.... 
14040 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14050 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
14060 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  e connection was
14070 20 65 6e 6c 69 73 74 65 64 20 69 6e 74 6f 20 61   enlisted into a
14080 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20   transaction... 
14090 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
140a0 72 79 3e 0d 0a 20 20 20 20 20 20 45 6e 6c 69 73  ry>..      Enlis
140b0 74 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 36  tTransaction = 6
140c0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
140d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
140e0 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 77 61  /// A command wa
140f0 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
14100 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
14110 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
14120 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77  mary>..      New
14130 43 6f 6d 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a  Command = 7,....
14140 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
14150 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
14160 20 64 61 74 61 20 72 65 61 64 65 72 20 77 61 73   data reader was
14170 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74   created using t
14180 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
14190 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
141a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 44  ary>..      NewD
141b0 61 74 61 52 65 61 64 65 72 20 3d 20 38 2c 0d 0a  ataReader = 8,..
141c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
141d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
141e0 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   An instance of 
141f0 61 20 3c 73 65 65 20 63 72 65 66 3d 22 43 72 69  a <see cref="Cri
14200 74 69 63 61 6c 48 61 6e 64 6c 65 22 20 2f 3e 20  ticalHandle" /> 
14210 64 65 72 69 76 65 64 20 63 6c 61 73 73 20 68 61  derived class ha
14220 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 65  s..      /// bee
14230 6e 20 63 72 65 61 74 65 64 20 74 6f 20 77 72 61  n created to wra
14240 70 20 61 20 6e 61 74 69 76 65 20 72 65 73 6f 75  p a native resou
14250 72 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rce...      /// 
14260 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14270 20 20 4e 65 77 43 72 69 74 69 63 61 6c 48 61 6e    NewCriticalHan
14280 64 6c 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20  dle = 9,....    
14290 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
142a0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
142b0 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65 69  onnection is bei
142c0 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20  ng closed...    
142d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
142e0 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67 20  ..      Closing 
142f0 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 10,....      /
14300 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14310 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
14320 65 63 74 69 6f 6e 20 77 61 73 20 63 6c 6f 73 65  ection was close
14330 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
14340 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14350 43 6c 6f 73 65 64 20 3d 20 31 31 2c 0d 0a 0d 0a  Closed = 11,....
14360 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
14370 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
14380 20 63 6f 6d 6d 61 6e 64 20 69 73 20 62 65 69 6e   command is bein
14390 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  g disposed...   
143a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
143b0 3e 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73 69  >..      Disposi
143c0 6e 67 43 6f 6d 6d 61 6e 64 20 3d 20 31 32 2c 0d  ngCommand = 12,.
143d0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
143e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
143f0 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72 20  / A data reader 
14400 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65  is being dispose
14410 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
14420 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14430 44 69 73 70 6f 73 69 6e 67 44 61 74 61 52 65 61  DisposingDataRea
14440 64 65 72 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20  der = 13,....   
14450 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14460 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61  ..      /// A da
14470 74 61 20 72 65 61 64 65 72 20 69 73 20 62 65 69  ta reader is bei
14480 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20  ng closed...    
14490 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
144a0 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67 44  ..      ClosingD
144b0 61 74 61 52 65 61 64 65 72 20 3d 20 31 34 2c 0d  ataReader = 14,.
144c0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
144d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
144e0 2f 20 41 20 6e 61 74 69 76 65 20 72 65 73 6f 75  / A native resou
144f0 72 63 65 20 77 61 73 20 6f 70 65 6e 65 64 20 28  rce was opened (
14500 69 2e 65 2e 20 6f 62 74 61 69 6e 65 64 29 20 66  i.e. obtained) f
14510 72 6f 6d 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20  rom the pool... 
14520 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14530 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65  ry>..      Opene
14540 64 46 72 6f 6d 50 6f 6f 6c 20 3d 20 31 35 2c 0d  dFromPool = 15,.
14550 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
14560 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
14570 2f 20 41 20 6e 61 74 69 76 65 20 72 65 73 6f 75  / A native resou
14580 72 63 65 20 77 61 73 20 63 6c 6f 73 65 64 20 28  rce was closed (
14590 69 2e 65 2e 20 72 65 6c 65 61 73 65 64 29 20 74  i.e. released) t
145a0 6f 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20  o the pool...   
145b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
145c0 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 65 64 54  >..      ClosedT
145d0 6f 50 6f 6f 6c 20 3d 20 31 36 0d 0a 20 20 7d 0d  oPool = 16..  }.
145e0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
145f0 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69  y>..  /// This i
14600 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
14610 20 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f 2e   SQLite for ADO.
14620 4e 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73 20  NET can process 
14630 64 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64 73  date/time fields
14640 20 69 6e 0d 0a 20 20 2f 2f 2f 20 64 61 74 61 62   in..  /// datab
14650 61 73 65 73 20 69 6e 20 6f 6e 65 20 6f 66 20 73  ases in one of s
14660 69 78 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 2f  ix formats...  /
14670 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14680 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
14690 20 20 2f 2f 2f 20 49 53 4f 38 36 30 31 20 66 6f    /// ISO8601 fo
146a0 72 6d 61 74 20 69 73 20 6d 6f 72 65 20 63 6f 6d  rmat is more com
146b0 70 61 74 69 62 6c 65 2c 20 72 65 61 64 61 62 6c  patible, readabl
146c0 65 2c 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73 73  e, fully-process
146d0 61 62 6c 65 2c 20 62 75 74 20 6c 65 73 73 0d 0a  able, but less..
146e0 20 20 2f 2f 2f 20 61 63 63 75 72 61 74 65 20 61    /// accurate a
146f0 73 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 70 72  s it does not pr
14700 6f 76 69 64 65 20 74 69 6d 65 20 64 6f 77 6e 20  ovide time down 
14710 74 6f 20 66 72 61 63 74 69 6f 6e 73 20 6f 66 20  to fractions of 
14720 61 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 2f 2f 2f  a second...  ///
14730 20 4a 75 6c 69 61 6e 44 61 79 20 69 73 20 74 68   JulianDay is th
14740 65 20 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61 74  e numeric format
14750 20 74 68 65 20 53 51 4c 69 74 65 20 75 73 65 73   the SQLite uses
14760 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20   internally and 
14770 69 73 20 61 72 67 75 61 62 6c 79 0d 0a 20 20 2f  is arguably..  /
14780 2f 2f 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 70  // the most comp
14790 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 20  atible with 3rd 
147a0 70 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49 74  party tools.  It
147b0 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c 65   is not readable
147c0 20 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20   as text..  /// 
147d0 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f  without post-pro
147e0 63 65 73 73 69 6e 67 2e 20 20 54 69 63 6b 73 20  cessing.  Ticks 
147f0 6c 65 73 73 20 63 6f 6d 70 61 74 69 62 6c 65 20  less compatible 
14800 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20 74  with 3rd party t
14810 6f 6f 6c 73 20 74 68 61 74 0d 0a 20 20 2f 2f 2f  ools that..  ///
14820 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62   query the datab
14830 61 73 65 2c 20 61 6e 64 20 72 65 6e 64 65 72 73  ase, and renders
14840 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 69   the DateTime fi
14850 65 6c 64 20 75 6e 72 65 61 64 61 62 6c 65 20 61  eld unreadable a
14860 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77 69  s text..  /// wi
14870 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63 65  thout post-proce
14880 73 73 69 6e 67 2e 20 20 55 6e 69 78 45 70 6f 63  ssing.  UnixEpoc
14890 68 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74  h is more compat
148a0 69 62 6c 65 20 77 69 74 68 20 55 6e 69 78 20 73  ible with Unix s
148b0 79 73 74 65 6d 73 2e 0d 0a 20 20 2f 2f 2f 20 49  ystems...  /// I
148c0 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
148d0 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 6e 66 69  allows the confi
148e0 67 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72  gured format for
148f0 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63   the invariant c
14900 75 6c 74 75 72 65 0d 0a 20 20 2f 2f 2f 20 66 6f  ulture..  /// fo
14910 72 6d 61 74 20 74 6f 20 62 65 20 75 73 65 64 20  rmat to be used 
14920 61 6e 64 20 69 73 20 68 75 6d 61 6e 20 72 65 61  and is human rea
14930 64 61 62 6c 65 2e 20 20 43 75 72 72 65 6e 74 43  dable.  CurrentC
14940 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74 68  ulture allows th
14950 65 0d 0a 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75  e..  /// configu
14960 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 74  red format for t
14970 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75  he current cultu
14980 72 65 20 74 6f 20 62 65 20 75 73 65 64 20 61 6e  re to be used an
14990 64 20 69 73 20 61 6c 73 6f 20 68 75 6d 61 6e 0d  d is also human.
149a0 0a 20 20 2f 2f 2f 20 72 65 61 64 61 62 6c 65 2e  .  /// readable.
149b0 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 54  ..  ///..  /// T
149c0 68 65 20 70 72 65 66 65 72 72 65 64 20 6f 72 64  he preferred ord
149d0 65 72 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20 61  er of choosing a
149e0 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74   DateTime format
149f0 20 69 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20 49   is JulianDay, I
14a00 53 4f 38 36 30 31 2c 0d 0a 20 20 2f 2f 2f 20 61  SO8601,..  /// a
14a10 6e 64 20 74 68 65 6e 20 54 69 63 6b 73 2e 20 20  nd then Ticks.  
14a20 54 69 63 6b 73 20 69 73 20 6d 61 69 6e 6c 79 20  Ticks is mainly 
14a30 70 72 65 73 65 6e 74 20 66 6f 72 20 6c 65 67 61  present for lega
14a40 63 79 20 63 6f 64 65 20 73 75 70 70 6f 72 74 2e  cy code support.
14a50 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b  ..  /// </remark
14a60 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  s>..  public enu
14a70 6d 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  m SQLiteDateForm
14a80 61 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ats..  {..    //
14a90 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14aa0 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 76 61 6c   /// Use the val
14ab0 75 65 20 6f 66 20 44 61 74 65 54 69 6d 65 2e 54  ue of DateTime.T
14ac0 69 63 6b 73 2e 20 20 54 68 69 73 20 76 61 6c 75  icks.  This valu
14ad0 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65  e is not recomme
14ae0 6e 64 65 64 20 61 6e 64 20 69 73 20 6e 6f 74 20  nded and is not 
14af0 77 65 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 77  well supported w
14b00 69 74 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f  ith LINQ...    /
14b10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14b20 20 20 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a 20     Ticks = 0,.. 
14b30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14b40 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68  ..    /// Use th
14b50 65 20 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d 61  e ISO-8601 forma
14b60 74 2e 20 20 55 73 65 73 20 74 68 65 20 22 79 79  t.  Uses the "yy
14b70 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
14b80 73 2e 46 46 46 46 46 46 46 4b 22 20 66 6f 72 6d  s.FFFFFFFK" form
14b90 61 74 20 66 6f 72 20 55 54 43 20 44 61 74 65 54  at for UTC DateT
14ba0 69 6d 65 20 76 61 6c 75 65 73 20 61 6e 64 0d 0a  ime values and..
14bb0 20 20 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d 4d      /// "yyyy-MM
14bc0 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -dd HH:mm:ss.FFF
14bd0 46 46 46 46 22 20 66 6f 72 6d 61 74 20 66 6f 72  FFFF" format for
14be0 20 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65 20   local DateTime 
14bf0 76 61 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f 2f  values)...    //
14c00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14c10 20 20 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d 0a    ISO8601 = 1,..
14c20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14c30 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 69  >..    /// The i
14c40 6e 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65 20  nterval of time 
14c50 69 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61 63  in days and frac
14c60 74 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20 73  tions of a day s
14c70 69 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c 20  ince January 1, 
14c80 34 37 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f 2f  4713 BC...    //
14c90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14ca0 20 20 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32 2c    JulianDay = 2,
14cb0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
14cc0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
14cd0 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66   whole number of
14ce0 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74   seconds since t
14cf0 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28 4a  he Unix epoch (J
14d00 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 29 2e  anuary 1, 1970).
14d10 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14d20 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45 70  ary>..    UnixEp
14d30 6f 63 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f  och = 3,..    //
14d40 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14d50 20 2f 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72 65   /// Any culture
14d60 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 74 72  -independent str
14d70 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20 74  ing value that t
14d80 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
14d90 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20  k can interpret 
14da0 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65 54  as a valid DateT
14db0 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ime...    /// </
14dc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e  summary>..    In
14dd0 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20 3d  variantCulture =
14de0 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   4,..    /// <su
14df0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
14e00 41 6e 79 20 73 74 72 69 6e 67 20 76 61 6c 75 65  Any string value
14e10 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46   that the .NET F
14e20 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74  ramework can int
14e30 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c 69  erpret as a vali
14e40 64 20 44 61 74 65 54 69 6d 65 20 75 73 69 6e 67  d DateTime using
14e50 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c   the current cul
14e60 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ture...    /// <
14e70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 43  /summary>..    C
14e80 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d 20  urrentCulture = 
14e90 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  5,..    /// <sum
14ea0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
14eb0 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61  he default forma
14ec0 74 20 66 6f 72 20 74 68 69 73 20 70 72 6f 76 69  t for this provi
14ed0 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  der...    /// </
14ee0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65  summary>..    De
14ef0 66 61 75 6c 74 20 3d 20 49 53 4f 38 36 30 31 0d  fault = ISO8601.
14f00 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
14f10 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
14f20 68 69 73 20 65 6e 75 6d 20 64 65 74 65 72 6d 69  his enum determi
14f30 6e 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20 74  nes how SQLite t
14f40 72 65 61 74 73 20 69 74 73 20 6a 6f 75 72 6e 61  reats its journa
14f50 6c 20 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20 3c  l file...  /// <
14f60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  /summary>..  ///
14f70 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f   <remarks>..  //
14f80 2f 20 42 79 20 64 65 66 61 75 6c 74 20 53 51 4c  / By default SQL
14f90 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65 20  ite will create 
14fa0 61 6e 64 20 64 65 6c 65 74 65 20 74 68 65 20 6a  and delete the j
14fb0 6f 75 72 6e 61 6c 20 66 69 6c 65 20 77 68 65 6e  ournal file when
14fc0 20 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20 61   needed during a
14fd0 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20   transaction... 
14fe0 20 2f 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66 6f   /// However, fo
14ff0 72 20 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72 73  r some computers
15000 20 72 75 6e 6e 69 6e 67 20 63 65 72 74 61 69 6e   running certain
15010 20 66 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e 69   filesystem moni
15020 74 6f 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74 68  toring tools, th
15030 65 20 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20 63  e rapid..  /// c
15040 72 65 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c 65  reation and dele
15050 74 69 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75 72  tion of the jour
15060 6e 61 6c 20 66 69 6c 65 20 63 61 6e 20 63 61 75  nal file can cau
15070 73 65 20 74 68 6f 73 65 20 70 72 6f 67 72 61 6d  se those program
15080 73 20 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74 6f  s to fail, or to
15090 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68 20   interfere with 
150a0 53 51 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a  SQLite...  ///..
150b0 20 20 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67 72    /// If a progr
150c0 61 6d 20 6f 72 20 76 69 72 75 73 20 73 63 61 6e  am or virus scan
150d0 6e 65 72 20 69 73 20 69 6e 74 65 72 66 65 72 69  ner is interferi
150e0 6e 67 20 77 69 74 68 20 53 51 4c 69 74 65 27 73  ng with SQLite's
150f0 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20 79   journal file, y
15100 6f 75 20 6d 61 79 20 72 65 63 65 69 76 65 20 65  ou may receive e
15110 72 72 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61 62  rrors like "unab
15120 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62  le to open datab
15130 61 73 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f  ase file"..  ///
15140 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67 20 61   when starting a
15150 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 49   transaction.  I
15160 66 20 74 68 69 73 20 69 73 20 68 61 70 70 65 6e  f this is happen
15170 69 6e 67 2c 20 79 6f 75 20 6d 61 79 20 77 61 6e  ing, you may wan
15180 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  t to change the 
15190 64 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c 20  default journal 
151a0 6d 6f 64 65 20 74 6f 20 50 65 72 73 69 73 74 2e  mode to Persist.
151b0 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b  ..  /// </remark
151c0 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  s>..  public enu
151d0 6d 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d  m SQLiteJournalM
151e0 6f 64 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  odeEnum..  {..  
151f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15200 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
15210 61 75 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73 20  ault mode, this 
15220 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
15230 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69 6e   use the existin
15240 67 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64  g journaling mod
15250 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61  e for the databa
15260 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
15270 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 66  ummary>..    Def
15280 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20 20  ault = -1,..    
15290 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
152a0 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
152b0 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65  ll create and de
152c0 73 74 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e 61  stroy the journa
152d0 6c 20 66 69 6c 65 20 61 73 2d 6e 65 65 64 65 64  l file as-needed
152e0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
152f0 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65 74  mary>..    Delet
15300 65 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20  e = 0,..    /// 
15310 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
15320 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 69 73 20  // When this is 
15330 73 65 74 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c  set, SQLite will
15340 20 6b 65 65 70 20 74 68 65 20 6a 6f 75 72 6e 61   keep the journa
15350 6c 20 66 69 6c 65 20 65 76 65 6e 20 61 66 74 65  l file even afte
15360 72 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  r a transaction 
15370 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20 20  has completed.  
15380 49 74 27 73 20 63 6f 6e 74 65 6e 74 73 20 77 69  It's contents wi
15390 6c 6c 20 62 65 20 65 72 61 73 65 64 2c 0d 0a 20  ll be erased,.. 
153a0 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6a     /// and the j
153b0 6f 75 72 6e 61 6c 20 72 65 2d 75 73 65 64 20 61  ournal re-used a
153c0 73 20 6f 66 74 65 6e 20 61 73 20 6e 65 65 64 65  s often as neede
153d0 64 2e 20 20 49 66 20 69 74 20 69 73 20 64 65 6c  d.  If it is del
153e0 65 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 62 65  eted, it will be
153f0 20 72 65 63 72 65 61 74 65 64 20 74 68 65 20 6e   recreated the n
15400 65 78 74 20 74 69 6d 65 20 69 74 20 69 73 20 6e  ext time it is n
15410 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eeded...    /// 
15420 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15430 50 65 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20 20  Persist = 1,..  
15440 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15450 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70  .    /// This op
15460 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
15470 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e  e rollback journ
15480 61 6c 20 65 6e 74 69 72 65 6c 79 2e 20 20 49 6e  al entirely.  In
15490 74 65 72 72 75 70 74 65 64 20 74 72 61 6e 73 61  terrupted transa
154a0 63 74 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f 67  ctions or a prog
154b0 72 61 6d 20 63 72 61 73 68 20 63 61 6e 20 63 61  ram crash can ca
154c0 75 73 65 20 64 61 74 61 62 61 73 65 0d 0a 20 20  use database..  
154d0 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f 6e    /// corruption
154e0 20 69 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d 0a   in this mode!..
154f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15500 79 3e 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32 2c  y>..    Off = 2,
15510 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
15520 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
15530 69 74 65 20 77 69 6c 6c 20 74 72 75 6e 63 61 74  ite will truncat
15540 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  e the journal fi
15550 6c 65 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74  le to zero-lengt
15560 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65 6c  h instead of del
15570 65 74 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 2f  eting it...    /
15580 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15590 20 20 20 54 72 75 6e 63 61 74 65 20 3d 20 33 2c     Truncate = 3,
155a0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
155b0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
155c0 69 74 65 20 77 69 6c 6c 20 73 74 6f 72 65 20 74  ite will store t
155d0 68 65 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76 6f  he journal in vo
155e0 6c 61 74 69 6c 65 20 52 41 4d 2e 20 20 54 68 69  latile RAM.  Thi
155f0 73 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f 4f  s saves disk I/O
15600 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70 65   but at the expe
15610 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65 20  nse of database 
15620 73 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65 67  safety and integ
15630 72 69 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  rity...    /// I
15640 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  f the applicatio
15650 6e 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 63  n using SQLite c
15660 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69  rashes in the mi
15670 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61  ddle of a transa
15680 63 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 4d  ction when the M
15690 45 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e 67  EMORY journaling
156a0 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74 68   mode is set, th
156b0 65 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  en the..    /// 
156c0 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 69  database file wi
156d0 6c 6c 20 76 65 72 79 20 6c 69 6b 65 6c 79 20 67  ll very likely g
156e0 6f 20 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20 20  o corrupt...    
156f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15700 20 20 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d      Memory = 4,.
15710 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
15720 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69  y>..    /// SQLi
15730 74 65 20 75 73 65 73 20 61 20 77 72 69 74 65 2d  te uses a write-
15740 61 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65 61  ahead log instea
15750 64 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b 20  d of a rollback 
15760 6a 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c 65  journal to imple
15770 6d 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  ment transaction
15780 73 2e 20 20 54 68 65 20 57 41 4c 20 6a 6f 75 72  s.  The WAL jour
15790 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 70  naling mode is p
157a0 65 72 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20 20  ersistent;..    
157b0 2f 2f 2f 20 61 66 74 65 72 20 62 65 69 6e 67 20  /// after being 
157c0 73 65 74 20 69 74 20 73 74 61 79 73 20 69 6e 20  set it stays in 
157d0 65 66 66 65 63 74 20 61 63 72 6f 73 73 20 6d 75  effect across mu
157e0 6c 74 69 70 6c 65 20 64 61 74 61 62 61 73 65 20  ltiple database 
157f0 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64 20  connections and 
15800 61 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61 6e  after closing an
15810 64 20 72 65 6f 70 65 6e 69 6e 67 20 74 68 65 20  d reopening the 
15820 64 61 74 61 62 61 73 65 2e 20 41 20 64 61 74 61  database. A data
15830 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e  base..    /// in
15840 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20   WAL journaling 
15850 6d 6f 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65  mode can only be
15860 20 61 63 63 65 73 73 65 64 20 62 79 20 53 51 4c   accessed by SQL
15870 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
15880 30 20 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20 20  0 or later...   
15890 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
158a0 0a 20 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20 20  .    Wal = 5..  
158b0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
158c0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73 73  ary>..  /// Poss
158d0 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20  ible values for 
158e0 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  the "synchronous
158f0 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69  " database setti
15900 6e 67 2e 20 20 54 68 69 73 20 73 65 74 74 69 6e  ng.  This settin
15910 67 20 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20 20  g determines..  
15920 2f 2f 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74 68  /// how often th
15930 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
15940 65 20 63 61 6c 6c 73 20 74 68 65 20 78 53 79 6e  e calls the xSyn
15950 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20  c method of the 
15960 56 46 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  VFS...  /// </su
15970 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
15980 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65 53 79  al enum SQLiteSy
15990 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a 20  nchronousEnum.. 
159a0 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
159b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
159c0 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61 75  // Use the defau
159d0 6c 74 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22  lt "synchronous"
159e0 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69 6e   database settin
159f0 67 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20 74  g.  Currently, t
15a00 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20  his should be.. 
15a10 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 61 6d       /// the sam
15a20 65 20 61 73 20 75 73 69 6e 67 20 74 68 65 20 46  e as using the F
15a30 55 4c 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  ULL mode...     
15a40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15a50 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d  .      Default =
15a60 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   -1,....      //
15a70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15a80 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
15a90 61 73 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74 69  ase engine conti
15aa0 6e 75 65 73 20 77 69 74 68 6f 75 74 20 73 79 6e  nues without syn
15ab0 63 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73 20  cing as soon as 
15ac0 69 74 20 68 61 73 20 68 61 6e 64 65 64 0d 0a 20  it has handed.. 
15ad0 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f 66       /// data of
15ae0 66 20 74 6f 20 74 68 65 20 6f 70 65 72 61 74 69  f to the operati
15af0 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 66 20 74  ng system.  If t
15b00 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72  he application r
15b10 75 6e 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a 20  unning SQLite.. 
15b20 20 20 20 20 20 2f 2f 2f 20 63 72 61 73 68 65 73       /// crashes
15b30 2c 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20  , the data will 
15b40 62 65 20 73 61 66 65 2c 20 62 75 74 20 74 68 65  be safe, but the
15b50 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74 20   database might 
15b60 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64  become corrupted
15b70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74  ..      /// if t
15b80 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
15b90 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20 74  tem crashes or t
15ba0 68 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73 65  he computer lose
15bb0 73 20 70 6f 77 65 72 20 62 65 66 6f 72 65 20 74  s power before t
15bc0 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  hat..      /// d
15bd0 61 74 61 20 68 61 73 20 62 65 65 6e 20 77 72 69  ata has been wri
15be0 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b  tten to the disk
15bf0 20 73 75 72 66 61 63 65 2e 0d 0a 20 20 20 20 20   surface...     
15c00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15c10 0a 20 20 20 20 20 20 4f 66 66 20 3d 20 30 2c 0d  .      Off = 0,.
15c20 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15c30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15c40 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65  / The database e
15c50 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c 6c  ngine will still
15c60 20 73 79 6e 63 20 61 74 20 74 68 65 20 6d 6f 73   sync at the mos
15c70 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e  t critical momen
15c80 74 73 2c 20 62 75 74 0d 0a 20 20 20 20 20 20 2f  ts, but..      /
15c90 2f 2f 20 6c 65 73 73 20 6f 66 74 65 6e 20 74 68  // less often th
15ca0 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e  an in FULL mode.
15cb0 20 20 54 68 65 72 65 20 69 73 20 61 20 76 65 72    There is a ver
15cc0 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68 20  y small (though 
15cd0 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20 20  non-zero)..     
15ce0 20 2f 2f 2f 20 63 68 61 6e 63 65 20 74 68 61 74   /// chance that
15cf0 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65   a power failure
15d00 20 61 74 20 6a 75 73 74 20 74 68 65 20 77 72 6f   at just the wro
15d10 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63 6f  ng time could co
15d20 72 72 75 70 74 20 74 68 65 0d 0a 20 20 20 20 20  rrupt the..     
15d30 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 69 6e   /// database in
15d40 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a 20   NORMAL mode... 
15d50 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15d60 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d 61  ry>..      Norma
15d70 6c 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20  l = 1,....      
15d80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15d90 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74       /// The dat
15da0 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c  abase engine wil
15db0 6c 20 75 73 65 20 74 68 65 20 78 53 79 6e 63 20  l use the xSync 
15dc0 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46  method of the VF
15dd0 53 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74  S to ensure that
15de0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 20  ..      /// all 
15df0 63 6f 6e 74 65 6e 74 20 69 73 20 73 61 66 65 6c  content is safel
15e00 79 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65  y written to the
15e10 20 64 69 73 6b 20 73 75 72 66 61 63 65 20 70 72   disk surface pr
15e20 69 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69 6e  ior to continuin
15e30 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  g...      /// Th
15e40 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74 20  is ensures that 
15e50 61 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  an operating sys
15e60 74 65 6d 20 63 72 61 73 68 20 6f 72 20 70 6f 77  tem crash or pow
15e70 65 72 20 66 61 69 6c 75 72 65 20 77 69 6c 6c 20  er failure will 
15e80 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  not..      /// c
15e90 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61 62  orrupt the datab
15ea0 61 73 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63 68  ase.  FULL synch
15eb0 72 6f 6e 6f 75 73 20 69 73 20 76 65 72 79 20 73  ronous is very s
15ec0 61 66 65 2c 20 62 75 74 20 69 74 20 69 73 20 61  afe, but it is a
15ed0 6c 73 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  lso..      /// s
15ee0 6c 6f 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f  lower...      //
15ef0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15f00 20 20 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20 20      Full = 2..  
15f10 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
15f20 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
15f30 72 65 71 75 65 73 74 65 64 20 63 6f 6d 6d 61 6e  requested comman
15f40 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65  d execution type
15f50 2e 20 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c 73  .  This controls
15f60 20 77 68 69 63 68 20 6d 65 74 68 6f 64 20 6f 66   which method of
15f70 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65   the..  /// <see
15f80 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d   cref="SQLiteCom
15f90 6d 61 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74 20  mand" /> object 
15fa0 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
15fb0 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
15fc0 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
15fd0 20 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79   SQLiteExecuteTy
15fe0 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  pe..  {..      /
15ff0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16000 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68 69      /// Do nothi
16010 6e 67 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20 77  ng.  No method w
16020 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a  ill be called...
16030 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16040 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
16050 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 0,....      /
16060 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16070 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d      /// The comm
16080 61 6e 64 20 69 73 20 6e 6f 74 20 65 78 70 65 63  and is not expec
16090 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20  ted to return a 
160a0 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20  result -OR- the 
160b0 72 65 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a 20  result is not.. 
160c0 20 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64 2e       /// needed.
160d0 20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d    The <see cref=
160e0 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45  "SQLiteCommand.E
160f0 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29  xecuteNonQuery()
16100 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f  " /> or..      /
16110 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
16120 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63  LiteCommand.Exec
16130 75 74 65 4e 6f 6e 51 75 65 72 79 28 43 6f 6d 6d  uteNonQuery(Comm
16140 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e  andBehavior)" />
16150 20 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20    method..      
16160 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  /// will be call
16170 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
16180 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16190 20 4e 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d 0a   NonQuery = 1,..
161a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
161b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
161c0 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20   The command is 
161d0 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75  expected to retu
161e0 72 6e 20 61 20 73 63 61 6c 61 72 20 72 65 73 75  rn a scalar resu
161f0 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75  lt -OR- the resu
16200 6c 74 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  lt should..     
16210 20 2f 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64 20   /// be limited 
16220 74 6f 20 61 20 73 63 61 6c 61 72 20 72 65 73 75  to a scalar resu
16230 6c 74 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72  lt.  The <see cr
16240 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ef="SQLiteComman
16250 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72 28  d.ExecuteScalar(
16260 29 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  )" />..      ///
16270 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22 53   or <see cref="S
16280 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
16290 63 75 74 65 53 63 61 6c 61 72 28 43 6f 6d 6d 61  cuteScalar(Comma
162a0 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20  ndBehavior)" /> 
162b0 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20  method will..   
162c0 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64     /// be called
162d0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
162e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
162f0 63 61 6c 61 72 20 3d 20 32 2c 0d 0a 0d 0a 20 20  calar = 2,....  
16300 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16310 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
16320 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65   command is expe
16330 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 3c  cted to return <
16340 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
16350 44 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20 72  DataReader" /> r
16360 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  esult...      //
16370 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
16380 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45  "SQLiteCommand.E
16390 78 65 63 75 74 65 52 65 61 64 65 72 28 29 22 20  xecuteReader()" 
163a0 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  /> or..      ///
163b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
163c0 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74  teCommand.Execut
163d0 65 52 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64 42  eReader(CommandB
163e0 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74  ehavior)" /> met
163f0 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
16400 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a  /// be called...
16410 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16420 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61 64  ary>..      Read
16430 65 72 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20  er = 3,....     
16440 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16450 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68        /// Use th
16460 65 20 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e  e default comman
16470 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65  d execution type
16480 2e 20 20 55 73 69 6e 67 20 74 68 69 73 20 76 61  .  Using this va
16490 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65 0d  lue is the same.
164a0 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 75 73  .      /// as us
164b0 69 6e 67 20 74 68 65 20 3c 73 65 65 20 63 72 65  ing the <see cre
164c0 66 3d 22 53 51 4c 69 74 65 45 78 65 63 75 74 65  f="SQLiteExecute
164d0 54 79 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20 2f  Type.NonQuery" /
164e0 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  > value...      
164f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16500 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20        Default = 
16510 4e 6f 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44 4f  NonQuery /* TODO
16520 3a 20 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f 20  : Good default? 
16530 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  */..  }....  ///
16540 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
16550 2f 20 54 68 65 20 61 63 74 69 6f 6e 20 63 6f 64  / The action cod
16560 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  e responsible fo
16570 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61  r the current ca
16580 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68  ll into the auth
16590 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c  orizer...  /// <
165a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
165b0 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41  lic enum SQLiteA
165c0 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43  uthorizerActionC
165d0 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ode..  {..      
165e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
165f0 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 61 63 74 69       /// No acti
16600 6f 6e 20 69 73 20 62 65 69 6e 67 20 70 65 72 66  on is being perf
16610 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 76 61 6c  ormed.  This val
16620 75 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65  ue should not be
16630 20 75 73 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20   used from..    
16640 20 20 2f 2f 2f 20 65 78 74 65 72 6e 61 6c 20 63    /// external c
16650 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ode...      /// 
16660 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16670 20 20 4e 6f 6e 65 20 3d 20 2d 31 2c 0d 0a 0d 0a    None = -1,....
16680 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16690 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
166a0 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0d 0a  o longer used...
166b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
166c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 70 79  ary>..      Copy
166d0 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 0,....      /
166e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
166f0 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78      /// An index
16700 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
16710 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16720 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16730 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20   are the..      
16740 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20 61  /// index name a
16750 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
16760 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  e...      ///.. 
16770 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16780 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74  ry>..      Creat
16790 65 49 6e 64 65 78 20 3d 20 31 2c 0d 0a 0d 0a 20  eIndex = 1,.... 
167a0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
167b0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
167c0 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72  table will be cr
167d0 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
167e0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
167f0 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
16800 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e       /// table n
16810 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
16820 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
16830 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
16840 20 20 20 43 72 65 61 74 65 54 61 62 6c 65 20 3d     CreateTable =
16850 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   2,....      ///
16860 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16870 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72    /// A temporar
16880 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20  y index will be 
16890 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
168a0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
168b0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
168c0 2f 2f 20 61 72 65 20 74 68 65 20 69 6e 64 65 78  // are the index
168d0 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
168e0 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
168f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16900 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
16910 70 49 6e 64 65 78 20 3d 20 33 2c 0d 0a 0d 0a 20  pIndex = 3,.... 
16920 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16930 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16940 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20  temporary table 
16950 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
16960 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16970 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
16980 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
16990 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
169a0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
169b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
169c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
169d0 61 74 65 54 65 6d 70 54 61 62 6c 65 20 3d 20 34  ateTempTable = 4
169e0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
169f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16a00 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20  /// A temporary 
16a10 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20  trigger will be 
16a20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
16a30 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16a40 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
16a50 2f 2f 20 61 72 65 20 74 68 65 20 74 72 69 67 67  // are the trigg
16a60 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20  er name and the 
16a70 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  table name...   
16a80 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16a90 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
16aa0 65 6d 70 54 72 69 67 67 65 72 20 3d 20 35 2c 0d  empTrigger = 5,.
16ab0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16ac0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16ad0 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 76 69  / A temporary vi
16ae0 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74  ew will be creat
16af0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16b00 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16b10 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f  ts are..      //
16b20 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d 65 20  / the view name 
16b30 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
16b40 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16b50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
16b60 72 65 61 74 65 54 65 6d 70 56 69 65 77 20 3d 20  reateTempView = 
16b70 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
16b80 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16b90 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20 77   /// A trigger w
16ba0 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16bb0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16bc0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
16bd0 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  re the..      //
16be0 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61  / trigger name a
16bf0 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
16c00 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16c10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16c20 43 72 65 61 74 65 54 72 69 67 67 65 72 20 3d 20  CreateTrigger = 
16c30 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  7,....      /// 
16c40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16c50 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c 6c   /// A view will
16c60 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68   be created.  Th
16c70 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16c80 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
16c90 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20 20  the view..      
16ca0 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  /// name and a n
16cb0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
16cc0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16cd0 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56 69  ..      CreateVi
16ce0 65 77 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20  ew = 8,....     
16cf0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16d00 20 20 20 20 20 20 2f 2f 2f 20 41 20 44 45 4c 45        /// A DELE
16d10 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  TE statement wil
16d20 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
16d30 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16d40 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
16d50 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
16d60 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
16d70 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16d80 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16d90 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6c 65 74  ry>..      Delet
16da0 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 9,....      
16db0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16dc0 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65       /// An inde
16dd0 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  x will be droppe
16de0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
16df0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16e00 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
16e10 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20   /// index name 
16e20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
16e30 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
16e40 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16e50 20 44 72 6f 70 49 6e 64 65 78 20 3d 20 31 30 2c   DropIndex = 10,
16e60 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16e70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16e80 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20  // A table will 
16e90 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
16ea0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16eb0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16ec0 68 65 20 74 61 62 6c 65 73 0d 0a 20 20 20 20 20  he tables..     
16ed0 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
16ee0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16ef0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16f00 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 61 62  >..      DropTab
16f10 6c 65 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20  le = 11,....    
16f20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16f30 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
16f40 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69 6c  porary index wil
16f50 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
16f60 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16f70 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16f80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
16f90 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74  index name and t
16fa0 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
16fb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16fc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70  ary>..      Drop
16fd0 54 65 6d 70 49 6e 64 65 78 20 3d 20 31 32 2c 0d  TempIndex = 12,.
16fe0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16ff0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17000 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74 61  / A temporary ta
17010 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  ble will be drop
17020 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
17030 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
17040 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
17050 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  // the table nam
17060 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
17070 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
17080 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17090 20 44 72 6f 70 54 65 6d 70 54 61 62 6c 65 20 3d   DropTempTable =
170a0 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   13,....      //
170b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
170c0 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
170d0 72 79 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20  ry trigger will 
170e0 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
170f0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
17100 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
17110 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 72    /// are the tr
17120 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74  igger name and t
17130 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
17140 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17150 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70  ary>..      Drop
17160 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 31 34  TempTrigger = 14
17170 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17180 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17190 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20  /// A temporary 
171a0 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f  view will be dro
171b0 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
171c0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
171d0 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
171e0 2f 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d  /// the view nam
171f0 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
17200 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
17210 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17220 20 44 72 6f 70 54 65 6d 70 56 69 65 77 20 3d 20   DropTempView = 
17230 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  15,....      ///
17240 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17250 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20    /// A trigger 
17260 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
17270 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
17280 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
17290 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
172a0 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  // trigger name 
172b0 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
172c0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
172d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
172e0 20 44 72 6f 70 54 72 69 67 67 65 72 20 3d 20 31   DropTrigger = 1
172f0 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
17300 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17310 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c 6c   /// A view will
17320 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
17330 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17340 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
17350 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20 20  the view..      
17360 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  /// name and a n
17370 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
17380 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17390 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 69 65 77  ..      DropView
173a0 20 3d 20 31 37 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 17,....      
173b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
173c0 20 20 20 20 20 2f 2f 2f 20 41 6e 20 49 4e 53 45       /// An INSE
173d0 52 54 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  RT statement wil
173e0 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
173f0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
17400 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
17410 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
17420 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
17430 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
17440 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17450 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 73 65 72  ry>..      Inser
17460 74 20 3d 20 31 38 2c 0d 0a 0d 0a 20 20 20 20 20  t = 18,....     
17470 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17480 20 20 20 20 20 20 2f 2f 2f 20 41 20 50 52 41 47        /// A PRAG
17490 4d 41 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  MA statement wil
174a0 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
174b0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
174c0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
174d0 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
174e0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 50 52 41   name of the PRA
174f0 47 4d 41 20 61 6e 64 20 74 68 65 20 6e 65 77 20  GMA and the new 
17500 76 61 6c 75 65 20 6f 72 20 61 20 6e 75 6c 6c 20  value or a null 
17510 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
17520 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17530 20 20 20 20 50 72 61 67 6d 61 20 3d 20 31 39 2c      Pragma = 19,
17540 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17550 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17560 2f 2f 20 41 20 74 61 62 6c 65 20 63 6f 6c 75 6d  // A table colum
17570 6e 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e 20  n will be read. 
17580 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
17590 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
175a0 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  re the..      //
175b0 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  / table name and
175c0 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
175d0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
175e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
175f0 65 61 64 20 3d 20 32 30 2c 0d 0a 0d 0a 20 20 20  ead = 20,....   
17600 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17610 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 45  ..      /// A SE
17620 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 77  LECT statement w
17630 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e  ill be executed.
17640 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
17650 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
17660 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 62  .      /// are b
17670 6f 74 68 20 6e 75 6c 6c 20 76 61 6c 75 65 73 2e  oth null values.
17680 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17690 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 65  mmary>..      Se
176a0 6c 65 63 74 20 3d 20 32 31 2c 0d 0a 0d 0a 20 20  lect = 21,....  
176b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
176c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
176d0 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20  ransaction will 
176e0 62 65 20 73 74 61 72 74 65 64 2c 20 63 6f 6d 6d  be started, comm
176f0 69 74 74 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64  itted, or rolled
17700 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20   back.  The..   
17710 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70     /// action-sp
17720 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17730 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66   are the name of
17740 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28   the operation (
17750 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f  BEGIN,..      //
17760 2f 20 43 4f 4d 4d 49 54 2c 20 6f 72 20 52 4f 4c  / COMMIT, or ROL
17770 4c 42 41 43 4b 29 20 61 6e 64 20 61 20 6e 75 6c  LBACK) and a nul
17780 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
17790 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
177a0 20 20 20 20 20 20 54 72 61 6e 73 61 63 74 69 6f        Transactio
177b0 6e 20 3d 20 32 32 2c 0d 0a 0d 0a 20 20 20 20 20  n = 22,....     
177c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
177d0 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 55 50 44        /// An UPD
177e0 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ATE statement wi
177f0 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
17800 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
17810 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
17820 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
17830 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
17840 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
17850 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17860 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55  ummary>..      U
17870 70 64 61 74 65 20 3d 20 32 33 2c 0d 0a 0d 0a 20  pdate = 23,.... 
17880 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17890 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
178a0 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65  database will be
178b0 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65   attached to the
178c0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68   connection.  Th
178d0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
178e0 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  c..      /// arg
178f0 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 64  uments are the d
17900 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  atabase file nam
17910 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
17920 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
17930 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17940 20 41 74 74 61 63 68 20 3d 20 32 34 2c 0d 0a 0d   Attach = 24,...
17950 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17960 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17970 41 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20  A database will 
17980 62 65 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d  be detached from
17990 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
179a0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
179b0 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f  cific..      ///
179c0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
179d0 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65  he database name
179e0 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
179f0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
17a00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17a10 44 65 74 61 63 68 20 3d 20 32 35 2c 0d 0a 0d 0a  Detach = 25,....
17a20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17a30 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
17a40 68 65 20 73 63 68 65 6d 61 20 6f 66 20 61 20 74  he schema of a t
17a50 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6c 74  able will be alt
17a60 65 72 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  ered.  The actio
17a70 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
17a80 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
17a90 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  are the database
17aa0 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
17ab0 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
17ac0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17ad0 0a 20 20 20 20 20 20 41 6c 74 65 72 54 61 62 6c  .      AlterTabl
17ae0 65 20 3d 20 32 36 2c 0d 0a 0d 0a 20 20 20 20 20  e = 26,....     
17af0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17b00 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64        /// An ind
17b10 65 78 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74  ex will be delet
17b20 65 64 20 61 6e 64 20 74 68 65 6e 20 72 65 63 72  ed and then recr
17b30 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
17b40 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20  on-specific..   
17b50 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
17b60 20 61 72 65 20 74 68 65 20 69 6e 64 65 78 20 6e   are the index n
17b70 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
17b80 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
17b90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17ba0 20 20 20 52 65 69 6e 64 65 78 20 3d 20 32 37 2c     Reindex = 27,
17bb0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17bc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17bd0 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20  // A table will 
17be0 62 65 20 61 6e 61 6c 79 7a 65 64 20 74 6f 20 67  be analyzed to g
17bf0 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69 63  athers statistic
17c00 73 20 61 62 6f 75 74 20 69 74 2e 20 20 54 68 65  s about it.  The
17c10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69  ..      /// acti
17c20 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17c30 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74 61  ments are the ta
17c40 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ble name and a n
17c50 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
17c60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17c70 0d 0a 20 20 20 20 20 20 41 6e 61 6c 79 7a 65 20  ..      Analyze 
17c80 3d 20 32 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 28,....      /
17c90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17ca0 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61      /// A virtua
17cb0 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20  l table will be 
17cc0 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
17cd0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
17ce0 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20  guments are..   
17cf0 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65     /// the table
17d00 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f   name and the mo
17d10 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  dule name...    
17d20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17d30 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56 74  ..      CreateVt
17d40 61 62 6c 65 20 3d 20 32 39 2c 0d 0a 0d 0a 20 20  able = 29,....  
17d50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17d60 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76  >..      /// A v
17d70 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
17d80 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
17d90 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
17da0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
17db0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
17dc0 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74  table name and t
17dd0 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d  he module name..
17de0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17df0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
17e00 70 56 74 61 62 6c 65 20 3d 20 33 30 2c 0d 0a 0d  pVtable = 30,...
17e10 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17e20 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17e30 41 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 77  A SQL function w
17e40 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20 20  ill be called.  
17e50 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
17e60 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
17e70 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e  e a..      /// n
17e80 75 6c 6c 20 76 61 6c 75 65 20 61 6e 64 20 74 68  ull value and th
17e90 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 2e  e function name.
17ea0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17eb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75  mmary>..      Fu
17ec0 6e 63 74 69 6f 6e 20 3d 20 33 31 2c 0d 0a 0d 0a  nction = 31,....
17ed0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17ee0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17ef0 20 73 61 76 65 70 6f 69 6e 74 20 77 69 6c 6c 20   savepoint will 
17f00 62 65 20 63 72 65 61 74 65 64 2c 20 72 65 6c 65  be created, rele
17f10 61 73 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64 20  ased, or rolled 
17f20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20 20  back.  The..    
17f30 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65    /// action-spe
17f40 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
17f50 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  are the name of 
17f60 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28 42  the operation (B
17f70 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  EGIN,..      ///
17f80 20 52 45 4c 45 41 53 45 2c 20 6f 72 20 52 4f 4c   RELEASE, or ROL
17f90 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20 73  LBACK) and the s
17fa0 61 76 65 70 6f 69 6e 74 20 6e 61 6d 65 2e 0d 0a  avepoint name...
17fb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17fc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 61 76 65  ary>..      Save
17fd0 70 6f 69 6e 74 20 3d 20 33 32 2c 0d 0a 0d 0a 20  point = 32,.... 
17fe0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17ff0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
18000 72 65 63 75 72 73 69 76 65 20 71 75 65 72 79 20  recursive query 
18010 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
18020 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
18030 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
18040 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
18050 74 77 6f 20 6e 75 6c 6c 20 76 61 6c 75 65 73 2e  two null values.
18060 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
18070 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65  mmary>..      Re
18080 63 75 72 73 69 76 65 20 3d 20 33 33 0d 0a 20 20  cursive = 33..  
18090 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
180a0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
180b0 70 6f 73 73 69 62 6c 65 20 72 65 74 75 72 6e 20  possible return 
180c0 63 6f 64 65 73 20 66 6f 72 20 74 68 65 20 70 72  codes for the pr
180d0 6f 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 2e  ogress callback.
180e0 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
180f0 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
18100 6d 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73 73  m SQLiteProgress
18110 52 65 74 75 72 6e 43 6f 64 65 20 2f 2a 20 69 6e  ReturnCode /* in
18120 74 20 2a 2f 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  t */..  {..     
18130 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18140 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70        /// The op
18150 65 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63  eration should c
18160 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20  ontinue...      
18170 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18180 20 20 20 20 20 20 43 6f 6e 74 69 6e 75 65 20 3d        Continue =
18190 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   0,....      ///
181a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
181b0 20 20 2f 2f 2f 20 54 68 65 20 6f 70 65 72 61 74    /// The operat
181c0 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 69 6e  ion should be in
181d0 74 65 72 72 75 70 74 65 64 2e 0d 0a 20 20 20 20  terrupted...    
181e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
181f0 0d 0a 20 20 20 20 20 20 49 6e 74 65 72 72 75 70  ..      Interrup
18200 74 20 3d 20 31 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  t = 1..  }....  
18210 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18220 20 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e 20   /// The return 
18230 63 6f 64 65 20 66 6f 72 20 74 68 65 20 63 75 72  code for the cur
18240 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74  rent call into t
18250 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a  he authorizer...
18260 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18270 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
18280 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72  SQLiteAuthorizer
18290 52 65 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b 0d  ReturnCode..  {.
182a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
182b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
182c0 54 68 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20  The action will 
182d0 62 65 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20  be allowed...   
182e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
182f0 3e 0d 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30 2c  >..      Ok = 0,
18300 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
18310 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
18320 2f 2f 20 54 68 65 20 6f 76 65 72 61 6c 6c 20 61  // The overall a
18330 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69  ction will be di
18340 73 61 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e 20  sallowed and an 
18350 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77 69  error message wi
18360 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  ll be..      ///
18370 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74   returned from t
18380 68 65 20 71 75 65 72 79 20 70 72 65 70 61 72 61  he query prepara
18390 74 69 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  tion method...  
183a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
183b0 79 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 20 3d  y>..      Deny =
183c0 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   1,....      ///
183d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
183e0 20 20 2f 2f 2f 20 54 68 65 20 73 70 65 63 69 66    /// The specif
183f0 69 63 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62  ic action will b
18400 65 20 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68 6f  e disallowed; ho
18410 77 65 76 65 72 2c 20 74 68 65 20 6f 76 65 72 61  wever, the overa
18420 6c 6c 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20 20  ll action..     
18430 20 2f 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69 6e   /// will contin
18440 75 65 2e 20 20 54 68 65 20 65 78 61 63 74 20 65  ue.  The exact e
18450 66 66 65 63 74 73 20 6f 66 20 74 68 69 73 20 72  ffects of this r
18460 65 74 75 72 6e 20 63 6f 64 65 20 76 61 72 79 20  eturn code vary 
18470 64 65 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20 20  depending..     
18480 20 2f 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65 63   /// on the spec
18490 69 66 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c 65  ific action, ple
184a0 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 68 65  ase refer to the
184b0 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
184c0 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  rary..      /// 
184d0 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
184e0 72 20 66 75 74 68 65 72 20 64 65 74 61 69 6c 73  r futher details
184f0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
18500 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49  ummary>..      I
18510 67 6e 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d 0a  gnore = 2..  }..
18520 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
18530 3e 0d 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20 75  >..  /// Class u
18540 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74  sed internally t
18550 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  o determine the 
18560 64 61 74 61 74 79 70 65 20 6f 66 20 61 20 63 6f  datatype of a co
18570 6c 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c 74  lumn in a result
18580 73 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  set..  /// </sum
18590 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61  mary>..  interna
185a0 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
185b0 51 4c 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a  QLiteType..  {..
185c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
185d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44  >..    /// The D
185e0 62 54 79 70 65 20 6f 66 20 74 68 65 20 63 6f 6c  bType of the col
185f0 75 6d 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e 4f  umn, or DbType.O
18600 62 6a 65 63 74 20 69 66 20 69 74 20 63 61 6e 6e  bject if it cann
18610 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
18620 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
18630 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
18640 61 6c 20 44 62 54 79 70 65 20 54 79 70 65 3b 0d  al DbType Type;.
18650 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
18660 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
18670 61 66 66 69 6e 69 74 79 20 6f 66 20 61 20 63 6f  affinity of a co
18680 6c 75 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20 65  lumn, used for e
18690 78 70 72 65 73 73 69 6f 6e 73 20 6f 72 20 77 68  xpressions or wh
186a0 65 6e 20 54 79 70 65 20 69 73 20 44 62 54 79 70  en Type is DbTyp
186b0 65 2e 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f  e.Object..    //
186c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
186d0 20 20 69 6e 74 65 72 6e 61 6c 20 54 79 70 65 41    internal TypeA
186e0 66 66 69 6e 69 74 79 20 41 66 66 69 6e 69 74 79  ffinity Affinity
186f0 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ;....    ///////
18700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
18750 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
18760 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 20  // Constructs a 
18770 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63 65  default instance
18780 20 6f 66 20 74 68 69 73 20 74 79 70 65 2e 0d 0a   of this type...
18790 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
187a0 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53  y>..    public S
187b0 51 4c 69 74 65 54 79 70 65 28 29 0d 0a 20 20 20  QLiteType()..   
187c0 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 20 64 6f 20   {..      // do 
187d0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d  nothing...    }.
187e0 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
18840 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
18850 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69   Constructs an i
18860 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
18870 74 79 70 65 20 77 69 74 68 20 74 68 65 20 73 70  type with the sp
18880 65 63 69 66 69 65 64 20 66 69 65 6c 64 20 76 61  ecified field va
18890 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  lues...    /// <
188a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
188b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
188c0 61 66 66 69 6e 69 74 79 22 3e 0d 0a 20 20 20 20  affinity">..    
188d0 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61 66 66  /// The type aff
188e0 69 6e 69 74 79 20 74 6f 20 75 73 65 20 66 6f 72  inity to use for
188f0 20 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63   the new instanc
18900 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
18910 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
18920 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22  aram name="type"
18930 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
18940 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f 20  atabase type to 
18950 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77 20  use for the new 
18960 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
18970 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18980 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79   public SQLiteTy
18990 70 65 28 0d 0a 20 20 20 20 20 20 54 79 70 65 41  pe(..      TypeA
189a0 66 66 69 6e 69 74 79 20 61 66 66 69 6e 69 74 79  ffinity affinity
189b0 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 20  ,..      DbType 
189c0 74 79 70 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20  type..      ).. 
189d0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
189e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 68 69 73     {..      this
189f0 2e 41 66 66 69 6e 69 74 79 20 3d 20 61 66 66 69  .Affinity = affi
18a00 6e 69 74 79 3b 0d 0a 20 20 20 20 20 20 74 68 69  nity;..      thi
18a10 73 2e 54 79 70 65 20 3d 20 74 79 70 65 3b 0d 0a  s.Type = type;..
18a20 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20      }..  }....  
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18a80 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  .  internal seal
18a90 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44  ed class SQLiteD
18aa0 62 54 79 70 65 4d 61 70 0d 0a 20 20 20 20 20 20  bTypeMap..      
18ab0 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  : Dictionary<str
18ac0 69 6e 67 2c 20 53 51 4c 69 74 65 44 62 54 79 70  ing, SQLiteDbTyp
18ad0 65 4d 61 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a  eMapping>..  {..
18ae0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
18af0 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20  ivate Data..    
18b00 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f    private Dictio
18b10 6e 61 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c  nary<DbType, SQL
18b20 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
18b30 3e 20 72 65 76 65 72 73 65 3b 0d 0a 20 20 20 20  > reverse;..    
18b40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
18b50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18ba0 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
18bb0 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
18bc0 74 6f 72 73 0d 0a 20 20 20 20 20 20 70 75 62 6c  tors..      publ
18bd0 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ic SQLiteDbTypeM
18be0 61 70 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ap()..          
18bf0 3a 20 62 61 73 65 28 6e 65 77 20 54 79 70 65 4e  : base(new TypeN
18c00 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65  ameStringCompare
18c10 72 28 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  r())..      {.. 
18c20 20 20 20 20 20 20 20 20 20 72 65 76 65 72 73 65           reverse
18c30 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
18c40 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65  y<DbType, SQLite
18c50 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 28 29  DbTypeMapping>()
18c60 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
18c70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18cc0 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51  .      public SQ
18cd0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 0d 0a  LiteDbTypeMap(..
18ce0 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65            IEnume
18cf0 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54 79  rable<SQLiteDbTy
18d00 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65  peMapping> colle
18d10 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ction..         
18d20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20   )..          : 
18d30 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d  this()..      {.
18d40 0a 20 20 20 20 20 20 20 20 20 20 41 64 64 28 63  .          Add(c
18d50 6f 6c 6c 65 63 74 69 6f 6e 29 3b 0d 0a 20 20 20  ollection);..   
18d60 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
18d70 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
18d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18dd0 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65     #region Syste
18de0 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65  m.Collections.Ge
18df0 6e 65 72 69 63 2e 44 69 63 74 69 6f 6e 61 72 79  neric.Dictionary
18e00 20 22 4f 76 65 72 72 69 64 65 73 22 0d 0a 20 20   "Overrides"..  
18e10 20 20 20 20 70 75 62 6c 69 63 20 6e 65 77 20 69      public new i
18e20 6e 74 20 43 6c 65 61 72 28 29 0d 0a 20 20 20 20  nt Clear()..    
18e30 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
18e40 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a  nt result = 0;..
18e50 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
18e60 72 65 76 65 72 73 65 20 21 3d 20 6e 75 6c 6c 29  reverse != null)
18e70 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
18e80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
18e90 75 6c 74 20 2b 3d 20 72 65 76 65 72 73 65 2e 43  ult += reverse.C
18ea0 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
18eb0 20 20 20 20 20 72 65 76 65 72 73 65 2e 43 6c 65       reverse.Cle
18ec0 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ar();..         
18ed0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
18ee0 72 65 73 75 6c 74 20 2b 3d 20 62 61 73 65 2e 43  result += base.C
18ef0 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
18f00 20 62 61 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a   base.Clear();..
18f10 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
18f20 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
18f30 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
18f40 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f  egion....      /
18f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
18fa0 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
18fb0 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 48 65  DbTypeMapping He
18fc0 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20  lper Methods..  
18fd0 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
18fe0 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Add(..          
18ff0 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69  IEnumerable<SQLi
19000 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e  teDbTypeMapping>
19010 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20   collection..   
19020 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
19030 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
19040 28 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e  (collection == n
19050 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19060 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
19070 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74  gumentNullExcept
19080 69 6f 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e 22  ion("collection"
19090 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
190a0 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65 44  foreach (SQLiteD
190b0 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65  bTypeMapping ite
190c0 6d 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29  m in collection)
190d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
190e0 41 64 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20 20  Add(item);..    
190f0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19140 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19150 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28  public void Add(
19160 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
19170 69 6e 67 20 69 74 65 6d 29 0d 0a 20 20 20 20 20  ing item)..     
19180 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
19190 20 28 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d   (item == null).
191a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
191b0 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
191c0 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
191d0 69 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  item");....     
191e0 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 74 79       if (item.ty
191f0 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  peName == null).
19200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
19210 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
19220 74 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d  tException("item
19230 20 74 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e 6f   type name canno
19240 74 20 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a  t be null");....
19250 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 41            base.A
19260 64 64 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65  dd(item.typeName
19270 2c 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20  , item);....    
19280 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 70        if (item.p
19290 72 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20 20  rimary)..       
192a0 20 20 20 20 20 20 20 72 65 76 65 72 73 65 2e 41         reverse.A
192b0 64 64 28 69 74 65 6d 2e 64 61 74 61 54 79 70 65  dd(item.dataType
192c0 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20  , item);..      
192d0 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
192e0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
192f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19330 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19340 23 72 65 67 69 6f 6e 20 44 62 54 79 70 65 20 48  #region DbType H
19350 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
19360 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
19370 20 43 6f 6e 74 61 69 6e 73 4b 65 79 28 44 62 54   ContainsKey(DbT
19380 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20 20  ype key)..      
19390 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
193a0 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c  (reverse == null
193b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
193c0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
193d0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
193e0 72 6e 20 72 65 76 65 72 73 65 2e 43 6f 6e 74 61  rn reverse.Conta
193f0 69 6e 73 4b 65 79 28 6b 65 79 29 3b 0d 0a 20 20  insKey(key);..  
19400 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f      }....      /
19410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19450 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19460 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54 72    public bool Tr
19470 79 47 65 74 56 61 6c 75 65 28 44 62 54 79 70 65  yGetValue(DbType
19480 20 6b 65 79 2c 20 6f 75 74 20 53 51 4c 69 74 65   key, out SQLite
19490 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61  DbTypeMapping va
194a0 6c 75 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  lue)..      {.. 
194b0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76           if (rev
194c0 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  erse == null).. 
194d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
194e0 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
194f0 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
19500 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
19510 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
19520 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  }....          r
19530 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e 54 72  eturn reverse.Tr
19540 79 47 65 74 56 61 6c 75 65 28 6b 65 79 2c 20 6f  yGetValue(key, o
19550 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ut value);..    
19560 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
19570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
195c0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 6d 6f  public bool Remo
195d0 76 65 28 44 62 54 79 70 65 20 6b 65 79 29 0d 0a  ve(DbType key)..
195e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
195f0 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20 3d     if (reverse =
19600 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
19610 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
19620 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
19630 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73 65    return reverse
19640 2e 52 65 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a 20  .Remove(key);.. 
19650 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65       }..      #e
19660 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d  ndregion..  }...
19670 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .  /////////////
19680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196c0 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  ....  internal s
196d0 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
196e0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 0d  teDbTypeMapping.
196f0 0a 20 20 7b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  .  {..    intern
19700 61 6c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  al SQLiteDbTypeM
19710 61 70 70 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  apping(..       
19720 20 73 74 72 69 6e 67 20 6e 65 77 54 79 70 65 4e   string newTypeN
19730 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 44 62  ame,..        Db
19740 54 79 70 65 20 6e 65 77 44 61 74 61 54 79 70 65  Type newDataType
19750 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  ,..        bool 
19760 6e 65 77 50 72 69 6d 61 72 79 0d 0a 20 20 20 20  newPrimary..    
19770 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
19780 20 20 20 20 74 79 70 65 4e 61 6d 65 20 3d 20 6e      typeName = n
19790 65 77 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  ewTypeName;..   
197a0 20 20 20 64 61 74 61 54 79 70 65 20 3d 20 6e 65     dataType = ne
197b0 77 44 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20  wDataType;..    
197c0 20 20 70 72 69 6d 61 72 79 20 3d 20 6e 65 77 50    primary = newP
197d0 72 69 6d 61 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a  rimary;..    }..
197e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
197f0 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b 0d  tring typeName;.
19800 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62  .    internal Db
19810 54 79 70 65 20 64 61 74 61 54 79 70 65 3b 0d 0a  Type dataType;..
19820 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f      internal boo
19830 6c 20 70 72 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d  l primary;..  }.
19840 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  ...  internal se
19850 61 6c 65 64 20 63 6c 61 73 73 20 54 79 70 65 4e  aled class TypeN
19860 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65  ameStringCompare
19870 72 20 3a 20 49 45 71 75 61 6c 69 74 79 43 6f 6d  r : IEqualityCom
19880 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 2c 20 49  parer<string>, I
19890 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e  Comparer<string>
198a0 0d 0a 20 20 7b 0d 0a 20 20 20 20 23 72 65 67 69  ..  {..    #regi
198b0 6f 6e 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70  on IEqualityComp
198c0 61 72 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65 6d  arer<string> Mem
198d0 62 65 72 73 0d 0a 20 20 20 20 70 75 62 6c 69 63  bers..    public
198e0 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20   bool Equals(.. 
198f0 20 20 20 20 20 73 74 72 69 6e 67 20 6c 65 66 74       string left
19900 2c 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20  ,..      string 
19910 72 69 67 68 74 0d 0a 20 20 20 20 20 20 29 0d 0a  right..      )..
19920 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
19930 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c  urn String.Equal
19940 73 28 6c 65 66 74 2c 20 72 69 67 68 74 2c 20 53  s(left, right, S
19950 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
19960 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
19970 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
19980 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
199d0 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20  .    public int 
199e0 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20  GetHashCode(..  
199f0 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
19a00 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b  ..      )..    {
19a10 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
19a20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f    // NOTE: The o
19a30 6e 6c 79 20 74 68 69 6e 67 20 74 68 61 74 20 77  nly thing that w
19a40 65 20 6d 75 73 74 20 67 75 61 72 61 6e 74 65 65  e must guarantee
19a50 20 68 65 72 65 2c 20 61 63 63 6f 72 64 69 6e 67   here, according
19a60 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
19a70 20 74 6f 20 74 68 65 20 4d 53 44 4e 20 64 6f 63   to the MSDN doc
19a80 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 49  umentation for I
19a90 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72  EqualityComparer
19aa0 2c 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20  , is..      //  
19ab0 20 20 20 20 20 74 68 61 74 20 66 6f 72 20 74 77       that for tw
19ac0 6f 20 67 69 76 65 6e 20 73 74 72 69 6e 67 73 2c  o given strings,
19ad0 20 69 66 20 45 71 75 61 6c 73 20 72 65 74 75 72   if Equals retur
19ae0 6e 20 74 72 75 65 20 74 68 65 6e 0d 0a 20 20 20  n true then..   
19af0 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
19b00 74 77 6f 20 73 74 72 69 6e 67 73 20 6d 75 73 74  two strings must
19b10 20 68 61 73 68 20 74 6f 20 74 68 65 20 73 61 6d   hash to the sam
19b20 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  e value...      
19b30 2f 2f 0d 0a 20 20 20 20 20 20 69 66 20 28 76 61  //..      if (va
19b40 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue != null)..  
19b50 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
19b60 69 6e 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69  ingComparer.Ordi
19b70 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 2e 47 65  nalIgnoreCase.Ge
19b80 74 48 61 73 68 43 6f 64 65 28 76 61 6c 75 65 29  tHashCode(value)
19b90 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  ;..      else.. 
19ba0 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
19bb0 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63   ArgumentNullExc
19bc0 65 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b  eption("value");
19bd0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
19be0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19c40 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70 61    #region ICompa
19c50 72 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62  rer<string> Memb
19c60 65 72 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ers..    public 
19c70 69 6e 74 20 43 6f 6d 70 61 72 65 28 0d 0a 20 20  int Compare(..  
19c80 20 20 20 20 73 74 72 69 6e 67 20 78 2c 0d 0a 20      string x,.. 
19c90 20 20 20 20 20 73 74 72 69 6e 67 20 79 0d 0a 20       string y.. 
19ca0 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
19cb0 20 20 20 20 20 69 66 20 28 28 78 20 3d 3d 20 6e       if ((x == n
19cc0 75 6c 6c 29 20 26 26 20 28 79 20 3d 3d 20 6e 75  ull) && (y == nu
19cd0 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 72 65  ll))..        re
19ce0 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 65  turn 0;..      e
19cf0 6c 73 65 20 69 66 20 28 78 20 3d 3d 20 6e 75 6c  lse if (x == nul
19d00 6c 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  l)..        retu
19d10 72 6e 20 2d 31 3b 0d 0a 20 20 20 20 20 20 65 6c  rn -1;..      el
19d20 73 65 20 69 66 20 28 79 20 3d 3d 20 6e 75 6c 6c  se if (y == null
19d30 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  )..        retur
19d40 6e 20 31 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65  n 1;..      else
19d50 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
19d60 20 78 2e 43 6f 6d 70 61 72 65 54 6f 28 79 29 3b   x.CompareTo(y);
19d70 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
19d80 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d  dregion..  }..}.
19d90 0a                                               .