System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1b2ae1ff50ff71bb762b6f80473cedc162256743:


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 20 3c    }....    /// <
ae70: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
ae80: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 6f  / Attempts to co
ae90: 6e 76 65 72 74 20 61 20 3c 73 65 65 20 63 72 65  nvert a <see cre
aea0: 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e 20 69 6e  f="String" /> in
aeb0: 74 6f 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  to a <see cref="
aec0: 42 6f 6f 6c 65 61 6e 22 20 2f 3e 2e 0d 0a 20 20  Boolean" />...  
aed0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
aee0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
aef0: 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 0d   name="source">.
af00: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65  .    /// The <se
af10: 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20  e cref="String" 
af20: 2f 3e 20 74 6f 20 63 6f 6e 76 65 72 74 2c 20 63  /> to convert, c
af30: 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0d 0a  annot be null...
af40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
af50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
af60: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
af70: 20 63 6f 6e 76 65 72 74 65 64 20 3c 73 65 65 20   converted <see 
af80: 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22 20 2f  cref="Boolean" /
af90: 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
afa0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
afb0: 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
afc0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 75 70  .    /// The sup
afd0: 70 6f 72 74 65 64 20 73 74 72 69 6e 67 73 20 61  ported strings a
afe0: 72 65 20 22 79 65 73 22 2c 20 22 6e 6f 22 2c 20  re "yes", "no", 
aff0: 22 79 22 2c 20 22 6e 22 2c 20 22 6f 6e 22 2c 20  "y", "n", "on", 
b000: 22 6f 66 66 22 2c 20 22 30 22 2c 20 22 31 22 2c  "off", "0", "1",
b010: 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 20 77 65 6c  ..    /// as wel
b020: 6c 20 61 73 20 61 6e 79 20 70 72 65 66 69 78 20  l as any prefix 
b030: 6f 66 20 74 68 65 20 73 74 72 69 6e 67 73 20 3c  of the strings <
b040: 73 65 65 20 63 72 65 66 3d 22 42 6f 6f 6c 65 61  see cref="Boolea
b050: 6e 2e 46 61 6c 73 65 53 74 72 69 6e 67 22 20 2f  n.FalseString" /
b060: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 3c  >..    /// and <
b070: 73 65 65 20 63 72 65 66 3d 22 42 6f 6f 6c 65 61  see cref="Boolea
b080: 6e 2e 54 72 75 65 53 74 72 69 6e 67 22 20 2f 3e  n.TrueString" />
b090: 2e 20 20 41 6c 6c 20 73 74 72 69 6e 67 73 20 61  .  All strings a
b0a0: 72 65 20 74 72 65 61 74 65 64 20 69 6e 20 61 0d  re treated in a.
b0b0: 0a 20 20 20 20 2f 2f 2f 20 63 61 73 65 2d 69 6e  .    /// case-in
b0c0: 73 65 6e 73 69 74 69 76 65 20 6d 61 6e 6e 65 72  sensitive manner
b0d0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
b0e0: 61 72 6b 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  arks>..    publi
b0f0: 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 54 6f  c static bool To
b100: 42 6f 6f 6c 65 61 6e 28 73 74 72 69 6e 67 20 73  Boolean(string s
b110: 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  ource)..    {.. 
b120: 20 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63         if (sourc
b130: 65 20 3d 3d 20 6e 75 6c 6c 29 20 74 68 72 6f 77  e == null) throw
b140: 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
b150: 6c 45 78 63 65 70 74 69 6f 6e 28 22 73 6f 75 72  lException("sour
b160: 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  ce");..        i
b170: 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72  f (String.Compar
b180: 65 28 73 6f 75 72 63 65 2c 20 30 2c 20 62 6f 6f  e(source, 0, boo
b190: 6c 2e 54 72 75 65 53 74 72 69 6e 67 2c 20 30 2c  l.TrueString, 0,
b1a0: 20 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 2c 20   source.Length, 
b1b0: 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
b1c0: 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
b1d0: 73 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  se) == 0) return
b1e0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
b1f0: 65 6c 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e  else if (String.
b200: 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65 2c 20  Compare(source, 
b210: 30 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53 74 72  0, bool.FalseStr
b220: 69 6e 67 2c 20 30 2c 20 73 6f 75 72 63 65 2e 4c  ing, 0, source.L
b230: 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f 6d  ength, StringCom
b240: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b250: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b260: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
b270: 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  ..        switch
b280: 20 28 73 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72   (source.ToLower
b290: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
b2a0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 29 0d  ariantCulture)).
b2b0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
b2c0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 79 22          case "y"
b2d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  :..            c
b2e0: 61 73 65 20 22 79 65 73 22 3a 0d 0a 20 20 20 20  ase "yes":..    
b2f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6f 6e          case "on
b300: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
b310: 63 61 73 65 20 22 31 22 3a 0d 0a 20 20 20 20 20  case "1":..     
b320: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b330: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
b340: 20 20 20 20 20 63 61 73 65 20 22 6e 22 3a 0d 0a       case "n":..
b350: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
b360: 20 22 6e 6f 22 3a 0d 0a 20 20 20 20 20 20 20 20   "no":..        
b370: 20 20 20 20 63 61 73 65 20 22 6f 66 66 22 3a 0d      case "off":.
b380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
b390: 65 20 22 30 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "0":..        
b3a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
b3b0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
b3c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f  ....        thro
b3d0: 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78  w new ArgumentEx
b3e0: 63 65 70 74 69 6f 6e 28 22 73 6f 75 72 63 65 22  ception("source"
b3f0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
b400: 20 23 72 65 67 69 6f 6e 20 54 79 70 65 20 43 6f   #region Type Co
b410: 6e 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 2f  nversions..    /
b420: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b430: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
b440: 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20 61   SQLiteType to a
b450: 20 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a 65 63   .NET Type objec
b460: 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  t..    /// </sum
b470: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
b480: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 22 3e 54  param name="t">T
b490: 68 65 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f  he SQLiteType to
b4a0: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
b4b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
b4c0: 6e 73 3e 52 65 74 75 72 6e 73 20 61 20 2e 4e 45  ns>Returns a .NE
b4d0: 54 20 54 79 70 65 20 6f 62 6a 65 63 74 3c 2f 72  T Type object</r
b4e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
b4f0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70  ernal static Typ
b500: 65 20 53 51 4c 69 74 65 54 79 70 65 54 6f 54 79  e SQLiteTypeToTy
b510: 70 65 28 53 51 4c 69 74 65 54 79 70 65 20 74 29  pe(SQLiteType t)
b520: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
b530: 66 20 28 74 2e 54 79 70 65 20 3d 3d 20 44 62 54  f (t.Type == DbT
b540: 79 70 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20  ype.Object)..   
b550: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 61 66 66       return _aff
b560: 69 6e 69 74 79 74 6f 74 79 70 65 5b 28 69 6e 74  initytotype[(int
b570: 29 74 2e 41 66 66 69 6e 69 74 79 5d 3b 0d 0a 20  )t.Affinity];.. 
b580: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
b590: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
b5a0: 43 6f 6e 76 65 72 74 2e 44 62 54 79 70 65 54 6f  Convert.DbTypeTo
b5b0: 54 79 70 65 28 74 2e 54 79 70 65 29 3b 0d 0a 20  Type(t.Type);.. 
b5c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
b5d0: 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65 5b  ate static Type[
b5e0: 5d 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70  ] _affinitytotyp
b5f0: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70  e = {..      typ
b600: 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f  eof(object),   /
b610: 2f 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20  / Uninitialized 
b620: 28 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (0)..      typeo
b630: 66 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20  f(Int64),    // 
b640: 49 6e 74 36 34 20 28 31 29 0d 0a 20 20 20 20 20  Int64 (1)..     
b650: 20 74 79 70 65 6f 66 28 44 6f 75 62 6c 65 29 2c   typeof(Double),
b660: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 32 29     // Double (2)
b670: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
b680: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 54 65 78  tring),   // Tex
b690: 74 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70  t (3)..      typ
b6a0: 65 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f  eof(byte[]),   /
b6b0: 2f 20 42 6c 6f 62 20 28 34 29 0d 0a 20 20 20 20  / Blob (4)..    
b6c0: 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29    typeof(object)
b6d0: 2c 20 20 20 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d  ,   // Null (5).
b6e0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
b6f0: 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65  teTime), // Date
b700: 54 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20  Time (10)..     
b710: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20   typeof(object) 
b720: 20 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d     // None (11).
b730: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
b740: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b750: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
b760: 6e 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65  n intrinsic type
b770: 2c 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70  , return a DbTyp
b780: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
b790: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
b7a0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
b7b0: 3e 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65  >The native type
b7c0: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
b7d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
b7e0: 74 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73  turns>The corres
b7f0: 70 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74  ponding (closest
b800: 20 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f   match) DbType</
b810: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
b820: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62  ternal static Db
b830: 54 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70  Type TypeToDbTyp
b840: 65 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  e(Type typ)..   
b850: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f   {..      TypeCo
b860: 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74  de tc = Type.Get
b870: 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a  TypeCode(typ);..
b880: 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20        if (tc == 
b890: 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29  TypeCode.Object)
b8a0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
b8b0: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
b8c0: 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65  peof(byte[])) re
b8d0: 74 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61  turn DbType.Bina
b8e0: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ry;..        if 
b8f0: 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47  (typ == typeof(G
b900: 75 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54  uid)) return DbT
b910: 79 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20  ype.Guid;..     
b920: 20 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65     return DbType
b930: 2e 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  .String;..      
b940: 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
b950: 5f 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69  _typetodbtype[(i
b960: 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  nt)tc];..    }..
b970: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
b980: 61 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74  atic DbType[] _t
b990: 79 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d  ypetodbtype = {.
b9a0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62  .      DbType.Ob
b9b0: 6a 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79  ject,   // Empty
b9c0: 20 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (0)..      DbTy
b9d0: 70 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20  pe.Binary,   // 
b9e0: 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20  Object (1)..    
b9f0: 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c    DbType.Object,
ba00: 20 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29     // DBNull (2)
ba10: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
ba20: 6f 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c  oolean,  // Bool
ba30: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44  ean (3)..      D
ba40: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
ba50: 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20  // Char (4)..   
ba60: 20 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c     DbType.SByte,
ba70: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29      // SByte (5)
ba80: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
ba90: 79 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65  yte,     // Byte
baa0: 20 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (6)..      DbTy
bab0: 70 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20  pe.Int16,    // 
bac0: 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20  Int16 (7)..     
bad0: 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20   DbType.UInt16, 
bae0: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d    // UInt16 (8).
baf0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e  .      DbType.In
bb00: 74 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32  t32,    // Int32
bb10: 20 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (9)..      DbTy
bb20: 70 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20  pe.UInt32,   // 
bb30: 55 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20  UInt32 (10)..   
bb40: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c     DbType.Int64,
bb50: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31      // Int64 (11
bb60: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
bb70: 55 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e  UInt64,   // UIn
bb80: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
bb90: 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20  DbType.Single,  
bba0: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d   // Single (13).
bbb0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f  .      DbType.Do
bbc0: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c  uble,   // Doubl
bbd0: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62  e (14)..      Db
bbe0: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f  Type.Decimal,  /
bbf0: 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a  / Decimal (15)..
bc00: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74        DbType.Dat
bc10: 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69  eTime, // DateTi
bc20: 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44  me (16)..      D
bc30: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
bc40: 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20  // ?? (17)..    
bc50: 20 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20    DbType.String 
bc60: 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38     // String (18
bc70: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
bc80: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bc90: 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
bca0: 74 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66  the ColumnSize f
bcb0: 6f 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54  or the given DbT
bcc0: 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ype..    /// </s
bcd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
bce0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
bcf0: 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f  p">The DbType to
bd00: 20 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66   get the size of
bd10: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
bd20: 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  / <returns></ret
bd30: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
bd40: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44  nal static int D
bd50: 62 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a  bTypeToColumnSiz
bd60: 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  e(DbType typ).. 
bd70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
bd80: 72 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75  rn _dbtypetocolu
bd90: 6d 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d  mnsize[(int)typ]
bda0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
bdb0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
bdc0: 6e 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f  nt[] _dbtypetoco
bdd0: 6c 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20  lumnsize = {..  
bde0: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
bdf0: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20  , // AnsiString 
be00: 28 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  (0)..      int.M
be10: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61  axValue, // Bina
be20: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c  ry (1)..      1,
be30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
be40: 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31  yte (2)..      1
be50: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
be60: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
be70: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20     8,           
be80: 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29   // Currency (4)
be90: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bea0: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35        // Date (5
beb0: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
bec0: 20 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69         // DateTi
bed0: 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c  me (6)..      8,
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
bef0: 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20  ecimal (7)..    
bf00: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
bf10: 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20  // Double (8).. 
bf20: 20 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20       16,        
bf30: 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a     // Guid (9)..
bf40: 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20        2,        
bf50: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30      // Int16 (10
bf60: 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20  )..      4,     
bf70: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20         // Int32 
bf80: 28 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (11)..      8,  
bf90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
bfa0: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69  64 (12)..      i
bfb0: 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20  nt.MaxValue, // 
bfc0: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
bfd0: 20 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20     1,           
bfe0: 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a   // SByte (14)..
bff0: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20        4,        
c000: 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31      // Single (1
c010: 35 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  5)..      int.Ma
c020: 78 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  xValue, // Strin
c030: 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c  g (16)..      8,
c040: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
c050: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
c060: 32 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  2,            //
c070: 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20   UInt16 (18)..  
c080: 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20      4,          
c090: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29    // UInt32 (19)
c0a0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
c0b0: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20        // UInt64 
c0c0: 28 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (20)..      8,  
c0d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72            // Var
c0e0: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
c0f0: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
c100: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46  , // AnsiStringF
c110: 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d  ixedLength (22).
c120: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
c130: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69  lue, // StringFi
c140: 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a  xedLength (23)..
c150: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
c160: 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a  ue, // ?? (24)..
c170: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
c180: 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ue  // Xml (25).
c190: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69  .    };....    i
c1a0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f  nternal static o
c1b0: 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75  bject DbTypeToNu
c1c0: 6d 65 72 69 63 50 72 65 63 69 73 69 6f 6e 28 44  mericPrecision(D
c1d0: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
c1e0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
c1f0: 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63  _dbtypetonumeric
c200: 70 72 65 63 69 73 69 6f 6e 5b 28 69 6e 74 29 74  precision[(int)t
c210: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  yp];..    }.... 
c220: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c230: 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79  c object[] _dbty
c240: 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63 69  petonumericpreci
c250: 73 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20 20 20 20  sion = {..      
c260: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c270: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
c280: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c290: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
c2a0: 31 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20 20  1)..      3,    
c2b0: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
c2c0: 28 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (2)..      DBNul
c2d0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c  l.Value, // Bool
c2e0: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 31  ean (3)..      1
c2f0: 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  9,           // 
c300: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
c310: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c320: 2c 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20  , // Date (5).. 
c330: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c340: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
c350: 36 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20  6)..      53,   
c360: 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d          // Decim
c370: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 35 33  al (7)..      53
c380: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44  ,           // D
c390: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
c3a0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c3b0: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
c3c0: 20 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 20    5,            
c3d0: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
c3e0: 20 20 20 20 20 31 30 2c 20 20 20 20 20 20 20 20       10,        
c3f0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
c400: 0d 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20  ..      19,     
c410: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
c420: 31 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  12)..      DBNul
c430: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  l.Value, // Obje
c440: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 33  ct (13)..      3
c450: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c460: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
c470: 20 20 32 34 2c 20 20 20 20 20 20 20 20 20 20 20    24,           
c480: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
c490: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c4a0: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
c4b0: 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  6)..      DBNull
c4c0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20  .Value, // Time 
c4d0: 28 31 37 29 0d 0a 20 20 20 20 20 20 35 2c 20 20  (17)..      5,  
c4e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c4f0: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
c500: 31 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  10,           //
c510: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
c520: 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20      19,         
c530: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
c540: 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20 20  ..      53,     
c550: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
c560: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
c570: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c580: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
c590: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
c5a0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c5b0: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
c5c0: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
c5d0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c5e0: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
c5f0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20    DBNull.Value  
c600: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
c610: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72   };....    inter
c620: 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63  nal static objec
c630: 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69  t DbTypeToNumeri
c640: 63 53 63 61 6c 65 28 44 62 54 79 70 65 20 74 79  cScale(DbType ty
c650: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  p)..    {..     
c660: 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74   return _dbtypet
c670: 6f 6e 75 6d 65 72 69 63 73 63 61 6c 65 5b 28 69  onumericscale[(i
c680: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d  nt)typ];..    }.
c690: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
c6a0: 74 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f  tatic object[] _
c6b0: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73  dbtypetonumerics
c6c0: 63 61 6c 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20  cale = {..      
c6d0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c6e0: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
c6f0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c700: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
c710: 31 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  1)..      0,    
c720: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
c730: 28 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (2)..      DBNul
c740: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c  l.Value, // Bool
c750: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 34  ean (3)..      4
c760: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c770: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
c780: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c790: 2c 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20  , // Date (5).. 
c7a0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c7b0: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
c7c0: 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  6)..      DBNull
c7d0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 65 63 69 6d  .Value, // Decim
c7e0: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 44 42  al (7)..      DB
c7f0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44  Null.Value, // D
c800: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
c810: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c820: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
c830: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
c840: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
c850: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
c860: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
c870: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
c880: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
c890: 31 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  12)..      DBNul
c8a0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  l.Value, // Obje
c8b0: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 30  ct (13)..      0
c8c0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c8d0: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
c8e0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c8f0: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
c900: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c910: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
c920: 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  6)..      DBNull
c930: 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20  .Value, // Time 
c940: 28 31 37 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (17)..      0,  
c950: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c960: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
c970: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
c980: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
c990: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c9a0: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
c9b0: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
c9c0: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
c9d0: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
c9e0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c9f0: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
ca00: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
ca10: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
ca20: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
ca30: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
ca40: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
ca50: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
ca60: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20    DBNull.Value  
ca70: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
ca80: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   };....    /// <
ca90: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
caa0: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
cab0: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
cac0: 65 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 62  e type name to b
cad0: 65 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20  e used when a.. 
cae0: 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65     /// per-conne
caf0: 63 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e  ction value is n
cb00: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
cb10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cb20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
cb30: 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
cb40: 6f 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  on">..    /// Th
cb50: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  e connection con
cb60: 74 65 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61  text for type ma
cb70: 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d  ppings, if any..
cb80: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
cb90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
cba0: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
cbb0: 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  e default databa
cbc0: 73 65 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20  se type name to 
cbd0: 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  use...    /// </
cbe0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
cbf0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
cc00: 69 6e 67 20 47 65 74 44 65 66 61 75 6c 74 54 79  ing GetDefaultTy
cc10: 70 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  peName(..       
cc20: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
cc30: 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20  n connection..  
cc40: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
cc50: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
cc60: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
cc70: 61 67 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69 6f  ags = (connectio
cc80: 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20  n != null) ?..  
cc90: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
cca0: 74 69 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51 4c  tion.Flags : SQL
ccb0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
ccc0: 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20  gs.None;....    
ccd0: 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26      if ((flags &
cce0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
ccf0: 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74  nFlags.NoConvert
cd00: 53 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20  Settings)..     
cd10: 20 20 20 20 20 20 20 20 20 20 20 3d 3d 20 53 51             == SQ
cd20: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
cd30: 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74  ags.NoConvertSet
cd40: 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20  tings)..        
cd50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
cd60: 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65  eturn FallbackDe
cd70: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a  faultTypeName;..
cd80: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
cd90: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
cda0: 20 3d 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f   = "Use_SQLiteCo
cdb0: 6e 76 65 72 74 5f 44 65 66 61 75 6c 74 54 79 70  nvert_DefaultTyp
cdc0: 65 4e 61 6d 65 22 3b 0d 0a 20 20 20 20 20 20 20  eName";..       
cdd0: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20   object value = 
cde0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 73  null;..        s
cdf0: 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 3d  tring @default =
ce00: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
ce10: 20 20 69 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f    if ((connectio
ce20: 6e 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20  n == null) ||.. 
ce30: 20 20 20 20 20 20 20 20 20 20 20 21 63 6f 6e 6e             !conn
ce40: 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 43 61 63  ection.TryGetCac
ce50: 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c  hedSetting(name,
ce60: 20 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76   @default, out v
ce70: 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
ce80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
ce90: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
cea0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ceb0: 20 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66     value = Unsaf
cec0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47  eNativeMethods.G
ced0: 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 6e  etSettingValue(n
cee0: 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 29 3b 0d  ame, @default);.
cef0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
cf00: 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
cf10: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
cf20: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
cf30: 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75   = FallbackDefau
cf40: 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  ltTypeName;..   
cf50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cf60: 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
cf70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf90: 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21  if (connection !
cfa0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
cfc0: 6e 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65  nection.SetCache
cfd0: 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76  dSetting(name, v
cfe0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
cff0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
d000: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
d010: 72 6e 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54  rn SettingValueT
d020: 6f 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d  oString(value);.
d030: 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e  .    }....#if !N
d040: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
d050: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
d060: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d070: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61 70  >..    /// If ap
d080: 70 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65 73  plicable, issues
d090: 20 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65 73   a trace log mes
d0a0: 73 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62 6f  sage warning abo
d0b0: 75 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20  ut falling back 
d0c0: 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20  to..    /// the 
d0d0: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
d0e0: 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20   type name...   
d0f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d100: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d110: 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d 0a  name="dbType">..
d120: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
d130: 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e  base value type.
d140: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d150: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
d160: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
d170: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
d180: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
d190: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
d1a0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
d1b0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
d1c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
d1d0: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61  ram name="typeNa
d1e0: 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  me">..    /// Th
d1f0: 65 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f  e textual name o
d200: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  f the database t
d210: 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ype...    /// </
d220: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76  param>..    priv
d230: 61 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20  ate static void 
d240: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57  DefaultTypeNameW
d250: 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  arning(..       
d260: 20 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d   DbType dbType,.
d270: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
d280: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
d290: 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 73  lags,..        s
d2a0: 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 0d 0a  tring typeName..
d2b0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
d2c0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66  ..        if ((f
d2d0: 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
d2e0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61  nectionFlags.Tra
d2f0: 63 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51  ceWarning) == SQ
d300: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
d310: 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67  ags.TraceWarning
d320: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
d330: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
d340: 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72  WriteLine(Helper
d350: 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f  Methods.StringFo
d360: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
d370: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
d380: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
d390: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
d3a0: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
d3b0: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
d3c0: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
d3d0: 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30 7d 5c  ault name \"{0}\
d3e0: 22 20 66 6f 72 20 74 79 70 65 20 7b 31 7d 2e 22  " for type {1}."
d3f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d400: 20 20 20 74 79 70 65 4e 61 6d 65 2c 20 64 62 54     typeName, dbT
d410: 79 70 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ype));..        
d420: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
d430: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d440: 20 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63     /// If applic
d450: 61 62 6c 65 2c 20 69 73 73 75 65 73 20 61 20 74  able, issues a t
d460: 72 61 63 65 20 6c 6f 67 20 6d 65 73 73 61 67 65  race log message
d470: 20 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20 66   warning about f
d480: 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 0d 0a  alling back to..
d490: 20 20 20 20 2f 2f 2f 20 74 68 65 20 64 65 66 61      /// the defa
d4a0: 75 6c 74 20 64 61 74 61 62 61 73 65 20 76 61 6c  ult database val
d4b0: 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f  ue type...    //
d4c0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d4d0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d4e0: 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20  e="typeName">.. 
d4f0: 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
d500: 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64  al name of the d
d510: 61 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20  atabase type... 
d520: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d530: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d540: 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20  name="flags">.. 
d550: 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73     /// The flags
d560: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
d570: 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
d580: 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a  ection object...
d590: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
d5a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
d5b0: 20 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d   name="dbType">.
d5c0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74  .    /// The dat
d5d0: 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65  abase value type
d5e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
d5f0: 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  am>..    private
d600: 20 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 66   static void Def
d610: 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e  aultDbTypeWarnin
d620: 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  g(..        stri
d630: 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20  ng typeName,..  
d640: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
d650: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
d660: 73 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79  s,..        DbTy
d670: 70 65 3f 20 64 62 54 79 70 65 0d 0a 20 20 20 20  pe? dbType..    
d680: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
d690: 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
d6a0: 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
d6b0: 74 79 70 65 4e 61 6d 65 29 20 26 26 0d 0a 20 20  typeName) &&..  
d6c0: 20 20 20 20 20 20 20 20 20 20 28 28 66 6c 61 67            ((flag
d6d0: 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
d6e0: 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57  tionFlags.TraceW
d6f0: 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74  arning) == SQLit
d700: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
d710: 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d  .TraceWarning)).
d720: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
d730: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
d740: 69 74 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65  iteLine(HelperMe
d750: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
d760: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
d770: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
d780: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
d790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7a0: 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79 70 65    "WARNING: Type
d7b0: 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65 64 2c   mapping failed,
d7c0: 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66 61 75   returning defau
d7d0: 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f 72 20  lt type {0} for 
d7e0: 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22 2c 0d  name \"{1}\".",.
d7f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d800: 20 64 62 54 79 70 65 2c 20 74 79 70 65 4e 61 6d   dbType, typeNam
d810: 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e));..        }.
d820: 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a  .    }..#endif..
d830: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
d840: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72  ry>..    /// For
d850: 20 61 20 67 69 76 65 6e 20 64 61 74 61 62 61 73   a given databas
d860: 65 20 76 61 6c 75 65 20 74 79 70 65 2c 20 72 65  e value type, re
d870: 74 75 72 6e 20 74 68 65 20 22 63 6c 6f 73 65 73  turn the "closes
d880: 74 2d 6d 61 74 63 68 22 20 74 65 78 74 75 61 6c  t-match" textual
d890: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
d8a0: 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ame...    /// </
d8b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
d8c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
d8d0: 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63  onnection">The c
d8e0: 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78  onnection contex
d8f0: 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70  t for custom typ
d900: 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61  e mappings, if a
d910: 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ny.</param>..   
d920: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d930: 3d 22 64 62 54 79 70 65 22 3e 54 68 65 20 64 61  ="dbType">The da
d940: 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70  tabase value typ
d950: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
d960: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d970: 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67  "flags">The flag
d980: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
d990: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
d9a0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c  nection object.<
d9b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
d9c0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 74 79   <returns>The ty
d9d0: 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e 20 65 6d  pe name or an em
d9e0: 70 74 79 20 73 74 72 69 6e 67 20 69 66 20 69 74  pty string if it
d9f0: 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72   cannot be deter
da00: 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e  mined.</returns>
da10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
da20: 74 61 74 69 63 20 73 74 72 69 6e 67 20 44 62 54  tatic string DbT
da30: 79 70 65 54 6f 54 79 70 65 4e 61 6d 65 28 0d 0a  ypeToTypeName(..
da40: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
da50: 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
da60: 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 44 62  ion,..        Db
da70: 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a 20 20  Type dbType,..  
da80: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
da90: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
daa0: 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  s..        )..  
dab0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 74 72    {..        str
dac0: 69 6e 67 20 64 65 66 61 75 6c 74 54 79 70 65 4e  ing defaultTypeN
dad0: 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ame = null;.... 
dae0: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
daf0: 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ction != null)..
db00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
db10: 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20         flags |= 
db20: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73  connection.Flags
db30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
db40: 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51   if ((flags & SQ
db50: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
db60: 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f  ags.UseConnectio
db70: 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74  nTypes) == SQLit
db80: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
db90: 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79  .UseConnectionTy
dba0: 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  pes)..          
dbb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dbc0: 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
dbd0: 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 54  eMap connectionT
dbe0: 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e 65  ypeNames = conne
dbf0: 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65 73  ction._typeNames
dc00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dc10: 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
dc20: 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21 3d 20  ionTypeNames != 
dc30: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
dc40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
dc60: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
dc70: 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  g value;....    
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc90: 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79  if (connectionTy
dca0: 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61  peNames.TryGetVa
dcb0: 6c 75 65 28 64 62 54 79 70 65 2c 20 6f 75 74 20  lue(dbType, out 
dcc0: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dce0: 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 74 79   return value.ty
dcf0: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
dd00: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
dd10: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
dd20: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
dd30: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
dd40: 3a 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c  : Use the defaul
dd50: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
dd60: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 63 6f 6e  name for the con
dd70: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
dd80: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
dd90: 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 70        defaultTyp
dda0: 65 4e 61 6d 65 20 3d 20 63 6f 6e 6e 65 63 74 69  eName = connecti
ddb0: 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70 65 4e 61  on.DefaultTypeNa
ddc0: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  me;..        }..
ddd0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66  ..        if ((f
dde0: 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
ddf0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47  nectionFlags.NoG
de00: 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d 20 53  lobalTypes) == S
de10: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
de20: 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70  lags.NoGlobalTyp
de30: 65 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  es)..        {..
de40: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
de50: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  defaultTypeName 
de60: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
de70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
de80: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
de90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
dea0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
deb0: 20 3d 20 47 65 74 44 65 66 61 75 6c 74 54 79 70   = GetDefaultTyp
dec0: 65 4e 61 6d 65 28 63 6f 6e 6e 65 63 74 69 6f 6e  eName(connection
ded0: 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
dee0: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
def0: 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20  CE_WARNING..    
df00: 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 54          DefaultT
df10: 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 64  ypeNameWarning(d
df20: 62 54 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 65  bType, flags, de
df30: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 29 3b 0d  faultTypeName);.
df40: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
df50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65         return de
df60: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a  faultTypeName;..
df70: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
df80: 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63       lock (_sync
df90: 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  Root)..        {
dfa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
dfb0: 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20   (_typeNames == 
dfc0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
dfd0: 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65         _typeName
dfe0: 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44 62 54  s = GetSQLiteDbT
dff0: 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20  ypeMap();....   
e000: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
e010: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
e020: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
e030: 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
e040: 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 64 62  s.TryGetValue(db
e050: 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75 65 29  Type, out value)
e060: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e070: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
e080: 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  typeName;..     
e090: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e0a0: 69 66 20 28 64 65 66 61 75 6c 74 54 79 70 65 4e  if (defaultTypeN
e0b0: 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame != null)..  
e0c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e0d0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
e0e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 66  ;....        def
e0f0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 47  aultTypeName = G
e100: 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  etDefaultTypeNam
e110: 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a  e(connection);..
e120: 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41  ..#if !NET_COMPA
e130: 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57  CT_20 && TRACE_W
e140: 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20  ARNING..        
e150: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57  DefaultTypeNameW
e160: 61 72 6e 69 6e 67 28 64 62 54 79 70 65 2c 20 66  arning(dbType, f
e170: 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 54 79 70  lags, defaultTyp
e180: 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  eName);..#endif.
e190: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
e1a0: 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  n defaultTypeNam
e1b0: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
e1c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e1d0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20      /// Convert 
e1e0: 61 20 44 62 54 79 70 65 20 74 6f 20 61 20 54 79  a DbType to a Ty
e1f0: 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  pe..    /// </su
e200: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e210: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
e220: 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f 20  ">The DbType to 
e230: 63 6f 6e 76 65 72 74 20 66 72 6f 6d 3c 2f 70 61  convert from</pa
e240: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
e250: 65 74 75 72 6e 73 3e 54 68 65 20 63 6c 6f 73 65  eturns>The close
e260: 73 74 2d 6d 61 74 63 68 20 2e 4e 45 54 20 74 79  st-match .NET ty
e270: 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  pe</returns>..  
e280: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
e290: 63 20 54 79 70 65 20 44 62 54 79 70 65 54 6f 54  c Type DbTypeToT
e2a0: 79 70 65 28 44 62 54 79 70 65 20 74 79 70 29 0d  ype(DbType typ).
e2b0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65  .    {..      re
e2c0: 74 75 72 6e 20 5f 64 62 74 79 70 65 54 6f 54 79  turn _dbtypeToTy
e2d0: 70 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20  pe[(int)typ];.. 
e2e0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
e2f0: 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65 5b  ate static Type[
e300: 5d 20 5f 64 62 74 79 70 65 54 6f 54 79 70 65 20  ] _dbtypeToType 
e310: 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  = {..      typeo
e320: 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20  f(string),   // 
e330: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
e340: 20 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74        typeof(byt
e350: 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 69 6e 61 72  e[]),   // Binar
e360: 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79 70  y (1)..      typ
e370: 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20 20 2f  eof(byte),     /
e380: 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20  / Byte (2)..    
e390: 20 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 2c 20    typeof(bool), 
e3a0: 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28      // Boolean (
e3b0: 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  3)..      typeof
e3c0: 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f 20 43  (decimal),  // C
e3d0: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
e3e0: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
e3f0: 6d 65 29 2c 20 2f 2f 20 44 61 74 65 20 28 35 29  me), // Date (5)
e400: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44  ..      typeof(D
e410: 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74  ateTime), // Dat
e420: 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20  eTime (6)..     
e430: 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61 6c 29   typeof(decimal)
e440: 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37  ,  // Decimal (7
e450: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e460: 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f  double),   // Do
e470: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
e480: 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20 20 20  typeof(Guid),   
e490: 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20    // Guid (9).. 
e4a0: 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 31       typeof(Int1
e4b0: 36 29 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36 20  6),    // Int16 
e4c0: 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (10)..      type
e4d0: 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20 2f 2f  of(Int32),    //
e4e0: 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20 20   Int32 (11)..   
e4f0: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29     typeof(Int64)
e500: 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31  ,    // Int64 (1
e510: 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  2)..      typeof
e520: 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4f  (object),   // O
e530: 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20  bject (13)..    
e540: 20 20 74 79 70 65 6f 66 28 73 62 79 74 65 29 2c    typeof(sbyte),
e550: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34      // SByte (14
e560: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e570: 66 6c 6f 61 74 29 2c 20 20 20 20 2f 2f 20 53 69  float),    // Si
e580: 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20 20  ngle (15)..     
e590: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c   typeof(string),
e5a0: 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36     // String (16
e5b0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e5c0: 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 54 69  DateTime), // Ti
e5d0: 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 74  me (17)..      t
e5e0: 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c 20 20  ypeof(UInt16),  
e5f0: 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d   // UInt16 (18).
e600: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 49  .      typeof(UI
e610: 6e 74 33 32 29 2c 20 20 20 2f 2f 20 55 49 6e 74  nt32),   // UInt
e620: 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20 74  32 (19)..      t
e630: 79 70 65 6f 66 28 55 49 6e 74 36 34 29 2c 20 20  ypeof(UInt64),  
e640: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
e650: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 6f  .      typeof(do
e660: 75 62 6c 65 29 2c 20 20 20 2f 2f 20 56 61 72 4e  uble),   // VarN
e670: 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20  umeric (21)..   
e680: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e690: 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74 72 69  ),   // AnsiStri
e6a0: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
e6b0: 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  2)..      typeof
e6c0: 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 53  (string),   // S
e6d0: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
e6e0: 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74 79 70   (23)..      typ
e6f0: 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f  eof(string),   /
e700: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
e710: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c   typeof(string),
e720: 20 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a     // Xml (25)..
e730: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
e740: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e750: 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e   /// For a given
e760: 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 74 68   type, return th
e770: 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20  e closest-match 
e780: 53 51 4c 69 74 65 20 54 79 70 65 41 66 66 69 6e  SQLite TypeAffin
e790: 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c 79 20  ity, which only 
e7a0: 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20 76 65  understands a ve
e7b0: 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62 73 65  ry limited subse
e7c0: 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20 20 20  t of types...   
e7d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e7e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
e7f0: 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 74  name="typ">The t
e800: 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74 65 3c  ype to evaluate<
e810: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
e820: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 53 51   <returns>The SQ
e830: 4c 69 74 65 20 74 79 70 65 20 61 66 66 69 6e 69  Lite type affini
e840: 74 79 20 66 6f 72 20 74 68 61 74 20 74 79 70 65  ty for that type
e850: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
e860: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
e870: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 54 79   TypeAffinity Ty
e880: 70 65 54 6f 41 66 66 69 6e 69 74 79 28 54 79 70  peToAffinity(Typ
e890: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
e8a0: 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74 63       TypeCode tc
e8b0: 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65 43   = Type.GetTypeC
e8c0: 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20 20 20  ode(typ);..     
e8d0: 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70 65 43   if (tc == TypeC
e8e0: 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20  ode.Object)..   
e8f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
e900: 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28   (typ == typeof(
e910: 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79 70 20 3d  byte[]) || typ =
e920: 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29 29 0d  = typeof(Guid)).
e930: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
e940: 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42  n TypeAffinity.B
e950: 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c  lob;..        el
e960: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  se..          re
e970: 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  turn TypeAffinit
e980: 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20 20 20 7d  y.Text;..      }
e990: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
e9a0: 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74 69  typecodeAffiniti
e9b0: 65 73 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a 20 20  es[(int)tc];..  
e9c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
e9d0: 74 65 20 73 74 61 74 69 63 20 54 79 70 65 41 66  te static TypeAf
e9e0: 66 69 6e 69 74 79 5b 5d 20 5f 74 79 70 65 63 6f  finity[] _typeco
e9f0: 64 65 41 66 66 69 6e 69 74 69 65 73 20 3d 20 7b  deAffinities = {
ea00: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
ea10: 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f  nity.Null,     /
ea20: 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20 20  / Empty (0)..   
ea30: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
ea40: 42 6c 6f 62 2c 20 20 20 20 20 2f 2f 20 4f 62 6a  Blob,     // Obj
ea50: 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20 54  ect (1)..      T
ea60: 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c  ypeAffinity.Null
ea70: 2c 20 20 20 20 20 2f 2f 20 44 42 4e 75 6c 6c 20  ,     // DBNull 
ea80: 28 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (2)..      TypeA
ea90: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
eaa0: 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29    // Boolean (3)
eab0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
eac0: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
ead0: 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20  / Char (4)..    
eae0: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
eaf0: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 53 42 79 74  nt64,    // SByt
eb00: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 54 79 70  e (5)..      Typ
eb10: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
eb20: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36 29 0d      // Byte (6).
eb30: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
eb40: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
eb50: 20 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20   Int16 (7)..    
eb60: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
eb70: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74  nt64,    // UInt
eb80: 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 54 79  16 (8)..      Ty
eb90: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
eba0: 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 39  ,    // Int32 (9
ebb0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
ebc0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
ebd0: 2f 2f 20 55 49 6e 74 33 32 20 28 31 30 29 0d 0a  // UInt32 (10)..
ebe0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
ebf0: 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20  ty.Int64,    // 
ec00: 49 6e 74 36 34 20 28 31 31 29 0d 0a 20 20 20 20  Int64 (11)..    
ec10: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
ec20: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74  nt64,    // UInt
ec30: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 54  64 (12)..      T
ec40: 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62  ypeAffinity.Doub
ec50: 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20  le,   // Single 
ec60: 28 31 33 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (13)..      Type
ec70: 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c  Affinity.Double,
ec80: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31 34     // Double (14
ec90: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
eca0: 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20  inity.Double,   
ecb0: 2f 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d  // Decimal (15).
ecc0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
ecd0: 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 20 2f 2f  ity.DateTime, //
ece0: 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d 0a   DateTime (16)..
ecf0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
ed00: 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20  ty.Null,     // 
ed10: 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20 54  ?? (17)..      T
ed20: 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74  ypeAffinity.Text
ed30: 20 20 20 20 20 20 2f 2f 20 53 74 72 69 6e 67 20        // String 
ed40: 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a  (18)..    };....
ed50: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ed60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c 64  >..    /// Build
ed70: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20  s and returns a 
ed80: 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  map containing t
ed90: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75  he database colu
eda0: 6d 6e 20 74 79 70 65 73 0d 0a 20 20 20 20 2f 2f  mn types..    //
edb0: 2f 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20  / recognized by 
edc0: 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a  this provider...
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 72 65 74  y>..    /// <ret
edf0: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  urns>..    /// A
ee00: 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67 20   map containing 
ee10: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6c  the database col
ee20: 75 6d 6e 20 74 79 70 65 73 20 72 65 63 6f 67 6e  umn types recogn
ee30: 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20  ized by this..  
ee40: 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 72 2e 0d    /// provider..
ee50: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
ee60: 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ns>..    private
ee70: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 44 62   static SQLiteDb
ee80: 54 79 70 65 4d 61 70 20 47 65 74 53 51 4c 69 74  TypeMap GetSQLit
ee90: 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20  eDbTypeMap()..  
eea0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
eeb0: 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 44 62  urn new SQLiteDb
eec0: 54 79 70 65 4d 61 70 28 6e 65 77 20 53 51 4c 69  TypeMap(new SQLi
eed0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 5b  teDbTypeMapping[
eee0: 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ] {..           
eef0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ef00: 65 4d 61 70 70 69 6e 67 28 22 42 49 47 49 4e 54  eMapping("BIGINT
ef10: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
ef20: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ef30: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ef40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42  DbTypeMapping("B
ef50: 49 47 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  IGUINT", DbType.
ef60: 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  UInt64, false),.
ef70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ef80: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ef90: 70 69 6e 67 28 22 42 49 4e 41 52 59 22 2c 20 44  ping("BINARY", D
efa0: 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
efb0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
efc0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
efd0: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 54 22  ypeMapping("BIT"
efe0: 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e  , DbType.Boolean
eff0: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
f000: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f010: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42  DbTypeMapping("B
f020: 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 42 69 6e  LOB", DbType.Bin
f030: 61 72 79 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  ary, true),..   
f040: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f050: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f060: 28 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70 65 2e  ("BOOL", DbType.
f070: 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c  Boolean, false),
f080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f090: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f0a0: 70 70 69 6e 67 28 22 42 4f 4f 4c 45 41 4e 22 2c  pping("BOOLEAN",
f0b0: 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c   DbType.Boolean,
f0c0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f0d0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f0e0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43  DbTypeMapping("C
f0f0: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e 73  HAR", DbType.Ans
f100: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
f110: 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  th, true),..    
f120: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f130: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f140: 22 43 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 53  "CLOB", DbType.S
f150: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
f160: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f170: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f180: 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 2c 20 44  ing("COUNTER", D
f190: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
f1a0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f1b0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f1c0: 70 65 4d 61 70 70 69 6e 67 28 22 43 55 52 52 45  peMapping("CURRE
f1d0: 4e 43 59 22 2c 20 44 62 54 79 70 65 2e 44 65 63  NCY", DbType.Dec
f1e0: 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  imal, false),.. 
f1f0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f200: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f210: 6e 67 28 22 44 41 54 45 22 2c 20 44 62 54 79 70  ng("DATE", DbTyp
f220: 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73  e.DateTime, fals
f230: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f240: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f250: 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45 54 49  eMapping("DATETI
f260: 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  ME", DbType.Date
f270: 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20  Time, true),..  
f280: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f290: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f2a0: 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 44 62 54  g("DECIMAL", DbT
f2b0: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 74 72 75  ype.Decimal, tru
f2c0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f2d0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f2e0: 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42 4c 45  eMapping("DOUBLE
f2f0: 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65  ", DbType.Double
f300: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f310: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f320: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f330: 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65 2e 44  FLOAT", DbType.D
f340: 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  ouble, false),..
f350: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f360: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f370: 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c 20 44  ing("GENERAL", D
f380: 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
f390: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f3a0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f3b0: 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55 49 44  ypeMapping("GUID
f3c0: 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c 20  ", DbType.Guid, 
f3d0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f3e0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f3f0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 44  bTypeMapping("ID
f400: 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70 65 2e  ENTITY", DbType.
f410: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
f420: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f430: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f440: 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44 62 54  ing("IMAGE", DbT
f450: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
f460: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f470: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f480: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22 2c 20  eMapping("INT", 
f490: 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 74 72  DbType.Int32, tr
f4a0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
f4b0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f4c0: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 38 22  peMapping("INT8"
f4d0: 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20  , DbType.SByte, 
f4e0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f4f0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f500: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
f510: 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  T16", DbType.Int
f520: 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  16, false),..   
f530: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f540: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f550: 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79 70 65  ("INT32", DbType
f560: 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d  .Int32, false),.
f570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f580: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f590: 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20 44 62  ping("INT64", Db
f5a0: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
f5b0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f5c0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f5d0: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45  eMapping("INTEGE
f5e0: 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  R", DbType.Int64
f5f0: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
f600: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f610: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
f620: 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70 65  NTEGER8", DbType
f630: 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  .SByte, false),.
f640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f650: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f660: 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31 36 22  ping("INTEGER16"
f670: 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20  , DbType.Int16, 
f680: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f690: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f6a0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
f6b0: 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70 65  TEGER32", DbType
f6c0: 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d  .Int32, false),.
f6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f6e0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f6f0: 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36 34 22  ping("INTEGER64"
f700: 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20  , DbType.Int64, 
f710: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f720: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f730: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f  bTypeMapping("LO
f740: 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65 2e 42  GICAL", DbType.B
f750: 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d  oolean, false),.
f760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f770: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f780: 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44 62 54  ping("LONG", DbT
f790: 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65  ype.Int64, false
f7a0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f7b0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f7c0: 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43 48 41  Mapping("LONGCHA
f7d0: 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  R", DbType.Strin
f7e0: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
f7f0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f800: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f810: 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62 54 79  "LONGTEXT", DbTy
f820: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
f830: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f840: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f850: 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56 41 52  Mapping("LONGVAR
f860: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74  CHAR", DbType.St
f870: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
f880: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f890: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f8a0: 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54 79 70  ng("MEMO", DbTyp
f8b0: 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  e.String, false)
f8c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f8d0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f8e0: 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22 2c 20  apping("MONEY", 
f8f0: 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20  DbType.Decimal, 
f900: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f910: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f920: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 43  bTypeMapping("NC
f930: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72  HAR", DbType.Str
f940: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20  ingFixedLength, 
f950: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f960: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f970: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 4f 54  TypeMapping("NOT
f980: 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  E", DbType.Strin
f990: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
f9a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f9b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f9c0: 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e  "NTEXT", DbType.
f9d0: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
f9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f9f0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa00: 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c 20 44  ping("NUMBER", D
fa10: 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66  bType.Decimal, f
fa20: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fa30: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fa40: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d  TypeMapping("NUM
fa50: 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e 44 65  ERIC", DbType.De
fa60: 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a  cimal, false),..
fa70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fa80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fa90: 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22 2c 20  ing("NVARCHAR", 
faa0: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 74  DbType.String, t
fab0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fac0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fad0: 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c 45 4f  ypeMapping("OLEO
fae0: 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65 2e 42  BJECT", DbType.B
faf0: 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a  inary, false),..
fb00: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fb10: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fb20: 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54 79 70  ing("RAW", DbTyp
fb30: 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29  e.Binary, false)
fb40: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fb50: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fb60: 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c 20 44  apping("REAL", D
fb70: 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 74 72  bType.Double, tr
fb80: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
fb90: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fba0: 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e 47 4c  peMapping("SINGL
fbb0: 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e 67 6c  E", DbType.Singl
fbc0: 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
fbd0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fbe0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fbf0: 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62 54 79  SMALLDATE", DbTy
fc00: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
fc10: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fc20: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fc30: 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c  peMapping("SMALL
fc40: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  INT", DbType.Int
fc50: 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  16, true),..    
fc60: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fc70: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fc80: 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44 62 54  "SMALLUINT", DbT
fc90: 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72 75 65  ype.UInt16, true
fca0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fcb0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fcc0: 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e 47 22  Mapping("STRING"
fcd0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
fce0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fcf0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fd00: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54  DbTypeMapping("T
fd10: 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72  EXT", DbType.Str
fd20: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
fd30: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fd40: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fd50: 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79 70 65  g("TIME", DbType
fd60: 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65  .DateTime, false
fd70: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fd80: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fd90: 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53 54 41  Mapping("TIMESTA
fda0: 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  MP", DbType.Date
fdb0: 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Time, false),.. 
fdc0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fdd0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fde0: 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20 44 62  ng("TINYINT", Db
fdf0: 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75 65 29  Type.Byte, true)
fe00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fe10: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fe20: 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49 4e 54  apping("TINYSINT
fe30: 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c  ", DbType.SByte,
fe40: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
fe50: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fe60: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49  bTypeMapping("UI
fe70: 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  NT", DbType.UInt
fe80: 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  32, true),..    
fe90: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fea0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
feb0: 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70 65 2e  "UINT8", DbType.
fec0: 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Byte, false),.. 
fed0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fee0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fef0: 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44 62 54  ng("UINT16", DbT
ff00: 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73  ype.UInt16, fals
ff10: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ff20: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ff30: 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 33 32  eMapping("UINT32
ff40: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32  ", DbType.UInt32
ff50: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
ff60: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ff70: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ff80: 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70 65 2e  UINT64", DbType.
ff90: 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  UInt64, false),.
ffa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ffb0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ffc0: 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20 44 62  ping("ULONG", Db
ffd0: 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c  Type.UInt64, fal
ffe0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fff0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10000 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49 51 55  peMapping("UNIQU
10010 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20 44 62  EIDENTIFIER", Db
10020 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75 65 29  Type.Guid, true)
10030 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10040 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10050 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
10060 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70 65  INTEGER", DbType
10070 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d  .UInt64, true),.
10080 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10090 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
100a0 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
100b0 54 45 47 45 52 38 22 2c 20 44 62 54 79 70 65 2e  TEGER8", DbType.
100c0 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Byte, false),.. 
100d0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
100e0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
100f0 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45  ng("UNSIGNEDINTE
10100 47 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e 55  GER16", DbType.U
10110 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int16, false),..
10120 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10130 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10140 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54  ing("UNSIGNEDINT
10150 45 47 45 52 33 32 22 2c 20 44 62 54 79 70 65 2e  EGER32", DbType.
10160 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d  UInt32, false),.
10170 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10180 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10190 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
101a0 54 45 47 45 52 36 34 22 2c 20 44 62 54 79 70 65  TEGER64", DbType
101b0 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  .UInt64, false),
101c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
101d0 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
101e0 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41 52 59  pping("VARBINARY
101f0 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
10200 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
10210 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10220 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10230 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 70 65  VARCHAR", DbType
10240 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74 72 75  .AnsiString, tru
10250 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10260 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10270 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43 48 41  eMapping("VARCHA
10280 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e 73 69  R2", DbType.Ansi
10290 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
102a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
102b0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
102c0 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20 44 62  ping("YESNO", Db
102d0 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61  Type.Boolean, fa
102e0 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20 7d 29  lse)..        })
102f0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
10300 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10310 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
10320 73 20 69 66 20 61 20 64 61 74 61 62 61 73 65 20  s if a database 
10330 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64 65 72  type is consider
10340 65 64 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e  ed to be a strin
10350 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  g...    /// </su
10360 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10370 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
10380 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
10390 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74   database type t
103a0 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f  o check...    //
103b0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
103c0 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
103d0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
103e0 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  if the database 
103f0 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64 65 72  type is consider
10400 65 64 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e  ed to be a strin
10410 67 2c 20 7a 65 72 6f 0d 0a 20 20 20 20 2f 2f 2f  g, zero..    ///
10420 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
10430 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
10440 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
10450 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 74 72 69  atic bool IsStri
10460 6e 67 44 62 54 79 70 65 28 0d 0a 20 20 20 20 20  ngDbType(..     
10470 20 20 20 44 62 54 79 70 65 20 74 79 70 65 0d 0a     DbType type..
10480 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
10490 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  ..        switch
104a0 20 28 74 79 70 65 29 0d 0a 20 20 20 20 20 20 20   (type)..       
104b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
104c0 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e 73 69  case DbType.Ansi
104d0 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20  String:..       
104e0 20 20 20 20 20 63 61 73 65 20 44 62 54 79 70 65       case DbType
104f0 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20  .String:..      
10500 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79 70        case DbTyp
10510 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65  e.AnsiStringFixe
10520 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20  dLength:..      
10530 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79 70        case DbTyp
10540 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  e.StringFixedLen
10550 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  gth:..          
10560 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
10570 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
10580 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20  default:..      
10590 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
105a0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
105b0 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
105c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
105d0 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
105e0 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
105f0 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69  he runtime confi
10600 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67  guration setting
10610 20 73 74 72 69 6e 67 20 74 68 61 74 0d 0a 20 20   string that..  
10620 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20    /// should be 
10630 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66  used in place of
10640 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6f   the specified o
10650 62 6a 65 63 74 20 76 61 6c 75 65 2e 0d 0a 20 20  bject value...  
10660 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10670 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
10680 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
10690 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
106a0 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  ct value to conv
106b0 65 72 74 20 74 6f 20 61 20 73 74 72 69 6e 67 2e  ert to a string.
106c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
106d0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
106e0 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45  urns>..    /// E
106f0 69 74 68 65 72 20 74 68 65 20 73 74 72 69 6e 67  ither the string
10700 20 74 6f 20 75 73 65 20 69 6e 20 70 6c 61 63 65   to use in place
10710 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 76   of the object v
10720 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69  alue -OR- null i
10730 66 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20 63 61  f it..    /// ca
10740 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
10750 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ed...    /// </r
10760 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
10770 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
10780 6e 67 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54  ng SettingValueT
10790 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  oString(..      
107a0 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a    object value..
107b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
107c0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61  ..        if (va
107d0 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a  lue is string)..
107e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
107f0 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65  rn (string)value
10800 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
10810 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d  (value != null).
10820 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
10830 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  urn value.ToStri
10840 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ng();....       
10850 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
10860 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
10870 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10880 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68  // Determines th
10890 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63  e default <see c
108a0 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
108b0 76 61 6c 75 65 20 74 6f 20 62 65 20 75 73 65 64  value to be used
108c0 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f   when a..    ///
108d0 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20   per-connection 
108e0 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61  value is not ava
108f0 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  ilable...    ///
10900 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10910 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
10920 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a  ="connection">..
10930 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
10940 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66  ection context f
10950 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73  or type mappings
10960 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f  , if any...    /
10970 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
10980 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
10990 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
109a0 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d 22 44  ult <see cref="D
109b0 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65 20  bType" /> value 
109c0 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  to use...    ///
109d0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
109e0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
109f0 44 62 54 79 70 65 20 47 65 74 44 65 66 61 75 6c  DbType GetDefaul
10a00 74 44 62 54 79 70 65 28 0d 0a 20 20 20 20 20 20  tDbType(..      
10a10 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
10a20 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20  on connection.. 
10a30 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
10a40 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
10a50 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
10a60 6c 61 67 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69  lags = (connecti
10a70 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20  on != null) ?.. 
10a80 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65             conne
10a90 63 74 69 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51  ction.Flags : SQ
10aa0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
10ab0 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20  ags.None;....   
10ac0 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
10ad0 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
10ae0 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72  onFlags.NoConver
10af0 74 53 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20  tSettings)..    
10b00 20 20 20 20 20 20 20 20 20 20 20 20 3d 3d 20 53              == S
10b10 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
10b20 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65  lags.NoConvertSe
10b30 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20  ttings)..       
10b40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10b50 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44  return FallbackD
10b60 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20  efaultDbType;.. 
10b70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10b80 20 20 20 20 62 6f 6f 6c 20 66 6f 75 6e 64 20 3d      bool found =
10b90 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
10ba0 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22   string name = "
10bb0 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72  Use_SQLiteConver
10bc0 74 5f 44 65 66 61 75 6c 74 44 62 54 79 70 65 22  t_DefaultDbType"
10bd0 3b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  ;..        objec
10be0 74 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d  t value = null;.
10bf0 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
10c00 40 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b  @default = null;
10c10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
10c20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e  (connection == n
10c30 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ull) ||..       
10c40 20 20 20 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e       !connection
10c50 2e 54 72 79 47 65 74 43 61 63 68 65 64 53 65 74  .TryGetCachedSet
10c60 74 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65 66 61  ting(name, @defa
10c70 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65 29 29  ult, out value))
10c80 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
10c90 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
10ca0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
10cb0 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56  hods.GetSettingV
10cc0 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65 66 61  alue(name, @defa
10cd0 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ult);....       
10ce0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
10cf0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10d00 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
10d10 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74   FallbackDefault
10d20 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  DbType;..       
10d30 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65   }..        else
10d40 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
10d50 20 20 20 20 20 20 20 20 20 66 6f 75 6e 64 20 3d           found =
10d60 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
10d70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  }....        try
10d80 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
10d90 20 20 20 20 20 20 20 20 20 69 66 20 28 21 28 76           if (!(v
10da0 61 6c 75 65 20 69 73 20 44 62 54 79 70 65 29 29  alue is DbType))
10db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
10dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10dd0 20 76 61 6c 75 65 20 3d 20 53 51 4c 69 74 65 43   value = SQLiteC
10de0 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 50 61 72  onnection.TryPar
10df0 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20  seEnum(..       
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
10e10 65 6f 66 28 44 62 54 79 70 65 29 2c 20 53 65 74  eof(DbType), Set
10e20 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e  tingValueToStrin
10e30 67 28 76 61 6c 75 65 29 2c 20 74 72 75 65 29 3b  g(value), true);
10e40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10e50 20 20 20 20 69 66 20 28 21 28 76 61 6c 75 65 20      if (!(value 
10e60 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20 20 20  is DbType))..   
10e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e80 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63   value = Fallbac
10e90 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  kDefaultDbType;.
10ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
10ec0 74 75 72 6e 20 28 44 62 54 79 70 65 29 76 61 6c  turn (DbType)val
10ed0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
10ee0 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d          finally.
10ef0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
10f00 20 20 20 20 20 20 20 20 69 66 20 28 21 66 6f 75          if (!fou
10f10 6e 64 20 26 26 20 28 63 6f 6e 6e 65 63 74 69 6f  nd && (connectio
10f20 6e 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  n != null))..   
10f30 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
10f40 6e 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65  nection.SetCache
10f50 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76  dSetting(name, v
10f60 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
10f70 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
10f80 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10f90 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
10fa0 74 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  the object value
10fb0 2c 20 77 68 69 63 68 20 69 73 20 61 73 73 75 6d  , which is assum
10fc0 65 64 20 74 6f 20 68 61 76 65 20 6f 72 69 67 69  ed to have origi
10fd0 6e 61 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 66  nated..    /// f
10fe0 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d  rom a <see cref=
10ff0 22 44 61 74 61 52 6f 77 22 20 2f 3e 2c 20 74 6f  "DataRow" />, to
11000 20 61 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2e   a string value.
11010 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11020 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11030 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
11040 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
11050 76 61 6c 75 65 20 74 6f 20 62 65 20 63 6f 6e 76  value to be conv
11060 65 72 74 65 64 20 74 6f 20 61 20 73 74 72 69 6e  erted to a strin
11070 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  g...    /// </pa
11080 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
11090 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
110a0 20 41 20 6e 75 6c 6c 20 76 61 6c 75 65 20 77 69   A null value wi
110b0 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20 69  ll be returned i
110c0 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76  f the original v
110d0 61 6c 75 65 20 69 73 20 6e 75 6c 6c 20 2d 4f 52  alue is null -OR
110e0 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f  -..    /// the o
110f0 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20 69 73  riginal value is
11100 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75   <see cref="DBNu
11110 6c 6c 2e 56 61 6c 75 65 22 20 2f 3e 2e 20 20 4f  ll.Value" />.  O
11120 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20 20 2f  therwise,..    /
11130 2f 2f 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  // the original 
11140 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f  value will be co
11150 6e 76 65 72 74 65 64 20 74 6f 20 61 20 73 74 72  nverted to a str
11160 69 6e 67 2c 20 75 73 69 6e 67 20 69 74 73 0d 0a  ing, using its..
11170 20 20 20 20 2f 2f 2f 20 28 70 6f 73 73 69 62 6c      /// (possibl
11180 79 20 6f 76 65 72 72 69 64 64 65 6e 29 20 3c 73  y overridden) <s
11190 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63 74 2e  ee cref="Object.
111a0 54 6f 53 74 72 69 6e 67 22 20 2f 3e 20 6d 65 74  ToString" /> met
111b0 68 6f 64 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f  hod and..    ///
111c0 20 74 68 65 6e 20 72 65 74 75 72 6e 65 64 2e 0d   then returned..
111d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
111e0 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
111f0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
11200 74 53 74 72 69 6e 67 4f 72 4e 75 6c 6c 28 0d 0a  tStringOrNull(..
11210 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
11220 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 29 0d  alue..        ).
11230 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
11240 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
11250 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
11260 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
11270 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
11280 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20  e is string)..  
11290 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
112a0 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d   (string)value;.
112b0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76  ...        if (v
112c0 61 6c 75 65 20 3d 3d 20 44 42 4e 75 6c 6c 2e 56  alue == DBNull.V
112d0 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20  alue)..         
112e0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
112f0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
11300 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67  n value.ToString
11310 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ();..    }....  
11320 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11330 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
11340 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69  nes if the speci
11350 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c  fied textual val
11360 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  ue appears to be
11370 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65   a..    /// <see
11380 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f   cref="DBNull" /
11390 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
113a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
113b0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
113c0 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
113d0 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76  // The textual v
113e0 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  alue to inspect.
113f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
11400 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
11410 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
11420 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74  on-zero if the t
11430 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61  ext looks like a
11440 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75   <see cref="DBNu
11450 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20  ll" /> value,.. 
11460 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65     /// zero othe
11470 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
11480 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
11490 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
114a0 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75  bool LooksLikeNu
114b0 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ll(..        str
114c0 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
114d0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
114e0 20 20 20 20 72 65 74 75 72 6e 20 28 74 65 78 74      return (text
114f0 20 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20   == null);..    
11500 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
11510 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
11520 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
11530 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74  e specified text
11540 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72  ual value appear
11550 73 20 74 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20  s to be an..    
11560 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
11570 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  nt64" /> value..
11580 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
11590 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
115a0 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e  ram name="text">
115b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
115c0 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69  xtual value to i
115d0 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  nspect...    ///
115e0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
115f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
11600 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
11610 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73  f the text looks
11620 20 6c 69 6b 65 20 61 6e 20 3c 73 65 65 20 63 72   like an <see cr
11630 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
11640 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65  lue,..    /// ze
11650 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
11660 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
11670 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
11680 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b  static bool Look
11690 73 4c 69 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20  sLikeInt64(..   
116a0 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
116b0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
116c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67   {..        long
116d0 20 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23   longValue;....#
116e0 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
116f0 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11700 20 20 20 20 20 20 20 69 66 20 28 21 6c 6f 6e 67         if (!long
11710 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20  .TryParse(..    
11720 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
11730 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49  , NumberStyles.I
11740 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49  nteger, CultureI
11750 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
11760 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
11770 20 20 20 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56         out longV
11780 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
11790 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
117a0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
117b0 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
117c0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
117d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
117e0 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20      longValue = 
117f0 6c 6f 6e 67 2e 50 61 72 73 65 28 0d 0a 20 20 20  long.Parse(..   
11800 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78               tex
11810 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e  t, NumberStyles.
11820 49 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65  Integer, Culture
11830 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
11840 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
11850 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63   }..        catc
11860 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  h..        {..  
11870 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11880 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
11890 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
118a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
118b0 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20  ing.Equals(..   
118c0 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c           longVal
118d0 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  ue.ToString(Cult
118e0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
118f0 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c  tCulture), text,
11900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74  ..            St
11910 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
11920 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d  rdinal);..    }.
11930 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
11940 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
11950 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
11960 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61  specified textua
11970 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20  l value appears 
11980 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f  to be a..    ///
11990 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
119a0 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  le" /> value... 
119b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
119c0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
119d0 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a  m name="text">..
119e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74      /// The text
119f0 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73  ual value to ins
11a00 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  pect...    /// <
11a10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
11a20 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
11a30 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
11a40 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c  the text looks l
11a50 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ike a <see cref=
11a60 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
11a70 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  e,..    /// zero
11a80 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
11a90 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
11aa0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11ab0 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c  atic bool LooksL
11ac0 69 6b 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20  ikeDouble(..    
11ad0 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d      string text.
11ae0 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11af0 7b 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c  {..        doubl
11b00 65 20 64 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a  e doubleValue;..
11b10 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
11b20 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
11b30 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 64  ..        if (!d
11b40 6f 75 62 6c 65 2e 54 72 79 50 61 72 73 65 28 0d  ouble.TryParse(.
11b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b60 20 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79   text, NumberSty
11b70 6c 65 73 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62  les.Float | Numb
11b80 65 72 53 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68  erStyles.AllowTh
11b90 6f 75 73 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20  ousands,..      
11ba0 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
11bb0 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
11bc0 75 6c 74 75 72 65 2c 20 6f 75 74 20 64 6f 75 62  ulture, out doub
11bd0 6c 65 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  leValue))..     
11be0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11bf0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11c00 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73  .        }..#els
11c10 65 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  e..        try..
11c20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11c30 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c         doubleVal
11c40 75 65 20 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73  ue = double.Pars
11c50 65 28 74 65 78 74 2c 20 43 75 6c 74 75 72 65 49  e(text, CultureI
11c60 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
11c70 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ture);..        
11c80 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
11c90 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
11ca0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11cb0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
11cc0 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
11cd0 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
11ce0 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ng.Equals(..    
11cf0 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61          doubleVa
11d00 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c  lue.ToString(Cul
11d10 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
11d20 6e 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74  ntCulture), text
11d30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
11d40 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
11d50 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d  Ordinal);..    }
11d60 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
11d70 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
11d80 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
11d90 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75   specified textu
11da0 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73  al value appears
11db0 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f   to be a..    //
11dc0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
11dd0 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
11de0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11df0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11e00 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65  aram name="conve
11e10 72 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rt">..    /// Th
11e20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
11e30 69 74 65 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f  iteConvert" /> o
11e40 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
11e50 6f 6e 66 69 67 75 72 65 64 20 77 69 74 68 0d 0a  onfigured with..
11e60 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73      /// the chos
11e70 65 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  en <see cref="Da
11e80 74 65 54 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61  teTime" /> forma
11e90 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
11ea0 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
11eb0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22  aram name="text"
11ec0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
11ed0 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20  extual value to 
11ee0 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f  inspect...    //
11ef0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11f00 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
11f10 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
11f20 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b  if the text look
11f30 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72  s like a <see cr
11f40 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
11f50 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f   in the..    ///
11f60 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d   configured form
11f70 61 74 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  at, zero otherwi
11f80 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
11f90 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
11fa0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
11fb0 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54  l LooksLikeDateT
11fc0 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ime(..        SQ
11fd0 4c 69 74 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76  LiteConvert conv
11fe0 65 72 74 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ert,..        st
11ff0 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20  ring text..     
12000 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
12010 20 20 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74       if (convert
12020 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
12030 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
12040 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
12050 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
12060 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
12070 54 69 6d 65 20 64 61 74 65 54 69 6d 65 56 61 6c  Time dateTimeVal
12080 75 65 20 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44  ue = convert.ToD
12090 61 74 65 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a  ateTime(text);..
120a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
120b0 20 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28   (String.Equals(
120c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
120d0 20 20 20 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f        convert.To
120e0 53 74 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56  String(dateTimeV
120f0 61 6c 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alue),..        
12100 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
12110 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73  , StringComparis
12120 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20  on.Ordinal))..  
12130 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12140 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12150 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
12160 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12170 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
12180 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
12190 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
121a0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
121b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
121c0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
121d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
121e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
121f0 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74  // For a given t
12200 65 78 74 75 61 6c 20 64 61 74 61 62 61 73 65 20  extual database 
12210 74 79 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72  type name, retur
12220 6e 20 74 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d  n the "closest-m
12230 61 74 63 68 22 20 64 61 74 61 62 61 73 65 20 74  atch" database t
12240 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ype...    /// Th
12250 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
12260 6c 65 64 20 64 75 72 69 6e 67 20 71 75 65 72 79  led during query
12270 20 72 65 73 75 6c 74 20 70 72 6f 63 65 73 73 69   result processi
12280 6e 67 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 69  ng; therefore, i
12290 74 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a  ts performance..
122a0 20 20 20 20 2f 2f 2f 20 69 73 20 63 72 69 74 69      /// is criti
122b0 63 61 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  cal...    /// </
122c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
122d0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
122e0 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63  onnection">The c
122f0 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78  onnection contex
12300 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70  t for custom typ
12310 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61  e mappings, if a
12320 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ny.</param>..   
12330 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12340 3d 22 74 79 70 65 4e 61 6d 65 22 3e 54 68 65 20  ="typeName">The 
12350 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20  textual name of 
12360 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  the database typ
12370 65 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72  e to match.</par
12380 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
12390 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
123a0 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63  >The flags assoc
123b0 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
123c0 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
123d0 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e   object.</param>
123e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
123f0 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 79  ns>The .NET DBTy
12400 70 65 20 74 68 65 20 74 65 78 74 20 65 76 61 6c  pe the text eval
12410 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72  uates to.</retur
12420 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
12430 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20  l static DbType 
12440 54 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 65  TypeNameToDbType
12450 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  (..        SQLit
12460 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
12470 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ection,..       
12480 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
12490 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
124a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
124b0 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
124c0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
124d0 20 20 44 62 54 79 70 65 3f 20 64 65 66 61 75 6c    DbType? defaul
124e0 74 44 62 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d  tDbType = null;.
124f0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63  ...        if (c
12500 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c  onnection != nul
12510 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  l)..        {.. 
12520 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73             flags
12530 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46   |= connection.F
12540 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lags;....       
12550 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
12560 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
12570 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65  onFlags.UseConne
12580 63 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53  ctionTypes) == S
12590 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
125a0 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69  lags.UseConnecti
125b0 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20  onTypes)..      
125c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
125d0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
125e0 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74  bTypeMap connect
125f0 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63  ionTypeNames = c
12600 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e  onnection._typeN
12610 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ames;....       
12620 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
12630 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
12640 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
12650 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12670 20 20 69 66 20 28 74 79 70 65 4e 61 6d 65 20 21    if (typeName !
12680 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12690 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
126a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126b0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62          SQLiteDb
126c0 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75  TypeMapping valu
126d0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
126e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
126f0 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65   (connectionType
12700 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75  Names.TryGetValu
12710 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20  e(typeName, out 
12720 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
12730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12760 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74  return value.dat
12770 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  aType;..        
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12790 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
127a0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
127b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
127c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127e0 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
127f0 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64  x = typeName.Ind
12800 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20  exOf('(');....  
12810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12820 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69            if ((i
12830 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20  ndex > 0) &&..  
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
12860 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
12870 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
12880 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e 67  peName.Substring
12890 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d 45  (0, index).TrimE
128a0 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75 65 29  nd(), out value)
128b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
128c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
128d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
128e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128f0 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64    return value.d
12900 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12940 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12950 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12960 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12970 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12980 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
12990 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
129a0 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61  TE: Use the defa
129b0 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
129c0 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  e for the connec
129d0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
129e0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
129f0 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
12a00 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65   = connection.De
12a10 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
12a20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12a30 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
12a40 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
12a50 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
12a60 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  pes) == SQLiteCo
12a70 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
12a80 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a 20 20  GlobalTypes)..  
12a90 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12aa0 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74       if (default
12ab0 44 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d  DbType != null).
12ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12ad0 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
12ae0 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  defaultDbType;..
12af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
12b00 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65  faultDbType = Ge
12b10 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 63  tDefaultDbType(c
12b20 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23  onnection);....#
12b30 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
12b40 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
12b50 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ING..           
12b60 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57 61   DefaultDbTypeWa
12b70 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65 2c 20  rning(typeName, 
12b80 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 44 62  flags, defaultDb
12b90 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Type);..#endif..
12ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
12bb0 74 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66  turn (DbType)def
12bc0 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20  aultDbType;..   
12bd0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12be0 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f    lock (_syncRoo
12bf0 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
12c00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f             if (_
12c10 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c  typeNames == nul
12c20 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
12c30 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d      _typeNames =
12c40 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70 65   GetSQLiteDbType
12c50 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Map();....      
12c60 20 20 20 20 20 20 69 66 20 28 74 79 70 65 4e 61        if (typeNa
12c70 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
12c80 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12c90 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12ca0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
12cb0 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
12cc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74            if (_t
12cd0 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56  ypeNames.TryGetV
12ce0 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f  alue(typeName, o
12cf0 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
12d00 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
12d30 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  dataType;..     
12d40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
12d60 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12d70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12d80 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
12d90 6e 64 65 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e  ndex = typeName.
12da0 49 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d  IndexOf('(');...
12db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12dc0 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
12dd0 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20  > 0) &&..       
12de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12df0 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47   _typeNames.TryG
12e00 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65  etValue(typeName
12e10 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e  .Substring(0, in
12e20 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20  dex).TrimEnd(), 
12e30 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20  out value))..   
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12e60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12e70 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
12e80 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12e90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12ea0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12eb0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12ec0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12ed0 20 20 69 66 20 28 64 65 66 61 75 6c 74 44 62 54    if (defaultDbT
12ee0 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ype != null)..  
12ef0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12f00 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74   (DbType)default
12f10 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
12f20 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
12f30 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62 54   = GetDefaultDbT
12f40 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ype(connection);
12f50 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
12f60 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
12f70 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
12f80 20 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57    DefaultDbTypeW
12f90 61 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65 2c  arning(typeName,
12fa0 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 44   flags, defaultD
12fb0 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  bType);..#endif.
12fc0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
12fd0 6e 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c  n (DbType)defaul
12fe0 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 7d 0d  tDbType;..    }.
12ff0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
13000 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
13010 74 61 74 69 63 20 6f 62 6a 65 63 74 20 5f 73 79  tatic object _sy
13020 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
13030 65 63 74 28 29 3b 0d 0a 20 20 20 20 70 72 69 76  ect();..    priv
13040 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74  ate static SQLit
13050 65 44 62 54 79 70 65 4d 61 70 20 5f 74 79 70 65  eDbTypeMap _type
13060 4e 61 6d 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  Names = null;.. 
13070 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
13080 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c  mary>..  /// SQL
13090 69 74 65 20 68 61 73 20 76 65 72 79 20 6c 69 6d  ite has very lim
130a0 69 74 65 64 20 74 79 70 65 73 2c 20 61 6e 64 20  ited types, and 
130b0 69 73 20 69 6e 68 65 72 65 6e 74 6c 79 20 74 65  is inherently te
130c0 78 74 2d 62 61 73 65 64 2e 20 20 54 68 65 20 66  xt-based.  The f
130d0 69 72 73 74 20 35 20 74 79 70 65 73 20 62 65 6c  irst 5 types bel
130e0 6f 77 20 72 65 70 72 65 73 65 6e 74 20 74 68 65  ow represent the
130f0 20 73 75 6d 20 6f 66 20 61 6c 6c 20 74 79 70 65   sum of all type
13100 73 20 53 51 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20  s SQLite..  /// 
13110 75 6e 64 65 72 73 74 61 6e 64 73 2e 20 20 54 68  understands.  Th
13120 65 20 44 61 74 65 54 69 6d 65 20 65 78 74 65 6e  e DateTime exten
13130 73 69 6f 6e 20 74 6f 20 74 68 65 20 73 70 65 63  sion to the spec
13140 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c   is for internal
13150 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f   use only...  //
13160 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13170 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 79 70 65  public enum Type
13180 41 66 66 69 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20  Affinity..  {.. 
13190 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
131a0 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73  ..    /// Not us
131b0 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ed..    /// </su
131c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 6e  mmary>..    Unin
131d0 69 74 69 61 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a  itialized = 0,..
131e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
131f0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 69  >..    /// All i
13200 6e 74 65 67 65 72 73 20 69 6e 20 53 51 4c 69 74  ntegers in SQLit
13210 65 20 64 65 66 61 75 6c 74 20 74 6f 20 49 6e 74  e default to Int
13220 36 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  64..    /// </su
13230 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e 74 36  mmary>..    Int6
13240 34 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  4 = 1,..    /// 
13250 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
13260 2f 2f 20 41 6c 6c 20 66 6c 6f 61 74 69 6e 67 20  // All floating 
13270 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e  point numbers in
13280 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20   SQLite default 
13290 74 6f 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f  to double..    /
132a0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
132b0 20 20 20 44 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a     Double = 2,..
132c0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
132d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
132e0 65 66 61 75 6c 74 20 64 61 74 61 20 74 79 70 65  efault data type
132f0 20 6f 66 20 53 51 4c 69 74 65 20 69 73 20 74 65   of SQLite is te
13300 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  xt..    /// </su
13310 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 65 78 74  mmary>..    Text
13320 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 3,..    /// <
13330 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
13340 2f 20 54 79 70 69 63 61 6c 6c 79 20 62 6c 6f 62  / Typically blob
13350 20 74 79 70 65 73 20 61 72 65 20 6f 6e 6c 79 20   types are only 
13360 73 65 65 6e 20 77 68 65 6e 20 72 65 74 75 72 6e  seen when return
13370 65 64 20 66 72 6f 6d 20 61 20 66 75 6e 63 74 69  ed from a functi
13380 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  on..    /// </su
13390 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 42 6c 6f 62  mmary>..    Blob
133a0 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 4,..    /// <
133b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
133c0 2f 20 4e 75 6c 6c 20 74 79 70 65 73 20 63 61 6e  / Null types can
133d0 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
133e0 6d 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20  m functions..   
133f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13400 0a 20 20 20 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a  .    Null = 5,..
13410 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13420 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20  >..    /// Used 
13430 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68  internally by th
13440 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20  is provider..   
13450 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13460 0a 20 20 20 20 44 61 74 65 54 69 6d 65 20 3d 20  .    DateTime = 
13470 31 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  10,..    /// <su
13480 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
13490 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
134a0 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72  by this provider
134b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
134c0 61 72 79 3e 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d  ary>..    None =
134d0 20 31 31 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f   11,..  }....  /
134e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
134f0 2f 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68  /// These are th
13500 65 20 65 76 65 6e 74 20 74 79 70 65 73 20 61 73  e event types as
13510 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
13520 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  e..  /// <see cr
13530 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
13540 74 69 6f 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72  tionEventHandler
13550 22 20 2f 3e 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65  " />..  /// dele
13560 67 61 74 65 20 28 61 6e 64 20 69 74 73 20 63 6f  gate (and its co
13570 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 76 65 6e  rresponding even
13580 74 29 20 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f  t) and the..  //
13590 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6e  / <see cref="Con
135a0 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73  nectionEventArgs
135b0 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 2f  " /> class...  /
135c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
135d0 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
135e0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  iteConnectionEve
135f0 6e 74 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20  ntType..  {..   
13600 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13610 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20  ..      /// Not 
13620 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  used...      ///
13630 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13640 20 20 20 49 6e 76 61 6c 69 64 20 3d 20 2d 31 2c     Invalid = -1,
13650 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13660 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13670 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20  // Not used...  
13680 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13690 79 3e 0d 0a 20 20 20 20 20 20 55 6e 6b 6e 6f 77  y>..      Unknow
136a0 6e 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  n = 0,....      
136b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
136c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
136d0 6e 65 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67  nection is being
136e0 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20   opened...      
136f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13700 20 20 20 20 20 20 4f 70 65 6e 69 6e 67 20 3d 20        Opening = 
13710 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
13720 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13730 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
13740 69 6f 6e 20 73 74 72 69 6e 67 20 68 61 73 20 62  ion string has b
13750 65 65 6e 20 70 61 72 73 65 64 2e 0d 0a 20 20 20  een parsed...   
13760 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13770 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 6e 65 63 74  >..      Connect
13780 69 6f 6e 53 74 72 69 6e 67 20 3d 20 32 2c 0d 0a  ionString = 2,..
13790 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
137a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
137b0 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
137c0 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20  was opened...   
137d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
137e0 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 20  >..      Opened 
137f0 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 3,....      //
13800 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13810 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
13820 63 72 65 66 3d 22 43 68 61 6e 67 65 44 61 74 61  cref="ChangeData
13830 62 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  base" /> method 
13840 77 61 73 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68  was called on th
13850 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  e..      /// con
13860 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
13870 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13880 20 20 20 20 20 20 43 68 61 6e 67 65 44 61 74 61        ChangeData
13890 62 61 73 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  base = 4,....   
138a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
138b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72  ..      /// A tr
138c0 61 6e 73 61 63 74 69 6f 6e 20 77 61 73 20 63 72  ansaction was cr
138d0 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
138e0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
138f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13900 3e 0d 0a 20 20 20 20 20 20 4e 65 77 54 72 61 6e  >..      NewTran
13910 73 61 63 74 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a  saction = 5,....
13920 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13930 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
13940 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61  he connection wa
13950 73 20 65 6e 6c 69 73 74 65 64 20 69 6e 74 6f 20  s enlisted into 
13960 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a  a transaction...
13970 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13980 61 72 79 3e 0d 0a 20 20 20 20 20 20 45 6e 6c 69  ary>..      Enli
13990 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20  stTransaction = 
139a0 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
139b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
139c0 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 77   /// A command w
139d0 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  as created using
139e0 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
139f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13a00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
13a10 77 43 6f 6d 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d  wCommand = 7,...
13a20 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13a30 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13a40 41 20 64 61 74 61 20 72 65 61 64 65 72 20 77 61  A data reader wa
13a50 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
13a60 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
13a70 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13a80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77  mary>..      New
13a90 44 61 74 61 52 65 61 64 65 72 20 3d 20 38 2c 0d  DataReader = 8,.
13aa0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13ab0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13ac0 2f 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  / An instance of
13ad0 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 43 72   a <see cref="Cr
13ae0 69 74 69 63 61 6c 48 61 6e 64 6c 65 22 20 2f 3e  iticalHandle" />
13af0 20 64 65 72 69 76 65 64 20 63 6c 61 73 73 20 68   derived class h
13b00 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  as..      /// be
13b10 65 6e 20 63 72 65 61 74 65 64 20 74 6f 20 77 72  en created to wr
13b20 61 70 20 61 20 6e 61 74 69 76 65 20 72 65 73 6f  ap a native reso
13b30 75 72 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urce...      ///
13b40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13b50 20 20 20 4e 65 77 43 72 69 74 69 63 61 6c 48 61     NewCriticalHa
13b60 6e 64 6c 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20  ndle = 9,....   
13b70 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13b80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13b90 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65  connection is be
13ba0 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  ing closed...   
13bb0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13bc0 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67  >..      Closing
13bd0 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 10,....      
13be0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13bf0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
13c00 6e 65 63 74 69 6f 6e 20 77 61 73 20 63 6c 6f 73  nection was clos
13c10 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13c20 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13c30 20 43 6c 6f 73 65 64 20 3d 20 31 31 2c 0d 0a 0d   Closed = 11,...
13c40 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13c50 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13c60 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20 62 65 69  A command is bei
13c70 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ng disposed...  
13c80 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13c90 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73  y>..      Dispos
13ca0 69 6e 67 43 6f 6d 6d 61 6e 64 20 3d 20 31 32 2c  ingCommand = 12,
13cb0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13cc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13cd0 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72  // A data reader
13ce0 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
13cf0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13d00 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13d10 20 44 69 73 70 6f 73 69 6e 67 44 61 74 61 52 65   DisposingDataRe
13d20 61 64 65 72 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20  ader = 13,....  
13d30 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13d40 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64  >..      /// A d
13d50 61 74 61 20 72 65 61 64 65 72 20 69 73 20 62 65  ata reader is be
13d60 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  ing closed...   
13d70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13d80 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67  >..      Closing
13d90 44 61 74 61 52 65 61 64 65 72 20 3d 20 31 34 2c  DataReader = 14,
13da0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13db0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13dc0 2f 2f 20 41 20 6e 61 74 69 76 65 20 72 65 73 6f  // A native reso
13dd0 75 72 63 65 20 77 61 73 20 6f 70 65 6e 65 64 20  urce was opened 
13de0 28 69 2e 65 2e 20 6f 62 74 61 69 6e 65 64 29 20  (i.e. obtained) 
13df0 66 72 6f 6d 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a  from the pool...
13e00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13e10 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e  ary>..      Open
13e20 65 64 46 72 6f 6d 50 6f 6f 6c 20 3d 20 31 35 2c  edFromPool = 15,
13e30 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13e40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13e50 2f 2f 20 41 20 6e 61 74 69 76 65 20 72 65 73 6f  // A native reso
13e60 75 72 63 65 20 77 61 73 20 63 6c 6f 73 65 64 20  urce was closed 
13e70 28 69 2e 65 2e 20 72 65 6c 65 61 73 65 64 29 20  (i.e. released) 
13e80 74 6f 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20  to the pool...  
13e90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13ea0 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 65 64  y>..      Closed
13eb0 54 6f 50 6f 6f 6c 20 3d 20 31 36 0d 0a 20 20 7d  ToPool = 16..  }
13ec0 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
13ed0 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
13ee0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
13ef0 66 20 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f  f SQLite for ADO
13f00 2e 4e 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73  .NET can process
13f10 20 64 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64   date/time field
13f20 73 20 69 6e 0d 0a 20 20 2f 2f 2f 20 64 61 74 61  s in..  /// data
13f30 62 61 73 65 73 20 69 6e 20 6f 6e 65 20 6f 66 20  bases in one of 
13f40 73 69 78 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20  six formats...  
13f50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13f60 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
13f70 0a 20 20 2f 2f 2f 20 49 53 4f 38 36 30 31 20 66  .  /// ISO8601 f
13f80 6f 72 6d 61 74 20 69 73 20 6d 6f 72 65 20 63 6f  ormat is more co
13f90 6d 70 61 74 69 62 6c 65 2c 20 72 65 61 64 61 62  mpatible, readab
13fa0 6c 65 2c 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73  le, fully-proces
13fb0 73 61 62 6c 65 2c 20 62 75 74 20 6c 65 73 73 0d  sable, but less.
13fc0 0a 20 20 2f 2f 2f 20 61 63 63 75 72 61 74 65 20  .  /// accurate 
13fd0 61 73 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 70  as it does not p
13fe0 72 6f 76 69 64 65 20 74 69 6d 65 20 64 6f 77 6e  rovide time down
13ff0 20 74 6f 20 66 72 61 63 74 69 6f 6e 73 20 6f 66   to fractions of
14000 20 61 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 2f 2f   a second...  //
14010 2f 20 4a 75 6c 69 61 6e 44 61 79 20 69 73 20 74  / JulianDay is t
14020 68 65 20 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61  he numeric forma
14030 74 20 74 68 65 20 53 51 4c 69 74 65 20 75 73 65  t the SQLite use
14040 73 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64  s internally and
14050 20 69 73 20 61 72 67 75 61 62 6c 79 0d 0a 20 20   is arguably..  
14060 2f 2f 2f 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d  /// the most com
14070 70 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64  patible with 3rd
14080 20 70 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49   party tools.  I
14090 74 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c  t is not readabl
140a0 65 20 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f  e as text..  ///
140b0 20 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72   without post-pr
140c0 6f 63 65 73 73 69 6e 67 2e 20 20 54 69 63 6b 73  ocessing.  Ticks
140d0 20 6c 65 73 73 20 63 6f 6d 70 61 74 69 62 6c 65   less compatible
140e0 20 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20   with 3rd party 
140f0 74 6f 6f 6c 73 20 74 68 61 74 0d 0a 20 20 2f 2f  tools that..  //
14100 2f 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61  / query the data
14110 62 61 73 65 2c 20 61 6e 64 20 72 65 6e 64 65 72  base, and render
14120 73 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66  s the DateTime f
14130 69 65 6c 64 20 75 6e 72 65 61 64 61 62 6c 65 20  ield unreadable 
14140 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77  as text..  /// w
14150 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63  ithout post-proc
14160 65 73 73 69 6e 67 2e 20 20 55 6e 69 78 45 70 6f  essing.  UnixEpo
14170 63 68 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61  ch is more compa
14180 74 69 62 6c 65 20 77 69 74 68 20 55 6e 69 78 20  tible with Unix 
14190 73 79 73 74 65 6d 73 2e 0d 0a 20 20 2f 2f 2f 20  systems...  /// 
141a0 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
141b0 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 6e 66   allows the conf
141c0 69 67 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f  igured format fo
141d0 72 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20  r the invariant 
141e0 63 75 6c 74 75 72 65 0d 0a 20 20 2f 2f 2f 20 66  culture..  /// f
141f0 6f 72 6d 61 74 20 74 6f 20 62 65 20 75 73 65 64  ormat to be used
14200 20 61 6e 64 20 69 73 20 68 75 6d 61 6e 20 72 65   and is human re
14210 61 64 61 62 6c 65 2e 20 20 43 75 72 72 65 6e 74  adable.  Current
14220 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74  Culture allows t
14230 68 65 0d 0a 20 20 2f 2f 2f 20 63 6f 6e 66 69 67  he..  /// config
14240 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20  ured format for 
14250 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74  the current cult
14260 75 72 65 20 74 6f 20 62 65 20 75 73 65 64 20 61  ure to be used a
14270 6e 64 20 69 73 20 61 6c 73 6f 20 68 75 6d 61 6e  nd is also human
14280 0d 0a 20 20 2f 2f 2f 20 72 65 61 64 61 62 6c 65  ..  /// readable
14290 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20  ...  ///..  /// 
142a0 54 68 65 20 70 72 65 66 65 72 72 65 64 20 6f 72  The preferred or
142b0 64 65 72 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20  der of choosing 
142c0 61 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  a DateTime forma
142d0 74 20 69 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20  t is JulianDay, 
142e0 49 53 4f 38 36 30 31 2c 0d 0a 20 20 2f 2f 2f 20  ISO8601,..  /// 
142f0 61 6e 64 20 74 68 65 6e 20 54 69 63 6b 73 2e 20  and then Ticks. 
14300 20 54 69 63 6b 73 20 69 73 20 6d 61 69 6e 6c 79   Ticks is mainly
14310 20 70 72 65 73 65 6e 74 20 66 6f 72 20 6c 65 67   present for leg
14320 61 63 79 20 63 6f 64 65 20 73 75 70 70 6f 72 74  acy code support
14330 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  ...  /// </remar
14340 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ks>..  public en
14350 75 6d 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  um SQLiteDateFor
14360 6d 61 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f  mats..  {..    /
14370 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14380 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 76 61    /// Use the va
14390 6c 75 65 20 6f 66 20 44 61 74 65 54 69 6d 65 2e  lue of DateTime.
143a0 54 69 63 6b 73 2e 20 20 54 68 69 73 20 76 61 6c  Ticks.  This val
143b0 75 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  ue is not recomm
143c0 65 6e 64 65 64 20 61 6e 64 20 69 73 20 6e 6f 74  ended and is not
143d0 20 77 65 6c 6c 20 73 75 70 70 6f 72 74 65 64 20   well supported 
143e0 77 69 74 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20  with LINQ...    
143f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14400 20 20 20 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a      Ticks = 0,..
14410 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14420 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  >..    /// Use t
14430 68 65 20 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d  he ISO-8601 form
14440 61 74 2e 20 20 55 73 65 73 20 74 68 65 20 22 79  at.  Uses the "y
14450 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
14460 73 73 2e 46 46 46 46 46 46 46 4b 22 20 66 6f 72  ss.FFFFFFFK" for
14470 6d 61 74 20 66 6f 72 20 55 54 43 20 44 61 74 65  mat for UTC Date
14480 54 69 6d 65 20 76 61 6c 75 65 73 20 61 6e 64 0d  Time values and.
14490 0a 20 20 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d  .    /// "yyyy-M
144a0 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
144b0 46 46 46 46 46 22 20 66 6f 72 6d 61 74 20 66 6f  FFFFF" format fo
144c0 72 20 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65  r local DateTime
144d0 20 76 61 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f   values)...    /
144e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
144f0 20 20 20 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d     ISO8601 = 1,.
14500 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14510 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
14520 69 6e 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65  interval of time
14530 20 69 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61   in days and fra
14540 63 74 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20  ctions of a day 
14550 73 69 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c  since January 1,
14560 20 34 37 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f   4713 BC...    /
14570 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14580 20 20 20 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32     JulianDay = 2
14590 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
145a0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
145b0 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f  e whole number o
145c0 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
145d0 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28  the Unix epoch (
145e0 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 29  January 1, 1970)
145f0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14600 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45  mary>..    UnixE
14610 70 6f 63 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f  poch = 3,..    /
14620 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14630 20 20 2f 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72    /// Any cultur
14640 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 74  e-independent st
14650 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20  ring value that 
14660 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
14670 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74  rk can interpret
14680 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65   as a valid Date
14690 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Time...    /// <
146a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49  /summary>..    I
146b0 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
146c0 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 4,..    /// <s
146d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
146e0 20 41 6e 79 20 73 74 72 69 6e 67 20 76 61 6c 75   Any string valu
146f0 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20  e that the .NET 
14700 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e  Framework can in
14710 74 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c  terpret as a val
14720 69 64 20 44 61 74 65 54 69 6d 65 20 75 73 69 6e  id DateTime usin
14730 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75  g the current cu
14740 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lture...    /// 
14750 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14760 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d  CurrentCulture =
14770 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   5,..    /// <su
14780 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
14790 54 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d  The default form
147a0 61 74 20 66 6f 72 20 74 68 69 73 20 70 72 6f 76  at for this prov
147b0 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ider...    /// <
147c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44  /summary>..    D
147d0 65 66 61 75 6c 74 20 3d 20 49 53 4f 38 36 30 31  efault = ISO8601
147e0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
147f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
14800 54 68 69 73 20 65 6e 75 6d 20 64 65 74 65 72 6d  This enum determ
14810 69 6e 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20  ines how SQLite 
14820 74 72 65 61 74 73 20 69 74 73 20 6a 6f 75 72 6e  treats its journ
14830 61 6c 20 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20  al file...  /// 
14840 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f  </summary>..  //
14850 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f  / <remarks>..  /
14860 2f 2f 20 42 79 20 64 65 66 61 75 6c 74 20 53 51  // By default SQ
14870 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65  Lite will create
14880 20 61 6e 64 20 64 65 6c 65 74 65 20 74 68 65 20   and delete the 
14890 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 77 68 65  journal file whe
148a0 6e 20 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20  n needed during 
148b0 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a  a transaction...
148c0 20 20 2f 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66    /// However, f
148d0 6f 72 20 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72  or some computer
148e0 73 20 72 75 6e 6e 69 6e 67 20 63 65 72 74 61 69  s running certai
148f0 6e 20 66 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e  n filesystem mon
14900 69 74 6f 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74  itoring tools, t
14910 68 65 20 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20  he rapid..  /// 
14920 63 72 65 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c  creation and del
14930 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75  etion of the jou
14940 72 6e 61 6c 20 66 69 6c 65 20 63 61 6e 20 63 61  rnal file can ca
14950 75 73 65 20 74 68 6f 73 65 20 70 72 6f 67 72 61  use those progra
14960 6d 73 20 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74  ms to fail, or t
14970 6f 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68  o interfere with
14980 20 53 51 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d   SQLite...  ///.
14990 0a 20 20 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67  .  /// If a prog
149a0 72 61 6d 20 6f 72 20 76 69 72 75 73 20 73 63 61  ram or virus sca
149b0 6e 6e 65 72 20 69 73 20 69 6e 74 65 72 66 65 72  nner is interfer
149c0 69 6e 67 20 77 69 74 68 20 53 51 4c 69 74 65 27  ing with SQLite'
149d0 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20  s journal file, 
149e0 79 6f 75 20 6d 61 79 20 72 65 63 65 69 76 65 20  you may receive 
149f0 65 72 72 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61  errors like "una
14a00 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61  ble to open data
14a10 62 61 73 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f  base file"..  //
14a20 2f 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67 20  / when starting 
14a30 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  a transaction.  
14a40 49 66 20 74 68 69 73 20 69 73 20 68 61 70 70 65  If this is happe
14a50 6e 69 6e 67 2c 20 79 6f 75 20 6d 61 79 20 77 61  ning, you may wa
14a60 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  nt to change the
14a70 20 64 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c   default journal
14a80 20 6d 6f 64 65 20 74 6f 20 50 65 72 73 69 73 74   mode to Persist
14a90 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  ...  /// </remar
14aa0 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ks>..  public en
14ab0 75 6d 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c  um SQLiteJournal
14ac0 4d 6f 64 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20  ModeEnum..  {.. 
14ad0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14ae0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
14af0 66 61 75 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73  fault mode, this
14b00 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
14b10 6f 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69  o use the existi
14b20 6e 67 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  ng journaling mo
14b30 64 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  de for the datab
14b40 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ase...    /// </
14b50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65  summary>..    De
14b60 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20  fault = -1,..   
14b70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14b80 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77      /// SQLite w
14b90 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64  ill create and d
14ba0 65 73 74 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e  estroy the journ
14bb0 61 6c 20 66 69 6c 65 20 61 73 2d 6e 65 65 64 65  al file as-neede
14bc0 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
14bd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65  mmary>..    Dele
14be0 74 65 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  te = 0,..    ///
14bf0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14c00 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 69 73  /// When this is
14c10 20 73 65 74 2c 20 53 51 4c 69 74 65 20 77 69 6c   set, SQLite wil
14c20 6c 20 6b 65 65 70 20 74 68 65 20 6a 6f 75 72 6e  l keep the journ
14c30 61 6c 20 66 69 6c 65 20 65 76 65 6e 20 61 66 74  al file even aft
14c40 65 72 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  er a transaction
14c50 20 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20   has completed. 
14c60 20 49 74 27 73 20 63 6f 6e 74 65 6e 74 73 20 77   It's contents w
14c70 69 6c 6c 20 62 65 20 65 72 61 73 65 64 2c 0d 0a  ill be erased,..
14c80 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20      /// and the 
14c90 6a 6f 75 72 6e 61 6c 20 72 65 2d 75 73 65 64 20  journal re-used 
14ca0 61 73 20 6f 66 74 65 6e 20 61 73 20 6e 65 65 64  as often as need
14cb0 65 64 2e 20 20 49 66 20 69 74 20 69 73 20 64 65  ed.  If it is de
14cc0 6c 65 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 62  leted, it will b
14cd0 65 20 72 65 63 72 65 61 74 65 64 20 74 68 65 20  e recreated the 
14ce0 6e 65 78 74 20 74 69 6d 65 20 69 74 20 69 73 20  next time it is 
14cf0 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  needed...    ///
14d00 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14d10 20 50 65 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20   Persist = 1,.. 
14d20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14d30 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f  ..    /// This o
14d40 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
14d50 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  he rollback jour
14d60 6e 61 6c 20 65 6e 74 69 72 65 6c 79 2e 20 20 49  nal entirely.  I
14d70 6e 74 65 72 72 75 70 74 65 64 20 74 72 61 6e 73  nterrupted trans
14d80 61 63 74 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f  actions or a pro
14d90 67 72 61 6d 20 63 72 61 73 68 20 63 61 6e 20 63  gram crash can c
14da0 61 75 73 65 20 64 61 74 61 62 61 73 65 0d 0a 20  ause database.. 
14db0 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f     /// corruptio
14dc0 6e 20 69 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d  n in this mode!.
14dd0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14de0 72 79 3e 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32  ry>..    Off = 2
14df0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14e00 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
14e10 4c 69 74 65 20 77 69 6c 6c 20 74 72 75 6e 63 61  Lite will trunca
14e20 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66  te the journal f
14e30 69 6c 65 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67  ile to zero-leng
14e40 74 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65  th instead of de
14e50 6c 65 74 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20  leting it...    
14e60 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14e70 20 20 20 20 54 72 75 6e 63 61 74 65 20 3d 20 33      Truncate = 3
14e80 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14e90 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
14ea0 4c 69 74 65 20 77 69 6c 6c 20 73 74 6f 72 65 20  Lite will store 
14eb0 74 68 65 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76  the journal in v
14ec0 6f 6c 61 74 69 6c 65 20 52 41 4d 2e 20 20 54 68  olatile RAM.  Th
14ed0 69 73 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f  is saves disk I/
14ee0 4f 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70  O but at the exp
14ef0 65 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65  ense of database
14f00 20 73 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65   safety and inte
14f10 67 72 69 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  grity...    /// 
14f20 49 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  If the applicati
14f30 6f 6e 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20  on using SQLite 
14f40 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
14f50 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73  iddle of a trans
14f60 61 63 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20  action when the 
14f70 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e  MEMORY journalin
14f80 67 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74  g mode is set, t
14f90 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  hen the..    ///
14fa0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77   database file w
14fb0 69 6c 6c 20 76 65 72 79 20 6c 69 6b 65 6c 79 20  ill very likely 
14fc0 67 6f 20 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20  go corrupt...   
14fd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14fe0 0a 20 20 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c  .    Memory = 4,
14ff0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
15000 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
15010 69 74 65 20 75 73 65 73 20 61 20 77 72 69 74 65  ite uses a write
15020 2d 61 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65  -ahead log inste
15030 61 64 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b  ad of a rollback
15040 20 6a 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c   journal to impl
15050 65 6d 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  ement transactio
15060 6e 73 2e 20 20 54 68 65 20 57 41 4c 20 6a 6f 75  ns.  The WAL jou
15070 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20  rnaling mode is 
15080 70 65 72 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20  persistent;..   
15090 20 2f 2f 2f 20 61 66 74 65 72 20 62 65 69 6e 67   /// after being
150a0 20 73 65 74 20 69 74 20 73 74 61 79 73 20 69 6e   set it stays in
150b0 20 65 66 66 65 63 74 20 61 63 72 6f 73 73 20 6d   effect across m
150c0 75 6c 74 69 70 6c 65 20 64 61 74 61 62 61 73 65  ultiple database
150d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64   connections and
150e0 20 61 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61   after closing a
150f0 6e 64 20 72 65 6f 70 65 6e 69 6e 67 20 74 68 65  nd reopening the
15100 20 64 61 74 61 62 61 73 65 2e 20 41 20 64 61 74   database. A dat
15110 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69  abase..    /// i
15120 6e 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67  n WAL journaling
15130 20 6d 6f 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62   mode can only b
15140 65 20 61 63 63 65 73 73 65 64 20 62 79 20 53 51  e accessed by SQ
15150 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37  Lite version 3.7
15160 2e 30 20 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20  .0 or later...  
15170 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15180 0d 0a 20 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20  ..    Wal = 5.. 
15190 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
151a0 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73  mary>..  /// Pos
151b0 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72  sible values for
151c0 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75   the "synchronou
151d0 73 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74  s" database sett
151e0 69 6e 67 2e 20 20 54 68 69 73 20 73 65 74 74 69  ing.  This setti
151f0 6e 67 20 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20  ng determines.. 
15200 20 2f 2f 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74   /// how often t
15210 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
15220 6e 65 20 63 61 6c 6c 73 20 74 68 65 20 78 53 79  ne calls the xSy
15230 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65  nc method of the
15240 20 56 46 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73   VFS...  /// </s
15250 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72  ummary>..  inter
15260 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65 53  nal enum SQLiteS
15270 79 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a  ynchronousEnum..
15280 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
15290 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
152a0 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61  /// Use the defa
152b0 75 6c 74 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  ult "synchronous
152c0 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69  " database setti
152d0 6e 67 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20  ng.  Currently, 
152e0 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a  this should be..
152f0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 61        /// the sa
15300 6d 65 20 61 73 20 75 73 69 6e 67 20 74 68 65 20  me as using the 
15310 46 55 4c 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20  FULL mode...    
15320 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15330 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20  ..      Default 
15340 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = -1,....      /
15350 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15360 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
15370 62 61 73 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74  base engine cont
15380 69 6e 75 65 73 20 77 69 74 68 6f 75 74 20 73 79  inues without sy
15390 6e 63 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73  ncing as soon as
153a0 20 69 74 20 68 61 73 20 68 61 6e 64 65 64 0d 0a   it has handed..
153b0 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f        /// data o
153c0 66 66 20 74 6f 20 74 68 65 20 6f 70 65 72 61 74  ff to the operat
153d0 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 66 20  ing system.  If 
153e0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
153f0 72 75 6e 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a  running SQLite..
15400 20 20 20 20 20 20 2f 2f 2f 20 63 72 61 73 68 65        /// crashe
15410 73 2c 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c  s, the data will
15420 20 62 65 20 73 61 66 65 2c 20 62 75 74 20 74 68   be safe, but th
15430 65 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74  e database might
15440 20 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65   become corrupte
15450 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  d..      /// if 
15460 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
15470 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20  stem crashes or 
15480 74 68 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73  the computer los
15490 65 73 20 70 6f 77 65 72 20 62 65 66 6f 72 65 20  es power before 
154a0 74 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  that..      /// 
154b0 64 61 74 61 20 68 61 73 20 62 65 65 6e 20 77 72  data has been wr
154c0 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73  itten to the dis
154d0 6b 20 73 75 72 66 61 63 65 2e 0d 0a 20 20 20 20  k surface...    
154e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
154f0 0d 0a 20 20 20 20 20 20 4f 66 66 20 3d 20 30 2c  ..      Off = 0,
15500 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15510 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15520 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
15530 65 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c  engine will stil
15540 6c 20 73 79 6e 63 20 61 74 20 74 68 65 20 6d 6f  l sync at the mo
15550 73 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65  st critical mome
15560 6e 74 73 2c 20 62 75 74 0d 0a 20 20 20 20 20 20  nts, but..      
15570 2f 2f 2f 20 6c 65 73 73 20 6f 66 74 65 6e 20 74  /// less often t
15580 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65  han in FULL mode
15590 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 76 65  .  There is a ve
155a0 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68  ry small (though
155b0 20 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20   non-zero)..    
155c0 20 20 2f 2f 2f 20 63 68 61 6e 63 65 20 74 68 61    /// chance tha
155d0 74 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72  t a power failur
155e0 65 20 61 74 20 6a 75 73 74 20 74 68 65 20 77 72  e at just the wr
155f0 6f 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63  ong time could c
15600 6f 72 72 75 70 74 20 74 68 65 0d 0a 20 20 20 20  orrupt the..    
15610 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 69    /// database i
15620 6e 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a  n NORMAL mode...
15630 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15640 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d  ary>..      Norm
15650 61 6c 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  al = 1,....     
15660 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15670 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61        /// The da
15680 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69  tabase engine wi
15690 6c 6c 20 75 73 65 20 74 68 65 20 78 53 79 6e 63  ll use the xSync
156a0 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56   method of the V
156b0 46 53 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61  FS to ensure tha
156c0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  t..      /// all
156d0 20 63 6f 6e 74 65 6e 74 20 69 73 20 73 61 66 65   content is safe
156e0 6c 79 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68  ly written to th
156f0 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 20 70  e disk surface p
15700 72 69 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69  rior to continui
15710 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ng...      /// T
15720 68 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74  his ensures that
15730 20 61 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79   an operating sy
15740 73 74 65 6d 20 63 72 61 73 68 20 6f 72 20 70 6f  stem crash or po
15750 77 65 72 20 66 61 69 6c 75 72 65 20 77 69 6c 6c  wer failure will
15760 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
15770 63 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61  corrupt the data
15780 62 61 73 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63  base.  FULL sync
15790 68 72 6f 6e 6f 75 73 20 69 73 20 76 65 72 79 20  hronous is very 
157a0 73 61 66 65 2c 20 62 75 74 20 69 74 20 69 73 20  safe, but it is 
157b0 61 6c 73 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  also..      /// 
157c0 73 6c 6f 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f  slower...      /
157d0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
157e0 20 20 20 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20       Full = 2.. 
157f0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
15800 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
15810 20 72 65 71 75 65 73 74 65 64 20 63 6f 6d 6d 61   requested comma
15820 6e 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  nd execution typ
15830 65 2e 20 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c  e.  This control
15840 73 20 77 68 69 63 68 20 6d 65 74 68 6f 64 20 6f  s which method o
15850 66 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  f the..  /// <se
15860 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
15870 6d 6d 61 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74  mmand" /> object
15880 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e   will be called.
15890 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
158a0 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
158b0 6d 20 53 51 4c 69 74 65 45 78 65 63 75 74 65 54  m SQLiteExecuteT
158c0 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ype..  {..      
158d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
158e0 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68       /// Do noth
158f0 69 6e 67 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20  ing.  No method 
15900 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
15910 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15920 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e  mary>..      Non
15930 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 0,....      
15940 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15950 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
15960 6d 61 6e 64 20 69 73 20 6e 6f 74 20 65 78 70 65  mand is not expe
15970 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61  cted to return a
15980 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65   result -OR- the
15990 20 72 65 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a   result is not..
159a0 20 20 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64        /// needed
159b0 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  .  The <see cref
159c0 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
159d0 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28  ExecuteNonQuery(
159e0 29 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20  )" /> or..      
159f0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
15a00 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
15a10 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 43 6f 6d  cuteNonQuery(Com
15a20 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f  mandBehavior)" /
15a30 3e 20 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20  >  method..     
15a40 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 63 61 6c   /// will be cal
15a50 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  led...      /// 
15a60 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15a70 20 20 4e 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d    NonQuery = 1,.
15a80 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15a90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15aa0 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
15ab0 20 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74   expected to ret
15ac0 75 72 6e 20 61 20 73 63 61 6c 61 72 20 72 65 73  urn a scalar res
15ad0 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73  ult -OR- the res
15ae0 75 6c 74 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ult should..    
15af0 20 20 2f 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64    /// be limited
15b00 20 74 6f 20 61 20 73 63 61 6c 61 72 20 72 65 73   to a scalar res
15b10 75 6c 74 2e 20 20 54 68 65 20 3c 73 65 65 20 63  ult.  The <see c
15b20 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
15b30 6e 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72  nd.ExecuteScalar
15b40 28 29 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  ()" />..      //
15b50 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22  / or <see cref="
15b60 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78  SQLiteCommand.Ex
15b70 65 63 75 74 65 53 63 61 6c 61 72 28 43 6f 6d 6d  ecuteScalar(Comm
15b80 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e  andBehavior)" />
15b90 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20   method will..  
15ba0 20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65      /// be calle
15bb0 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
15bc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15bd0 53 63 61 6c 61 72 20 3d 20 32 2c 0d 0a 0d 0a 20  Scalar = 2,.... 
15be0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15bf0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15c00 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70  e command is exp
15c10 65 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20  ected to return 
15c20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
15c30 65 44 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20  eDataReader" /> 
15c40 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  result...      /
15c50 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
15c60 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
15c70 45 78 65 63 75 74 65 52 65 61 64 65 72 28 29 22  ExecuteReader()"
15c80 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f   /> or..      //
15c90 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
15ca0 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
15cb0 74 65 52 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64  teReader(Command
15cc0 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65  Behavior)" /> me
15cd0 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20  thod will..     
15ce0 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d   /// be called..
15cf0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15d00 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61  mary>..      Rea
15d10 64 65 72 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20  der = 3,....    
15d20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15d30 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  .      /// Use t
15d40 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61  he default comma
15d50 6e 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  nd execution typ
15d60 65 2e 20 20 55 73 69 6e 67 20 74 68 69 73 20 76  e.  Using this v
15d70 61 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65  alue is the same
15d80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 75  ..      /// as u
15d90 73 69 6e 67 20 74 68 65 20 3c 73 65 65 20 63 72  sing the <see cr
15da0 65 66 3d 22 53 51 4c 69 74 65 45 78 65 63 75 74  ef="SQLiteExecut
15db0 65 54 79 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20  eType.NonQuery" 
15dc0 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  /> value...     
15dd0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15de0 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d  .      Default =
15df0 20 4e 6f 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44   NonQuery /* TOD
15e00 4f 3a 20 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f  O: Good default?
15e10 20 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f   */..  }....  //
15e20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
15e30 2f 2f 20 54 68 65 20 61 63 74 69 6f 6e 20 63 6f  // The action co
15e40 64 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  de responsible f
15e50 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  or the current c
15e60 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74  all into the aut
15e70 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20  horizer...  /// 
15e80 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
15e90 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
15ea0 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
15eb0 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Code..  {..     
15ec0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15ed0 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 61 63 74        /// No act
15ee0 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 70 65 72  ion is being per
15ef0 66 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 76 61  formed.  This va
15f00 6c 75 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  lue should not b
15f10 65 20 75 73 65 64 20 66 72 6f 6d 0d 0a 20 20 20  e used from..   
15f20 20 20 20 2f 2f 2f 20 65 78 74 65 72 6e 61 6c 20     /// external 
15f30 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  code...      ///
15f40 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15f50 20 20 20 4e 6f 6e 65 20 3d 20 2d 31 2c 0d 0a 0d     None = -1,...
15f60 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15f70 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15f80 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0d  No longer used..
15f90 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15fa0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 70  mary>..      Cop
15fb0 79 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  y = 0,....      
15fc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15fd0 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65       /// An inde
15fe0 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  x will be create
15ff0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
16000 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16010 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
16020 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20   /// index name 
16030 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
16040 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 0d 0a  me...      ///..
16050 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16060 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
16070 74 65 49 6e 64 65 78 20 3d 20 31 2c 0d 0a 0d 0a  teIndex = 1,....
16080 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16090 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
160a0 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63   table will be c
160b0 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
160c0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
160d0 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
160e0 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20        /// table 
160f0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16100 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16110 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16120 20 20 20 20 43 72 65 61 74 65 54 61 62 6c 65 20      CreateTable 
16130 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
16140 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16150 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
16160 72 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  ry index will be
16170 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
16180 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16190 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
161a0 2f 2f 2f 20 61 72 65 20 74 68 65 20 69 6e 64 65  /// are the inde
161b0 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
161c0 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
161d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
161e0 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65  ..      CreateTe
161f0 6d 70 49 6e 64 65 78 20 3d 20 33 2c 0d 0a 0d 0a  mpIndex = 3,....
16200 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16210 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16220 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65   temporary table
16230 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
16240 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16250 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16260 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
16270 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61  the table name a
16280 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
16290 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
162a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
162b0 65 61 74 65 54 65 6d 70 54 61 62 6c 65 20 3d 20  eateTempTable = 
162c0 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
162d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
162e0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
162f0 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
16300 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
16310 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16320 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
16330 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 72 69 67  /// are the trig
16340 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
16350 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
16360 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16370 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
16380 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 35 2c  TempTrigger = 5,
16390 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
163a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
163b0 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 76  // A temporary v
163c0 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61  iew will be crea
163d0 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
163e0 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
163f0 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
16400 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d 65  // the view name
16410 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
16420 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16430 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16440 43 72 65 61 74 65 54 65 6d 70 56 69 65 77 20 3d  CreateTempView =
16450 20 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   6,....      ///
16460 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16470 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20    /// A trigger 
16480 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
16490 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
164a0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
164b0 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
164c0 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  // trigger name 
164d0 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
164e0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
164f0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16500 20 43 72 65 61 74 65 54 72 69 67 67 65 72 20 3d   CreateTrigger =
16510 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   7,....      ///
16520 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16530 20 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c    /// A view wil
16540 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
16550 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16560 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16570 20 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20   the view..     
16580 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
16590 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
165a0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
165b0 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56  >..      CreateV
165c0 69 65 77 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20  iew = 8,....    
165d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
165e0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 44 45 4c  .      /// A DEL
165f0 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ETE statement wi
16600 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16610 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16620 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16630 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16640 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
16650 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
16660 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16670 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6c 65  ary>..      Dele
16680 74 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20  te = 9,....     
16690 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
166a0 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64        /// An ind
166b0 65 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  ex will be dropp
166c0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
166d0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
166e0 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20  ts are the..    
166f0 20 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65    /// index name
16700 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
16710 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
16720 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16730 20 20 44 72 6f 70 49 6e 64 65 78 20 3d 20 31 30    DropIndex = 10
16740 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16750 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16760 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c  /// A table will
16770 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16780 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16790 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
167a0 74 68 65 20 74 61 62 6c 65 73 0d 0a 20 20 20 20  the tables..    
167b0 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61    /// name and a
167c0 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
167d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
167e0 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 61  y>..      DropTa
167f0 62 6c 65 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20  ble = 11,....   
16800 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16810 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
16820 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69  mporary index wi
16830 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
16840 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16850 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
16860 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
16870 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
16880 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16890 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
168a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
168b0 70 54 65 6d 70 49 6e 64 65 78 20 3d 20 31 32 2c  pTempIndex = 12,
168c0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
168d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
168e0 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
168f0 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
16900 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16910 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16920 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
16930 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61  /// the table na
16940 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16950 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16960 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16970 20 20 44 72 6f 70 54 65 6d 70 54 61 62 6c 65 20    DropTempTable 
16980 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 13,....      /
16990 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
169a0 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72      /// A tempor
169b0 61 72 79 20 74 72 69 67 67 65 72 20 77 69 6c 6c  ary trigger will
169c0 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
169d0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
169e0 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
169f0 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
16a00 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20  rigger name and 
16a10 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16a20 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16a30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16a40 70 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 31  pTempTrigger = 1
16a50 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
16a60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16a70 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
16a80 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72   view will be dr
16a90 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
16aa0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16ab0 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20  ments are..     
16ac0 20 2f 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61   /// the view na
16ad0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16ae0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16af0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16b00 20 20 44 72 6f 70 54 65 6d 70 56 69 65 77 20 3d    DropTempView =
16b10 20 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   15,....      //
16b20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16b30 20 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72     /// A trigger
16b40 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
16b50 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16b60 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16b70 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20   are the..      
16b80 2f 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65  /// trigger name
16b90 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
16ba0 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
16bb0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16bc0 20 20 44 72 6f 70 54 72 69 67 67 65 72 20 3d 20    DropTrigger = 
16bd0 31 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  16,....      ///
16be0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16bf0 20 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c    /// A view wil
16c00 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
16c10 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16c20 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16c30 20 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20   the view..     
16c40 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
16c50 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16c60 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16c70 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 69 65  >..      DropVie
16c80 77 20 3d 20 31 37 2c 0d 0a 0d 0a 20 20 20 20 20  w = 17,....     
16c90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16ca0 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 49 4e 53        /// An INS
16cb0 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ERT statement wi
16cc0 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16cd0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16ce0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16cf0 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16d00 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
16d10 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
16d20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16d30 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 73 65  ary>..      Inse
16d40 72 74 20 3d 20 31 38 2c 0d 0a 0d 0a 20 20 20 20  rt = 18,....    
16d50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16d60 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 50 52 41  .      /// A PRA
16d70 47 4d 41 20 73 74 61 74 65 6d 65 6e 74 20 77 69  GMA statement wi
16d80 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16d90 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16da0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16db0 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16dc0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 50 52  e name of the PR
16dd0 41 47 4d 41 20 61 6e 64 20 74 68 65 20 6e 65 77  AGMA and the new
16de0 20 76 61 6c 75 65 20 6f 72 20 61 20 6e 75 6c 6c   value or a null
16df0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16e00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16e10 20 20 20 20 20 50 72 61 67 6d 61 20 3d 20 31 39       Pragma = 19
16e20 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16e30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16e40 2f 2f 2f 20 41 20 74 61 62 6c 65 20 63 6f 6c 75  /// A table colu
16e50 6d 6e 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e  mn will be read.
16e60 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16e70 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
16e80 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
16e90 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  // table name an
16ea0 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  d the column nam
16eb0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16ec0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16ed0 52 65 61 64 20 3d 20 32 30 2c 0d 0a 0d 0a 20 20  Read = 20,....  
16ee0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16ef0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53  >..      /// A S
16f00 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
16f10 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
16f20 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16f30 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16f40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
16f50 62 6f 74 68 20 6e 75 6c 6c 20 76 61 6c 75 65 73  both null values
16f60 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16f70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
16f80 65 6c 65 63 74 20 3d 20 32 31 2c 0d 0a 0d 0a 20  elect = 21,.... 
16f90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16fa0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16fb0 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c  transaction will
16fc0 20 62 65 20 73 74 61 72 74 65 64 2c 20 63 6f 6d   be started, com
16fd0 6d 69 74 74 65 64 2c 20 6f 72 20 72 6f 6c 6c 65  mitted, or rolle
16fe0 64 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20  d back.  The..  
16ff0 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73      /// action-s
17000 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17010 73 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f  s are the name o
17020 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  f the operation 
17030 28 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f  (BEGIN,..      /
17040 2f 2f 20 43 4f 4d 4d 49 54 2c 20 6f 72 20 52 4f  // COMMIT, or RO
17050 4c 4c 42 41 43 4b 29 20 61 6e 64 20 61 20 6e 75  LLBACK) and a nu
17060 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
17070 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17080 0a 20 20 20 20 20 20 54 72 61 6e 73 61 63 74 69  .      Transacti
17090 6f 6e 20 3d 20 32 32 2c 0d 0a 0d 0a 20 20 20 20  on = 22,....    
170a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
170b0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 55 50  .      /// An UP
170c0 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77  DATE statement w
170d0 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e  ill be executed.
170e0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
170f0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
17100 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
17110 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
17120 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  d the column nam
17130 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
17140 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17150 55 70 64 61 74 65 20 3d 20 32 33 2c 0d 0a 0d 0a  Update = 23,....
17160 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17170 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17180 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62   database will b
17190 65 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68  e attached to th
171a0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54  e connection.  T
171b0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
171c0 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ic..      /// ar
171d0 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
171e0 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e 61  database file na
171f0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
17200 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
17210 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17220 20 20 41 74 74 61 63 68 20 3d 20 32 34 2c 0d 0a    Attach = 24,..
17230 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17240 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17250 20 41 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c   A database will
17260 20 62 65 20 64 65 74 61 63 68 65 64 20 66 72 6f   be detached fro
17270 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  m the connection
17280 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
17290 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f  ecific..      //
172a0 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  / arguments are 
172b0 74 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d  the database nam
172c0 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
172d0 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
172e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
172f0 20 44 65 74 61 63 68 20 3d 20 32 35 2c 0d 0a 0d   Detach = 25,...
17300 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17310 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17320 54 68 65 20 73 63 68 65 6d 61 20 6f 66 20 61 20  The schema of a 
17330 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6c  table will be al
17340 74 65 72 65 64 2e 20 20 54 68 65 20 61 63 74 69  tered.  The acti
17350 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17360 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
17370 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73   are the databas
17380 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  e name and the t
17390 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
173a0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
173b0 0d 0a 20 20 20 20 20 20 41 6c 74 65 72 54 61 62  ..      AlterTab
173c0 6c 65 20 3d 20 32 36 2c 0d 0a 0d 0a 20 20 20 20  le = 26,....    
173d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
173e0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e  .      /// An in
173f0 64 65 78 20 77 69 6c 6c 20 62 65 20 64 65 6c 65  dex will be dele
17400 74 65 64 20 61 6e 64 20 74 68 65 6e 20 72 65 63  ted and then rec
17410 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
17420 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20  ion-specific..  
17430 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
17440 73 20 61 72 65 20 74 68 65 20 69 6e 64 65 78 20  s are the index 
17450 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
17460 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
17470 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17480 20 20 20 20 52 65 69 6e 64 65 78 20 3d 20 32 37      Reindex = 27
17490 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
174a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
174b0 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c  /// A table will
174c0 20 62 65 20 61 6e 61 6c 79 7a 65 64 20 74 6f 20   be analyzed to 
174d0 67 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69  gathers statisti
174e0 63 73 20 61 62 6f 75 74 20 69 74 2e 20 20 54 68  cs about it.  Th
174f0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74  e..      /// act
17500 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17510 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74  uments are the t
17520 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
17530 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
17540 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17550 3e 0d 0a 20 20 20 20 20 20 41 6e 61 6c 79 7a 65  >..      Analyze
17560 20 3d 20 32 38 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 28,....      
17570 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17580 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75       /// A virtu
17590 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  al table will be
175a0 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
175b0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
175c0 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
175d0 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
175e0 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d  e name and the m
175f0 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  odule name...   
17600 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17610 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56  >..      CreateV
17620 74 61 62 6c 65 20 3d 20 32 39 2c 0d 0a 0d 0a 20  table = 29,.... 
17630 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17640 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
17650 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
17660 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
17670 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
17680 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
17690 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
176a0 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
176b0 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e  the module name.
176c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
176d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72  mmary>..      Dr
176e0 6f 70 56 74 61 62 6c 65 20 3d 20 33 30 2c 0d 0a  opVtable = 30,..
176f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17700 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17710 20 41 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20   A SQL function 
17720 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20  will be called. 
17730 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
17740 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
17750 72 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re a..      /// 
17760 6e 75 6c 6c 20 76 61 6c 75 65 20 61 6e 64 20 74  null value and t
17770 68 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65  he function name
17780 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17790 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46  ummary>..      F
177a0 75 6e 63 74 69 6f 6e 20 3d 20 33 31 2c 0d 0a 0d  unction = 31,...
177b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
177c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
177d0 41 20 73 61 76 65 70 6f 69 6e 74 20 77 69 6c 6c  A savepoint will
177e0 20 62 65 20 63 72 65 61 74 65 64 2c 20 72 65 6c   be created, rel
177f0 65 61 73 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64  eased, or rolled
17800 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20   back.  The..   
17810 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70     /// action-sp
17820 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17830 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66   are the name of
17840 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28   the operation (
17850 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f  BEGIN,..      //
17860 2f 20 52 45 4c 45 41 53 45 2c 20 6f 72 20 52 4f  / RELEASE, or RO
17870 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20  LLBACK) and the 
17880 73 61 76 65 70 6f 69 6e 74 20 6e 61 6d 65 2e 0d  savepoint name..
17890 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
178a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 61 76  mary>..      Sav
178b0 65 70 6f 69 6e 74 20 3d 20 33 32 2c 0d 0a 0d 0a  epoint = 32,....
178c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
178d0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
178e0 20 72 65 63 75 72 73 69 76 65 20 71 75 65 72 79   recursive query
178f0 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65   will be execute
17900 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17910 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17920 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
17930 20 74 77 6f 20 6e 75 6c 6c 20 76 61 6c 75 65 73   two null values
17940 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17950 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
17960 65 63 75 72 73 69 76 65 20 3d 20 33 33 0d 0a 20  ecursive = 33.. 
17970 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
17980 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
17990 20 70 6f 73 73 69 62 6c 65 20 72 65 74 75 72 6e   possible return
179a0 20 63 6f 64 65 73 20 66 6f 72 20 74 68 65 20 70   codes for the p
179b0 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b  rogress callback
179c0 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
179d0 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
179e0 75 6d 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  um SQLiteProgres
179f0 73 52 65 74 75 72 6e 43 6f 64 65 20 2f 2a 20 69  sReturnCode /* i
17a00 6e 74 20 2a 2f 0d 0a 20 20 7b 0d 0a 20 20 20 20  nt */..  {..    
17a10 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17a20 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  .      /// The o
17a30 70 65 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  peration should 
17a40 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20  continue...     
17a50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17a60 0a 20 20 20 20 20 20 43 6f 6e 74 69 6e 75 65 20  .      Continue 
17a70 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 0,....      //
17a80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17a90 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 65 72 61     /// The opera
17aa0 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 69  tion should be i
17ab0 6e 74 65 72 72 75 70 74 65 64 2e 0d 0a 20 20 20  nterrupted...   
17ac0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17ad0 3e 0d 0a 20 20 20 20 20 20 49 6e 74 65 72 72 75  >..      Interru
17ae0 70 74 20 3d 20 31 0d 0a 20 20 7d 0d 0a 0d 0a 20  pt = 1..  }.... 
17af0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17b00 20 20 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e    /// The return
17b10 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 63 75   code for the cu
17b20 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20  rrent call into 
17b30 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d  the authorizer..
17b40 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
17b50 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
17b60 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
17b70 72 52 65 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b  rReturnCode..  {
17b80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17b90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17ba0 20 54 68 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c   The action will
17bb0 20 62 65 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20   be allowed...  
17bc0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17bd0 79 3e 0d 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30  y>..      Ok = 0
17be0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17bf0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17c00 2f 2f 2f 20 54 68 65 20 6f 76 65 72 61 6c 6c 20  /// The overall 
17c10 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64  action will be d
17c20 69 73 61 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e  isallowed and an
17c30 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77   error message w
17c40 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  ill be..      //
17c50 2f 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  / returned from 
17c60 74 68 65 20 71 75 65 72 79 20 70 72 65 70 61 72  the query prepar
17c70 61 74 69 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20  ation method... 
17c80 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17c90 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 20  ry>..      Deny 
17ca0 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
17cb0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17cc0 20 20 20 2f 2f 2f 20 54 68 65 20 73 70 65 63 69     /// The speci
17cd0 66 69 63 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20  fic action will 
17ce0 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68  be disallowed; h
17cf0 6f 77 65 76 65 72 2c 20 74 68 65 20 6f 76 65 72  owever, the over
17d00 61 6c 6c 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20  all action..    
17d10 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69    /// will conti
17d20 6e 75 65 2e 20 20 54 68 65 20 65 78 61 63 74 20  nue.  The exact 
17d30 65 66 66 65 63 74 73 20 6f 66 20 74 68 69 73 20  effects of this 
17d40 72 65 74 75 72 6e 20 63 6f 64 65 20 76 61 72 79  return code vary
17d50 20 64 65 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20   depending..    
17d60 20 20 2f 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65    /// on the spe
17d70 63 69 66 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c  cific action, pl
17d80 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 68  ease refer to th
17d90 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
17da0 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
17db0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
17dc0 6f 72 20 66 75 74 68 65 72 20 64 65 74 61 69 6c  or futher detail
17dd0 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
17de0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17df0 49 67 6e 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d  Ignore = 2..  }.
17e00 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
17e10 79 3e 0d 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20  y>..  /// Class 
17e20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  used internally 
17e30 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
17e40 20 64 61 74 61 74 79 70 65 20 6f 66 20 61 20 63   datatype of a c
17e50 6f 6c 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c  olumn in a resul
17e60 74 73 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  tset..  /// </su
17e70 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
17e80 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
17e90 53 51 4c 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d  SQLiteType..  {.
17ea0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
17eb0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
17ec0 44 62 54 79 70 65 20 6f 66 20 74 68 65 20 63 6f  DbType of the co
17ed0 6c 75 6d 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e  lumn, or DbType.
17ee0 4f 62 6a 65 63 74 20 69 66 20 69 74 20 63 61 6e  Object if it can
17ef0 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
17f00 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  d..    /// </sum
17f10 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
17f20 6e 61 6c 20 44 62 54 79 70 65 20 54 79 70 65 3b  nal DbType Type;
17f30 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
17f40 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
17f50 20 61 66 66 69 6e 69 74 79 20 6f 66 20 61 20 63   affinity of a c
17f60 6f 6c 75 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20  olumn, used for 
17f70 65 78 70 72 65 73 73 69 6f 6e 73 20 6f 72 20 77  expressions or w
17f80 68 65 6e 20 54 79 70 65 20 69 73 20 44 62 54 79  hen Type is DbTy
17f90 70 65 2e 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe.Object..    /
17fa0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17fb0 20 20 20 69 6e 74 65 72 6e 61 6c 20 54 79 70 65     internal Type
17fc0 41 66 66 69 6e 69 74 79 20 41 66 66 69 6e 69 74  Affinity Affinit
17fd0 79 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  y;....    //////
17fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
18030 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18040 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
18050 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63   default instanc
18060 65 20 6f 66 20 74 68 69 73 20 74 79 70 65 2e 0d  e of this type..
18070 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
18080 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
18090 53 51 4c 69 74 65 54 79 70 65 28 29 0d 0a 20 20  SQLiteType()..  
180a0 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 20 64 6f    {..      // do
180b0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d   nothing...    }
180c0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
180d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
18120 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
18130 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
18140 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
18150 20 74 79 70 65 20 77 69 74 68 20 74 68 65 20 73   type with the s
18160 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 20 76  pecified field v
18170 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  alues...    /// 
18180 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18190 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
181a0 22 61 66 66 69 6e 69 74 79 22 3e 0d 0a 20 20 20  "affinity">..   
181b0 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61 66   /// The type af
181c0 66 69 6e 69 74 79 20 74 6f 20 75 73 65 20 66 6f  finity to use fo
181d0 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e  r the new instan
181e0 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ce...    /// </p
181f0 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
18200 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65  param name="type
18210 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
18220 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f  database type to
18230 20 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77   use for the new
18240 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
18250 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
18260 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54    public SQLiteT
18270 79 70 65 28 0d 0a 20 20 20 20 20 20 54 79 70 65  ype(..      Type
18280 41 66 66 69 6e 69 74 79 20 61 66 66 69 6e 69 74  Affinity affinit
18290 79 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  y,..      DbType
182a0 20 74 79 70 65 0d 0a 20 20 20 20 20 20 29 0d 0a   type..      )..
182b0 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
182c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 68 69      {..      thi
182d0 73 2e 41 66 66 69 6e 69 74 79 20 3d 20 61 66 66  s.Affinity = aff
182e0 69 6e 69 74 79 3b 0d 0a 20 20 20 20 20 20 74 68  inity;..      th
182f0 69 73 2e 54 79 70 65 20 3d 20 74 79 70 65 3b 0d  is.Type = type;.
18300 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20  .    }..  }.... 
18310 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18360 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61  ..  internal sea
18370 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
18380 44 62 54 79 70 65 4d 61 70 0d 0a 20 20 20 20 20  DbTypeMap..     
18390 20 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74   : Dictionary<st
183a0 72 69 6e 67 2c 20 53 51 4c 69 74 65 44 62 54 79  ring, SQLiteDbTy
183b0 70 65 4d 61 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d  peMapping>..  {.
183c0 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
183d0 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
183e0 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
183f0 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c 20 53 51  onary<DbType, SQ
18400 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
18410 67 3e 20 72 65 76 65 72 73 65 3b 0d 0a 20 20 20  g> reverse;..   
18420 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18430 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18480 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
18490 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
184a0 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 70 75 62  ctors..      pub
184b0 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  lic SQLiteDbType
184c0 4d 61 70 28 29 0d 0a 20 20 20 20 20 20 20 20 20  Map()..         
184d0 20 3a 20 62 61 73 65 28 6e 65 77 20 54 79 70 65   : base(new Type
184e0 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72  NameStringCompar
184f0 65 72 28 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  er())..      {..
18500 20 20 20 20 20 20 20 20 20 20 72 65 76 65 72 73            revers
18510 65 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  e = new Dictiona
18520 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74  ry<DbType, SQLit
18530 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 28  eDbTypeMapping>(
18540 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
18550 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
185a0 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53  ..      public S
185b0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 0d  QLiteDbTypeMap(.
185c0 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d  .          IEnum
185d0 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54  erable<SQLiteDbT
185e0 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c  ypeMapping> coll
185f0 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ection..        
18600 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a    )..          :
18610 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 7b   this()..      {
18620 0d 0a 20 20 20 20 20 20 20 20 20 20 41 64 64 28  ..          Add(
18630 63 6f 6c 6c 65 63 74 69 6f 6e 29 3b 0d 0a 20 20  collection);..  
18640 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
18650 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
18660 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
186b0 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74      #region Syst
186c0 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
186d0 65 6e 65 72 69 63 2e 44 69 63 74 69 6f 6e 61 72  eneric.Dictionar
186e0 79 20 22 4f 76 65 72 72 69 64 65 73 22 0d 0a 20  y "Overrides".. 
186f0 20 20 20 20 20 70 75 62 6c 69 63 20 6e 65 77 20       public new 
18700 69 6e 74 20 43 6c 65 61 72 28 29 0d 0a 20 20 20  int Clear()..   
18710 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18720 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d  int result = 0;.
18730 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
18740 28 72 65 76 65 72 73 65 20 21 3d 20 6e 75 6c 6c  (reverse != null
18750 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
18760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18770 73 75 6c 74 20 2b 3d 20 72 65 76 65 72 73 65 2e  sult += reverse.
18780 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  Count;..        
18790 20 20 20 20 20 20 72 65 76 65 72 73 65 2e 43 6c        reverse.Cl
187a0 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ear();..        
187b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
187c0 20 72 65 73 75 6c 74 20 2b 3d 20 62 61 73 65 2e   result += base.
187d0 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  Count;..        
187e0 20 20 62 61 73 65 2e 43 6c 65 61 72 28 29 3b 0d    base.Clear();.
187f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
18800 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
18810 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
18820 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18870 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18880 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
18890 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 48  eDbTypeMapping H
188a0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
188b0 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
188c0 20 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20   Add(..         
188d0 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c   IEnumerable<SQL
188e0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
188f0 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20  > collection..  
18900 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
18910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
18920 20 28 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20   (collection == 
18930 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
18940 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
18950 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
18960 74 69 6f 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e  tion("collection
18970 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
18980 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65   foreach (SQLite
18990 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74  DbTypeMapping it
189a0 65 6d 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e  em in collection
189b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
189c0 20 41 64 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20   Add(item);..   
189d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
189e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18a30 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64   public void Add
18a40 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70  (SQLiteDbTypeMap
18a50 70 69 6e 67 20 69 74 65 6d 29 0d 0a 20 20 20 20  ping item)..    
18a60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
18a70 66 20 28 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29  f (item == null)
18a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a90 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
18aa0 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
18ab0 22 69 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20  "item");....    
18ac0 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 74        if (item.t
18ad0 79 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  ypeName == null)
18ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18af0 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
18b00 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65  ntException("ite
18b10 6d 20 74 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e  m type name cann
18b20 6f 74 20 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d  ot be null");...
18b30 0a 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e  .          base.
18b40 41 64 64 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d  Add(item.typeNam
18b50 65 2c 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20  e, item);....   
18b60 20 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e         if (item.
18b70 70 72 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20  primary)..      
18b80 20 20 20 20 20 20 20 20 72 65 76 65 72 73 65 2e          reverse.
18b90 41 64 64 28 69 74 65 6d 2e 64 61 74 61 54 79 70  Add(item.dataTyp
18ba0 65 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20  e, item);..     
18bb0 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
18bc0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
18bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18c20 20 23 72 65 67 69 6f 6e 20 44 62 54 79 70 65 20   #region DbType 
18c30 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
18c40 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
18c50 6c 20 43 6f 6e 74 61 69 6e 73 4b 65 79 28 44 62  l ContainsKey(Db
18c60 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20  Type key)..     
18c70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
18c80 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c   (reverse == nul
18c90 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
18ca0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
18cb0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
18cc0 75 72 6e 20 72 65 76 65 72 73 65 2e 43 6f 6e 74  urn reverse.Cont
18cd0 61 69 6e 73 4b 65 79 28 6b 65 79 29 3b 0d 0a 20  ainsKey(key);.. 
18ce0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18d40 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54     public bool T
18d50 72 79 47 65 74 56 61 6c 75 65 28 44 62 54 79 70  ryGetValue(DbTyp
18d60 65 20 6b 65 79 2c 20 6f 75 74 20 53 51 4c 69 74  e key, out SQLit
18d70 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
18d80 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  alue)..      {..
18d90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
18da0 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
18db0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
18dc0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
18dd0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
18de0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
18df0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
18e00 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
18e10 72 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e 54  return reverse.T
18e20 72 79 47 65 74 56 61 6c 75 65 28 6b 65 79 2c 20  ryGetValue(key, 
18e30 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  out value);..   
18e40 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18ea0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 6d   public bool Rem
18eb0 6f 76 65 28 44 62 54 79 70 65 20 6b 65 79 29 0d  ove(DbType key).
18ec0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
18ed0 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
18ee0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
18ef0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
18f00 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
18f10 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73     return revers
18f20 65 2e 52 65 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a  e.Remove(key);..
18f30 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
18f40 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
18f50 0d 0a 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fa0 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  /....  internal 
18fb0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
18fc0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
18fd0 0d 0a 20 20 7b 0d 0a 20 20 20 20 69 6e 74 65 72  ..  {..    inter
18fe0 6e 61 6c 20 53 51 4c 69 74 65 44 62 54 79 70 65  nal SQLiteDbType
18ff0 4d 61 70 70 69 6e 67 28 0d 0a 20 20 20 20 20 20  Mapping(..      
19000 20 20 73 74 72 69 6e 67 20 6e 65 77 54 79 70 65    string newType
19010 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 44  Name,..        D
19020 62 54 79 70 65 20 6e 65 77 44 61 74 61 54 79 70  bType newDataTyp
19030 65 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  e,..        bool
19040 20 6e 65 77 50 72 69 6d 61 72 79 0d 0a 20 20 20   newPrimary..   
19050 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
19060 20 20 20 20 20 74 79 70 65 4e 61 6d 65 20 3d 20       typeName = 
19070 6e 65 77 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  newTypeName;..  
19080 20 20 20 20 64 61 74 61 54 79 70 65 20 3d 20 6e      dataType = n
19090 65 77 44 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  ewDataType;..   
190a0 20 20 20 70 72 69 6d 61 72 79 20 3d 20 6e 65 77     primary = new
190b0 50 72 69 6d 61 72 79 3b 0d 0a 20 20 20 20 7d 0d  Primary;..    }.
190c0 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
190d0 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b  string typeName;
190e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
190f0 62 54 79 70 65 20 64 61 74 61 54 79 70 65 3b 0d  bType dataType;.
19100 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f  .    internal bo
19110 6f 6c 20 70 72 69 6d 61 72 79 3b 0d 0a 20 20 7d  ol primary;..  }
19120 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  ....  internal s
19130 65 61 6c 65 64 20 63 6c 61 73 73 20 54 79 70 65  ealed class Type
19140 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72  NameStringCompar
19150 65 72 20 3a 20 49 45 71 75 61 6c 69 74 79 43 6f  er : IEqualityCo
19160 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 2c 20  mparer<string>, 
19170 49 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e 67  IComparer<string
19180 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 23 72 65 67  >..  {..    #reg
19190 69 6f 6e 20 49 45 71 75 61 6c 69 74 79 43 6f 6d  ion IEqualityCom
191a0 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65  parer<string> Me
191b0 6d 62 65 72 73 0d 0a 20 20 20 20 70 75 62 6c 69  mbers..    publi
191c0 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a  c bool Equals(..
191d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 65 66        string lef
191e0 74 2c 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  t,..      string
191f0 20 72 69 67 68 74 0d 0a 20 20 20 20 20 20 29 0d   right..      ).
19200 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65  .    {..      re
19210 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61  turn String.Equa
19220 6c 73 28 6c 65 66 74 2c 20 72 69 67 68 74 2c 20  ls(left, right, 
19230 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
19240 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
19250 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  se);..    }.... 
19260 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
192b0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74  ..    public int
192c0 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20   GetHashCode(.. 
192d0 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
192e0 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20  e..      )..    
192f0 7b 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  {..      //..   
19300 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
19310 6f 6e 6c 79 20 74 68 69 6e 67 20 74 68 61 74 20  only thing that 
19320 77 65 20 6d 75 73 74 20 67 75 61 72 61 6e 74 65  we must guarante
19330 65 20 68 65 72 65 2c 20 61 63 63 6f 72 64 69 6e  e here, accordin
19340 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20  g..      //     
19350 20 20 74 6f 20 74 68 65 20 4d 53 44 4e 20 64 6f    to the MSDN do
19360 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  cumentation for 
19370 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65  IEqualityCompare
19380 72 2c 20 69 73 0d 0a 20 20 20 20 20 20 2f 2f 20  r, is..      // 
19390 20 20 20 20 20 20 74 68 61 74 20 66 6f 72 20 74        that for t
193a0 77 6f 20 67 69 76 65 6e 20 73 74 72 69 6e 67 73  wo given strings
193b0 2c 20 69 66 20 45 71 75 61 6c 73 20 72 65 74 75  , if Equals retu
193c0 72 6e 20 74 72 75 65 20 74 68 65 6e 0d 0a 20 20  rn true then..  
193d0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
193e0 20 74 77 6f 20 73 74 72 69 6e 67 73 20 6d 75 73   two strings mus
193f0 74 20 68 61 73 68 20 74 6f 20 74 68 65 20 73 61  t hash to the sa
19400 6d 65 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  me value...     
19410 20 2f 2f 0d 0a 20 20 20 20 20 20 69 66 20 28 76   //..      if (v
19420 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 23  alue != null)..#
19430 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
19440 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
19450 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
19460 6c 75 65 2e 54 6f 4c 6f 77 65 72 49 6e 76 61 72  lue.ToLowerInvar
19470 69 61 6e 74 28 29 2e 47 65 74 48 61 73 68 43 6f  iant().GetHashCo
19480 64 65 28 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  de();..#else..  
19490 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
194a0 75 65 2e 54 6f 4c 6f 77 65 72 28 29 2e 47 65 74  ue.ToLower().Get
194b0 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6e  HashCode();..#en
194c0 64 69 66 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d  dif..      else.
194d0 0a 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e  .        throw n
194e0 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
194f0 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65 22  xception("value"
19500 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
19510 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
19520 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19570 20 20 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d      #region ICom
19580 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65  parer<string> Me
19590 6d 62 65 72 73 0d 0a 20 20 20 20 70 75 62 6c 69  mbers..    publi
195a0 63 20 69 6e 74 20 43 6f 6d 70 61 72 65 28 0d 0a  c int Compare(..
195b0 20 20 20 20 20 20 73 74 72 69 6e 67 20 78 2c 0d        string x,.
195c0 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 79 0d  .      string y.
195d0 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d  .      )..    {.
195e0 0a 20 20 20 20 20 20 69 66 20 28 28 78 20 3d 3d  .      if ((x ==
195f0 20 6e 75 6c 6c 29 20 26 26 20 28 79 20 3d 3d 20   null) && (y == 
19600 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
19610 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20  return 0;..     
19620 20 65 6c 73 65 20 69 66 20 28 78 20 3d 3d 20 6e   else if (x == n
19630 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 72 65  ull)..        re
19640 74 75 72 6e 20 2d 31 3b 0d 0a 20 20 20 20 20 20  turn -1;..      
19650 65 6c 73 65 20 69 66 20 28 79 20 3d 3d 20 6e 75  else if (y == nu
19660 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ll)..        ret
19670 75 72 6e 20 31 3b 0d 0a 20 20 20 20 20 20 65 6c  urn 1;..      el
19680 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  se..        retu
19690 72 6e 20 78 2e 43 6f 6d 70 61 72 65 54 6f 28 79  rn x.CompareTo(y
196a0 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
196b0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
196c0 7d 0d 0a                                         }..