System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e85cd403f4127f421fc4168715db89bcc081f31d:


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 28 6a 75 6c 69 61 6e 44 61 79 20  long)(julianDay 
23f0: 2a 20 38 36 34 30 30 30 30 30 2e 30 29 3b 0d 0a  * 86400000.0);..
2400: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
2460: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2470: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2480: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
2490: 75 65 20 66 72 6f 6d 20 61 6e 20 3c 73 65 65 20  ue from an <see 
24a0: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
24b0: 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  to a..    /// <s
24c0: 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
24d0: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
24e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
24f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2500: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  d">..    /// The
2510: 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73 65 65   Julian Day <see
2520: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
2530: 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
2540: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
2550: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
2560: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
2570: 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 4a   The resulting J
2580: 75 6c 69 61 6e 20 44 61 79 20 3c 73 65 65 20 63  ulian Day <see c
2590: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
25a0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
25b0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
25c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 64  private static d
25d0: 6f 75 62 6c 65 20 4a 64 54 6f 44 6f 75 62 6c 65  ouble JdToDouble
25e0: 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  (..        long 
25f0: 6a 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  jd..        ).. 
2600: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
2610: 74 75 72 6e 20 28 64 6f 75 62 6c 65 29 28 6a 64  turn (double)(jd
2620: 20 2f 20 38 36 34 30 30 30 30 30 2e 30 29 3b 0d   / 86400000.0);.
2630: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
2690: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26a0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
26b0: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
26c0: 6c 75 65 20 74 6f 20 61 20 3c 73 65 65 20 63 72  lue to a <see cr
26d0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
26e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
26f0: 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73  method was trans
2700: 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22  lated from the "
2710: 63 6f 6d 70 75 74 65 59 4d 44 22 20 66 75 6e 63  computeYMD" func
2720: 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20  tion in the..   
2730: 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22 20 66 69   /// "date.c" fi
2740: 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20  le belonging to 
2750: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2760: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
2770: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2780: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2790: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
27a0: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
27b0: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
27c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
27d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
27e0: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c  ram name="badVal
27f0: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
2800: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  e <see cref="Dat
2810: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
2820: 74 6f 20 72 65 74 75 72 6e 20 69 6e 20 74 68 65  to return in the
2830: 20 65 76 65 6e 74 20 74 68 61 74 20 74 68 65 0d   event that the.
2840: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
2850: 44 61 79 20 69 73 20 6f 75 74 20 6f 66 20 74 68  Day is out of th
2860: 65 20 73 75 70 70 6f 72 74 65 64 20 72 61 6e 67  e supported rang
2870: 65 2e 20 20 49 66 20 74 68 69 73 20 76 61 6c 75  e.  If this valu
2880: 65 20 69 73 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20  e is null,..    
2890: 2f 2f 2f 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  /// an exception
28a0: 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 20   will be thrown 
28b0: 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f  instead...    //
28c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28d0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
28e0: 20 20 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72     /// A <see cr
28f0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
2900: 20 76 61 6c 75 65 20 74 68 61 74 20 63 6f 6e 74   value that cont
2910: 61 69 6e 73 20 74 68 65 20 79 65 61 72 2c 20 6d  ains the year, m
2920: 6f 6e 74 68 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  onth, and..    /
2930: 2f 2f 20 64 61 79 20 76 61 6c 75 65 73 20 74 68  // day values th
2940: 61 74 20 61 72 65 20 63 6c 6f 73 65 73 74 20 74  at are closest t
2950: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
2960: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
2970: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
2980: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
2990: 74 65 20 73 74 61 74 69 63 20 44 61 74 65 54 69  te static DateTi
29a0: 6d 65 20 63 6f 6d 70 75 74 65 59 4d 44 28 0d 0a  me computeYMD(..
29b0: 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 2c          long jd,
29c0: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
29d0: 6d 65 3f 20 62 61 64 56 61 6c 75 65 0d 0a 20 20  me? badValue..  
29e0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
29f0: 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 56          if (!isV
2a00: 61 6c 69 64 4a 64 28 6a 64 29 29 0d 0a 20 20 20  alidJd(jd))..   
2a10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a20: 20 20 20 20 69 66 20 28 62 61 64 56 61 6c 75 65      if (badValue
2a30: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2a40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a50: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2a60: 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65  new ArgumentExce
2a70: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74              "Not
2a90: 20 61 20 73 75 70 70 6f 72 74 65 64 20 4a 75 6c   a supported Jul
2aa0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 22 29  ian Day value.")
2ab0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2ac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ad0: 72 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65  return (DateTime
2ae0: 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20  )badValue;..    
2af0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b00: 20 69 6e 74 20 5a 2c 20 41 2c 20 42 2c 20 43 2c   int Z, A, B, C,
2b10: 20 44 2c 20 45 2c 20 58 31 3b 0d 0a 0d 0a 20 20   D, E, X1;....  
2b20: 20 20 20 20 20 20 5a 20 3d 20 28 69 6e 74 29 28        Z = (int)(
2b30: 28 6a 64 20 2b 20 34 33 32 30 30 30 30 30 29 20  (jd + 43200000) 
2b40: 2f 20 38 36 34 30 30 30 30 30 29 3b 0d 0a 20 20  / 86400000);..  
2b50: 20 20 20 20 20 20 41 20 3d 20 28 69 6e 74 29 28        A = (int)(
2b60: 28 5a 20 2d 20 31 38 36 37 32 31 36 2e 32 35 29  (Z - 1867216.25)
2b70: 20 2f 20 33 36 35 32 34 2e 32 35 29 3b 0d 0a 20   / 36524.25);.. 
2b80: 20 20 20 20 20 20 20 41 20 3d 20 5a 20 2b 20 31         A = Z + 1
2b90: 20 2b 20 41 20 2d 20 28 41 20 2f 20 34 29 3b 0d   + A - (A / 4);.
2ba0: 0a 20 20 20 20 20 20 20 20 42 20 3d 20 41 20 2b  .        B = A +
2bb0: 20 31 35 32 34 3b 0d 0a 20 20 20 20 20 20 20 20   1524;..        
2bc0: 43 20 3d 20 28 69 6e 74 29 28 28 42 20 2d 20 31  C = (int)((B - 1
2bd0: 32 32 2e 31 29 20 2f 20 33 36 35 2e 32 35 29 3b  22.1) / 365.25);
2be0: 0d 0a 20 20 20 20 20 20 20 20 44 20 3d 20 28 33  ..        D = (3
2bf0: 36 35 32 35 20 2a 20 43 29 20 2f 20 31 30 30 3b  6525 * C) / 100;
2c00: 0d 0a 20 20 20 20 20 20 20 20 45 20 3d 20 28 69  ..        E = (i
2c10: 6e 74 29 28 28 42 20 2d 20 44 29 20 2f 20 33 30  nt)((B - D) / 30
2c20: 2e 36 30 30 31 29 3b 0d 0a 20 20 20 20 20 20 20  .6001);..       
2c30: 20 58 31 20 3d 20 28 69 6e 74 29 28 33 30 2e 36   X1 = (int)(30.6
2c40: 30 30 31 20 2a 20 45 29 3b 0d 0a 0d 0a 20 20 20  001 * E);....   
2c50: 20 20 20 20 20 69 6e 74 20 64 61 79 2c 20 6d 6f       int day, mo
2c60: 6e 74 68 2c 20 79 65 61 72 3b 0d 0a 0d 0a 20 20  nth, year;....  
2c70: 20 20 20 20 20 20 64 61 79 20 3d 20 42 20 2d 20        day = B - 
2c80: 44 20 2d 20 58 31 3b 0d 0a 20 20 20 20 20 20 20  D - X1;..       
2c90: 20 6d 6f 6e 74 68 20 3d 20 45 20 3c 20 31 34 20   month = E < 14 
2ca0: 3f 20 45 20 2d 20 31 20 3a 20 45 20 2d 20 31 33  ? E - 1 : E - 13
2cb0: 3b 0d 0a 20 20 20 20 20 20 20 20 79 65 61 72 20  ;..        year 
2cc0: 3d 20 6d 6f 6e 74 68 20 3e 20 32 20 3f 20 43 20  = month > 2 ? C 
2cd0: 2d 20 34 37 31 36 20 3a 20 43 20 2d 20 34 37 31  - 4716 : C - 471
2ce0: 35 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72  5;....        tr
2cf0: 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
2d00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d10: 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 79 65   new DateTime(ye
2d20: 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 79 29 3b  ar, month, day);
2d30: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2d40: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2d50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d60: 20 20 20 69 66 20 28 62 61 64 56 61 6c 75 65 20     if (badValue 
2d70: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2d80: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 3b            throw;
2d90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2da0: 72 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65  return (DateTime
2db0: 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20  )badValue;..    
2dc0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
2dd0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 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 0d  ///////////////.
2e20: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2e30: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
2e40: 6e 76 65 72 74 73 20 61 20 4a 75 6c 69 61 6e 20  nverts a Julian 
2e50: 44 61 79 20 76 61 6c 75 65 20 74 6f 20 61 20 3c  Day value to a <
2e60: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
2e70: 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f  me" />...    ///
2e80: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 77 61 73   This method was
2e90: 20 74 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d   translated from
2ea0: 20 74 68 65 20 22 63 6f 6d 70 75 74 65 48 4d 53   the "computeHMS
2eb0: 22 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68  " function in th
2ec0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 22 64 61 74 65  e..    /// "date
2ed0: 2e 63 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67 69  .c" file belongi
2ee0: 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ng to the SQLite
2ef0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
2f00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2f10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2f20: 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20  am name="jd">.. 
2f30: 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61     /// The Julia
2f40: 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f 20 63  n Day value to c
2f50: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f  onvert...    ///
2f60: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2f70: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f80: 62 61 64 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  badValue">..    
2f90: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
2fa0: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
2fb0: 76 61 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20  value to return 
2fc0: 69 6e 20 74 68 65 20 65 76 65 6e 74 20 74 68 61  in the event tha
2fd0: 74 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 4a  t the..    /// J
2fe0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
2ff0: 69 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 75  is out of the su
3000: 70 70 6f 72 74 65 64 20 72 61 6e 67 65 2e 20 20  pported range.  
3010: 49 66 20 74 68 69 73 20 76 61 6c 75 65 20 69 73  If this value is
3020: 0d 0a 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2c 20  ..    /// null, 
3030: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c  an exception wil
3040: 6c 20 62 65 20 74 68 72 6f 77 6e 20 69 6e 73 74  l be thrown inst
3050: 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ead...    /// </
3060: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
3070: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
3080: 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22  // A <see cref="
3090: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
30a0: 75 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ue that contains
30b0: 20 74 68 65 20 68 6f 75 72 2c 20 6d 69 6e 75 74   the hour, minut
30c0: 65 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  e, and..    /// 
30d0: 73 65 63 6f 6e 64 2c 20 61 6e 64 20 6d 69 6c 6c  second, and mill
30e0: 69 73 65 63 6f 6e 64 20 76 61 6c 75 65 73 20 74  isecond values t
30f0: 68 61 74 20 61 72 65 20 63 6c 6f 73 65 73 74 20  hat are closest 
3100: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
3110: 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e  ..    /// Julian
3120: 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20   Day value...   
3130: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3140: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
3150: 74 69 63 20 44 61 74 65 54 69 6d 65 20 63 6f 6d  tic DateTime com
3160: 70 75 74 65 48 4d 53 28 0d 0a 20 20 20 20 20 20  puteHMS(..      
3170: 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20    long jd,..    
3180: 20 20 20 20 44 61 74 65 54 69 6d 65 3f 20 62 61      DateTime? ba
3190: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  dValue..        
31a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
31b0: 20 20 69 66 20 28 21 69 73 56 61 6c 69 64 4a 64    if (!isValidJd
31c0: 28 6a 64 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  (jd))..        {
31d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
31e0: 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75   (badValue == nu
31f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3200: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3210: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
3220: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
3230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3240: 20 20 20 20 20 20 22 4e 6f 74 20 61 20 73 75 70        "Not a sup
3250: 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e 20 44 61  ported Julian Da
3260: 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20  y value.");..   
3270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3280: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3290: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
32a0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
32b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 73  ...        int s
32c0: 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 69  i;....        si
32d0: 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b 20 34   = (int)((jd + 4
32e0: 33 32 30 30 30 30 30 29 20 25 20 38 36 34 30 30  3200000) % 86400
32f0: 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  000);....       
3300: 20 64 65 63 69 6d 61 6c 20 73 64 3b 0d 0a 0d 0a   decimal sd;....
3310: 20 20 20 20 20 20 20 20 73 64 20 3d 20 73 69 20          sd = si 
3320: 2f 20 31 30 30 30 2e 30 4d 3b 0d 0a 20 20 20 20  / 1000.0M;..    
3330: 20 20 20 20 73 69 20 3d 20 28 69 6e 74 29 73 64      si = (int)sd
3340: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
3350: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 3d 20 28   millisecond = (
3360: 69 6e 74 29 28 28 73 64 20 2d 20 73 69 29 20 2a  int)((sd - si) *
3370: 20 31 30 30 30 2e 30 4d 29 3b 0d 0a 0d 0a 20 20   1000.0M);....  
3380: 20 20 20 20 20 20 73 64 20 2d 3d 20 73 69 3b 0d        sd -= si;.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 68  ...        int h
33a0: 6f 75 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  our;....        
33b0: 68 6f 75 72 20 3d 20 73 69 20 2f 20 33 36 30 30  hour = si / 3600
33c0: 3b 0d 0a 20 20 20 20 20 20 20 20 73 69 20 2d 3d  ;..        si -=
33d0: 20 68 6f 75 72 20 2a 20 33 36 30 30 3b 0d 0a 0d   hour * 3600;...
33e0: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6d 69 6e  .        int min
33f0: 75 74 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ute;....        
3400: 6d 69 6e 75 74 65 20 3d 20 73 69 20 2f 20 36 30  minute = si / 60
3410: 3b 0d 0a 20 20 20 20 20 20 20 20 73 64 20 2b 3d  ;..        sd +=
3420: 20 73 69 20 2d 20 6d 69 6e 75 74 65 20 2a 20 36   si - minute * 6
3430: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  0;....        in
3440: 74 20 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29  t second = (int)
3450: 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  sd;....        t
3460: 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
3470: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
3480: 69 6d 65 20 6d 69 6e 56 61 6c 75 65 20 3d 20 44  ime minValue = D
3490: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
34a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34b0: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65   return new Date
34c0: 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Time(..         
34d0: 20 20 20 20 20 20 20 6d 69 6e 56 61 6c 75 65 2e         minValue.
34e0: 59 65 61 72 2c 20 6d 69 6e 56 61 6c 75 65 2e 4d  Year, minValue.M
34f0: 6f 6e 74 68 2c 20 6d 69 6e 56 61 6c 75 65 2e 44  onth, minValue.D
3500: 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay,..           
3510: 20 20 20 20 20 68 6f 75 72 2c 20 6d 69 6e 75 74       hour, minut
3520: 65 2c 20 73 65 63 6f 6e 64 2c 20 6d 69 6c 6c 69  e, second, milli
3530: 73 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 20 20  second);..      
3540: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
3550: 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
3560: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
3570: 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29  adValue == null)
3580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3590: 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20    throw;....    
35a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
35b0: 44 61 74 65 54 69 6d 65 29 62 61 64 56 61 6c 75  DateTime)badValu
35c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
35d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 2f  ///////....    /
3630: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3640: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
3650: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
3660: 54 69 6d 65 22 20 2f 3e 20 74 6f 20 61 20 4a 75  Time" /> to a Ju
3670: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d  lian Day value..
3680: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
3690: 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73 6c 61  thod was transla
36a0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22 63 6f  ted from the "co
36b0: 6d 70 75 74 65 4a 44 22 20 66 75 6e 63 74 69 6f  mputeJD" functio
36c0: 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  n in..    /// th
36d0: 65 20 22 64 61 74 65 2e 63 22 20 66 69 6c 65 20  e "date.c" file 
36e0: 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65  belonging to the
36f0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
3700: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 53  rary...    /// S
3710: 69 6e 63 65 20 74 68 65 20 72 61 6e 67 65 20 6f  ince the range o
3720: 66 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  f Julian Day val
3730: 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79  ues supported by
3740: 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20   this method..  
3750: 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 61    /// includes a
3760: 6c 6c 20 70 6f 73 73 69 62 6c 65 20 28 76 61 6c  ll possible (val
3770: 69 64 29 20 76 61 6c 75 65 73 20 6f 66 20 61 20  id) values of a 
3780: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
3790: 69 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ime" />..    ///
37a0: 20 76 61 6c 75 65 2c 20 69 74 20 73 68 6f 75 6c   value, it shoul
37b0: 64 20 62 65 20 65 78 74 72 65 6d 65 6c 79 20 64  d be extremely d
37c0: 69 66 66 69 63 75 6c 74 20 66 6f 72 20 74 68 69  ifficult for thi
37d0: 73 20 6d 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20  s method to..   
37e0: 20 2f 2f 2f 20 72 61 69 73 65 20 61 6e 20 65 78   /// raise an ex
37f0: 63 65 70 74 69 6f 6e 20 6f 72 20 72 65 74 75 72  ception or retur
3800: 6e 20 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 72  n an undefined r
3810: 65 73 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  esult...    /// 
3820: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3830: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3840: 22 64 61 74 65 54 69 6d 65 22 3e 0d 0a 20 20 20  "dateTime">..   
3850: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
3860: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
3870: 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
3880: 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65 0d 0a  t.  This value..
3890: 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20      /// will be 
38a0: 77 69 74 68 69 6e 20 74 68 65 20 72 61 6e 67 65  within the range
38b0: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 44   of <see cref="D
38c0: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
38d0: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 28 30  " />..    /// (0
38e0: 30 3a 30 30 3a 30 30 2e 30 30 30 30 30 30 30 2c  0:00:00.0000000,
38f0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 30 30 30 31   January 1, 0001
3900: 29 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  ) to..    /// <s
3910: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
3920: 65 2e 4d 61 78 56 61 6c 75 65 22 20 2f 3e 20 28  e.MaxValue" /> (
3930: 32 33 3a 35 39 3a 35 39 2e 39 39 39 39 39 39 39  23:59:59.9999999
3940: 2c 20 44 65 63 65 6d 62 65 72 0d 0a 20 20 20 20  , December..    
3950: 2f 2f 2f 20 33 31 2c 20 39 39 39 39 29 2e 0d 0a  /// 31, 9999)...
3960: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
3980: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
3990: 20 6e 65 61 72 65 73 74 20 4a 75 6c 69 61 6e 20   nearest Julian 
39a0: 44 61 79 20 76 61 6c 75 65 20 63 6f 72 72 65 73  Day value corres
39b0: 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 73  ponding to the s
39c0: 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f  pecified..    //
39d0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
39e0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
39f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
3a00: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
3a10: 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 63 6f  e static long co
3a20: 6d 70 75 74 65 4a 44 28 0d 0a 20 20 20 20 20 20  mputeJD(..      
3a30: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
3a40: 69 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ime..        )..
3a50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
3a60: 6e 74 20 59 2c 20 4d 2c 20 44 3b 0d 0a 0d 0a 20  nt Y, M, D;.... 
3a70: 20 20 20 20 20 20 20 59 20 3d 20 64 61 74 65 54         Y = dateT
3a80: 69 6d 65 2e 59 65 61 72 3b 0d 0a 20 20 20 20 20  ime.Year;..     
3a90: 20 20 20 4d 20 3d 20 64 61 74 65 54 69 6d 65 2e     M = dateTime.
3aa0: 4d 6f 6e 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  Month;..        
3ab0: 44 20 3d 20 64 61 74 65 54 69 6d 65 2e 44 61 79  D = dateTime.Day
3ac0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
3ad0: 28 4d 20 3c 3d 20 32 29 0d 0a 20 20 20 20 20 20  (M <= 2)..      
3ae0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3af0: 20 59 2d 2d 3b 0d 0a 20 20 20 20 20 20 20 20 20   Y--;..         
3b00: 20 20 20 4d 20 2b 3d 20 31 32 3b 0d 0a 20 20 20     M += 12;..   
3b10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b20: 20 20 69 6e 74 20 41 2c 20 42 2c 20 58 31 2c 20    int A, B, X1, 
3b30: 58 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41  X2;....        A
3b40: 20 3d 20 59 20 2f 20 31 30 30 3b 0d 0a 20 20 20   = Y / 100;..   
3b50: 20 20 20 20 20 42 20 3d 20 32 20 2d 20 41 20 2b       B = 2 - A +
3b60: 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20   (A / 4);..     
3b70: 20 20 20 58 31 20 3d 20 33 36 35 32 35 20 2a 20     X1 = 36525 * 
3b80: 28 59 20 2b 20 34 37 31 36 29 20 2f 20 31 30 30  (Y + 4716) / 100
3b90: 3b 0d 0a 20 20 20 20 20 20 20 20 58 32 20 3d 20  ;..        X2 = 
3ba0: 33 30 36 30 30 31 20 2a 20 28 4d 20 2b 20 31 29  306001 * (M + 1)
3bb0: 20 2f 20 31 30 30 30 30 3b 0d 0a 0d 0a 20 20 20   / 10000;....   
3bc0: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 3b 0d 0a 0d       long jd;...
3bd0: 0a 20 20 20 20 20 20 20 20 6a 64 20 3d 20 28 6c  .        jd = (l
3be0: 6f 6e 67 29 28 28 58 31 20 2b 20 58 32 20 2b 20  ong)((X1 + X2 + 
3bf0: 44 20 2b 20 42 20 2d 20 31 35 32 34 2e 35 29 20  D + B - 1524.5) 
3c00: 2a 20 38 36 34 30 30 30 30 30 29 3b 0d 0a 0d 0a  * 86400000);....
3c10: 20 20 20 20 20 20 20 20 6a 64 20 2b 3d 20 28 64          jd += (d
3c20: 61 74 65 54 69 6d 65 2e 48 6f 75 72 20 2a 20 33  ateTime.Hour * 3
3c30: 36 30 30 30 30 30 29 20 2b 20 28 64 61 74 65 54  600000) + (dateT
3c40: 69 6d 65 2e 4d 69 6e 75 74 65 20 2a 20 36 30 30  ime.Minute * 600
3c50: 30 30 29 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  00) +..         
3c60: 20 20 20 28 64 61 74 65 54 69 6d 65 2e 53 65 63     (dateTime.Sec
3c70: 6f 6e 64 20 2a 20 31 30 30 30 29 20 2b 20 64 61  ond * 1000) + da
3c80: 74 65 54 69 6d 65 2e 4d 69 6c 6c 69 73 65 63 6f  teTime.Milliseco
3c90: 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  nd;....        r
3ca0: 65 74 75 72 6e 20 6a 64 3b 0d 0a 20 20 20 20 7d  eturn jd;..    }
3cb0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
3cc0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ce0: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
3d20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
3d30: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
3d40: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
3d50: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44  ime, using the D
3d60: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44  ateTimeFormat, D
3d70: 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20  ateTimeKind,..  
3d80: 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69    /// and DateTi
3d90: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73  meFormatString s
3da0: 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65  pecified for the
3db0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e   connection when
3dc0: 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d   it was opened..
3dd0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
3de0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
3df0: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
3e00: 41 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36  Acceptable ISO86
3e10: 30 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d  01 DateTime form
3e20: 61 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f  ats are:..    //
3e30: 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75  / <list type="bu
3e40: 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  llet">..    /// 
3e50: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3e60: 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73  on>THHmmssK</des
3e70: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
3e80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3e90: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
3ea0: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
3eb0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3ec0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3ed0: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46  tion>HH:mm:ss.FF
3ee0: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
3ef0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
3f00: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
3f10: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73  ription>HH:mm:ss
3f20: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
3f30: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
3f40: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3f50: 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72  on>HH:mmK</descr
3f60: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
3f70: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
3f80: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
3f90: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46  MM-dd HH:mm:ss.F
3fa0: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
3fb0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
3fc0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
3fd0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
3fe0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64  -dd HH:mm:ssK</d
3ff0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4000: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4010: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4020: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b  yyy-MM-dd HH:mmK
4030: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4040: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4050: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4060: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
4070: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f  mm:ss.FFFFFFFK</
4080: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4090: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
40a0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
40b0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
40c0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
40d0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
40e0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
40f0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4100: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
4110: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4120: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4130: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
4140: 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69  dHHmmssK</descri
4150: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4160: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4170: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4180: 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70  ddHHmmK</descrip
4190: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
41a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
41b0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
41c0: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b  dTHHmmssFFFFFFFK
41d0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
41e0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
41f0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4200: 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72  n>THHmmss</descr
4210: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4220: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4230: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
4240: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4250: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4260: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4270: 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  n>HH:mm:ss.FFFFF
4280: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
4290: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
42a0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
42b0: 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65  ion>HH:mm:ss</de
42c0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
42d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
42e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
42f0: 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :mm</description
4300: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4310: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4320: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
4330: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4340: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4350: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4360: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4370: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4380: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
4390: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
43a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
43b0: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
43c0: 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  d HH:mm</descrip
43d0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
43e0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
43f0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4400: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -ddTHH:mm:ss.FFF
4410: 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFF</descriptio
4420: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4430: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4440: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4450: 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74  THH:mm</descript
4460: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4470: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4480: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4490: 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73  ddTHH:mm:ss</des
44a0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
44b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
44c0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
44d0: 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73  yMMddHHmmss</des
44e0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
44f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4500: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4510: 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72  yMMddHHmm</descr
4520: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4530: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4540: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
4550: 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46  MddTHHmmssFFFFFF
4560: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4570: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4580: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4590: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64  on>yyyy-MM-dd</d
45a0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
45b0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
45c0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
45d0: 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70  yyyMMdd</descrip
45e0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
45f0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4600: 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64  cription>yy-MM-d
4610: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
4620: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4630: 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f  </list>..    ///
4640: 20 49 66 20 74 68 65 20 73 74 72 69 6e 67 20 63   If the string c
4650: 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64  annot be matched
4660: 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61   to one of the a
4670: 62 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52  bove formats -OR
4680: 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 44  -..    /// the D
4690: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72  ateTimeFormatStr
46a0: 69 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20 70  ing if one was p
46b0: 72 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63 65  rovided, an exce
46c0: 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20  ption will..    
46d0: 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a  /// be thrown...
46e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
46f0: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
4700: 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65 78  am name="dateTex
4710: 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63 6f  t">The string co
4720: 6e 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72 20  ntaining either 
4730: 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e  a long integer n
4740: 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e  umber of 100-nan
4750: 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69  osecond units si
4760: 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73  nce..    /// Sys
4770: 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e  tem.DateTime.Min
4780: 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20  Value, a Julian 
4790: 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69  day double, an i
47a0: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66  nteger number of
47b0: 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74   seconds since t
47c0: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61  he Unix epoch, a
47d0: 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72  ..    /// cultur
47e0: 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f  e-independent fo
47f0: 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64  rmatted date and
4800: 20 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61 20   time string, a 
4810: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
4820: 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69  nd time string i
4830: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  n the current.. 
4840: 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20     /// culture, 
4850: 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f  or an ISO8601-fo
4860: 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61  rmat string.</pa
4870: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
4880: 65 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69 6d  eturns>A DateTim
4890: 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73  e value</returns
48a0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61  >..    public Da
48b0: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
48c0: 65 28 73 74 72 69 6e 67 20 64 61 74 65 54 65 78  e(string dateTex
48d0: 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  t)..    {..     
48e0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
48f0: 6d 65 28 64 61 74 65 54 65 78 74 2c 20 5f 64 61  me(dateText, _da
4900: 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64  tetimeFormat, _d
4910: 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61  atetimeKind, _da
4920: 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  tetimeFormatStri
4930: 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ng);..    }.... 
4940: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4950: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
4960: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
4970: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
4980: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
4990: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c   DateTimeFormat,
49a0: 0d 0a 20 20 20 20 2f 2f 2f 20 44 61 74 65 54 69  ..    /// DateTi
49b0: 6d 65 4b 69 6e 64 20 61 6e 64 20 44 61 74 65 54  meKind and DateT
49c0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 2e  imeFormatString.
49d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
49e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
49f0: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
4a00: 20 41 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38   Acceptable ISO8
4a10: 36 30 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72  601 DateTime for
4a20: 6d 61 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f  mats are:..    /
4a30: 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62  // <list type="b
4a40: 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ullet">..    ///
4a50: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4a60: 69 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65  ion>THHmmssK</de
4a70: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4a90: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4aa0: 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  HmmK</descriptio
4ab0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4ac0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4ad0: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46  ption>HH:mm:ss.F
4ae0: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
4af0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4b00: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4b10: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73  cription>HH:mm:s
4b20: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4b30: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4b40: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4b50: 69 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  ion>HH:mmK</desc
4b60: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4b70: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4b80: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4b90: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e  -MM-dd HH:mm:ss.
4ba0: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
4bb0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4bc0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4bd0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4be0: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f  M-dd HH:mm:ssK</
4bf0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4c00: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4c10: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4c20: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
4c30: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4c40: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4c50: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4c60: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4c70: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c  :mm:ss.FFFFFFFK<
4c80: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
4c90: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4ca0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4cb0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
4cc0: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
4cd0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4ce0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4cf0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
4d00: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
4d10: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4d20: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4d30: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4d40: 64 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72  ddHHmmssK</descr
4d50: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4d60: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4d70: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
4d80: 4d 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69  MddHHmmK</descri
4d90: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4da0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4db0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4dc0: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
4dd0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4de0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4df0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4e00: 6f 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63  on>THHmmss</desc
4e10: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4e20: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4e30: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
4e40: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
4e50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4e60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4e70: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  on>HH:mm:ss.FFFF
4e80: 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFF</description
4e90: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4ea0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4eb0: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64  tion>HH:mm:ss</d
4ec0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ed0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4ee0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4ef0: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
4f00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4f10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4f20: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4f30: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
4f40: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4f50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4f60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4f70: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
4f80: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
4f90: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4fa0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4fb0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4fc0: 64 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69  dd HH:mm</descri
4fd0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4fe0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4ff0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
5000: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-ddTHH:mm:ss.FF
5010: 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69  FFFFF</descripti
5020: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5030: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5040: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
5050: 64 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  dTHH:mm</descrip
5060: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
5070: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
5080: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
5090: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65  -ddTHH:mm:ss</de
50a0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
50b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
50c0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
50d0: 79 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65  yyMMddHHmmss</de
50e0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
50f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5100: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
5110: 79 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63  yyMMddHHmm</desc
5120: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
5130: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
5140: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
5150: 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46  MMddTHHmmssFFFFF
5160: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
5170: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5180: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5190: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f  ion>yyyy-MM-dd</
51a0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
51b0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
51c0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
51d0: 79 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69  yyyyMMdd</descri
51e0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
51f0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
5200: 73 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d  scription>yy-MM-
5210: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
5220: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5230: 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f   </list>..    //
5240: 2f 20 49 66 20 74 68 65 20 73 74 72 69 6e 67 20  / If the string 
5250: 63 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65  cannot be matche
5260: 64 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20  d to one of the 
5270: 61 62 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f  above formats -O
5280: 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20  R-..    /// the 
5290: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74  DateTimeFormatSt
52a0: 72 69 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20  ring if one was 
52b0: 70 72 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63  provided, an exc
52c0: 65 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20  eption will..   
52d0: 20 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d   /// be thrown..
52e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
52f0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ks>..    /// <pa
5300: 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65  ram name="dateTe
5310: 78 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63  xt">The string c
5320: 6f 6e 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72  ontaining either
5330: 20 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20   a long integer 
5340: 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61  number of 100-na
5350: 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73  nosecond units s
5360: 69 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79  ince..    /// Sy
5370: 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69  stem.DateTime.Mi
5380: 6e 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e  nValue, a Julian
5390: 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20   day double, an 
53a0: 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f  integer number o
53b0: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
53c0: 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20  the Unix epoch, 
53d0: 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75  a..    /// cultu
53e0: 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66  re-independent f
53f0: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
5400: 64 20 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61  d time string, a
5410: 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20   formatted date 
5420: 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20  and time string 
5430: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  in the current..
5440: 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c      /// culture,
5450: 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66   or an ISO8601-f
5460: 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70  ormat string.</p
5470: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5480: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d  param name="form
5490: 61 74 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61  at">The SQLiteDa
54a0: 74 65 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65  teFormats to use
54b0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
54c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
54d0: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
54e0: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
54f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5500: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
5510: 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  matString">The D
5520: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
5530: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
5540: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5550: 72 65 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69  returns>A DateTi
5560: 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e  me value</return
5570: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
5580: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54  tatic DateTime T
5590: 6f 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20  oDateTime(..    
55a0: 20 20 20 20 73 74 72 69 6e 67 20 64 61 74 65 54      string dateT
55b0: 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  ext,..        SQ
55c0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
55d0: 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  format,..       
55e0: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
55f0: 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72  nd,..        str
5600: 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  ing formatString
5610: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
5620: 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
5630: 63 68 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20  ch (format)..   
5640: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5650: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
5660: 61 74 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73  ateFormats.Ticks
5670: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5690: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
56a0: 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76   ToDateTime(Conv
56b0: 65 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20  ert.ToInt64(..  
56c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56d0: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
56e0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
56f0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b  riantCulture), k
5700: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5710: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5720: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
5730: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
5740: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5770: 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d  return ToDateTim
5780: 65 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62  e(Convert.ToDoub
5790: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
57a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
57b0: 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e  eText, CultureIn
57c0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
57d0: 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20  ure), kind);..  
57e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
57f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
5800: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
5810: 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a  ats.UnixEpoch:..
5820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5830: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5840: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f         return To
5850: 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74  DateTime(Convert
5860: 2e 54 6f 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  .ToInt32(..     
5870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5880: 20 20 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c     dateText, Cul
5890: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
58a0: 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64  ntCulture), kind
58b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
58c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
58d0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
58e0: 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69  teFormats.Invari
58f0: 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20  antCulture:..   
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5920: 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74      if (formatSt
5930: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ring != null).. 
5940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5950: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
5960: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
5970: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73  nd(DateTime.Pars
5980: 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20  eExact(..       
5990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59a0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66       dateText, f
59b0: 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20  ormatString,..  
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59d0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
59e0: 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76  meFormatInfo.Inv
59f0: 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  ariantInfo,..   
5a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a10: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
5a20: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
5a30: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5a60: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
5a70: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
5a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a90: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5aa0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
5ad0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5ae0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
5b10: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
5b20: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
5b30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5b50: 61 74 65 54 65 78 74 2c 20 44 61 74 65 54 69 6d  ateText, DateTim
5b60: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
5b70: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
5b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b90: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
5ba0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
5bb0: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bd0: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5be0: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
5bf0: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
5c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c10: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5c20: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
5c50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5c60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5c70: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
5c80: 65 46 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74  eFormats.Current
5c90: 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20  Culture:..      
5ca0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cc0: 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e   if (formatStrin
5cd0: 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  g != null)..    
5ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cf0: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
5d00: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
5d10: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78  DateTime.ParseEx
5d20: 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  act(..          
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d    dateText, form
5d50: 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20  atString,..     
5d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d70: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 46         DateTimeF
5d80: 6f 72 6d 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e  ormatInfo.Curren
5d90: 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20  tInfo,..        
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5db0: 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65      kind == Date
5dc0: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a  TimeKind.Utc ?..
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5df0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41  DateTimeStyles.A
5e00: 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c  djustToUniversal
5e10: 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e30: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5e40: 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20  es.None),..     
5e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e60: 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20         kind);.. 
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e80: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ea0: 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65   return DateTime
5eb0: 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74  .SpecifyKind(Dat
5ec0: 65 54 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20  eTime.Parse(..  
5ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ee0: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
5ef0: 78 74 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  xt, DateTimeForm
5f00: 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e  atInfo.CurrentIn
5f10: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
5f40: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5f70: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
5f80: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
5f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5fc0: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
5fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fe0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
6000: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
6010: 6c 74 3a 20 2f 2a 20 49 53 4f 2d 38 36 30 31 20  lt: /* ISO-8601 
6020: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
6030: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6040: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66             if (f
6050: 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e  ormatString != n
6060: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6080: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
6090: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
60a0: 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a  me.ParseExact(..
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
60d0: 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69  Text, formatStri
60e0: 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng,..           
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6100: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
6110: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
6120: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6140: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
6150: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
6160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6170: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
6180: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
6190: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61c0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
61d0: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
61e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61f0: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
6200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
6210: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
6220: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6230: 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65  urn DateTime.Spe
6240: 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d  cifyKind(DateTim
6250: 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20  e.ParseExact(.. 
6260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6270: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
6280: 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ext, _datetimeFo
6290: 72 6d 61 74 73 2c 0d 0a 20 20 20 20 20 20 20 20  rmats,..        
62a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62b0: 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d      DateTimeForm
62c0: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
62d0: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62f0: 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54     kind == DateT
6300: 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20  imeKind.Utc ?.. 
6310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6330: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64  ateTimeStyles.Ad
6340: 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20  justToUniversal 
6350: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
6360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6370: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
6380: 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20  s.None),..      
6390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63a0: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
63c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
63d0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
63e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
63f0: 43 6f 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61  Converts a julia
6400: 6e 64 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20  nday value into 
6410: 61 20 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20  a DateTime..    
6420: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6430: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6440: 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e  ame="julianDay">
6450: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  The value to con
6460: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
6470: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
6480: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
6490: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
64a0: 62 6c 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  blic DateTime To
64b0: 44 61 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20  DateTime(double 
64c0: 6a 75 6c 69 61 6e 44 61 79 29 0d 0a 20 20 20 20  julianDay)..    
64d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
64e0: 54 6f 44 61 74 65 54 69 6d 65 28 6a 75 6c 69 61  ToDateTime(julia
64f0: 6e 44 61 79 2c 20 5f 64 61 74 65 74 69 6d 65 4b  nDay, _datetimeK
6500: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6510: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6520: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6530: 72 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20  rts a julianday 
6540: 76 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74  value into a Dat
6550: 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  eTime..    /// <
6560: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6570: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6580: 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76  julianDay">The v
6590: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
65a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
65b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
65c0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
65d0: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
65e0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
65f0: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
6600: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
6610: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
6620: 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44  tic DateTime ToD
6630: 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20  ateTime(..      
6640: 20 20 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44    double julianD
6650: 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74  ay,..        Dat
6660: 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 0d 0a  eTimeKind kind..
6670: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
6680: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a  ..        long j
6690: 64 20 3d 20 44 6f 75 62 6c 65 54 6f 4a 64 28 6a  d = DoubleToJd(j
66a0: 75 6c 69 61 6e 44 61 79 29 3b 0d 0a 20 20 20 20  ulianDay);..    
66b0: 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61 74      DateTime dat
66c0: 65 54 69 6d 65 59 4d 44 20 3d 20 63 6f 6d 70 75  eTimeYMD = compu
66d0: 74 65 59 4d 44 28 6a 64 2c 20 6e 75 6c 6c 29 3b  teYMD(jd, null);
66e0: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
66f0: 6d 65 20 64 61 74 65 54 69 6d 65 48 4d 53 20 3d  me dateTimeHMS =
6700: 20 63 6f 6d 70 75 74 65 48 4d 53 28 6a 64 2c 20   computeHMS(jd, 
6710: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
6720: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74    return new Dat
6730: 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eTime(..        
6740: 20 20 20 20 64 61 74 65 54 69 6d 65 59 4d 44 2e      dateTimeYMD.
6750: 59 65 61 72 2c 20 64 61 74 65 54 69 6d 65 59 4d  Year, dateTimeYM
6760: 44 2e 4d 6f 6e 74 68 2c 20 64 61 74 65 54 69 6d  D.Month, dateTim
6770: 65 59 4d 44 2e 44 61 79 2c 0d 0a 20 20 20 20 20  eYMD.Day,..     
6780: 20 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 48         dateTimeH
6790: 4d 53 2e 48 6f 75 72 2c 20 64 61 74 65 54 69 6d  MS.Hour, dateTim
67a0: 65 48 4d 53 2e 4d 69 6e 75 74 65 2c 20 64 61 74  eHMS.Minute, dat
67b0: 65 54 69 6d 65 48 4d 53 2e 53 65 63 6f 6e 64 2c  eTimeHMS.Second,
67c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61  ..            da
67d0: 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6c 6c 69 73  teTimeHMS.Millis
67e0: 65 63 6f 6e 64 2c 20 6b 69 6e 64 29 3b 0d 0a 20  econd, kind);.. 
67f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
6800: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6810: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
6820: 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72  specified number
6830: 20 6f 66 20 73 65 63 6f 6e 64 73 20 66 72 6f 6d   of seconds from
6840: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20   the Unix epoch 
6850: 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  into a..    /// 
6860: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6870: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6880: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6890: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
68a0: 61 6d 20 6e 61 6d 65 3d 22 73 65 63 6f 6e 64 73  am name="seconds
68b0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
68c0: 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20  number of whole 
68d0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
68e0: 65 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20  e Unix epoch... 
68f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6900: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6910: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20  name="kind">..  
6920: 20 20 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63    /// Either Utc
6930: 20 6f 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d   or Local time..
6940: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
6950: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6960: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
6970: 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  e new <see cref=
6980: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
6990: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
69a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
69b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61  ternal static Da
69c0: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
69d0: 65 28 69 6e 74 20 73 65 63 6f 6e 64 73 2c 20 44  e(int seconds, D
69e0: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
69f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
6a00: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
6a10: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 55 6e  e.SpecifyKind(Un
6a20: 69 78 45 70 6f 63 68 2e 41 64 64 53 65 63 6f 6e  ixEpoch.AddSecon
6a30: 64 73 28 73 65 63 6f 6e 64 73 29 2c 20 6b 69 6e  ds(seconds), kin
6a40: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
6a50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6a60: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6a70: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
6a80: 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 20  number of ticks 
6a90: 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63 68 20  since the epoch 
6aa0: 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  into a..    /// 
6ab0: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6ac0: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6ad0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6ae0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
6af0: 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b 73 22 3e  am name="ticks">
6b00: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75  ..    /// The nu
6b10: 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20 74 69  mber of whole ti
6b20: 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20 65 70  cks since the ep
6b30: 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  och...    /// </
6b40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
6b50: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e  <param name="kin
6b60: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74  d">..    /// Eit
6b70: 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61 6c  her Utc or Local
6b80: 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   time...    /// 
6b90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6ba0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6bb0: 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65   /// The new <se
6bc0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
6bd0: 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
6be0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
6bf0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6c00: 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  atic DateTime To
6c10: 44 61 74 65 54 69 6d 65 28 6c 6f 6e 67 20 74 69  DateTime(long ti
6c20: 63 6b 73 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e  cks, DateTimeKin
6c30: 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a  d kind)..    {..
6c40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
6c50: 65 77 20 44 61 74 65 54 69 6d 65 28 74 69 63 6b  ew DateTime(tick
6c60: 73 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d  s, kind);..    }
6c70: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
6c80: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
6c90: 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54 69  onverts a DateTi
6ca0: 6d 65 20 73 74 72 75 63 74 20 74 6f 20 61 20 4a  me struct to a J
6cb0: 75 6c 69 61 6e 44 61 79 20 64 6f 75 62 6c 65 0d  ulianDay double.
6cc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
6cd0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
6ce0: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
6cf0: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f  >The DateTime to
6d00: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
6d10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
6d20: 6e 73 3e 54 68 65 20 4a 75 6c 69 61 6e 44 61 79  ns>The JulianDay
6d30: 20 76 61 6c 75 65 20 74 68 65 20 44 61 74 65 74   value the Datet
6d40: 69 6d 65 20 72 65 70 72 65 73 65 6e 74 73 3c 2f  ime represents</
6d50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
6d60: 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
6d70: 6c 65 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 44  le ToJulianDay(D
6d80: 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a  ateTime value)..
6d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
6da0: 65 74 75 72 6e 20 4a 64 54 6f 44 6f 75 62 6c 65  eturn JdToDouble
6db0: 28 63 6f 6d 70 75 74 65 4a 44 28 76 61 6c 75 65  (computeJD(value
6dc0: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ));..    }....  
6dd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6de0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6df0: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72  s a DateTime str
6e00: 75 63 74 20 74 6f 20 74 68 65 20 77 68 6f 6c 65  uct to the whole
6e10: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
6e20: 64 73 20 73 69 6e 63 65 20 74 68 65 0d 0a 20 20  ds since the..  
6e30: 20 20 2f 2f 2f 20 55 6e 69 78 20 65 70 6f 63 68    /// Unix epoch
6e40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6e50: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6e60: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
6e70: 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  e">The DateTime 
6e80: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
6e90: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6ea0: 75 72 6e 73 3e 54 68 65 20 77 68 6f 6c 65 20 6e  urns>The whole n
6eb0: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
6ec0: 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
6ed0: 65 70 6f 63 68 3c 2f 72 65 74 75 72 6e 73 3e 0d  epoch</returns>.
6ee0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
6ef0: 69 63 20 6c 6f 6e 67 20 54 6f 55 6e 69 78 45 70  ic long ToUnixEp
6f00: 6f 63 68 28 44 61 74 65 54 69 6d 65 20 76 61 6c  och(DateTime val
6f10: 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
6f20: 20 20 20 20 72 65 74 75 72 6e 20 28 76 61 6c 75      return (valu
6f30: 65 2e 53 75 62 74 72 61 63 74 28 55 6e 69 78 45  e.Subtract(UnixE
6f40: 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20 54 69  poch).Ticks / Ti
6f50: 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50 65 72 53  meSpan.TicksPerS
6f60: 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a  econd);..    }..
6f70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
6f80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
6f90: 75 72 6e 73 20 74 68 65 20 44 61 74 65 54 69 6d  urns the DateTim
6fa0: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
6fb0: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 73  to use for the s
6fc0: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
6fd0: 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eKind...    /// 
6fe0: 49 66 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  If <paramref nam
6ff0: 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22  e="formatString"
7000: 20 2f 3e 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c   /> is not null,
7010: 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 74 75   it will be retu
7020: 72 6e 65 64 20 76 65 72 62 61 74 69 6d 2e 0d 0a  rned verbatim...
7030: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7040: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
7050: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54  am name="kind">T
7060: 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  he DateTimeKind 
7070: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
7080: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7090: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69  name="formatStri
70a0: 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  ng">The DateTime
70b0: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74   format string t
70c0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
70d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
70e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44  >..    /// The D
70f0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
7100: 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f 72  tring to use for
7110: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44   the specified D
7120: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20  ateTimeKind...  
7130: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7140: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
7150: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
7160: 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61  ateTimeKindForma
7170: 74 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  t(..        Date
7180: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a  TimeKind kind,..
7190: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
71a0: 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20  ormatString..   
71b0: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
71c0: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61         if (forma
71d0: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29  tString != null)
71e0: 20 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 53 74   return formatSt
71f0: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 72  ring;..        r
7200: 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d 3d 20 44  eturn (kind == D
7210: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29  ateTimeKind.Utc)
7220: 20 3f 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d   ? _datetimeForm
7230: 61 74 55 74 63 20 3a 20 5f 64 61 74 65 74 69 6d  atUtc : _datetim
7240: 65 46 6f 72 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20  eFormatLocal;.. 
7250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
7260: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7270: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74  // Converts a st
7280: 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65  ring into a Date
7290: 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20  Time, using the 
72a0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20  DateTimeFormat, 
72b0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20  DateTimeKind,.. 
72c0: 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54     /// and DateT
72d0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
72e0: 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68  specified for th
72f0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65  e connection whe
7300: 6e 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e  n it was opened.
7310: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
7320: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
7330: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56  aram name="dateV
7340: 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69  alue">The DateTi
7350: 6d 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  me value to conv
7360: 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ert</param>..   
7370: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69   /// <returns>Ei
7380: 74 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f  ther a string co
7390: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e  ntaining the lon
73a0: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
73b0: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
73c0: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53  nd units since S
73d0: 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d  ystem.DateTime.M
73e0: 69 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20  inValue, a..    
73f0: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  /// Julian day d
7400: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
7410: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
7420: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
7430: 69 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74  ix epoch, a cult
7440: 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20  ure-independent 
7450: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
7460: 6e 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f  nd time..    ///
7470: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
7480: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
7490: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
74a0: 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
74b0: 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d  , or an ISO8601-
74c0: 66 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65  format date/time
74d0: 20 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e   string.</return
74e0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
74f0: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 44  tring ToString(D
7500: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
7510: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
7520: 20 20 20 72 65 74 75 72 6e 20 54 6f 53 74 72 69     return ToStri
7530: 6e 67 28 64 61 74 65 56 61 6c 75 65 2c 20 5f 64  ng(dateValue, _d
7540: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f  atetimeFormat, _
7550: 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64  datetimeKind, _d
7560: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
7570: 69 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ing);..    }....
7580: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7590: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
75a0: 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74  rts a string int
75b0: 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73  o a DateTime, us
75c0: 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65  ing the DateTime
75d0: 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65  Format, DateTime
75e0: 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61  Kind,..    /// a
75f0: 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  nd DateTimeForma
7600: 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65  tString specifie
7610: 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  d for the connec
7620: 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73  tion when it was
7630: 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f   opened...    //
7640: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7650: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7660: 65 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68  e="dateValue">Th
7670: 65 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  e DateTime value
7680: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
7690: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
76a0: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
76b0: 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61 74 65  ">The SQLiteDate
76c0: 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c  Formats to use.<
76d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
76e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
76f0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
7700: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
7710: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
7720: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61  aram name="forma
7730: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74  tString">The Dat
7740: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72  eTime format str
7750: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ing to use.</par
7760: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
7770: 74 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73  turns>Either a s
7780: 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
7790: 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65   the long intege
77a0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d  r number of 100-
77b0: 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73  nanosecond units
77c0: 20 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61   since System.Da
77d0: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
77e0: 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69   a..    /// Juli
77f0: 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61  an day double, a
7800: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
7810: 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63   of seconds sinc
7820: 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68  e the Unix epoch
7830: 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  , a culture-inde
7840: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
7850: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d  d date and time.
7860: 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c  .    /// string,
7870: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74   a formatted dat
7880: 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e  e and time strin
7890: 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  g in the current
78a0: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
78b0: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64  ISO8601-format d
78c0: 61 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e  ate/time string.
78d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
78e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
78f0: 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 0d 0a  ring ToString(..
7900: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7910: 20 64 61 74 65 56 61 6c 75 65 2c 0d 0a 20 20 20   dateValue,..   
7920: 20 20 20 20 20 53 51 4c 69 74 65 44 61 74 65 46       SQLiteDateF
7930: 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 2c 0d 0a  ormats format,..
7940: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7950: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
7960: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
7970: 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  tString..       
7980: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
7990: 20 20 20 73 77 69 74 63 68 20 28 66 6f 72 6d 61     switch (forma
79a0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
79b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
79c0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
79d0: 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 20 20 20  s.Ticks:..      
79e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
79f0: 20 64 61 74 65 56 61 6c 75 65 2e 54 69 63 6b 73   dateValue.Ticks
7a00: 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
7a10: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
7a20: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
7a30: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
7a40: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
7a50: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
7a60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7a70: 54 6f 4a 75 6c 69 61 6e 44 61 79 28 64 61 74 65  ToJulianDay(date
7a80: 56 61 6c 75 65 29 2e 54 6f 53 74 72 69 6e 67 28  Value).ToString(
7a90: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
7aa0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
7ac0: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
7ad0: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7af0: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 28 64 61  eturn ((long)(da
7b00: 74 65 56 61 6c 75 65 2e 53 75 62 74 72 61 63 74  teValue.Subtract
7b10: 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63 6b  (UnixEpoch).Tick
7b20: 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69 63  s / TimeSpan.Tic
7b30: 6b 73 50 65 72 53 65 63 6f 6e 64 29 29 2e 54 6f  ksPerSecond)).To
7b40: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
7b50: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
7b60: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e  teDateFormats.In
7b70: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d  variantCulture:.
7b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7b90: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
7ba0: 65 2e 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d  e.ToString((form
7bb0: 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c  atString != null
7bc0: 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
7bd0: 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53           formatS
7be0: 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d  tring : FullForm
7bf0: 61 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  at, CultureInfo.
7c00: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
7c10: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7c20: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
7c30: 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75  ormats.CurrentCu
7c40: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
7c50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
7c60: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
7c70: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
7c80: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
7c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ca0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
7cb0: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
7cc0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
7cd0: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
7ce0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20       default:.. 
7cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7d00: 65 74 75 72 6e 20 28 64 61 74 65 56 61 6c 75 65  eturn (dateValue
7d10: 2e 4b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d  .Kind == DateTim
7d20: 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65  eKind.Unspecifie
7d30: 64 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  d) ?..          
7d40: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
7d50: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 64  me.SpecifyKind(d
7d60: 61 74 65 56 61 6c 75 65 2c 20 6b 69 6e 64 29 2e  ateValue, kind).
7d70: 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ToString(..     
7d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d90: 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69     GetDateTimeKi
7da0: 6e 64 46 6f 72 6d 61 74 28 6b 69 6e 64 2c 20 66  ndFormat(kind, f
7db0: 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20  ormatString),.. 
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7dd0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
7de0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
7df0: 43 75 6c 74 75 72 65 29 20 3a 20 64 61 74 65 56  Culture) : dateV
7e00: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 0d 0a  alue.ToString(..
7e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e20: 20 20 20 20 20 20 20 20 47 65 74 44 61 74 65 54          GetDateT
7e30: 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 64 61  imeKindFormat(da
7e40: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c 20 66 6f  teValue.Kind, fo
7e50: 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20  rmatString),..  
7e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e70: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
7e80: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
7e90: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
7ea0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
7eb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7ec0: 0a 20 20 20 20 2f 2f 2f 20 49 6e 74 65 72 6e 61  .    /// Interna
7ed0: 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6f  l function to co
7ee0: 6e 76 65 72 74 20 61 20 55 54 46 2d 38 20 65 6e  nvert a UTF-8 en
7ef0: 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20  coded IntPtr of 
7f00: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65  the specified le
7f10: 6e 67 74 68 20 74 6f 20 61 20 44 61 74 65 54 69  ngth to a DateTi
7f20: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
7f30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
7f40: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
7f50: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 63 6f  /// This is a co
7f60: 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69  nvenience functi
7f70: 6f 6e 2c 20 77 68 69 63 68 20 66 69 72 73 74 20  on, which first 
7f80: 63 61 6c 6c 73 20 54 6f 53 74 72 69 6e 67 28 29  calls ToString()
7f90: 20 6f 6e 20 74 68 65 20 49 6e 74 50 74 72 20 74   on the IntPtr t
7fa0: 6f 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20  o convert it to 
7fb0: 61 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 63  a string, then c
7fc0: 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f  alls..    /// To
7fd0: 44 61 74 65 54 69 6d 65 28 29 20 6f 6e 20 74 68  DateTime() on th
7fe0: 65 20 73 74 72 69 6e 67 20 74 6f 20 72 65 74 75  e string to retu
7ff0: 72 6e 20 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a  rn a DateTime...
8000: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
8010: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
8020: 61 6d 20 6e 61 6d 65 3d 22 70 74 72 22 3e 41 20  am name="ptr">A 
8030: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 55  pointer to the U
8040: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72  TF-8 encoded str
8050: 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ing</param>..   
8060: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8070: 3d 22 6c 65 6e 22 3e 54 68 65 20 6c 65 6e 67 74  ="len">The lengt
8080: 68 20 69 6e 20 62 79 74 65 73 20 6f 66 20 74 68  h in bytes of th
8090: 65 20 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e  e string</param>
80a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
80b0: 6e 73 3e 54 68 65 20 70 61 72 73 65 64 20 44 61  ns>The parsed Da
80c0: 74 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65  teTime value</re
80d0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
80e0: 72 6e 61 6c 20 44 61 74 65 54 69 6d 65 20 54 6f  rnal DateTime To
80f0: 44 61 74 65 54 69 6d 65 28 49 6e 74 50 74 72 20  DateTime(IntPtr 
8100: 70 74 72 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a 20  ptr, int len).. 
8110: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
8120: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 54 6f  rn ToDateTime(To
8130: 53 74 72 69 6e 67 28 70 74 72 2c 20 6c 65 6e 29  String(ptr, len)
8140: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
8150: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8160: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8170: 20 20 20 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65      /// Smart me
8180: 74 68 6f 64 20 6f 66 20 73 70 6c 69 74 74 69 6e  thod of splittin
8190: 67 20 61 20 73 74 72 69 6e 67 2e 20 20 53 6b 69  g a string.  Ski
81a0: 70 73 20 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e  ps quoted elemen
81b0: 74 73 2c 20 72 65 6d 6f 76 65 73 20 74 68 65 20  ts, removes the 
81c0: 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  quotes...    ///
81d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
81e0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
81f0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c      /// This spl
8200: 69 74 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b  it function work
8210: 73 20 73 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20  s somewhat like 
8220: 74 68 65 20 53 74 72 69 6e 67 2e 53 70 6c 69 74  the String.Split
8230: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74  () function in t
8240: 68 61 74 20 69 74 20 62 72 65 61 6b 73 20 61 70  hat it breaks ap
8250: 61 72 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74  art a string int
8260: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 70 69 65 63 65  o..    /// piece
8270: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
8280: 65 20 70 69 65 63 65 73 20 61 73 20 61 6e 20 61  e pieces as an a
8290: 72 72 61 79 2e 20 20 54 68 65 20 70 72 69 6d 61  rray.  The prima
82a0: 72 79 20 64 69 66 66 65 72 65 6e 63 65 73 20 61  ry differences a
82b0: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
82c0: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
82d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
82e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e  ><description>On
82f0: 6c 79 20 6f 6e 65 20 63 68 61 72 61 63 74 65 72  ly one character
8300: 20 63 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64   can be provided
8310: 20 61 73 20 61 20 73 65 70 61 72 61 74 6f 72 20   as a separator 
8320: 63 68 61 72 61 63 74 65 72 3c 2f 64 65 73 63 72  character</descr
8330: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
8340: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
8350: 65 73 63 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65  escription>Quote
8360: 64 20 74 65 78 74 20 69 6e 73 69 64 65 20 74 68  d text inside th
8370: 65 20 73 74 72 69 6e 67 20 69 73 20 73 6b 69 70  e string is skip
8380: 70 65 64 20 6f 76 65 72 20 77 68 65 6e 20 73 65  ped over when se
8390: 61 72 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20  arching for the 
83a0: 73 65 70 61 72 61 74 6f 72 2c 20 61 6e 64 20 74  separator, and t
83b0: 68 65 20 71 75 6f 74 65 73 20 61 72 65 20 72 65  he quotes are re
83c0: 6d 6f 76 65 64 2e 3c 2f 64 65 73 63 72 69 70 74  moved.</descript
83d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
83e0: 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20   /// </list>..  
83f0: 20 20 2f 2f 2f 20 54 68 75 73 2c 20 69 66 20 73    /// Thus, if s
8400: 70 6c 69 74 74 69 6e 67 20 74 68 65 20 66 6f 6c  plitting the fol
8410: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f  lowing string lo
8420: 6f 6b 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d  oking for a comm
8430: 61 3a 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  a:<br/>..    ///
8440: 20 4f 6e 65 2c 54 77 6f 2c 20 22 54 68 72 65 65   One,Two, "Three
8450: 2c 20 46 6f 75 72 22 2c 20 46 69 76 65 3c 62 72  , Four", Five<br
8460: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
8470: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
8480: 65 73 75 6c 74 69 6e 67 20 61 72 72 61 79 20 77  esulting array w
8490: 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f  ould contain<br/
84a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f  >..    /// [0] O
84b0: 6e 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ne<br/>..    ///
84c0: 20 5b 31 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20   [1] Two<br/>.. 
84d0: 20 20 20 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65     /// [2] Three
84e0: 2c 20 46 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20  , Four<br/>..   
84f0: 20 2f 2f 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72   /// [3] Five<br
8500: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
8510: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20  >..    /// Note 
8520: 74 68 61 74 20 74 68 65 20 6c 65 61 64 69 6e 67  that the leading
8530: 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 73 70   and trailing sp
8540: 61 63 65 73 20 77 65 72 65 20 72 65 6d 6f 76 65  aces were remove
8550: 64 20 66 72 6f 6d 20 65 61 63 68 20 69 74 65 6d  d from each item
8560: 20 64 75 72 69 6e 67 20 74 68 65 20 73 70 6c 69   during the spli
8570: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
8580: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
8590: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
85a0: 72 63 65 22 3e 53 6f 75 72 63 65 20 73 74 72 69  rce">Source stri
85b0: 6e 67 20 74 6f 20 73 70 6c 69 74 20 61 70 61 72  ng to split apar
85c0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
85d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
85e0: 73 65 70 61 72 61 74 6f 72 22 3e 53 65 70 61 72  separator">Separ
85f0: 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 3c 2f  ator character</
8600: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
8610: 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69 6e  <returns>A strin
8620: 67 20 61 72 72 61 79 20 6f 66 20 74 68 65 20 73  g array of the s
8630: 70 6c 69 74 20 75 70 20 65 6c 65 6d 65 6e 74 73  plit up elements
8640: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
8650: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
8660: 72 69 6e 67 5b 5d 20 53 70 6c 69 74 28 73 74 72  ring[] Split(str
8670: 69 6e 67 20 73 6f 75 72 63 65 2c 20 63 68 61 72  ing source, char
8680: 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20   separator)..   
8690: 20 7b 0d 0a 20 20 20 20 20 20 63 68 61 72 5b 5d   {..      char[]
86a0: 20 74 6f 6b 73 20 3d 20 6e 65 77 20 63 68 61 72   toks = new char
86b0: 5b 32 5d 20 7b 20 27 5c 22 27 2c 20 73 65 70 61  [2] { '\"', sepa
86c0: 72 61 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20  rator };..      
86d0: 63 68 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65  char[] quot = ne
86e0: 77 20 63 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27  w char[1] { '\"'
86f0: 20 7d 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e   };..      int n
8700: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73   = 0;..      Lis
8710: 74 3c 73 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e  t<string> ls = n
8720: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
8730: 29 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  );..      string
8740: 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69   s;....      whi
8750: 6c 65 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74  le (source.Lengt
8760: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d  h > 0)..      {.
8770: 0a 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75  .        n = sou
8780: 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74  rce.IndexOfAny(t
8790: 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20  oks, n);..      
87a0: 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62    if (n == -1) b
87b0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69  reak;..        i
87c0: 66 20 28 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20  f (source[n] == 
87d0: 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  toks[0])..      
87e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
87f0: 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65  /source = source
8800: 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a  .Remove(n, 1);..
8810: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f            n = so
8820: 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28  urce.IndexOfAny(
8830: 71 75 6f 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20  quot, n + 1);.. 
8840: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d           if (n =
8850: 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20  = -1)..         
8860: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8870: 2f 2f 73 6f 75 72 63 65 20 3d 20 22 5c 22 22 20  //source = "\"" 
8880: 2b 20 73 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20  + source;..     
8890: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
88a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
88b0: 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20        n++;..    
88c0: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
88d0: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
88e0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  , 1);..        }
88f0: 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
8900: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8910: 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e       s = source.
8920: 53 75 62 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e  Substring(0, n).
8930: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
8940: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
8950: 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71  > 1 && s[0] == q
8960: 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65  uot[0] && s[s.Le
8970: 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30  ngth - 1] == s[0
8980: 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ])..            
8990: 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28  s = s.Substring(
89a0: 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29  1, s.Length - 2)
89b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
89c0: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 53  ource = source.S
89d0: 75 62 73 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e  ubstring(n + 1).
89e0: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
89f0: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
8a00: 3e 20 30 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d  > 0) ls.Add(s);.
8a10: 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 30  .          n = 0
8a20: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
8a30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 20      }..      if 
8a40: 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e  (source.Length >
8a50: 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   0)..      {..  
8a60: 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65        s = source
8a70: 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20  .Trim();..      
8a80: 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e    if (s.Length >
8a90: 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75   1 && s[0] == qu
8aa0: 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e  ot[0] && s[s.Len
8ab0: 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d  gth - 1] == s[0]
8ac0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d  )..          s =
8ad0: 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20   s.Substring(1, 
8ae0: 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a  s.Length - 2);..
8af0: 20 20 20 20 20 20 20 20 6c 73 2e 41 64 64 28 73          ls.Add(s
8b00: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
8b10: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
8b20: 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73   = new string[ls
8b30: 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20  .Count];..      
8b40: 6c 73 2e 43 6f 70 79 54 6f 28 61 72 2c 20 30 29  ls.CopyTo(ar, 0)
8b50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
8b60: 6e 20 61 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  n ar;..    }....
8b70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8b80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74  >..    /// Split
8b90: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
8ba0: 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74  string into mult
8bb0: 69 70 6c 65 20 73 74 72 69 6e 67 73 20 62 61 73  iple strings bas
8bc0: 65 64 20 6f 6e 20 61 20 73 65 70 61 72 61 74 6f  ed on a separato
8bd0: 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72  r..    /// and r
8be0: 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c  eturns the resul
8bf0: 74 20 61 73 20 61 6e 20 61 72 72 61 79 20 6f 66  t as an array of
8c00: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f   strings...    /
8c10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8c20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8c30: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
8c40: 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20   /// The string 
8c50: 74 6f 20 73 70 6c 69 74 20 69 6e 74 6f 20 70 69  to split into pi
8c60: 65 63 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68  eces based on th
8c70: 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72  e separator char
8c80: 61 63 74 65 72 2e 20 20 49 66 0d 0a 20 20 20 20  acter.  If..    
8c90: 2f 2f 2f 20 74 68 69 73 20 73 74 72 69 6e 67 20  /// this string 
8ca0: 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69  is null, null wi
8cb0: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65 74  ll always be ret
8cc0: 75 72 6e 65 64 2e 20 20 49 66 20 74 68 69 73 20  urned.  If this 
8cd0: 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f  string is..    /
8ce0: 2f 2f 20 65 6d 70 74 79 2c 20 61 6e 20 61 72 72  // empty, an arr
8cf0: 61 79 20 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e  ay of zero strin
8d00: 67 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  gs will always b
8d10: 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
8d20: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8d30: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8d40: 6d 65 3d 22 73 65 70 61 72 61 74 6f 72 22 3e 0d  me="separator">.
8d50: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 68 61  .    /// The cha
8d60: 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20 64  racter used to d
8d70: 69 76 69 64 65 20 74 68 65 20 6f 72 69 67 69 6e  ivide the origin
8d80: 61 6c 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 73  al string into s
8d90: 75 62 2d 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20  ub-strings...   
8da0: 20 2f 2f 2f 20 54 68 69 73 20 63 68 61 72 61 63   /// This charac
8db0: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 61 20  ter cannot be a 
8dc0: 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64  backslash or a d
8dd0: 6f 75 62 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68  ouble-quote; oth
8de0: 65 72 77 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20  erwise, no..    
8df0: 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65  /// work will be
8e00: 20 70 65 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e   performed and n
8e10: 75 6c 6c 20 77 69 6c 6c 20 62 65 20 72 65 74 75  ull will be retu
8e20: 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rned...    /// <
8e30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
8e40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65   <param name="ke
8e50: 65 70 51 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f  epQuote">..    /
8e60: 2f 2f 20 49 66 20 74 68 69 73 20 70 61 72 61 6d  // If this param
8e70: 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  eter is non-zero
8e80: 2c 20 61 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f  , all double-quo
8e90: 74 65 20 63 68 61 72 61 63 74 65 72 73 20 77 69  te characters wi
8ea0: 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72  ll be..    /// r
8eb0: 65 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 72  etained in the r
8ec0: 65 74 75 72 6e 65 64 20 6c 69 73 74 20 6f 66 20  eturned list of 
8ed0: 73 74 72 69 6e 67 73 3b 20 6f 74 68 65 72 77 69  strings; otherwi
8ee0: 73 65 2c 20 74 68 65 79 20 77 69 6c 6c 20 62 65  se, they will be
8ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65  ..    /// droppe
8f00: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8f10: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8f20: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
8f30: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ">..    /// Upon
8f40: 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
8f50: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
8f60: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
8f70: 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69  tain an appropri
8f80: 61 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72  ate..    /// err
8f90: 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
8fa0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8fb0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8fc0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
8fd0: 77 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  w array of strin
8fe0: 67 73 20 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68  gs or null if th
8ff0: 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 69  e input string i
9000: 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d  s null -OR- the.
9010: 0a 20 20 20 20 2f 2f 2f 20 73 65 70 61 72 61 74  .    /// separat
9020: 6f 72 20 63 68 61 72 61 63 74 65 72 20 69 73 20  or character is 
9030: 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61  a backslash or a
9040: 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f   double-quote -O
9050: 52 2d 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20  R- the string.. 
9060: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20     /// contains 
9070: 61 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 62 61  an unbalanced ba
9080: 63 6b 73 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c  ckslash or doubl
9090: 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  e-quote characte
90a0: 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  r...    /// </re
90b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
90c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
90d0: 6e 67 5b 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a  ng[] NewSplit(..
90e0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
90f0: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 63  alue,..        c
9100: 68 61 72 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a  har separator,..
9110: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65          bool kee
9120: 70 51 75 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20  pQuote,..       
9130: 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
9140: 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  r..        )..  
9150: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e    {..        con
9160: 73 74 20 63 68 61 72 20 45 73 63 61 70 65 43 68  st char EscapeCh
9170: 61 72 20 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20  ar = '\\';..    
9180: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 51      const char Q
9190: 75 6f 74 65 43 68 61 72 20 3d 20 27 5c 22 27 3b  uoteChar = '\"';
91a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
91b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
91c0: 20 49 74 20 69 73 20 69 6c 6c 65 67 61 6c 20 66   It is illegal f
91d0: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
91e0: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
91f0: 20 65 69 74 68 65 72 20 61 0d 0a 20 20 20 20 20   either a..     
9200: 20 20 20 2f 2f 20 20 20 20 20 20 20 62 61 63 6b     //       back
9210: 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c  slash or a doubl
9220: 65 2d 71 75 6f 74 65 20 62 65 63 61 75 73 65 20  e-quote because 
9230: 62 6f 74 68 20 6f 66 20 74 68 6f 73 65 20 63 68  both of those ch
9240: 61 72 61 63 74 65 72 73 0d 0a 20 20 20 20 20 20  aracters..      
9250: 20 20 2f 2f 20 20 20 20 20 20 20 61 72 65 20 75    //       are u
9260: 73 65 64 20 66 6f 72 20 65 73 63 61 70 69 6e 67  sed for escaping
9270: 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65 72   other character
9280: 73 20 28 65 2e 67 2e 20 74 68 65 20 73 65 70 61  s (e.g. the sepa
9290: 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  rator..        /
92a0: 2f 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65  /       characte
92b0: 72 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  r)...        //.
92c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 73 65  .        if ((se
92d0: 70 61 72 61 74 6f 72 20 3d 3d 20 45 73 63 61 70  parator == Escap
92e0: 65 43 68 61 72 29 20 7c 7c 20 28 73 65 70 61 72  eChar) || (separ
92f0: 61 74 6f 72 20 3d 3d 20 51 75 6f 74 65 43 68 61  ator == QuoteCha
9300: 72 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  r))..        {..
9310: 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
9320: 72 20 3d 20 22 73 65 70 61 72 61 74 6f 72 20 63  r = "separator c
9330: 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20  haracter cannot 
9340: 62 65 20 74 68 65 20 65 73 63 61 70 65 20 6f 72  be the escape or
9350: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
9360: 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s";..           
9370: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
9380: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9390: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
93a0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
93b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
93c0: 72 72 6f 72 20 3d 20 22 73 74 72 69 6e 67 20 76  rror = "string v
93d0: 61 6c 75 65 20 74 6f 20 73 70 6c 69 74 20 63 61  alue to split ca
93e0: 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a  nnot be null";..
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9400: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
9410: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
9420: 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75  nt length = valu
9430: 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  e.Length;....   
9440: 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
9450: 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
9460: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 73 74     return new st
9470: 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  ring[0];....    
9480: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
9490: 20 6c 69 73 74 20 3d 20 6e 65 77 20 4c 69 73 74   list = new List
94a0: 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20  <string>();..   
94b0: 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
94c0: 65 72 20 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77  er element = new
94d0: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
94e0: 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ;..        int i
94f0: 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20  ndex = 0;..     
9500: 20 20 20 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d     bool escape =
9510: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
9520: 20 62 6f 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61   bool quote = fa
9530: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9540: 77 68 69 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c  while (index < l
9550: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
9560: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
9570: 68 61 72 20 63 68 61 72 61 63 74 65 72 20 3d 20  har character = 
9580: 76 61 6c 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d  value[index++];.
9590: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
95a0: 66 20 28 65 73 63 61 70 65 29 0d 0a 20 20 20 20  f (escape)..    
95b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
95c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
95e0: 2f 20 48 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e  / HACK: Only con
95f0: 73 69 64 65 72 20 74 68 65 20 65 73 63 61 70 65  sider the escape
9600: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
9610: 20 61 6e 20 61 63 74 75 61 6c 0d 0a 20 20 20 20   an actual..    
9620: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
9630: 20 20 20 20 20 22 65 73 63 61 70 65 22 20 69 66       "escape" if
9640: 20 69 74 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20   it is followed 
9650: 62 79 20 61 20 72 65 73 65 72 76 65 64 20 63 68  by a reserved ch
9660: 61 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20  aracter;..      
9670: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9680: 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 65 6d     otherwise, em
9690: 69 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  it the original 
96a0: 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72  escape character
96b0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
96c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
96d0: 68 65 20 63 75 72 72 65 6e 74 20 63 68 61 72 61  he current chara
96e0: 63 74 65 72 20 69 6e 20 61 6e 20 65 66 66 6f 72  cter in an effor
96f0: 74 20 74 6f 20 68 65 6c 70 20 70 72 65 73 65 72  t to help preser
9700: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
9710: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
9720: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
9730: 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20   content...     
9740: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9760: 66 20 28 28 63 68 61 72 61 63 74 65 72 20 21 3d  f ((character !=
9770: 20 45 73 63 61 70 65 43 68 61 72 29 20 26 26 0d   EscapeChar) &&.
9780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9790: 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72 20       (character 
97a0: 21 3d 20 51 75 6f 74 65 43 68 61 72 29 20 26 26  != QuoteChar) &&
97b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97c0: 20 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72        (character
97d0: 20 21 3d 20 73 65 70 61 72 61 74 6f 72 29 29 0d   != separator)).
97e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
97f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9800: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
9810: 41 70 70 65 6e 64 28 45 73 63 61 70 65 43 68 61  Append(EscapeCha
9820: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9830: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9840: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
9850: 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74  t.Append(charact
9860: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
9870: 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 66        escape = f
9880: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
9890: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
98a0: 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72 61    else if (chara
98b0: 63 74 65 72 20 3d 3d 20 45 73 63 61 70 65 43 68  cter == EscapeCh
98c0: 61 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ar)..           
98d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
98e0: 20 20 20 20 65 73 63 61 70 65 20 3d 20 74 72 75      escape = tru
98f0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
9900: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
9910: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
9920: 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 0d  r == QuoteChar).
9930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9950: 69 66 20 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a  if (keepQuote)..
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9970: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65      element.Appe
9980: 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a  nd(character);..
9990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
99a0: 20 20 71 75 6f 74 65 20 3d 20 21 71 75 6f 74 65    quote = !quote
99b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
99c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
99d0: 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72  se if (character
99e0: 20 3d 3d 20 73 65 70 61 72 61 74 6f 72 29 0d 0a   == separator)..
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9a10: 66 20 28 71 75 6f 74 65 29 0d 0a 20 20 20 20 20  f (quote)..     
9a20: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a40: 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64    element.Append
9a50: 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20  (character);..  
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a80: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
9a90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
9ab0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
9ac0: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20  oString());..   
9ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ae0: 20 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20   element.Length 
9af0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
9b00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9b10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9b20: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
9b30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9b40: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
9b50: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
9b60: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9b70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9b80: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
9b90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e       // NOTE: An
9ba0: 20 75 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61   unbalanced esca
9bb0: 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72  pe or quote char
9bc0: 61 63 74 65 72 20 69 6e 20 74 68 65 20 73 74 72  acter in the str
9bd0: 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ing is..        
9be0: 2f 2f 20 20 20 20 20 20 20 63 6f 6e 73 69 64 65  //       conside
9bf0: 72 65 64 20 74 6f 20 62 65 20 61 20 66 61 74 61  red to be a fata
9c00: 6c 20 65 72 72 6f 72 3b 20 74 68 65 72 65 66 6f  l error; therefo
9c10: 72 65 2c 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e  re, return null.
9c20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
9c30: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
9c40: 20 7c 7c 20 71 75 6f 74 65 29 0d 0a 20 20 20 20   || quote)..    
9c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9c60: 20 20 20 65 72 72 6f 72 20 3d 20 22 75 6e 62 61     error = "unba
9c70: 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f 72  lanced escape or
9c80: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
9c90: 20 66 6f 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20   found";..      
9ca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
9cb0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
9cc0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65  .        if (ele
9cd0: 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29  ment.Length > 0)
9ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69  ..            li
9cf0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
9d00: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20  oString());.... 
9d10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69         return li
9d20: 73 74 2e 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20  st.ToArray();.. 
9d30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
9d40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
9d50: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
9d60: 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e  eturns the strin
9d70: 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
9d80: 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63 74 2c 20   for an object, 
9d90: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f  using the..    /
9da0: 2f 2f 20 73 70 65 63 69 66 69 65 64 20 28 6f 72  // specified (or
9db0: 20 63 75 72 72 65 6e 74 29 20 66 6f 72 6d 61 74   current) format
9dc0: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
9dd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9de0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9df0: 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20  ame="obj">..    
9e00: 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 69  /// The object i
9e10: 6e 73 74 61 6e 63 65 20 74 6f 20 72 65 74 75 72  nstance to retur
9e20: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70  n the string rep
9e30: 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 2e  resentation for.
9e40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
9e50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
9e60: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65  am name="provide
9e70: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  r">..    /// The
9e80: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9e90: 20 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c   to use -OR- nul
9ea0: 6c 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74  l if the current
9eb0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9ec0: 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 74 68   for..    /// th
9ed0: 65 20 74 68 72 65 61 64 20 73 68 6f 75 6c 64 20  e thread should 
9ee0: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e  be used instead.
9ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
9f00: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
9f10: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
9f20: 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73  he string repres
9f30: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
9f40: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
9f50: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
9f60: 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63  e..    /// objec
9f70: 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 61 6c  t instance is al
9f80: 73 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f  so null...    //
9f90: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9fa0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
9fb0: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 57  string ToStringW
9fc0: 69 74 68 50 72 6f 76 69 64 65 72 28 0d 0a 20 20  ithProvider(..  
9fd0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a        object obj
9fe0: 2c 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d  ,..        IForm
9ff0: 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69  atProvider provi
a000: 64 65 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  der..        )..
a010: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
a020: 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d  f (obj == null).
a030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
a040: 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 6e 75 6c  urn null; /* nul
a050: 6c 20 2d 2d 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d  l --> null */...
a060: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
a070: 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
a080: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a090: 28 73 74 72 69 6e 67 29 6f 62 6a 3b 20 2f 2a 20  (string)obj; /* 
a0a0: 69 64 65 6e 74 69 74 79 20 2a 2f 0d 0a 0d 0a 20  identity */.... 
a0b0: 20 20 20 20 20 20 20 49 43 6f 6e 76 65 72 74 69         IConverti
a0c0: 62 6c 65 20 63 6f 6e 76 65 72 74 69 62 6c 65 20  ble convertible 
a0d0: 3d 20 6f 62 6a 20 61 73 20 49 43 6f 6e 76 65 72  = obj as IConver
a0e0: 74 69 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tible;....      
a0f0: 20 20 69 66 20 28 63 6f 6e 76 65 72 74 69 62 6c    if (convertibl
a100: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
a110: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
a120: 6f 6e 76 65 72 74 69 62 6c 65 2e 54 6f 53 74 72  onvertible.ToStr
a130: 69 6e 67 28 70 72 6f 76 69 64 65 72 29 3b 0d 0a  ing(provider);..
a140: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
a150: 20 6f 62 6a 2e 54 6f 53 74 72 69 6e 67 28 29 3b   obj.ToString();
a160: 20 2f 2a 20 6e 6f 74 20 49 43 6f 6e 76 65 72 74   /* not IConvert
a170: 69 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ible */..    }..
a180: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
a190: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74  ry>..    /// Att
a1a0: 65 6d 70 74 73 20 74 6f 20 63 6f 6e 76 65 72 74  empts to convert
a1b0: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 6f 62   an arbitrary ob
a1c0: 6a 65 63 74 20 74 6f 20 74 68 65 20 42 6f 6f 6c  ject to the Bool
a1d0: 65 61 6e 20 64 61 74 61 20 74 79 70 65 2e 0d 0a  ean data type...
a1e0: 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 6f 62 6a      /// Null obj
a1f0: 65 63 74 20 76 61 6c 75 65 73 20 61 72 65 20 63  ect values are c
a200: 6f 6e 76 65 72 74 65 64 20 74 6f 20 66 61 6c 73  onverted to fals
a210: 65 2e 20 20 54 68 72 6f 77 73 20 61 6e 20 65 78  e.  Throws an ex
a220: 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  ception..    ///
a230: 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
a240: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a250: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
a260: 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a  am name="obj">..
a270: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
a280: 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  ct value to conv
a290: 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ert...    /// </
a2a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
a2b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
a2c0: 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f  vider">..    ///
a2d0: 20 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f 76   The format prov
a2e0: 69 64 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20  ider to use...  
a2f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a300: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a310: 61 6d 65 3d 22 76 69 61 46 72 61 6d 65 77 6f 72  ame="viaFramewor
a320: 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  k">..    /// If 
a330: 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 20 73 74 72 69  non-zero, a stri
a340: 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  ng value will be
a350: 20 63 6f 6e 76 65 72 74 65 64 20 75 73 69 6e 67   converted using
a360: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
a370: 65 65 20 63 72 65 66 3d 22 43 6f 6e 76 65 72 74  ee cref="Convert
a380: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 4f 62 6a 65 63  .ToBoolean(Objec
a390: 74 2c 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  t, IFormatProvid
a3a0: 65 72 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  er)" />..    ///
a3b0: 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
a3c0: 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
a3d0: 66 3d 22 54 6f 42 6f 6f 6c 65 61 6e 28 53 74 72  f="ToBoolean(Str
a3e0: 69 6e 67 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  ing)" />..    //
a3f0: 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  / method will be
a400: 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20   used...    /// 
a410: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
a420: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
a430: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
a440: 65 64 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  ed boolean value
a450: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
a460: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
a470: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
a480: 54 6f 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20  ToBoolean(..    
a490: 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d      object obj,.
a4a0: 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74  .        IFormat
a4b0: 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65  Provider provide
a4c0: 72 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  r,..        bool
a4d0: 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 0d 0a 20   viaFramework.. 
a4e0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
a4f0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
a500: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a510: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a520: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a530: 54 79 70 65 43 6f 64 65 20 74 79 70 65 43 6f 64  TypeCode typeCod
a540: 65 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  e = Type.GetType
a550: 43 6f 64 65 28 6f 62 6a 2e 47 65 74 54 79 70 65  Code(obj.GetType
a560: 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ());....        
a570: 73 77 69 74 63 68 20 28 74 79 70 65 43 6f 64 65  switch (typeCode
a580: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a590: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a5a0: 79 70 65 43 6f 64 65 2e 45 6d 70 74 79 3a 0d 0a  ypeCode.Empty:..
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a5c0: 20 54 79 70 65 43 6f 64 65 2e 44 42 4e 75 6c 6c   TypeCode.DBNull
a5d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
a5e0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a600: 73 65 20 54 79 70 65 43 6f 64 65 2e 42 6f 6f 6c  se TypeCode.Bool
a610: 65 61 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ean:..          
a620: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 62 6f        return (bo
a630: 6f 6c 29 6f 62 6a 3b 0d 0a 20 20 20 20 20 20 20  ol)obj;..       
a640: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a650: 64 65 2e 43 68 61 72 3a 0d 0a 20 20 20 20 20 20  de.Char:..      
a660: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a670: 20 28 28 63 68 61 72 29 6f 62 6a 29 20 21 3d 20   ((char)obj) != 
a680: 28 63 68 61 72 29 30 20 3f 20 74 72 75 65 20 3a  (char)0 ? true :
a690: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a6a0: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a6b0: 64 65 2e 53 42 79 74 65 3a 0d 0a 20 20 20 20 20  de.SByte:..     
a6c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a6d0: 6e 20 28 28 73 62 79 74 65 29 6f 62 6a 29 20 21  n ((sbyte)obj) !
a6e0: 3d 20 28 73 62 79 74 65 29 30 20 3f 20 74 72 75  = (sbyte)0 ? tru
a6f0: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a700: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a710: 65 43 6f 64 65 2e 42 79 74 65 3a 0d 0a 20 20 20  eCode.Byte:..   
a720: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a730: 75 72 6e 20 28 28 62 79 74 65 29 6f 62 6a 29 20  urn ((byte)obj) 
a740: 21 3d 20 28 62 79 74 65 29 30 20 3f 20 74 72 75  != (byte)0 ? tru
a750: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a760: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a770: 65 43 6f 64 65 2e 49 6e 74 31 36 3a 0d 0a 20 20  eCode.Int16:..  
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a790: 74 75 72 6e 20 28 28 73 68 6f 72 74 29 6f 62 6a  turn ((short)obj
a7a0: 29 20 21 3d 20 28 73 68 6f 72 74 29 30 20 3f 20  ) != (short)0 ? 
a7b0: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
a7c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
a7d0: 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 31 36 3a  TypeCode.UInt16:
a7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a7f0: 20 20 72 65 74 75 72 6e 20 28 28 75 73 68 6f 72    return ((ushor
a800: 74 29 6f 62 6a 29 20 21 3d 20 28 75 73 68 6f 72  t)obj) != (ushor
a810: 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  t)0 ? true : fal
a820: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
a830: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49   case TypeCode.I
a840: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
a850: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a860: 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 69 6e 74  int)obj) != (int
a870: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
a880: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a890: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49  case TypeCode.UI
a8a0: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
a8b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a8c0: 75 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 75 69  uint)obj) != (ui
a8d0: 6e 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  nt)0 ? true : fa
a8e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a8f0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a900: 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20  Int64:..        
a910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
a920: 28 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 6c  (long)obj) != (l
a930: 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20 66  ong)0 ? true : f
a940: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
a950: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a960: 2e 55 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20  .UInt64:..      
a970: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a980: 20 28 28 75 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d   ((ulong)obj) !=
a990: 20 28 75 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65   (ulong)0 ? true
a9a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a9b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a9c0: 43 6f 64 65 2e 53 69 6e 67 6c 65 3a 0d 0a 20 20  Code.Single:..  
a9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a9e0: 74 75 72 6e 20 28 28 66 6c 6f 61 74 29 6f 62 6a  turn ((float)obj
a9f0: 29 20 21 3d 20 28 66 6c 6f 61 74 29 30 2e 30 20  ) != (float)0.0 
aa00: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
aa10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
aa20: 65 20 54 79 70 65 43 6f 64 65 2e 44 6f 75 62 6c  e TypeCode.Doubl
aa30: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
aa40: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 6f 75      return ((dou
aa50: 62 6c 65 29 6f 62 6a 29 20 21 3d 20 28 64 6f 75  ble)obj) != (dou
aa60: 62 6c 65 29 30 2e 30 20 3f 20 74 72 75 65 20 3a  ble)0.0 ? true :
aa70: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
aa80: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
aa90: 64 65 2e 44 65 63 69 6d 61 6c 3a 0d 0a 20 20 20  de.Decimal:..   
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
aab0: 75 72 6e 20 28 28 64 65 63 69 6d 61 6c 29 6f 62  urn ((decimal)ob
aac0: 6a 29 20 21 3d 20 44 65 63 69 6d 61 6c 2e 5a 65  j) != Decimal.Ze
aad0: 72 6f 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  ro ? true : fals
aae0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
aaf0: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53 74  case TypeCode.St
ab00: 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20  ring:..         
ab10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 69         return vi
ab20: 61 46 72 61 6d 65 77 6f 72 6b 20 3f 0d 0a 20 20  aFramework ?..  
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab40: 20 20 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c    Convert.ToBool
ab50: 65 61 6e 28 6f 62 6a 2c 20 70 72 6f 76 69 64 65  ean(obj, provide
ab60: 72 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  r) :..          
ab70: 20 20 20 20 20 20 20 20 20 20 54 6f 42 6f 6f 6c            ToBool
ab80: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
ab90: 50 72 6f 76 69 64 65 72 28 6f 62 6a 2c 20 70 72  Provider(obj, pr
aba0: 6f 76 69 64 65 72 29 29 3b 0d 0a 20 20 20 20 20  ovider));..     
abb0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
abc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
abd0: 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
abe0: 65 45 78 63 65 70 74 69 6f 6e 28 53 74 72 69 6e  eException(Strin
abf0: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
ac00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
ac10: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
ac20: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac40: 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65 72 74 20  "Cannot convert 
ac50: 74 79 70 65 20 7b 30 7d 20 74 6f 20 62 6f 6f 6c  type {0} to bool
ac60: 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ean",..         
ac70: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 43             typeC
ac80: 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode));..        
ac90: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
aca0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
acb0: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61     /// Convert a
acc0: 20 76 61 6c 75 65 20 74 6f 20 74 72 75 65 20 6f   value to true o
acd0: 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f  r false...    //
ace0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
acf0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ad00: 65 3d 22 73 6f 75 72 63 65 22 3e 41 20 73 74 72  e="source">A str
ad10: 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72 20 72 65  ing or number re
ad20: 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20  presenting true 
ad30: 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e  or false</param>
ad40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
ad50: 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ns></returns>.. 
ad60: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
ad70: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28   bool ToBoolean(
ad80: 6f 62 6a 65 63 74 20 73 6f 75 72 63 65 29 0d 0a  object source)..
ad90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
ada0: 28 73 6f 75 72 63 65 20 69 73 20 62 6f 6f 6c 29  (source is bool)
adb0: 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 73 6f   return (bool)so
adc0: 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  urce;....      r
add0: 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65 61 6e 28  eturn ToBoolean(
ade0: 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76  ToStringWithProv
adf0: 69 64 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  ider(..         
ae00: 20 73 6f 75 72 63 65 2c 20 43 75 6c 74 75 72 65   source, Culture
ae10: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
ae20: 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20 20 7d 0d  lture));..    }.
ae30: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
ae40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
ae50: 6e 76 65 72 74 20 61 20 73 74 72 69 6e 67 20 74  nvert a string t
ae60: 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 2e  o true or false.
ae70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ae80: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
ae90: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63  aram name="sourc
aea0: 65 22 3e 41 20 73 74 72 69 6e 67 20 72 65 70 72  e">A string repr
aeb0: 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20 6f 72  esenting true or
aec0: 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a   false</param>..
aed0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
aee0: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
aef0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
af00: 20 20 20 20 2f 2f 2f 20 22 79 65 73 22 2c 20 22      /// "yes", "
af10: 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22 2c 20 22  no", "y", "n", "
af20: 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22 2c 20 22  0", "1", "on", "
af30: 6f 66 66 22 20 61 73 20 77 65 6c 6c 20 61 73 20  off" as well as 
af40: 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53 74 72  Boolean.FalseStr
af50: 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65 61 6e 2e  ing and Boolean.
af60: 54 72 75 65 53 74 72 69 6e 67 20 77 69 6c 6c 20  TrueString will 
af70: 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20  all be..    /// 
af80: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 70  converted to a p
af90: 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e 20 76 61  roper boolean va
afa0: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
afb0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 70 75  remarks>..    pu
afc0: 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c  blic static bool
afd0: 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74 72 69 6e   ToBoolean(strin
afe0: 67 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b  g source)..    {
aff0: 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72 69  ..      if (Stri
b000: 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63  ng.Compare(sourc
b010: 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74 72 69  e, bool.TrueStri
b020: 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ng, StringCompar
b030: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
b040: 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72 65  reCase) == 0) re
b050: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
b060: 20 20 65 6c 73 65 20 69 66 20 28 53 74 72 69 6e    else if (Strin
b070: 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65  g.Compare(source
b080: 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53 74 72 69  , bool.FalseStri
b090: 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ng, StringCompar
b0a0: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
b0b0: 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72 65  reCase) == 0) re
b0c0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
b0d0: 20 20 20 20 20 73 77 69 74 63 68 28 73 6f 75 72       switch(sour
b0e0: 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75  ce.ToLower(Cultu
b0f0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
b100: 43 75 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20  Culture))..     
b110: 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65   {..        case
b120: 20 22 79 65 73 22 3a 0d 0a 20 20 20 20 20 20 20   "yes":..       
b130: 20 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20 20   case "y":..    
b140: 20 20 20 20 63 61 73 65 20 22 31 22 3a 0d 0a 20      case "1":.. 
b150: 20 20 20 20 20 20 20 63 61 73 65 20 22 6f 6e 22         case "on"
b160: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  :..          ret
b170: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
b180: 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a 20     case "no":.. 
b190: 20 20 20 20 20 20 20 63 61 73 65 20 22 6e 22 3a         case "n":
b1a0: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b1b0: 30 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  0":..        cas
b1c0: 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20  e "off":..      
b1d0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
b1e0: 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75  ;..        defau
b1f0: 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  lt:..          t
b200: 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
b210: 74 45 78 63 65 70 74 69 6f 6e 28 22 73 6f 75 72  tException("sour
b220: 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ce");..      }..
b230: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65      }....    #re
b240: 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e 76 65 72  gion Type Conver
b250: 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sions..    /// <
b260: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b270: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 53 51 4c  / Converts a SQL
b280: 69 74 65 54 79 70 65 20 74 6f 20 61 20 2e 4e 45  iteType to a .NE
b290: 54 20 54 79 70 65 20 6f 62 6a 65 63 74 0d 0a 20  T Type object.. 
b2a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b2b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
b2c0: 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68 65 20 53  m name="t">The S
b2d0: 51 4c 69 74 65 54 79 70 65 20 74 6f 20 63 6f 6e  QLiteType to con
b2e0: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
b2f0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52    /// <returns>R
b300: 65 74 75 72 6e 73 20 61 20 2e 4e 45 54 20 54 79  eturns a .NET Ty
b310: 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65 74 75 72  pe object</retur
b320: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
b330: 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 53 51  l static Type SQ
b340: 4c 69 74 65 54 79 70 65 54 6f 54 79 70 65 28 53  LiteTypeToType(S
b350: 51 4c 69 74 65 54 79 70 65 20 74 29 0d 0a 20 20  QLiteType t)..  
b360: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 74    {..      if (t
b370: 2e 54 79 70 65 20 3d 3d 20 44 62 54 79 70 65 2e  .Type == DbType.
b380: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 20  Object)..       
b390: 20 72 65 74 75 72 6e 20 5f 61 66 66 69 6e 69 74   return _affinit
b3a0: 79 74 6f 74 79 70 65 5b 28 69 6e 74 29 74 2e 41  ytotype[(int)t.A
b3b0: 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20 20 20 20  ffinity];..     
b3c0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72   else..        r
b3d0: 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76  eturn SQLiteConv
b3e0: 65 72 74 2e 44 62 54 79 70 65 54 6f 54 79 70 65  ert.DbTypeToType
b3f0: 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20 20 20 7d  (t.Type);..    }
b400: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
b410: 73 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 61  static Type[] _a
b420: 66 66 69 6e 69 74 79 74 6f 74 79 70 65 20 3d 20  ffinitytotype = 
b430: 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  {..      typeof(
b440: 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 55 6e  object),   // Un
b450: 69 6e 69 74 69 61 6c 69 7a 65 64 20 28 30 29 0d  initialized (0).
b460: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
b470: 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36  t64),    // Int6
b480: 34 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79 70  4 (1)..      typ
b490: 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20 20 20 2f  eof(Double),   /
b4a0: 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d 0a 20 20  / Double (2)..  
b4b0: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
b4c0: 67 29 2c 20 20 20 2f 2f 20 54 65 78 74 20 28 33  g),   // Text (3
b4d0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b4e0: 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c  byte[]),   // Bl
b4f0: 6f 62 20 28 34 29 0d 0a 20 20 20 20 20 20 74 79  ob (4)..      ty
b500: 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20  peof(object),   
b510: 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a 20 20 20  // Null (5)..   
b520: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
b530: 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  me), // DateTime
b540: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70   (10)..      typ
b550: 65 6f 66 28 6f 62 6a 65 63 74 29 20 20 20 20 2f  eof(object)    /
b560: 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a 20 20 20  / None (11)..   
b570: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   };....    /// <
b580: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b590: 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 69 6e  / For a given in
b5a0: 74 72 69 6e 73 69 63 20 74 79 70 65 2c 20 72 65  trinsic type, re
b5b0: 74 75 72 6e 20 61 20 44 62 54 79 70 65 0d 0a 20  turn a DbType.. 
b5c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b5d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
b5e0: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
b5f0: 20 6e 61 74 69 76 65 20 74 79 70 65 20 74 6f 20   native type to 
b600: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
b610: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
b620: 73 3e 54 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  s>The correspond
b630: 69 6e 67 20 28 63 6c 6f 73 65 73 74 20 6d 61 74  ing (closest mat
b640: 63 68 29 20 44 62 54 79 70 65 3c 2f 72 65 74 75  ch) DbType</retu
b650: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
b660: 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65  al static DbType
b670: 20 54 79 70 65 54 6f 44 62 54 79 70 65 28 54 79   TypeToDbType(Ty
b680: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
b690: 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74        TypeCode t
b6a0: 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  c = Type.GetType
b6b0: 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20 20  Code(typ);..    
b6c0: 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70 65    if (tc == Type
b6d0: 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20  Code.Object)..  
b6e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
b6f0: 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66  f (typ == typeof
b700: 28 62 79 74 65 5b 5d 29 29 20 72 65 74 75 72 6e  (byte[])) return
b710: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 3b 0d   DbType.Binary;.
b720: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
b730: 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29   == typeof(Guid)
b740: 29 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e  ) return DbType.
b750: 47 75 69 64 3b 0d 0a 20 20 20 20 20 20 20 20 72  Guid;..        r
b760: 65 74 75 72 6e 20 44 62 54 79 70 65 2e 53 74 72  eturn DbType.Str
b770: 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ing;..      }.. 
b780: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70       return _typ
b790: 65 74 6f 64 62 74 79 70 65 5b 28 69 6e 74 29 74  etodbtype[(int)t
b7a0: 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  c];..    }....  
b7b0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b7c0: 20 44 62 54 79 70 65 5b 5d 20 5f 74 79 70 65 74   DbType[] _typet
b7d0: 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a 20 20 20  odbtype = {..   
b7e0: 20 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74     DbType.Object
b7f0: 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30 29  ,   // Empty (0)
b800: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
b810: 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f 62 6a 65  inary,   // Obje
b820: 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20 44 62  ct (1)..      Db
b830: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
b840: 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20 20  / DBNull (2)..  
b850: 20 20 20 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65      DbType.Boole
b860: 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  an,  // Boolean 
b870: 28 33 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (3)..      DbTyp
b880: 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 43  e.SByte,    // C
b890: 68 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20 44  har (4)..      D
b8a0: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
b8b0: 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20  // SByte (5)..  
b8c0: 20 20 20 20 44 62 54 79 70 65 2e 42 79 74 65 2c      DbType.Byte,
b8d0: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36 29       // Byte (6)
b8e0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49  ..      DbType.I
b8f0: 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49 6e 74 31  nt16,    // Int1
b900: 36 20 28 37 29 0d 0a 20 20 20 20 20 20 44 62 54  6 (7)..      DbT
b910: 79 70 65 2e 55 49 6e 74 31 36 2c 20 20 20 2f 2f  ype.UInt16,   //
b920: 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20 20   UInt16 (8)..   
b930: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c     DbType.Int32,
b940: 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 39 29      // Int32 (9)
b950: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
b960: 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55 49 6e 74  Int32,   // UInt
b970: 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20 44  32 (10)..      D
b980: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 20 20 20  bType.Int64,    
b990: 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20  // Int64 (11).. 
b9a0: 20 20 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74       DbType.UInt
b9b0: 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74 36 34 20  64,   // UInt64 
b9c0: 28 31 32 29 0d 0a 20 20 20 20 20 20 44 62 54 79  (12)..      DbTy
b9d0: 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20 2f 2f 20  pe.Single,   // 
b9e0: 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20  Single (13)..   
b9f0: 20 20 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65     DbType.Double
ba00: 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31  ,   // Double (1
ba10: 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  4)..      DbType
ba20: 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f 20 44 65  .Decimal,  // De
ba30: 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20  cimal (15)..    
ba40: 20 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d    DbType.DateTim
ba50: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
ba60: 31 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  16)..      DbTyp
ba70: 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 3f  e.Object,   // ?
ba80: 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20 44 62  ? (17)..      Db
ba90: 54 79 70 65 2e 53 74 72 69 6e 67 20 20 20 20 2f  Type.String    /
baa0: 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a 20  / String (18).. 
bab0: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
bac0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
bad0: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
bae0: 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f 72 20 74  ColumnSize for t
baf0: 68 65 20 67 69 76 65 6e 20 44 62 54 79 70 65 0d  he given DbType.
bb00: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
bb10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
bb20: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54  ram name="typ">T
bb30: 68 65 20 44 62 54 79 70 65 20 74 6f 20 67 65 74  he DbType to get
bb40: 20 74 68 65 20 73 69 7a 65 20 6f 66 3c 2f 70 61   the size of</pa
bb50: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
bb60: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
bb70: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
bb80: 73 74 61 74 69 63 20 69 6e 74 20 44 62 54 79 70  static int DbTyp
bb90: 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65 28 44 62  eToColumnSize(Db
bba0: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
bbb0: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
bbc0: 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69  dbtypetocolumnsi
bbd0: 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20  ze[(int)typ];.. 
bbe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
bbf0: 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 5b 5d  ate static int[]
bc00: 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e   _dbtypetocolumn
bc10: 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20  size = {..      
bc20: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
bc30: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
bc40: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
bc50: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
bc60: 31 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20  1)..      1,    
bc70: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
bc80: 28 32 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20  (2)..      1,   
bc90: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 6f 6f 6c           // Bool
bca0: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 38  ean (3)..      8
bcb0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
bcc0: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
bcd0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bce0: 20 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20    // Date (5).. 
bcf0: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
bd00: 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28     // DateTime (
bd10: 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  6)..      8,    
bd20: 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d          // Decim
bd30: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 38 2c  al (7)..      8,
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
bd50: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
bd60: 20 31 36 2c 20 20 20 20 20 20 20 20 20 20 20 2f   16,           /
bd70: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
bd80: 20 20 32 2c 20 20 20 20 20 20 20 20 20 20 20 20    2,            
bd90: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
bda0: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
bdb0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
bdc0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bdd0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
bde0: 31 32 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  12)..      int.M
bdf0: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  axValue, // Obje
be00: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 31  ct (13)..      1
be10: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
be20: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
be30: 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20    4,            
be40: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
be50: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
be60: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
be70: 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  6)..      8,    
be80: 20 20 20 20 20 20 20 20 2f 2f 20 54 69 6d 65 20          // Time 
be90: 28 31 37 29 0d 0a 20 20 20 20 20 20 32 2c 20 20  (17)..      2,  
bea0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
beb0: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
bec0: 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  4,            //
bed0: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
bee0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bef0: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
bf00: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bf10: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
bf20: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
bf30: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
bf40: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
bf50: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
bf60: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bf70: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
bf80: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
bf90: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
bfa0: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
bfb0: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 20 20    int.MaxValue  
bfc0: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
bfd0: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72   };....    inter
bfe0: 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63  nal static objec
bff0: 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69  t DbTypeToNumeri
c000: 63 50 72 65 63 69 73 69 6f 6e 28 44 62 54 79 70  cPrecision(DbTyp
c010: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
c020: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74       return _dbt
c030: 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63  ypetonumericprec
c040: 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79 70 5d 3b  ision[(int)typ];
c050: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
c060: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
c070: 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f  ject[] _dbtypeto
c080: 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e  numericprecision
c090: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
c0a0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c0b0: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
c0c0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c0d0: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
c0e0: 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20 20        3,        
c0f0: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
c100: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c110: 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  lue, // Boolean 
c120: 28 33 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20  (3)..      19,  
c130: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
c140: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
c150: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c160: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
c170: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c180: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
c190: 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20        53,       
c1a0: 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28      // Decimal (
c1b0: 37 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20  7)..      53,   
c1c0: 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c          // Doubl
c1d0: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (8)..      DBN
c1e0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47 75  ull.Value, // Gu
c1f0: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 35 2c  id (9)..      5,
c200: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
c210: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
c220: 20 31 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f   10,           /
c230: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
c240: 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20      19,         
c250: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
c260: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c270: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
c280: 31 33 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20  13)..      3,   
c290: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
c2a0: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 32 34  e (14)..      24
c2b0: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53  ,           // S
c2c0: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
c2d0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c2e0: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
c2f0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c300: 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29  ue, // Time (17)
c310: 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20 20  ..      5,      
c320: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
c330: 28 31 38 29 0d 0a 20 20 20 20 20 20 31 30 2c 20  (18)..      10, 
c340: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c350: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
c360: 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  19,           //
c370: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
c380: 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20 20      53,         
c390: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
c3a0: 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (21)..      DBNu
c3b0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c3c0: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
c3d0: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 44  th (22)..      D
c3e0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c3f0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
c400: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44 42  h (23)..      DB
c410: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f  Null.Value, // ?
c420: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44 42  ? (24)..      DB
c430: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 58  Null.Value  // X
c440: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
c450: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
c460: 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62  static object Db
c470: 54 79 70 65 54 6f 4e 75 6d 65 72 69 63 53 63 61  TypeToNumericSca
c480: 6c 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a  le(DbType typ)..
c490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
c4a0: 75 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d  urn _dbtypetonum
c4b0: 65 72 69 63 73 63 61 6c 65 5b 28 69 6e 74 29 74  ericscale[(int)t
c4c0: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  yp];..    }.... 
c4d0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c4e0: 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79  c object[] _dbty
c4f0: 70 65 74 6f 6e 75 6d 65 72 69 63 73 63 61 6c 65  petonumericscale
c500: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
c510: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c520: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
c530: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c540: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
c550: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
c560: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
c570: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c580: 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  lue, // Boolean 
c590: 28 33 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20  (3)..      4,   
c5a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
c5b0: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
c5c0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c5d0: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
c5e0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c5f0: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
c600: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c610: 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28  ue, // Decimal (
c620: 37 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  7)..      DBNull
c630: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f 75 62 6c  .Value, // Doubl
c640: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (8)..      DBN
c650: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47 75  ull.Value, // Gu
c660: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 30 2c  id (9)..      0,
c670: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
c680: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
c690: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
c6a0: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
c6b0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c6c0: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
c6d0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c6e0: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
c6f0: 31 33 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  13)..      0,   
c700: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
c710: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 42  e (14)..      DB
c720: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
c730: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
c740: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c750: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
c760: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c770: 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29  ue, // Time (17)
c780: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
c790: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
c7a0: 28 31 38 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (18)..      0,  
c7b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c7c0: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
c7d0: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
c7e0: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
c7f0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c800: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
c810: 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (21)..      DBNu
c820: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c830: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
c840: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 44  th (22)..      D
c850: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c860: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
c870: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44 42  h (23)..      DB
c880: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f  Null.Value, // ?
c890: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44 42  ? (24)..      DB
c8a0: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 58  Null.Value  // X
c8b0: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
c8c0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
c8d0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
c8e0: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
c8f0: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79  ault database ty
c900: 70 65 20 6e 61 6d 65 20 74 6f 20 62 65 20 75 73  pe name to be us
c910: 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
c920: 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
c930: 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
c940: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
c950: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c960: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
c970: 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
c980: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
c990: 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
c9a0: 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e   for type mappin
c9b0: 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  gs, if any...   
c9c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
c9d0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
c9e0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
c9f0: 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74  fault database t
ca00: 79 70 65 20 6e 61 6d 65 20 74 6f 20 75 73 65 2e  ype name to use.
ca10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
ca20: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
ca30: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
ca40: 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e 61  GetDefaultTypeNa
ca50: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  me(..        SQL
ca60: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
ca70: 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  nnection..      
ca80: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
ca90: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
caa0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 20  tionFlags flags 
cab0: 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  = (connection !=
cac0: 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
cad0: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
cae0: 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69 74 65 43  .Flags : SQLiteC
caf0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
cb00: 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  one;....        
cb10: 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
cb20: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
cb30: 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
cb40: 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ings)..         
cb50: 20 20 20 20 20 20 20 3d 3d 20 53 51 4c 69 74 65         == SQLite
cb60: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
cb70: 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
cb80: 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  s)..        {.. 
cb90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cba0: 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  n FallbackDefaul
cbb0: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
cbc0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
cbd0: 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22   string name = "
cbe0: 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72  Use_SQLiteConver
cbf0: 74 5f 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  t_DefaultTypeNam
cc00: 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  e";..        obj
cc10: 65 63 74 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ect value = null
cc20: 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ;..        strin
cc30: 67 20 40 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c  g @default = nul
cc40: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
cc50: 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d   ((connection ==
cc60: 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
cc70: 20 20 20 20 20 20 20 21 63 6f 6e 6e 65 63 74 69         !connecti
cc80: 6f 6e 2e 54 72 79 47 65 74 43 61 63 68 65 64 53  on.TryGetCachedS
cc90: 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65  etting(name, @de
cca0: 66 61 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65  fault, out value
ccb0: 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
ccc0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
ccf0: 61 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74  alue = UnsafeNat
cd00: 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65  iveMethods.GetSe
cd10: 74 74 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c  ttingValue(name,
cd20: 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20   @default);.... 
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cd40: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
cd50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
cd60: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46         value = F
cd70: 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 54 79  allbackDefaultTy
cd80: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
cd90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cda0: 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
cdb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
cdd0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75  connection != nu
cde0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
cdf0: 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
ce00: 69 6f 6e 2e 53 65 74 43 61 63 68 65 64 53 65 74  ion.SetCachedSet
ce10: 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65  ting(name, value
ce20: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ce30: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
ce40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
ce50: 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72  ettingValueToStr
ce60: 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ing(value);..   
ce70: 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43   }....#if !NET_C
ce80: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ce90: 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20  CE_WARNING..    
cea0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ceb0: 20 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63     /// If applic
cec0: 61 62 6c 65 2c 20 69 73 73 75 65 73 20 61 20 74  able, issues a t
ced0: 72 61 63 65 20 6c 6f 67 20 6d 65 73 73 61 67 65  race log message
cee0: 20 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20 66   warning about f
cef0: 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 0d 0a  alling back to..
cf00: 20 20 20 20 2f 2f 2f 20 74 68 65 20 64 65 66 61      /// the defa
cf10: 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
cf20: 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e name...    ///
cf30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
cf40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
cf50: 3d 22 64 62 54 79 70 65 22 3e 0d 0a 20 20 20 20  ="dbType">..    
cf60: 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65  /// The database
cf70: 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20   value type...  
cf80: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
cf90: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cfa0: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
cfb0: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
cfc0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
cfd0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
cfe0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
cff0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d000: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d010: 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e  name="typeName">
d020: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
d030: 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68  xtual name of th
d040: 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65 2e  e database type.
d050: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d060: 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  m>..    private 
d070: 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 66 61  static void Defa
d080: 75 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69  ultTypeNameWarni
d090: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 44 62 54  ng(..        DbT
d0a0: 79 70 65 20 64 62 54 79 70 65 2c 0d 0a 20 20 20  ype dbType,..   
d0b0: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
d0c0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
d0d0: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
d0e0: 67 20 74 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20  g typeName..    
d0f0: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
d100: 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73        if ((flags
d110: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
d120: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
d130: 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65  rning) == SQLite
d140: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d150: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 0d 0a 20  TraceWarning).. 
d160: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d170: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
d180: 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
d190: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
d1a0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
d1b0: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
d1c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d1d0: 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79 70     "WARNING: Typ
d1e0: 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65 64  e mapping failed
d1f0: 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66 61  , returning defa
d200: 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22  ult name \"{0}\"
d210: 20 66 6f 72 20 74 79 70 65 20 7b 31 7d 2e 22 2c   for type {1}.",
d220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d230: 20 20 74 79 70 65 4e 61 6d 65 2c 20 64 62 54 79    typeName, dbTy
d240: 70 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  pe));..        }
d250: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
d260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d270: 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63 61    /// If applica
d280: 62 6c 65 2c 20 69 73 73 75 65 73 20 61 20 74 72  ble, issues a tr
d290: 61 63 65 20 6c 6f 67 20 6d 65 73 73 61 67 65 20  ace log message 
d2a0: 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20 66 61  warning about fa
d2b0: 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 0d 0a 20  lling back to.. 
d2c0: 20 20 20 2f 2f 2f 20 74 68 65 20 64 65 66 61 75     /// the defau
d2d0: 6c 74 20 64 61 74 61 62 61 73 65 20 76 61 6c 75  lt database valu
d2e0: 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e type...    ///
d2f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d300: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d310: 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="typeName">..  
d320: 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
d330: 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  l name of the da
d340: 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20  tabase type...  
d350: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d360: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d370: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
d380: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
d390: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
d3a0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
d3b0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
d3c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d3d0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d3e0: 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d 0a  name="dbType">..
d3f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
d400: 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e  base value type.
d410: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d420: 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  m>..    private 
d430: 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 66 61  static void Defa
d440: 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67  ultDbTypeWarning
d450: 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
d460: 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20  g typeName,..   
d470: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
d480: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
d490: 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70  ,..        DbTyp
d4a0: 65 3f 20 64 62 54 79 70 65 0d 0a 20 20 20 20 20  e? dbType..     
d4b0: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
d4c0: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
d4d0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
d4e0: 79 70 65 4e 61 6d 65 29 20 26 26 0d 0a 20 20 20  ypeName) &&..   
d4f0: 20 20 20 20 20 20 20 20 20 28 28 66 6c 61 67 73           ((flags
d500: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
d510: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
d520: 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65  rning) == SQLite
d530: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d540: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d 0a  TraceWarning))..
d550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d560: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
d570: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
d580: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
d590: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
d5a0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
d5b0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
d5c0: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
d5d0: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
d5e0: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
d5f0: 61 75 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f  ault type {0} fo
d600: 72 20 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22  r name \"{1}\"."
d610: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d620: 20 20 20 64 62 54 79 70 65 2c 20 74 79 70 65 4e     dbType, typeN
d630: 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ame));..        
d640: 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  }..    }..#endif
d650: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
d660: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46  mary>..    /// F
d670: 6f 72 20 61 20 67 69 76 65 6e 20 64 61 74 61 62  or a given datab
d680: 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2c 20  ase value type, 
d690: 72 65 74 75 72 6e 20 74 68 65 20 22 63 6c 6f 73  return the "clos
d6a0: 65 73 74 2d 6d 61 74 63 68 22 20 74 65 78 74 75  est-match" textu
d6b0: 61 6c 20 64 61 74 61 62 61 73 65 20 74 79 70 65  al database type
d6c0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   name...    /// 
d6d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d6e0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d6f0: 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65  "connection">The
d700: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
d710: 65 78 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74  ext for custom t
d720: 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66  ype mappings, if
d730: 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20   any.</param>.. 
d740: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d750: 6d 65 3d 22 64 62 54 79 70 65 22 3e 54 68 65 20  me="dbType">The 
d760: 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74  database value t
d770: 79 70 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ype.</param>..  
d780: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d790: 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c  e="flags">The fl
d7a0: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
d7b0: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
d7c0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
d7d0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
d7e0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
d7f0: 74 79 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e 20  type name or an 
d800: 65 6d 70 74 79 20 73 74 72 69 6e 67 20 69 66 20  empty string if 
d810: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
d820: 65 72 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72 6e  ermined.</return
d830: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
d840: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44   static string D
d850: 62 54 79 70 65 54 6f 54 79 70 65 4e 61 6d 65 28  bTypeToTypeName(
d860: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
d870: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
d880: 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
d890: 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a  DbType dbType,..
d8a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d8b0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
d8c0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
d8d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
d8e0: 74 72 69 6e 67 20 64 65 66 61 75 6c 74 54 79 70  tring defaultTyp
d8f0: 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  eName = null;...
d900: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
d910: 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
d920: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d930: 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c           flags |
d940: 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61  = connection.Fla
d950: 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  gs;....         
d960: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
d970: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d980: 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74  Flags.UseConnect
d990: 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c  ionTypes) == SQL
d9a0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d9b0: 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  gs.UseConnection
d9c0: 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20  Types)..        
d9d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d9e0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
d9f0: 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f  ypeMap connectio
da00: 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e  nTypeNames = con
da10: 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d  nection._typeNam
da20: 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  es;....         
da30: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
da40: 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21  ctionTypeNames !
da50: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
da60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
da90: 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ing value;....  
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dab0: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
dac0: 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
dad0: 56 61 6c 75 65 28 64 62 54 79 70 65 2c 20 6f 75  Value(dbType, ou
dae0: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db00: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
db10: 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  typeName;..     
db20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
db30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
db40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
db50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
db60: 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61  TE: Use the defa
db70: 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
db80: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 63  e name for the c
db90: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
dba0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
dbb0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54          defaultT
dbc0: 79 70 65 4e 61 6d 65 20 3d 20 63 6f 6e 6e 65 63  ypeName = connec
dbd0: 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70 65  tion.DefaultType
dbe0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Name;..        }
dbf0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
dc00: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
dc10: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
dc20: 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d  oGlobalTypes) ==
dc30: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
dc40: 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54  nFlags.NoGlobalT
dc50: 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ypes)..        {
dc60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
dc70: 20 28 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d   (defaultTypeNam
dc80: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dca0: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
dcb0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
dcc0: 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61     defaultTypeNa
dcd0: 6d 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 54  me = GetDefaultT
dce0: 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65 63 74 69  ypeName(connecti
dcf0: 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  on);....#if !NET
dd00: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
dd10: 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20  RACE_WARNING..  
dd20: 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
dd30: 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67  tTypeNameWarning
dd40: 28 64 62 54 79 70 65 2c 20 66 6c 61 67 73 2c 20  (dbType, flags, 
dd50: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 29  defaultTypeName)
dd60: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
dd70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
dd80: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b  defaultTypeName;
dd90: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
dda0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79         lock (_sy
ddb0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
ddc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ddd0: 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d  if (_typeNames =
dde0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ddf0: 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61           _typeNa
de00: 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44  mes = GetSQLiteD
de10: 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20  bTypeMap();.... 
de20: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
de30: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
de40: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
de50: 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61       if (_typeNa
de60: 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
de70: 64 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75  dbType, out valu
de80: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
de90: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
dea0: 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  e.typeName;..   
deb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
dec0: 20 20 69 66 20 28 64 65 66 61 75 6c 74 54 79 70    if (defaultTyp
ded0: 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eName != null)..
dee0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
def0: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
df00: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64  me;....        d
df10: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
df20: 20 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e   GetDefaultTypeN
df30: 61 6d 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ame(connection);
df40: 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
df50: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
df60: 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
df70: 20 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d    DefaultTypeNam
df80: 65 57 61 72 6e 69 6e 67 28 64 62 54 79 70 65 2c  eWarning(dbType,
df90: 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 54   flags, defaultT
dfa0: 79 70 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69  ypeName);..#endi
dfb0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  f....        ret
dfc0: 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e  urn defaultTypeN
dfd0: 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ame;..    }.... 
dfe0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
dff0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
e000: 74 20 61 20 44 62 54 79 70 65 20 74 6f 20 61 20  t a DbType to a 
e010: 54 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  Type..    /// </
e020: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
e030: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
e040: 79 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74  yp">The DbType t
e050: 6f 20 63 6f 6e 76 65 72 74 20 66 72 6f 6d 3c 2f  o convert from</
e060: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
e070: 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 63 6c 6f  <returns>The clo
e080: 73 65 73 74 2d 6d 61 74 63 68 20 2e 4e 45 54 20  sest-match .NET 
e090: 74 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  type</returns>..
e0a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e0b0: 74 69 63 20 54 79 70 65 20 44 62 54 79 70 65 54  tic Type DbTypeT
e0c0: 6f 54 79 70 65 28 44 62 54 79 70 65 20 74 79 70  oType(DbType typ
e0d0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
e0e0: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 54 6f  return _dbtypeTo
e0f0: 54 79 70 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d  Type[(int)typ];.
e100: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
e110: 69 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70  ivate static Typ
e120: 65 5b 5d 20 5f 64 62 74 79 70 65 54 6f 54 79 70  e[] _dbtypeToTyp
e130: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70  e = {..      typ
e140: 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f  eof(string),   /
e150: 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29  / AnsiString (0)
e160: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
e170: 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 69 6e  yte[]),   // Bin
e180: 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74  ary (1)..      t
e190: 79 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20  ypeof(byte),    
e1a0: 20 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20   // Byte (2)..  
e1b0: 20 20 20 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29      typeof(bool)
e1c0: 2c 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e  ,     // Boolean
e1d0: 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (3)..      type
e1e0: 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f  of(decimal),  //
e1f0: 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20   Currency (4).. 
e200: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
e210: 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 20 28  Time), // Date (
e220: 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  5)..      typeof
e230: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44  (DateTime), // D
e240: 61 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20  ateTime (6)..   
e250: 20 20 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61     typeof(decima
e260: 6c 29 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20  l),  // Decimal 
e270: 28 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (7)..      typeo
e280: 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20  f(double),   // 
e290: 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20  Double (8)..    
e2a0: 20 20 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20    typeof(Guid), 
e2b0: 20 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d      // Guid (9).
e2c0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
e2d0: 74 31 36 29 2c 20 20 20 20 2f 2f 20 49 6e 74 31  t16),    // Int1
e2e0: 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79  6 (10)..      ty
e2f0: 70 65 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20  peof(Int32),    
e300: 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20  // Int32 (11).. 
e310: 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36       typeof(Int6
e320: 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20  4),    // Int64 
e330: 28 31 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (12)..      type
e340: 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f  of(object),   //
e350: 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20   Object (13)..  
e360: 20 20 20 20 74 79 70 65 6f 66 28 73 62 79 74 65      typeof(sbyte
e370: 29 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28  ),    // SByte (
e380: 31 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  14)..      typeo
e390: 66 28 66 6c 6f 61 74 29 2c 20 20 20 20 2f 2f 20  f(float),    // 
e3a0: 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20  Single (15)..   
e3b0: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e3c0: 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28  ),   // String (
e3d0: 31 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  16)..      typeo
e3e0: 66 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20  f(DateTime), // 
e3f0: 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20  Time (17)..     
e400: 20 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c   typeof(UInt16),
e410: 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38     // UInt16 (18
e420: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e430: 55 49 6e 74 33 32 29 2c 20 20 20 2f 2f 20 55 49  UInt32),   // UI
e440: 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20  nt32 (19)..     
e450: 20 74 79 70 65 6f 66 28 55 49 6e 74 36 34 29 2c   typeof(UInt64),
e460: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30     // UInt64 (20
e470: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e480: 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 56 61  double),   // Va
e490: 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20  rNumeric (21).. 
e4a0: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
e4b0: 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74  ng),   // AnsiSt
e4c0: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20  ringFixedLength 
e4d0: 28 32 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (22)..      type
e4e0: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
e4f0: 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67   StringFixedLeng
e500: 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74  th (23)..      t
e510: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
e520: 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20   // ?? (24)..   
e530: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e540: 29 2c 20 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29  ),   // Xml (25)
e550: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
e560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e570: 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76     /// For a giv
e580: 65 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20  en type, return 
e590: 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63  the closest-matc
e5a0: 68 20 53 51 4c 69 74 65 20 54 79 70 65 41 66 66  h SQLite TypeAff
e5b0: 69 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c  inity, which onl
e5c0: 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20  y understands a 
e5d0: 76 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62  very limited sub
e5e0: 73 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20  set of types... 
e5f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e600: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
e610: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
e620: 20 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74   type to evaluat
e630: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
e640: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
e650: 53 51 4c 69 74 65 20 74 79 70 65 20 61 66 66 69  SQLite type affi
e660: 6e 69 74 79 20 66 6f 72 20 74 68 61 74 20 74 79  nity for that ty
e670: 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  pe.</returns>.. 
e680: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e690: 69 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  ic TypeAffinity 
e6a0: 54 79 70 65 54 6f 41 66 66 69 6e 69 74 79 28 54  TypeToAffinity(T
e6b0: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
e6c0: 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20  .      TypeCode 
e6d0: 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70  tc = Type.GetTyp
e6e0: 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20  eCode(typ);..   
e6f0: 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70     if (tc == Typ
e700: 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20  eCode.Object).. 
e710: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e720: 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f  if (typ == typeo
e730: 66 28 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79 70  f(byte[]) || typ
e740: 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29   == typeof(Guid)
e750: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  )..          ret
e760: 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  urn TypeAffinity
e770: 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20 20  .Blob;..        
e780: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
e790: 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e  return TypeAffin
e7a0: 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20 20  ity.Text;..     
e7b0: 20 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   }..      return
e7c0: 20 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69   _typecodeAffini
e7d0: 74 69 65 73 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a  ties[(int)tc];..
e7e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
e7f0: 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65  vate static Type
e800: 41 66 66 69 6e 69 74 79 5b 5d 20 5f 74 79 70 65  Affinity[] _type
e810: 63 6f 64 65 41 66 66 69 6e 69 74 69 65 73 20 3d  codeAffinities =
e820: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66   {..      TypeAf
e830: 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20  finity.Null,    
e840: 20 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20   // Empty (0).. 
e850: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
e860: 79 2e 42 6c 6f 62 2c 20 20 20 20 20 2f 2f 20 4f  y.Blob,     // O
e870: 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20  bject (1)..     
e880: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
e890: 6c 6c 2c 20 20 20 20 20 2f 2f 20 44 42 4e 75 6c  ll,     // DBNul
e8a0: 6c 20 28 32 29 0d 0a 20 20 20 20 20 20 54 79 70  l (2)..      Typ
e8b0: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e8c0: 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28      // Boolean (
e8d0: 33 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  3)..      TypeAf
e8e0: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
e8f0: 20 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20   // Char (4)..  
e900: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
e910: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 53 42  .Int64,    // SB
e920: 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 54  yte (5)..      T
e930: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
e940: 34 2c 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36  4,    // Byte (6
e950: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
e960: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
e970: 2f 2f 20 49 6e 74 31 36 20 28 37 29 0d 0a 20 20  // Int16 (7)..  
e980: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
e990: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
e9a0: 6e 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20  nt16 (8)..      
e9b0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
e9c0: 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20  64,    // Int32 
e9d0: 28 39 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (9)..      TypeA
e9e0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
e9f0: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 30 29    // UInt32 (10)
ea00: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
ea10: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
ea20: 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20 20  / Int64 (11)..  
ea30: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ea40: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
ea50: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
ea60: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f   TypeAffinity.Do
ea70: 75 62 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c  uble,   // Singl
ea80: 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 54 79  e (13)..      Ty
ea90: 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c  peAffinity.Doubl
eaa0: 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28  e,   // Double (
eab0: 31 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  14)..      TypeA
eac0: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20  ffinity.Double, 
ead0: 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 31 35    // Decimal (15
eae0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
eaf0: 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 20  inity.DateTime, 
eb00: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29  // DateTime (16)
eb10: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
eb20: 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f  nity.Null,     /
eb30: 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20  / ?? (17)..     
eb40: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
eb50: 78 74 20 20 20 20 20 20 2f 2f 20 53 74 72 69 6e  xt      // Strin
eb60: 67 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a  g (18)..    };..
eb70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
eb80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69  ry>..    /// Bui
eb90: 6c 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  lds and returns 
eba0: 61 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67  a map containing
ebb0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
ebc0: 6c 75 6d 6e 20 74 79 70 65 73 0d 0a 20 20 20 20  lumn types..    
ebd0: 2f 2f 2f 20 72 65 63 6f 67 6e 69 7a 65 64 20 62  /// recognized b
ebe0: 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e  y this provider.
ebf0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ec00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
ec10: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
ec20: 20 41 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e   A map containin
ec30: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  g the database c
ec40: 6f 6c 75 6d 6e 20 74 79 70 65 73 20 72 65 63 6f  olumn types reco
ec50: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a  gnized by this..
ec60: 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 72      /// provider
ec70: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
ec80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
ec90: 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65  te static SQLite
eca0: 44 62 54 79 70 65 4d 61 70 20 47 65 74 53 51 4c  DbTypeMap GetSQL
ecb0: 69 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a  iteDbTypeMap()..
ecc0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
ecd0: 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
ece0: 44 62 54 79 70 65 4d 61 70 28 6e 65 77 20 53 51  DbTypeMap(new SQ
ecf0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
ed00: 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  g[] {..         
ed10: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ed20: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 49  ypeMapping("BIGI
ed30: 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  NT", DbType.Int6
ed40: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
ed50: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ed60: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ed70: 22 42 49 47 55 49 4e 54 22 2c 20 44 62 54 79 70  "BIGUINT", DbTyp
ed80: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
ed90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
eda0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
edb0: 61 70 70 69 6e 67 28 22 42 49 4e 41 52 59 22 2c  apping("BINARY",
edc0: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
edd0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
ede0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
edf0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49  bTypeMapping("BI
ee00: 54 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  T", DbType.Boole
ee10: 61 6e 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  an, true),..    
ee20: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ee30: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ee40: 22 42 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 42  "BLOB", DbType.B
ee50: 69 6e 61 72 79 2c 20 74 72 75 65 29 2c 0d 0a 20  inary, true),.. 
ee60: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ee70: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ee80: 6e 67 28 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70  ng("BOOL", DbTyp
ee90: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65  e.Boolean, false
eea0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
eeb0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
eec0: 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c 45 41 4e  Mapping("BOOLEAN
eed0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
eee0: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
eef0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ef00: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ef10: 22 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41  "CHAR", DbType.A
ef20: 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65  nsiStringFixedLe
ef30: 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20  ngth, true),..  
ef40: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
ef50: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
ef60: 67 28 22 43 4c 4f 42 22 2c 20 44 62 54 79 70 65  g("CLOB", DbType
ef70: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
ef80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ef90: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
efa0: 70 70 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 2c  pping("COUNTER",
efb0: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66   DbType.Int64, f
efc0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
efd0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
efe0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 55 52  TypeMapping("CUR
eff0: 52 45 4e 43 59 22 2c 20 44 62 54 79 70 65 2e 44  RENCY", DbType.D
f000: 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
f010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f020: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f030: 70 69 6e 67 28 22 44 41 54 45 22 2c 20 44 62 54  ping("DATE", DbT
f040: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61  ype.DateTime, fa
f050: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f060: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f070: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45  ypeMapping("DATE
f080: 54 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61  TIME", DbType.Da
f090: 74 65 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d 0a  teTime, true),..
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f0b0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f0c0: 69 6e 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 44  ing("DECIMAL", D
f0d0: 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 74  bType.Decimal, t
f0e0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
f0f0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f100: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42  ypeMapping("DOUB
f110: 4c 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62  LE", DbType.Doub
f120: 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  le, false),..   
f130: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f140: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f150: 28 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65  ("FLOAT", DbType
f160: 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c  .Double, false),
f170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f180: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f190: 70 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c  pping("GENERAL",
f1a0: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
f1b0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f1c0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f1d0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55  bTypeMapping("GU
f1e0: 49 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64  ID", DbType.Guid
f1f0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f200: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f210: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f220: 49 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70  IDENTITY", DbTyp
f230: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
f240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f250: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f260: 70 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44  pping("IMAGE", D
f270: 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
f280: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f290: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f2a0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22  ypeMapping("INT"
f2b0: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
f2c0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f2d0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f2e0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54  TypeMapping("INT
f2f0: 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65  8", DbType.SByte
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: 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49  INT16", DbType.I
f340: 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt16, false),.. 
f350: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f360: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f370: 6e 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79  ng("INT32", DbTy
f380: 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  pe.Int32, false)
f390: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f3a0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f3b0: 61 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20  apping("INT64", 
f3c0: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61  DbType.Int64, fa
f3d0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f3e0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f3f0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
f400: 47 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  GER", DbType.Int
f410: 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  64, true),..    
f420: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f430: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f440: 22 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79  "INTEGER8", DbTy
f450: 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29  pe.SByte, false)
f460: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f470: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f480: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31  apping("INTEGER1
f490: 36 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36  6", DbType.Int16
f4a0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f4b0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f4c0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f4d0: 49 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79  INTEGER32", DbTy
f4e0: 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  pe.Int32, false)
f4f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f500: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f510: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36  apping("INTEGER6
f520: 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  4", DbType.Int64
f530: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f540: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f550: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f560: 4c 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65  LOGICAL", DbType
f570: 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29  .Boolean, false)
f580: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f590: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f5a0: 61 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44  apping("LONG", D
f5b0: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
f5c0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f5d0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f5e0: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43  peMapping("LONGC
f5f0: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72  HAR", DbType.Str
f600: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
f610: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f620: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f630: 67 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62  g("LONGTEXT", Db
f640: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
f650: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f660: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f670: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56  peMapping("LONGV
f680: 41 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e  ARCHAR", DbType.
f690: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
f6a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f6b0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f6c0: 70 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54  ping("MEMO", DbT
f6d0: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
f6e0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f6f0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f700: 65 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22  eMapping("MONEY"
f710: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
f720: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f730: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f740: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f750: 4e 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  NCHAR", DbType.S
f760: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
f770: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
f780: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f790: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
f7a0: 4f 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72  OTE", DbType.Str
f7b0: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
f7c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f7d0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f7e0: 67 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70  g("NTEXT", DbTyp
f7f0: 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  e.String, false)
f800: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f810: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f820: 61 70 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c  apping("NUMBER",
f830: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
f840: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f850: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f860: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
f870: 55 4d 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e  UMERIC", DbType.
f880: 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c  Decimal, false),
f890: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f8a0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f8b0: 70 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22  pping("NVARCHAR"
f8c0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f8d0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
f8e0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f8f0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c  bTypeMapping("OL
f900: 45 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65  EOBJECT", DbType
f910: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
f920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f930: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f940: 70 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54  pping("RAW", DbT
f950: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
f960: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f970: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f980: 65 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c  eMapping("REAL",
f990: 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20   DbType.Double, 
f9a0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f9b0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f9c0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e  TypeMapping("SIN
f9d0: 47 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e  GLE", DbType.Sin
f9e0: 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gle, true),..   
f9f0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fa00: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fa10: 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62  ("SMALLDATE", Db
fa20: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66  Type.DateTime, f
fa30: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fa40: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fa50: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
fa60: 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  LLINT", DbType.I
fa70: 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt16, true),..  
fa80: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fa90: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
faa0: 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44  g("SMALLUINT", D
fab0: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72  bType.UInt16, tr
fac0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
fad0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fae0: 70 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e  peMapping("STRIN
faf0: 47 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  G", DbType.Strin
fb00: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
fb10: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fb20: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fb30: 22 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53  "TEXT", DbType.S
fb40: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fb60: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fb70: 69 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79  ing("TIME", DbTy
fb80: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
fb90: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fba0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fbb0: 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53  peMapping("TIMES
fbc0: 54 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61  TAMP", DbType.Da
fbd0: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
fbe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fbf0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fc00: 70 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20  ping("TINYINT", 
fc10: 44 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75  DbType.Byte, tru
fc20: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fc30: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fc40: 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49  eMapping("TINYSI
fc50: 4e 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  NT", DbType.SByt
fc60: 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
fc70: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fc80: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fc90: 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49  UINT", DbType.UI
fca0: 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
fcb0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fcc0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fcd0: 67 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70  g("UINT8", DbTyp
fce0: 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
fcf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fd00: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fd10: 70 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44  ping("UINT16", D
fd20: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61  bType.UInt16, fa
fd30: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
fd40: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fd50: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
fd60: 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  32", DbType.UInt
fd70: 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
fd80: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fd90: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fda0: 28 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70  ("UINT64", DbTyp
fdb0: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
fdc0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fdd0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fde0: 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20  apping("ULONG", 
fdf0: 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66  DbType.UInt64, f
fe00: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fe10: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fe20: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49  TypeMapping("UNI
fe30: 51 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20  QUEIDENTIFIER", 
fe40: 44 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75  DbType.Guid, tru
fe50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fe60: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fe70: 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
fe80: 45 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  EDINTEGER", DbTy
fe90: 70 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29  pe.UInt64, true)
fea0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
feb0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fec0: 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
fed0: 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
fee0: 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
fef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ff00: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ff10: 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
ff20: 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
ff30: 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  .UInt16, false),
ff40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ff50: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ff60: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
ff70: 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
ff80: 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  e.UInt32, false)
ff90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
ffa0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
ffb0: 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
ffc0: 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79  INTEGER64", DbTy
ffd0: 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65  pe.UInt64, false
ffe0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fff0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10000 4d 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41  Mapping("VARBINA
10010 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  RY", DbType.Bina
10020 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
10030 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10040 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10050 28 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  ("VARCHAR", DbTy
10060 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74  pe.AnsiString, t
10070 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
10080 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10090 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43  ypeMapping("VARC
100a0 48 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e  HAR2", DbType.An
100b0 73 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  siString, false)
100c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
100d0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
100e0 61 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20  apping("YESNO", 
100f0 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
10100 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20  false)..        
10110 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  });..    }....  
10120 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10130 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10140 6e 65 73 20 69 66 20 61 20 64 61 74 61 62 61 73  nes if a databas
10150 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
10160 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
10170 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
10180 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10190 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
101a0 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ype">..    /// T
101b0 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65  he database type
101c0 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20   to check...    
101d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
101e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
101f0 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
10200 6f 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73  o if the databas
10210 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
10220 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
10230 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20 20 20 2f  ing, zero..    /
10240 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  // otherwise... 
10250 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10260 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
10270 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 74  static bool IsSt
10280 72 69 6e 67 44 62 54 79 70 65 28 0d 0a 20 20 20  ringDbType(..   
10290 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
102a0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
102b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
102c0 63 68 20 28 74 79 70 65 29 0d 0a 20 20 20 20 20  ch (type)..     
102d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
102e0 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e    case DbType.An
102f0 73 69 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20  siString:..     
10300 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79         case DbTy
10310 70 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20  pe.String:..    
10320 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10330 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69  ype.AnsiStringFi
10340 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20  xedLength:..    
10350 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10360 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c  ype.StringFixedL
10370 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20  ength:..        
10380 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
10390 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
103a0 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
103b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
103c0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
103d0 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
103e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
103f0 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
10400 69 6e 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ines and returns
10410 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
10420 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
10430 6e 67 20 73 74 72 69 6e 67 20 74 68 61 74 0d 0a  ng string that..
10440 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62      /// should b
10450 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20  e used in place 
10460 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
10470 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2e 0d 0a   object value...
10480 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10490 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
104a0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
104b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62  ..    /// The ob
104c0 6a 65 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f  ject value to co
104d0 6e 76 65 72 74 20 74 6f 20 61 20 73 74 72 69 6e  nvert to a strin
104e0 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  g...    /// </pa
104f0 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
10500 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
10510 20 45 69 74 68 65 72 20 74 68 65 20 73 74 72 69   Either the stri
10520 6e 67 20 74 6f 20 75 73 65 20 69 6e 20 70 6c 61  ng to use in pla
10530 63 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74  ce of the object
10540 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c   value -OR- null
10550 20 69 66 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20   if it..    /// 
10560 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
10570 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ined...    /// <
10580 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
10590 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
105a0 72 69 6e 67 20 53 65 74 74 69 6e 67 56 61 6c 75  ring SettingValu
105b0 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  eToString(..    
105c0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
105d0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
105e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
105f0 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29  value is string)
10600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
10610 74 75 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c  turn (string)val
10620 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
10630 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
10640 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
10650 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74  eturn value.ToSt
10660 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ring();....     
10670 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
10680 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
10690 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
106a0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
106b0 74 68 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65  the default <see
106c0 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
106d0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 75 73  > value to be us
106e0 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
106f0 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
10700 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
10710 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
10720 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
10740 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
10750 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
10760 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
10770 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e   for type mappin
10780 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  gs, if any...   
10790 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
107a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
107b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
107c0 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d  fault <see cref=
107d0 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
107e0 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f  e to use...    /
107f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10800 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10810 63 20 44 62 54 79 70 65 20 47 65 74 44 65 66 61  c DbType GetDefa
10820 75 6c 74 44 62 54 79 70 65 28 0d 0a 20 20 20 20  ultDbType(..    
10830 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
10840 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  tion connection.
10850 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
10860 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  {..        SQLit
10870 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
10880 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e 6e 65 63   flags = (connec
10890 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  tion != null) ?.
108a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
108b0 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 20 3a 20  nection.Flags : 
108c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
108d0 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20  Flags.None;.... 
108e0 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
108f0 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
10900 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76  tionFlags.NoConv
10910 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a 20 20  ertSettings)..  
10920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 3d                ==
10930 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
10940 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74  nFlags.NoConvert
10950 53 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20  Settings)..     
10960 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10970 20 20 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63    return Fallbac
10980 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  kDefaultDbType;.
10990 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
109a0 20 20 20 20 20 20 62 6f 6f 6c 20 66 6f 75 6e 64        bool found
109b0 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
109c0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d     string name =
109d0 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76   "Use_SQLiteConv
109e0 65 72 74 5f 44 65 66 61 75 6c 74 44 62 54 79 70  ert_DefaultDbTyp
109f0 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  e";..        obj
10a00 65 63 74 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ect value = null
10a10 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ;..        strin
10a20 67 20 40 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c  g @default = nul
10a30 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
10a40 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d   ((connection ==
10a50 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
10a60 20 20 20 20 20 20 20 21 63 6f 6e 6e 65 63 74 69         !connecti
10a70 6f 6e 2e 54 72 79 47 65 74 43 61 63 68 65 64 53  on.TryGetCachedS
10a80 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65  etting(name, @de
10a90 66 61 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65  fault, out value
10aa0 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
10ab0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
10ac0 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
10ad0 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e  ethods.GetSettin
10ae0 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65  gValue(name, @de
10af0 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  fault);....     
10b00 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
10b10 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
10b20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
10b30 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75   = FallbackDefau
10b40 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20  ltDbType;..     
10b50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c     }..        el
10b60 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  se..        {.. 
10b70 20 20 20 20 20 20 20 20 20 20 20 66 6f 75 6e 64             found
10b80 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
10b90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74    }....        t
10ba0 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
10bb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
10bc0 28 76 61 6c 75 65 20 69 73 20 44 62 54 79 70 65  (value is DbType
10bd0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
10be0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10bf0 20 20 20 76 61 6c 75 65 20 3d 20 53 51 4c 69 74     value = SQLit
10c00 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 50  eConnection.TryP
10c10 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20  arseEnum(..     
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
10c30 79 70 65 6f 66 28 44 62 54 79 70 65 29 2c 20 53  ypeof(DbType), S
10c40 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72  ettingValueToStr
10c50 69 6e 67 28 76 61 6c 75 65 29 2c 20 74 72 75 65  ing(value), true
10c60 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10c70 20 20 20 20 20 20 69 66 20 28 21 28 76 61 6c 75        if (!(valu
10c80 65 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20  e is DbType)).. 
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ca0 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62     value = Fallb
10cb0 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65  ackDefaultDbType
10cc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
10cd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10ce0 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29 76  return (DbType)v
10cf0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alue;..        }
10d00 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
10d10 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
10d20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66            if (!f
10d30 6f 75 6e 64 20 26 26 20 28 63 6f 6e 6e 65 63 74  ound && (connect
10d40 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ion != null)).. 
10d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
10d60 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 43 61 63  onnection.SetCac
10d70 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c  hedSetting(name,
10d80 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
10d90 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
10da0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10db0 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10dc0 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69  nes if the speci
10dd0 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c  fied textual val
10de0 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  ue appears to be
10df0 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65   a..    /// <see
10e00 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f   cref="DBNull" /
10e10 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
10e20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e30 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
10e40 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
10e50 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76  // The textual v
10e60 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  alue to inspect.
10e70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
10e80 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
10e90 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
10ea0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74  on-zero if the t
10eb0 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61  ext looks like a
10ec0 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75   <see cref="DBNu
10ed0 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20  ll" /> value,.. 
10ee0 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65     /// zero othe
10ef0 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
10f00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
10f10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10f20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75  bool LooksLikeNu
10f30 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ll(..        str
10f40 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
10f50 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
10f60 20 20 20 20 72 65 74 75 72 6e 20 28 74 65 78 74      return (text
10f70 20 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20   == null);..    
10f80 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
10f90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10fa0 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
10fb0 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74  e specified text
10fc0 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72  ual value appear
10fd0 73 20 74 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20  s to be an..    
10fe0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
10ff0 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  nt64" /> value..
11000 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
11010 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
11020 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e  ram name="text">
11030 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
11040 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69  xtual value to i
11050 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  nspect...    ///
11060 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
11070 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
11080 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
11090 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73  f the text looks
110a0 20 6c 69 6b 65 20 61 6e 20 3c 73 65 65 20 63 72   like an <see cr
110b0 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
110c0 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65  lue,..    /// ze
110d0 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
110e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
110f0 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
11100 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b  static bool Look
11110 73 4c 69 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20  sLikeInt64(..   
11120 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
11130 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
11140 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67   {..        long
11150 20 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23   longValue;....#
11160 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11170 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11180 20 20 20 20 20 20 20 69 66 20 28 21 6c 6f 6e 67         if (!long
11190 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20  .TryParse(..    
111a0 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
111b0 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49  , NumberStyles.I
111c0 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49  nteger, CultureI
111d0 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
111e0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
111f0 20 20 20 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56         out longV
11200 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
11210 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
11220 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
11230 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
11240 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
11250 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11260 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20      longValue = 
11270 6c 6f 6e 67 2e 50 61 72 73 65 28 0d 0a 20 20 20  long.Parse(..   
11280 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78               tex
11290 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e  t, NumberStyles.
112a0 49 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65  Integer, Culture
112b0 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
112c0 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
112d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63   }..        catc
112e0 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  h..        {..  
112f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11300 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
11310 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
11320 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
11330 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20  ing.Equals(..   
11340 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c           longVal
11350 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  ue.ToString(Cult
11360 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
11370 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c  tCulture), text,
11380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74  ..            St
11390 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
113a0 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d  rdinal);..    }.
113b0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
113c0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
113d0 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
113e0 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61  specified textua
113f0 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20  l value appears 
11400 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f  to be a..    ///
11410 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
11420 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  le" /> value... 
11430 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11440 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
11450 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a  m name="text">..
11460 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74      /// The text
11470 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73  ual value to ins
11480 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  pect...    /// <
11490 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
114a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
114b0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
114c0 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c  the text looks l
114d0 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ike a <see cref=
114e0 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
114f0 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  e,..    /// zero
11500 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
11510 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
11520 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11530 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c  atic bool LooksL
11540 69 6b 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20  ikeDouble(..    
11550 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d      string text.
11560 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11570 7b 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c  {..        doubl
11580 65 20 64 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a  e doubleValue;..
11590 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
115a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
115b0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 64  ..        if (!d
115c0 6f 75 62 6c 65 2e 54 72 79 50 61 72 73 65 28 0d  ouble.TryParse(.
115d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
115e0 20 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79   text, NumberSty
115f0 6c 65 73 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62  les.Float | Numb
11600 65 72 53 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68  erStyles.AllowTh
11610 6f 75 73 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20  ousands,..      
11620 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
11630 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
11640 75 6c 74 75 72 65 2c 20 6f 75 74 20 64 6f 75 62  ulture, out doub
11650 6c 65 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  leValue))..     
11660 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11670 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73  .        }..#els
11690 65 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  e..        try..
116a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
116b0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c         doubleVal
116c0 75 65 20 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73  ue = double.Pars
116d0 65 28 74 65 78 74 2c 20 43 75 6c 74 75 72 65 49  e(text, CultureI
116e0 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
116f0 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ture);..        
11700 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
11710 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
11720 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11730 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
11740 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
11750 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
11760 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ng.Equals(..    
11770 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61          doubleVa
11780 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c  lue.ToString(Cul
11790 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
117a0 6e 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74  ntCulture), text
117b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
117c0 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
117d0 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d  Ordinal);..    }
117e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
117f0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
11800 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
11810 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75   specified textu
11820 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73  al value appears
11830 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f   to be a..    //
11840 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
11850 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
11860 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11870 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11880 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65  aram name="conve
11890 72 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rt">..    /// Th
118a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
118b0 69 74 65 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f  iteConvert" /> o
118c0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
118d0 6f 6e 66 69 67 75 72 65 64 20 77 69 74 68 0d 0a  onfigured with..
118e0 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73      /// the chos
118f0 65 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  en <see cref="Da
11900 74 65 54 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61  teTime" /> forma
11910 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
11920 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
11930 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22  aram name="text"
11940 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
11950 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20  extual value to 
11960 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f  inspect...    //
11970 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11980 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
11990 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
119a0 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b  if the text look
119b0 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72  s like a <see cr
119c0 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
119d0 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f   in the..    ///
119e0 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d   configured form
119f0 61 74 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  at, zero otherwi
11a00 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
11a10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
11a20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
11a30 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54  l LooksLikeDateT
11a40 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ime(..        SQ
11a50 4c 69 74 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76  LiteConvert conv
11a60 65 72 74 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ert,..        st
11a70 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20  ring text..     
11a80 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
11a90 20 20 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74       if (convert
11aa0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
11ab0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
11ac0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
11ad0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
11af0 54 69 6d 65 20 64 61 74 65 54 69 6d 65 56 61 6c  Time dateTimeVal
11b00 75 65 20 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44  ue = convert.ToD
11b10 61 74 65 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a  ateTime(text);..
11b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
11b30 20 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28   (String.Equals(
11b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b50 20 20 20 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f        convert.To
11b60 53 74 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56  String(dateTimeV
11b70 61 6c 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alue),..        
11b80 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
11b90 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73  , StringComparis
11ba0 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20  on.Ordinal))..  
11bb0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11bd0 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
11be0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11bf0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
11c00 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
11c10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
11c20 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
11c30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11c40 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
11c50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
11c60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
11c70 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74  // For a given t
11c80 65 78 74 75 61 6c 20 64 61 74 61 62 61 73 65 20  extual database 
11c90 74 79 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72  type name, retur
11ca0 6e 20 74 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d  n the "closest-m
11cb0 61 74 63 68 22 20 64 61 74 61 62 61 73 65 20 74  atch" database t
11cc0 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ype...    /// Th
11cd0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
11ce0 6c 65 64 20 64 75 72 69 6e 67 20 71 75 65 72 79  led during query
11cf0 20 72 65 73 75 6c 74 20 70 72 6f 63 65 73 73 69   result processi
11d00 6e 67 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 69  ng; therefore, i
11d10 74 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a  ts performance..
11d20 20 20 20 20 2f 2f 2f 20 69 73 20 63 72 69 74 69      /// is criti
11d30 63 61 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  cal...    /// </
11d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
11d50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
11d60 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63  onnection">The c
11d70 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78  onnection contex
11d80 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70  t for custom typ
11d90 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61  e mappings, if a
11da0 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ny.</param>..   
11db0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11dc0 3d 22 74 79 70 65 4e 61 6d 65 22 3e 54 68 65 20  ="typeName">The 
11dd0 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20  textual name of 
11de0 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  the database typ
11df0 65 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72  e to match.</par
11e00 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
11e10 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
11e20 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63  >The flags assoc
11e30 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
11e40 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
11e50 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e   object.</param>
11e60 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
11e70 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 79  ns>The .NET DBTy
11e80 70 65 20 74 68 65 20 74 65 78 74 20 65 76 61 6c  pe the text eval
11e90 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72  uates to.</retur
11ea0 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
11eb0 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20  l static DbType 
11ec0 54 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 65  TypeNameToDbType
11ed0 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  (..        SQLit
11ee0 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
11ef0 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ection,..       
11f00 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
11f10 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
11f20 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
11f30 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
11f40 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
11f50 20 20 44 62 54 79 70 65 3f 20 64 65 66 61 75 6c    DbType? defaul
11f60 74 44 62 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d  tDbType = null;.
11f70 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63  ...        if (c
11f80 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c  onnection != nul
11f90 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  l)..        {.. 
11fa0 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73             flags
11fb0 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46   |= connection.F
11fc0 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lags;....       
11fd0 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
11fe0 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
11ff0 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65  onFlags.UseConne
12000 63 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53  ctionTypes) == S
12010 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
12020 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69  lags.UseConnecti
12030 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20  onTypes)..      
12040 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12050 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
12060 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74  bTypeMap connect
12070 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63  ionTypeNames = c
12080 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e  onnection._typeN
12090 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ames;....       
120a0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
120b0 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
120c0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
120d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120f0 20 20 69 66 20 28 74 79 70 65 4e 61 6d 65 20 21    if (typeName !
12100 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12110 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12130 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62          SQLiteDb
12140 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75  TypeMapping valu
12150 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
12160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12170 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65   (connectionType
12180 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75  Names.TryGetValu
12190 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20  e(typeName, out 
121a0 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
121b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74  return value.dat
121f0 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  aType;..        
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12220 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
12230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12240 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12260 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
12270 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64  x = typeName.Ind
12280 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20  exOf('(');....  
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69            if ((i
122b0 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20  ndex > 0) &&..  
122c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
122e0 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
122f0 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
12300 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e 67  peName.Substring
12310 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d 45  (0, index).TrimE
12320 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75 65 29  nd(), out value)
12330 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12370 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64    return value.d
12380 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
12390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
123d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
123e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
123f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12400 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
12410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
12420 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61  TE: Use the defa
12430 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
12440 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  e for the connec
12450 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
12460 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12470 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
12480 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65   = connection.De
12490 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
124a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
124b0 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
124c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
124d0 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
124e0 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  pes) == SQLiteCo
124f0 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
12500 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a 20 20  GlobalTypes)..  
12510 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12520 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74       if (default
12530 44 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d  DbType != null).
12540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12550 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
12560 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  defaultDbType;..
12570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
12580 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65  faultDbType = Ge
12590 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 63  tDefaultDbType(c
125a0 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23  onnection);....#
125b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
125c0 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
125d0 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ING..           
125e0 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57 61   DefaultDbTypeWa
125f0 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65 2c 20  rning(typeName, 
12600 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 44 62  flags, defaultDb
12610 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Type);..#endif..
12620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
12630 74 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66  turn (DbType)def
12640 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20  aultDbType;..   
12650 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12660 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f    lock (_syncRoo
12670 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
12680 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f             if (_
12690 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c  typeNames == nul
126a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
126b0 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d      _typeNames =
126c0 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70 65   GetSQLiteDbType
126d0 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Map();....      
126e0 20 20 20 20 20 20 69 66 20 28 74 79 70 65 4e 61        if (typeNa
126f0 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
12700 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12710 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12720 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
12730 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
12740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74            if (_t
12750 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56  ypeNames.TryGetV
12760 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f  alue(typeName, o
12770 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
12780 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127a0 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
127b0 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  dataType;..     
127c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
127e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
127f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12800 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
12810 6e 64 65 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e  ndex = typeName.
12820 49 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d  IndexOf('(');...
12830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12840 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
12850 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20  > 0) &&..       
12860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12870 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47   _typeNames.TryG
12880 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65  etValue(typeName
12890 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e  .Substring(0, in
128a0 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20  dex).TrimEnd(), 
128b0 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20  out value))..   
128c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128d0 20 7b 0d 0a 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 72 65 74 75              retu
128f0 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
12900 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12920 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12930 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12940 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12950 20 20 69 66 20 28 64 65 66 61 75 6c 74 44 62 54    if (defaultDbT
12960 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ype != null)..  
12970 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12980 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74   (DbType)default
12990 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
129a0 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
129b0 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62 54   = GetDefaultDbT
129c0 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ype(connection);
129d0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
129e0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
129f0 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
12a00 20 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57    DefaultDbTypeW
12a10 61 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65 2c  arning(typeName,
12a20 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 44   flags, defaultD
12a30 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  bType);..#endif.
12a40 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
12a50 6e 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c  n (DbType)defaul
12a60 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 7d 0d  tDbType;..    }.
12a70 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
12a80 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
12a90 74 61 74 69 63 20 6f 62 6a 65 63 74 20 5f 73 79  tatic object _sy
12aa0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
12ab0 65 63 74 28 29 3b 0d 0a 20 20 20 20 70 72 69 76  ect();..    priv
12ac0 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74  ate static SQLit
12ad0 65 44 62 54 79 70 65 4d 61 70 20 5f 74 79 70 65  eDbTypeMap _type
12ae0 4e 61 6d 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  Names = null;.. 
12af0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
12b00 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c  mary>..  /// SQL
12b10 69 74 65 20 68 61 73 20 76 65 72 79 20 6c 69 6d  ite has very lim
12b20 69 74 65 64 20 74 79 70 65 73 2c 20 61 6e 64 20  ited types, and 
12b30 69 73 20 69 6e 68 65 72 65 6e 74 6c 79 20 74 65  is inherently te
12b40 78 74 2d 62 61 73 65 64 2e 20 20 54 68 65 20 66  xt-based.  The f
12b50 69 72 73 74 20 35 20 74 79 70 65 73 20 62 65 6c  irst 5 types bel
12b60 6f 77 20 72 65 70 72 65 73 65 6e 74 20 74 68 65  ow represent the
12b70 20 73 75 6d 20 6f 66 20 61 6c 6c 20 74 79 70 65   sum of all type
12b80 73 20 53 51 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20  s SQLite..  /// 
12b90 75 6e 64 65 72 73 74 61 6e 64 73 2e 20 20 54 68  understands.  Th
12ba0 65 20 44 61 74 65 54 69 6d 65 20 65 78 74 65 6e  e DateTime exten
12bb0 73 69 6f 6e 20 74 6f 20 74 68 65 20 73 70 65 63  sion to the spec
12bc0 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c   is for internal
12bd0 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f   use only...  //
12be0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12bf0 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 79 70 65  public enum Type
12c00 41 66 66 69 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20  Affinity..  {.. 
12c10 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12c20 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73  ..    /// Not us
12c30 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ed..    /// </su
12c40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 6e  mmary>..    Unin
12c50 69 74 69 61 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a  itialized = 0,..
12c60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12c70 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 69  >..    /// All i
12c80 6e 74 65 67 65 72 73 20 69 6e 20 53 51 4c 69 74  ntegers in SQLit
12c90 65 20 64 65 66 61 75 6c 74 20 74 6f 20 49 6e 74  e default to Int
12ca0 36 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  64..    /// </su
12cb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e 74 36  mmary>..    Int6
12cc0 34 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  4 = 1,..    /// 
12cd0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
12ce0 2f 2f 20 41 6c 6c 20 66 6c 6f 61 74 69 6e 67 20  // All floating 
12cf0 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e  point numbers in
12d00 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20   SQLite default 
12d10 74 6f 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f  to double..    /
12d20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12d30 20 20 20 44 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a     Double = 2,..
12d40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12d50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
12d60 65 66 61 75 6c 74 20 64 61 74 61 20 74 79 70 65  efault data type
12d70 20 6f 66 20 53 51 4c 69 74 65 20 69 73 20 74 65   of SQLite is te
12d80 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  xt..    /// </su
12d90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 65 78 74  mmary>..    Text
12da0 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 3,..    /// <
12db0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
12dc0 2f 20 54 79 70 69 63 61 6c 6c 79 20 62 6c 6f 62  / Typically blob
12dd0 20 74 79 70 65 73 20 61 72 65 20 6f 6e 6c 79 20   types are only 
12de0 73 65 65 6e 20 77 68 65 6e 20 72 65 74 75 72 6e  seen when return
12df0 65 64 20 66 72 6f 6d 20 61 20 66 75 6e 63 74 69  ed from a functi
12e00 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  on..    /// </su
12e10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 42 6c 6f 62  mmary>..    Blob
12e20 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 4,..    /// <
12e30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
12e40 2f 20 4e 75 6c 6c 20 74 79 70 65 73 20 63 61 6e  / Null types can
12e50 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
12e60 6d 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20  m functions..   
12e70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12e80 0a 20 20 20 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a  .    Null = 5,..
12e90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12ea0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20  >..    /// Used 
12eb0 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68  internally by th
12ec0 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20  is provider..   
12ed0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12ee0 0a 20 20 20 20 44 61 74 65 54 69 6d 65 20 3d 20  .    DateTime = 
12ef0 31 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  10,..    /// <su
12f00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
12f10 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
12f20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72  by this provider
12f30 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
12f40 61 72 79 3e 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d  ary>..    None =
12f50 20 31 31 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f   11,..  }....  /
12f60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12f70 2f 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68  /// These are th
12f80 65 20 65 76 65 6e 74 20 74 79 70 65 73 20 61 73  e event types as
12f90 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
12fa0 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  e..  /// <see cr
12fb0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
12fc0 74 69 6f 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72  tionEventHandler
12fd0 22 20 2f 3e 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65  " />..  /// dele
12fe0 67 61 74 65 20 28 61 6e 64 20 69 74 73 20 63 6f  gate (and its co
12ff0 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 76 65 6e  rresponding even
13000 74 29 20 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f  t) and the..  //
13010 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6e  / <see cref="Con
13020 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73  nectionEventArgs
13030 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 2f  " /> class...  /
13040 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13050 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
13060 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  iteConnectionEve
13070 6e 74 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20  ntType..  {..   
13080 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13090 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20  ..      /// Not 
130a0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  used...      ///
130b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
130c0 20 20 20 49 6e 76 61 6c 69 64 20 3d 20 2d 31 2c     Invalid = -1,
130d0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
130e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
130f0 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20  // Not used...  
13100 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13110 79 3e 0d 0a 20 20 20 20 20 20 55 6e 6b 6e 6f 77  y>..      Unknow
13120 6e 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  n = 0,....      
13130 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13140 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
13150 6e 65 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67  nection is being
13160 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20   opened...      
13170 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13180 20 20 20 20 20 20 4f 70 65 6e 69 6e 67 20 3d 20        Opening = 
13190 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
131a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
131b0 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
131c0 69 6f 6e 20 73 74 72 69 6e 67 20 68 61 73 20 62  ion string has b
131d0 65 65 6e 20 70 61 72 73 65 64 2e 0d 0a 20 20 20  een parsed...   
131e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
131f0 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 6e 65 63 74  >..      Connect
13200 69 6f 6e 53 74 72 69 6e 67 20 3d 20 32 2c 0d 0a  ionString = 2,..
13210 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13220 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13230 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
13240 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20  was opened...   
13250 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13260 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 20  >..      Opened 
13270 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 3,....      //
13280 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13290 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
132a0 63 72 65 66 3d 22 43 68 61 6e 67 65 44 61 74 61  cref="ChangeData
132b0 62 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  base" /> method 
132c0 77 61 73 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68  was called on th
132d0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  e..      /// con
132e0 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
132f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13300 20 20 20 20 20 20 43 68 61 6e 67 65 44 61 74 61        ChangeData
13310 62 61 73 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  base = 4,....   
13320 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13330 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72  ..      /// A tr
13340 61 6e 73 61 63 74 69 6f 6e 20 77 61 73 20 63 72  ansaction was cr
13350 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
13360 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
13370 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13380 3e 0d 0a 20 20 20 20 20 20 4e 65 77 54 72 61 6e  >..      NewTran
13390 73 61 63 74 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a  saction = 5,....
133a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
133b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
133c0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61  he connection wa
133d0 73 20 65 6e 6c 69 73 74 65 64 20 69 6e 74 6f 20  s enlisted into 
133e0 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a  a transaction...
133f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13400 61 72 79 3e 0d 0a 20 20 20 20 20 20 45 6e 6c 69  ary>..      Enli
13410 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20  stTransaction = 
13420 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
13430 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13440 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 77   /// A command w
13450 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  as created using
13460 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
13470 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13480 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
13490 77 43 6f 6d 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d  wCommand = 7,...
134a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
134b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
134c0 41 20 64 61 74 61 20 72 65 61 64 65 72 20 77 61  A data reader wa
134d0 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
134e0 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
134f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77  mary>..      New
13510 44 61 74 61 52 65 61 64 65 72 20 3d 20 38 2c 0d  DataReader = 8,.
13520 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13530 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13540 2f 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  / An instance of
13550 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 43 72   a <see cref="Cr
13560 69 74 69 63 61 6c 48 61 6e 64 6c 65 22 20 2f 3e  iticalHandle" />
13570 20 64 65 72 69 76 65 64 20 63 6c 61 73 73 20 68   derived class h
13580 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  as..      /// be
13590 65 6e 20 63 72 65 61 74 65 64 20 74 6f 20 77 72  en created to wr
135a0 61 70 20 61 20 6e 61 74 69 76 65 20 72 65 73 6f  ap a native reso
135b0 75 72 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urce...      ///
135c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
135d0 20 20 20 4e 65 77 43 72 69 74 69 63 61 6c 48 61     NewCriticalHa
135e0 6e 64 6c 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20  ndle = 9,....   
135f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13610 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65  connection is be
13620 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  ing closed...   
13630 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13640 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67  >..      Closing
13650 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 10,....      
13660 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13670 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
13680 6e 65 63 74 69 6f 6e 20 77 61 73 20 63 6c 6f 73  nection was clos
13690 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
136a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
136b0 20 43 6c 6f 73 65 64 20 3d 20 31 31 2c 0d 0a 0d   Closed = 11,...
136c0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
136d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
136e0 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20 62 65 69  A command is bei
136f0 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ng disposed...  
13700 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13710 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73  y>..      Dispos
13720 69 6e 67 43 6f 6d 6d 61 6e 64 20 3d 20 31 32 2c  ingCommand = 12,
13730 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13750 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72  // A data reader
13760 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
13770 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13780 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13790 20 44 69 73 70 6f 73 69 6e 67 44 61 74 61 52 65   DisposingDataRe
137a0 61 64 65 72 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20  ader = 13,....  
137b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
137c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64  >..      /// A d
137d0 61 74 61 20 72 65 61 64 65 72 20 69 73 20 62 65  ata reader is be
137e0 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  ing closed...   
137f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13800 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67  >..      Closing
13810 44 61 74 61 52 65 61 64 65 72 20 3d 20 31 34 0d  DataReader = 14.
13820 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
13830 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
13840 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  his implementati
13850 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 66 6f 72  on of SQLite for
13860 20 41 44 4f 2e 4e 45 54 20 63 61 6e 20 70 72 6f   ADO.NET can pro
13870 63 65 73 73 20 64 61 74 65 2f 74 69 6d 65 20 66  cess date/time f
13880 69 65 6c 64 73 20 69 6e 0d 0a 20 20 2f 2f 2f 20  ields in..  /// 
13890 64 61 74 61 62 61 73 65 73 20 69 6e 20 6f 6e 65  databases in one
138a0 20 6f 66 20 73 69 78 20 66 6f 72 6d 61 74 73 2e   of six formats.
138b0 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
138c0 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72  y>..  /// <remar
138d0 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53 4f 38 36  ks>..  /// ISO86
138e0 30 31 20 66 6f 72 6d 61 74 20 69 73 20 6d 6f 72  01 format is mor
138f0 65 20 63 6f 6d 70 61 74 69 62 6c 65 2c 20 72 65  e compatible, re
13900 61 64 61 62 6c 65 2c 20 66 75 6c 6c 79 2d 70 72  adable, fully-pr
13910 6f 63 65 73 73 61 62 6c 65 2c 20 62 75 74 20 6c  ocessable, but l
13920 65 73 73 0d 0a 20 20 2f 2f 2f 20 61 63 63 75 72  ess..  /// accur
13930 61 74 65 20 61 73 20 69 74 20 64 6f 65 73 20 6e  ate as it does n
13940 6f 74 20 70 72 6f 76 69 64 65 20 74 69 6d 65 20  ot provide time 
13950 64 6f 77 6e 20 74 6f 20 66 72 61 63 74 69 6f 6e  down to fraction
13960 73 20 6f 66 20 61 20 73 65 63 6f 6e 64 2e 0d 0a  s of a second...
13970 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44 61 79 20    /// JulianDay 
13980 69 73 20 74 68 65 20 6e 75 6d 65 72 69 63 20 66  is the numeric f
13990 6f 72 6d 61 74 20 74 68 65 20 53 51 4c 69 74 65  ormat the SQLite
139a0 20 75 73 65 73 20 69 6e 74 65 72 6e 61 6c 6c 79   uses internally
139b0 20 61 6e 64 20 69 73 20 61 72 67 75 61 62 6c 79   and is arguably
139c0 0d 0a 20 20 2f 2f 2f 20 74 68 65 20 6d 6f 73 74  ..  /// the most
139d0 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68   compatible with
139e0 20 33 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73   3rd party tools
139f0 2e 20 20 49 74 20 69 73 20 6e 6f 74 20 72 65 61  .  It is not rea
13a00 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d 0a 20  dable as text.. 
13a10 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70 6f 73   /// without pos
13a20 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20 20 54  t-processing.  T
13a30 69 63 6b 73 20 6c 65 73 73 20 63 6f 6d 70 61 74  icks less compat
13a40 69 62 6c 65 20 77 69 74 68 20 33 72 64 20 70 61  ible with 3rd pa
13a50 72 74 79 20 74 6f 6f 6c 73 20 74 68 61 74 0d 0a  rty tools that..
13a60 20 20 2f 2f 2f 20 71 75 65 72 79 20 74 68 65 20    /// query the 
13a70 64 61 74 61 62 61 73 65 2c 20 61 6e 64 20 72 65  database, and re
13a80 6e 64 65 72 73 20 74 68 65 20 44 61 74 65 54 69  nders the DateTi
13a90 6d 65 20 66 69 65 6c 64 20 75 6e 72 65 61 64 61  me field unreada
13aa0 62 6c 65 20 61 73 20 74 65 78 74 0d 0a 20 20 2f  ble as text..  /
13ab0 2f 2f 20 77 69 74 68 6f 75 74 20 70 6f 73 74 2d  // without post-
13ac0 70 72 6f 63 65 73 73 69 6e 67 2e 20 20 55 6e 69  processing.  Uni
13ad0 78 45 70 6f 63 68 20 69 73 20 6d 6f 72 65 20 63  xEpoch is more c
13ae0 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 55  ompatible with U
13af0 6e 69 78 20 73 79 73 74 65 6d 73 2e 0d 0a 20 20  nix systems...  
13b00 2f 2f 2f 20 49 6e 76 61 72 69 61 6e 74 43 75 6c  /// InvariantCul
13b10 74 75 72 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ture allows the 
13b20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61  configured forma
13b30 74 20 66 6f 72 20 74 68 65 20 69 6e 76 61 72 69  t for the invari
13b40 61 6e 74 20 63 75 6c 74 75 72 65 0d 0a 20 20 2f  ant culture..  /
13b50 2f 2f 20 66 6f 72 6d 61 74 20 74 6f 20 62 65 20  // format to be 
13b60 75 73 65 64 20 61 6e 64 20 69 73 20 68 75 6d 61  used and is huma
13b70 6e 20 72 65 61 64 61 62 6c 65 2e 20 20 43 75 72  n readable.  Cur
13b80 72 65 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f  rentCulture allo
13b90 77 73 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 63 6f  ws the..  /// co
13ba0 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61 74 20  nfigured format 
13bb0 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
13bc0 63 75 6c 74 75 72 65 20 74 6f 20 62 65 20 75 73  culture to be us
13bd0 65 64 20 61 6e 64 20 69 73 20 61 6c 73 6f 20 68  ed and is also h
13be0 75 6d 61 6e 0d 0a 20 20 2f 2f 2f 20 72 65 61 64  uman..  /// read
13bf0 61 62 6c 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20  able...  ///..  
13c00 2f 2f 2f 20 54 68 65 20 70 72 65 66 65 72 72 65  /// The preferre
13c10 64 20 6f 72 64 65 72 20 6f 66 20 63 68 6f 6f 73  d order of choos
13c20 69 6e 67 20 61 20 44 61 74 65 54 69 6d 65 20 66  ing a DateTime f
13c30 6f 72 6d 61 74 20 69 73 20 4a 75 6c 69 61 6e 44  ormat is JulianD
13c40 61 79 2c 20 49 53 4f 38 36 30 31 2c 0d 0a 20 20  ay, ISO8601,..  
13c50 2f 2f 2f 20 61 6e 64 20 74 68 65 6e 20 54 69 63  /// and then Tic
13c60 6b 73 2e 20 20 54 69 63 6b 73 20 69 73 20 6d 61  ks.  Ticks is ma
13c70 69 6e 6c 79 20 70 72 65 73 65 6e 74 20 66 6f 72  inly present for
13c80 20 6c 65 67 61 63 79 20 63 6f 64 65 20 73 75 70   legacy code sup
13c90 70 6f 72 74 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72  port...  /// </r
13ca0 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62 6c 69  emarks>..  publi
13cb0 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 44 61 74  c enum SQLiteDat
13cc0 65 46 6f 72 6d 61 74 73 0d 0a 20 20 7b 0d 0a 20  eFormats..  {.. 
13cd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13ce0 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68  ..    /// Use th
13cf0 65 20 76 61 6c 75 65 20 6f 66 20 44 61 74 65 54  e value of DateT
13d00 69 6d 65 2e 54 69 63 6b 73 2e 20 20 54 68 69 73  ime.Ticks.  This
13d10 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 72 65   value is not re
13d20 63 6f 6d 6d 65 6e 64 65 64 20 61 6e 64 20 69 73  commended and is
13d30 20 6e 6f 74 20 77 65 6c 6c 20 73 75 70 70 6f 72   not well suppor
13d40 74 65 64 20 77 69 74 68 20 4c 49 4e 51 2e 0d 0a  ted with LINQ...
13d50 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13d60 79 3e 0d 0a 20 20 20 20 54 69 63 6b 73 20 3d 20  y>..    Ticks = 
13d70 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  0,..    /// <sum
13d80 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
13d90 73 65 20 74 68 65 20 49 53 4f 2d 38 36 30 31 20  se the ISO-8601 
13da0 66 6f 72 6d 61 74 2e 20 20 55 73 65 73 20 74 68  format.  Uses th
13db0 65 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  e "yyyy-MM-dd HH
13dc0 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 22  :mm:ss.FFFFFFFK"
13dd0 20 66 6f 72 6d 61 74 20 66 6f 72 20 55 54 43 20   format for UTC 
13de0 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
13df0 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 79  and..    /// "yy
13e00 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
13e10 73 2e 46 46 46 46 46 46 46 22 20 66 6f 72 6d 61  s.FFFFFFF" forma
13e20 74 20 66 6f 72 20 6c 6f 63 61 6c 20 44 61 74 65  t for local Date
13e30 54 69 6d 65 20 76 61 6c 75 65 73 29 2e 0d 0a 20  Time values)... 
13e40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13e50 3e 0d 0a 20 20 20 20 49 53 4f 38 36 30 31 20 3d  >..    ISO8601 =
13e60 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   1,..    /// <su
13e70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
13e80 54 68 65 20 69 6e 74 65 72 76 61 6c 20 6f 66 20  The interval of 
13e90 74 69 6d 65 20 69 6e 20 64 61 79 73 20 61 6e 64  time in days and
13ea0 20 66 72 61 63 74 69 6f 6e 73 20 6f 66 20 61 20   fractions of a 
13eb0 64 61 79 20 73 69 6e 63 65 20 4a 61 6e 75 61 72  day since Januar
13ec0 79 20 31 2c 20 34 37 31 33 20 42 43 2e 0d 0a 20  y 1, 4713 BC... 
13ed0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13ee0 3e 0d 0a 20 20 20 20 4a 75 6c 69 61 6e 44 61 79  >..    JulianDay
13ef0 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 2,..    /// <
13f00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
13f10 2f 20 54 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62  / The whole numb
13f20 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er of seconds si
13f30 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f  nce the Unix epo
13f40 63 68 20 28 4a 61 6e 75 61 72 79 20 31 2c 20 31  ch (January 1, 1
13f50 39 37 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  970)...    /// <
13f60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55  /summary>..    U
13f70 6e 69 78 45 70 6f 63 68 20 3d 20 33 2c 0d 0a 20  nixEpoch = 3,.. 
13f80 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13f90 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 63 75  ..    /// Any cu
13fa0 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e  lture-independen
13fb0 74 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 74  t string value t
13fc0 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46 72 61  hat the .NET Fra
13fd0 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74 65 72  mework can inter
13fe0 70 72 65 74 20 61 73 20 61 20 76 61 6c 69 64 20  pret as a valid 
13ff0 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20 2f  DateTime...    /
14000 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14010 20 20 20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74     InvariantCult
14020 75 72 65 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f  ure = 4,..    //
14030 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14040 20 2f 2f 2f 20 41 6e 79 20 73 74 72 69 6e 67 20   /// Any string 
14050 76 61 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e  value that the .
14060 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61  NET Framework ca
14070 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73 20 61  n interpret as a
14080 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65 20   valid DateTime 
14090 75 73 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e  using the curren
140a0 74 20 63 75 6c 74 75 72 65 2e 0d 0a 20 20 20 20  t culture...    
140b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
140c0 20 20 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75      CurrentCultu
140d0 72 65 20 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f  re = 5,..    ///
140e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
140f0 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
14100 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69 73 20  format for this 
14110 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f  provider...    /
14120 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14130 20 20 20 44 65 66 61 75 6c 74 20 3d 20 49 53 4f     Default = ISO
14140 38 36 30 31 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  8601..  }....  /
14150 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14160 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d 20 64 65  /// This enum de
14170 74 65 72 6d 69 6e 65 73 20 68 6f 77 20 53 51 4c  termines how SQL
14180 69 74 65 20 74 72 65 61 74 73 20 69 74 73 20 6a  ite treats its j
14190 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0d 0a 20 20  ournal file...  
141a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
141b0 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
141c0 0a 20 20 2f 2f 2f 20 42 79 20 64 65 66 61 75 6c  .  /// By defaul
141d0 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63 72  t SQLite will cr
141e0 65 61 74 65 20 61 6e 64 20 64 65 6c 65 74 65 20  eate and delete 
141f0 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
14200 20 77 68 65 6e 20 6e 65 65 64 65 64 20 64 75 72   when needed dur
14210 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f  ing a transactio
14220 6e 2e 0d 0a 20 20 2f 2f 2f 20 48 6f 77 65 76 65  n...  /// Howeve
14230 72 2c 20 66 6f 72 20 73 6f 6d 65 20 63 6f 6d 70  r, for some comp
14240 75 74 65 72 73 20 72 75 6e 6e 69 6e 67 20 63 65  uters running ce
14250 72 74 61 69 6e 20 66 69 6c 65 73 79 73 74 65 6d  rtain filesystem
14260 20 6d 6f 6e 69 74 6f 72 69 6e 67 20 74 6f 6f 6c   monitoring tool
14270 73 2c 20 74 68 65 20 72 61 70 69 64 0d 0a 20 20  s, the rapid..  
14280 2f 2f 2f 20 63 72 65 61 74 69 6f 6e 20 61 6e 64  /// creation and
14290 20 64 65 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65   deletion of the
142a0 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 63 61   journal file ca
142b0 6e 20 63 61 75 73 65 20 74 68 6f 73 65 20 70 72  n cause those pr
142c0 6f 67 72 61 6d 73 20 74 6f 20 66 61 69 6c 2c 20  ograms to fail, 
142d0 6f 72 20 74 6f 20 69 6e 74 65 72 66 65 72 65 20  or to interfere 
142e0 77 69 74 68 20 53 51 4c 69 74 65 2e 0d 0a 20 20  with SQLite...  
142f0 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 49 66 20 61 20  ///..  /// If a 
14300 70 72 6f 67 72 61 6d 20 6f 72 20 76 69 72 75 73  program or virus
14310 20 73 63 61 6e 6e 65 72 20 69 73 20 69 6e 74 65   scanner is inte
14320 72 66 65 72 69 6e 67 20 77 69 74 68 20 53 51 4c  rfering with SQL
14330 69 74 65 27 73 20 6a 6f 75 72 6e 61 6c 20 66 69  ite's journal fi
14340 6c 65 2c 20 79 6f 75 20 6d 61 79 20 72 65 63 65  le, you may rece
14350 69 76 65 20 65 72 72 6f 72 73 20 6c 69 6b 65 20  ive errors like 
14360 22 75 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20  "unable to open 
14370 64 61 74 61 62 61 73 65 20 66 69 6c 65 22 0d 0a  database file"..
14380 20 20 2f 2f 2f 20 77 68 65 6e 20 73 74 61 72 74    /// when start
14390 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f  ing a transactio
143a0 6e 2e 20 20 49 66 20 74 68 69 73 20 69 73 20 68  n.  If this is h
143b0 61 70 70 65 6e 69 6e 67 2c 20 79 6f 75 20 6d 61  appening, you ma
143c0 79 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65  y want to change
143d0 20 74 68 65 20 64 65 66 61 75 6c 74 20 6a 6f 75   the default jou
143e0 72 6e 61 6c 20 6d 6f 64 65 20 74 6f 20 50 65 72  rnal mode to Per
143f0 73 69 73 74 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72  sist...  /// </r
14400 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62 6c 69  emarks>..  publi
14410 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 4a 6f 75  c enum SQLiteJou
14420 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 0d 0a 20 20  rnalModeEnum..  
14430 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  {..    /// <summ
14440 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
14450 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2c 20  e default mode, 
14460 74 68 69 73 20 63 61 75 73 65 73 20 53 51 4c 69  this causes SQLi
14470 74 65 20 74 6f 20 75 73 65 20 74 68 65 20 65 78  te to use the ex
14480 69 73 74 69 6e 67 20 6a 6f 75 72 6e 61 6c 69 6e  isting journalin
14490 67 20 6d 6f 64 65 20 66 6f 72 20 74 68 65 20 64  g mode for the d
144a0 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f  atabase...    //
144b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
144c0 20 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d    Default = -1,.
144d0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
144e0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69  y>..    /// SQLi
144f0 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65 20 61  te will create a
14500 6e 64 20 64 65 73 74 72 6f 79 20 74 68 65 20 6a  nd destroy the j
14510 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61 73 2d 6e  ournal file as-n
14520 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eeded...    /// 
14530 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14540 44 65 6c 65 74 65 20 3d 20 30 2c 0d 0a 20 20 20  Delete = 0,..   
14550 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14560 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69      /// When thi
14570 73 20 69 73 20 73 65 74 2c 20 53 51 4c 69 74 65  s is set, SQLite
14580 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20 6a   will keep the j
14590 6f 75 72 6e 61 6c 20 66 69 6c 65 20 65 76 65 6e  ournal file even
145a0 20 61 66 74 65 72 20 61 20 74 72 61 6e 73 61 63   after a transac
145b0 74 69 6f 6e 20 68 61 73 20 63 6f 6d 70 6c 65 74  tion has complet
145c0 65 64 2e 20 20 49 74 27 73 20 63 6f 6e 74 65 6e  ed.  It's conten
145d0 74 73 20 77 69 6c 6c 20 62 65 20 65 72 61 73 65  ts will be erase
145e0 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20  d,..    /// and 
145f0 74 68 65 20 6a 6f 75 72 6e 61 6c 20 72 65 2d 75  the journal re-u
14600 73 65 64 20 61 73 20 6f 66 74 65 6e 20 61 73 20  sed as often as 
14610 6e 65 65 64 65 64 2e 20 20 49 66 20 69 74 20 69  needed.  If it i
14620 73 20 64 65 6c 65 74 65 64 2c 20 69 74 20 77 69  s deleted, it wi
14630 6c 6c 20 62 65 20 72 65 63 72 65 61 74 65 64 20  ll be recreated 
14640 74 68 65 20 6e 65 78 74 20 74 69 6d 65 20 69 74  the next time it
14650 20 69 73 20 6e 65 65 64 65 64 2e 0d 0a 20 20 20   is needed...   
14660 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14670 0a 20 20 20 20 50 65 72 73 69 73 74 20 3d 20 31  .    Persist = 1
14680 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14690 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
146a0 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c  is option disabl
146b0 65 73 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20  es the rollback 
146c0 6a 6f 75 72 6e 61 6c 20 65 6e 74 69 72 65 6c 79  journal entirely
146d0 2e 20 20 49 6e 74 65 72 72 75 70 74 65 64 20 74  .  Interrupted t
146e0 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 72 20 61  ransactions or a
146f0 20 70 72 6f 67 72 61 6d 20 63 72 61 73 68 20 63   program crash c
14700 61 6e 20 63 61 75 73 65 20 64 61 74 61 62 61 73  an cause databas
14710 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75  e..    /// corru
14720 70 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 6d 6f  ption in this mo
14730 64 65 21 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  de!..    /// </s
14740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4f 66 66  ummary>..    Off
14750 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 2,..    /// <
14760 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14770 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 74 72  / SQLite will tr
14780 75 6e 63 61 74 65 20 74 68 65 20 6a 6f 75 72 6e  uncate the journ
14790 61 6c 20 66 69 6c 65 20 74 6f 20 7a 65 72 6f 2d  al file to zero-
147a0 6c 65 6e 67 74 68 20 69 6e 73 74 65 61 64 20 6f  length instead o
147b0 66 20 64 65 6c 65 74 69 6e 67 20 69 74 2e 0d 0a  f deleting it...
147c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
147d0 79 3e 0d 0a 20 20 20 20 54 72 75 6e 63 61 74 65  y>..    Truncate
147e0 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 3,..    /// <
147f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14800 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 73 74  / SQLite will st
14810 6f 72 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  ore the journal 
14820 69 6e 20 76 6f 6c 61 74 69 6c 65 20 52 41 4d 2e  in volatile RAM.
14830 20 20 54 68 69 73 20 73 61 76 65 73 20 64 69 73    This saves dis
14840 6b 20 49 2f 4f 20 62 75 74 20 61 74 20 74 68 65  k I/O but at the
14850 20 65 78 70 65 6e 73 65 20 6f 66 20 64 61 74 61   expense of data
14860 62 61 73 65 20 73 61 66 65 74 79 20 61 6e 64 20  base safety and 
14870 69 6e 74 65 67 72 69 74 79 2e 0d 0a 20 20 20 20  integrity...    
14880 2f 2f 2f 20 49 66 20 74 68 65 20 61 70 70 6c 69  /// If the appli
14890 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 53 51 4c  cation using SQL
148a0 69 74 65 20 63 72 61 73 68 65 73 20 69 6e 20 74  ite crashes in t
148b0 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74  he middle of a t
148c0 72 61 6e 73 61 63 74 69 6f 6e 20 77 68 65 6e 20  ransaction when 
148d0 74 68 65 20 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e  the MEMORY journ
148e0 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 73 65  aling mode is se
148f0 74 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20  t, then the..   
14900 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 66 69   /// database fi
14910 6c 65 20 77 69 6c 6c 20 76 65 72 79 20 6c 69 6b  le will very lik
14920 65 6c 79 20 67 6f 20 63 6f 72 72 75 70 74 2e 0d  ely go corrupt..
14930 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14940 72 79 3e 0d 0a 20 20 20 20 4d 65 6d 6f 72 79 20  ry>..    Memory 
14950 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 4,..    /// <s
14960 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14970 20 53 51 4c 69 74 65 20 75 73 65 73 20 61 20 77   SQLite uses a w
14980 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20 69  rite-ahead log i
14990 6e 73 74 65 61 64 20 6f 66 20 61 20 72 6f 6c 6c  nstead of a roll
149a0 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 74 6f 20  back journal to 
149b0 69 6d 70 6c 65 6d 65 6e 74 20 74 72 61 6e 73 61  implement transa
149c0 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 57 41 4c  ctions.  The WAL
149d0 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65   journaling mode
149e0 20 69 73 20 70 65 72 73 69 73 74 65 6e 74 3b 0d   is persistent;.
149f0 0a 20 20 20 20 2f 2f 2f 20 61 66 74 65 72 20 62  .    /// after b
14a00 65 69 6e 67 20 73 65 74 20 69 74 20 73 74 61 79  eing set it stay
14a10 73 20 69 6e 20 65 66 66 65 63 74 20 61 63 72 6f  s in effect acro
14a20 73 73 20 6d 75 6c 74 69 70 6c 65 20 64 61 74 61  ss multiple data
14a30 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
14a40 20 61 6e 64 20 61 66 74 65 72 20 63 6c 6f 73 69   and after closi
14a50 6e 67 20 61 6e 64 20 72 65 6f 70 65 6e 69 6e 67  ng and reopening
14a60 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 41   the database. A
14a70 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f   database..    /
14a80 2f 2f 20 69 6e 20 57 41 4c 20 6a 6f 75 72 6e 61  // in WAL journa
14a90 6c 69 6e 67 20 6d 6f 64 65 20 63 61 6e 20 6f 6e  ling mode can on
14aa0 6c 79 20 62 65 20 61 63 63 65 73 73 65 64 20 62  ly be accessed b
14ab0 79 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  y SQLite version
14ac0 20 33 2e 37 2e 30 20 6f 72 20 6c 61 74 65 72 2e   3.7.0 or later.
14ad0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14ae0 61 72 79 3e 0d 0a 20 20 20 20 57 61 6c 20 3d 20  ary>..    Wal = 
14af0 35 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  5..  }....  /// 
14b00 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
14b10 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73   Possible values
14b20 20 66 6f 72 20 74 68 65 20 22 73 79 6e 63 68 72   for the "synchr
14b30 6f 6e 6f 75 73 22 20 64 61 74 61 62 61 73 65 20  onous" database 
14b40 73 65 74 74 69 6e 67 2e 20 20 54 68 69 73 20 73  setting.  This s
14b50 65 74 74 69 6e 67 20 64 65 74 65 72 6d 69 6e 65  etting determine
14b60 73 0d 0a 20 20 2f 2f 2f 20 68 6f 77 20 6f 66 74  s..  /// how oft
14b70 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
14b80 65 6e 67 69 6e 65 20 63 61 6c 6c 73 20 74 68 65  engine calls the
14b90 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66   xSync method of
14ba0 20 74 68 65 20 56 46 53 2e 0d 0a 20 20 2f 2f 2f   the VFS...  ///
14bb0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69   </summary>..  i
14bc0 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 53 51 4c  nternal enum SQL
14bd0 69 74 65 53 79 6e 63 68 72 6f 6e 6f 75 73 45 6e  iteSynchronousEn
14be0 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  um..  {..      /
14bf0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14c00 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20      /// Use the 
14c10 64 65 66 61 75 6c 74 20 22 73 79 6e 63 68 72 6f  default "synchro
14c20 6e 6f 75 73 22 20 64 61 74 61 62 61 73 65 20 73  nous" database s
14c30 65 74 74 69 6e 67 2e 20 20 43 75 72 72 65 6e 74  etting.  Current
14c40 6c 79 2c 20 74 68 69 73 20 73 68 6f 75 6c 64 20  ly, this should 
14c50 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  be..      /// th
14c60 65 20 73 61 6d 65 20 61 73 20 75 73 69 6e 67 20  e same as using 
14c70 74 68 65 20 46 55 4c 4c 20 6d 6f 64 65 2e 0d 0a  the FULL mode...
14c80 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66 61  ary>..      Defa
14ca0 75 6c 74 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20  ult = -1,....   
14cb0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14cc0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
14cd0 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
14ce0 63 6f 6e 74 69 6e 75 65 73 20 77 69 74 68 6f 75  continues withou
14cf0 74 20 73 79 6e 63 69 6e 67 20 61 73 20 73 6f 6f  t syncing as soo
14d00 6e 20 61 73 20 69 74 20 68 61 73 20 68 61 6e 64  n as it has hand
14d10 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61  ed..      /// da
14d20 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70  ta off to the op
14d30 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20  erating system. 
14d40 20 49 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   If the applicat
14d50 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51 4c 69  ion running SQLi
14d60 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 72  te..      /// cr
14d70 61 73 68 65 73 2c 20 74 68 65 20 64 61 74 61 20  ashes, the data 
14d80 77 69 6c 6c 20 62 65 20 73 61 66 65 2c 20 62 75  will be safe, bu
14d90 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6d  t the database m
14da0 69 67 68 74 20 62 65 63 6f 6d 65 20 63 6f 72 72  ight become corr
14db0 75 70 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  upted..      ///
14dc0 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e   if the operatin
14dd0 67 20 73 79 73 74 65 6d 20 63 72 61 73 68 65 73  g system crashes
14de0 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74 65 72   or the computer
14df0 20 6c 6f 73 65 73 20 70 6f 77 65 72 20 62 65 66   loses power bef
14e00 6f 72 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20  ore that..      
14e10 2f 2f 2f 20 64 61 74 61 20 68 61 73 20 62 65 65  /// data has bee
14e20 6e 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65  n written to the
14e30 20 64 69 73 6b 20 73 75 72 66 61 63 65 2e 0d 0a   disk surface...
14e40 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14e50 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 66 66 20  ary>..      Off 
14e60 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 0,....      //
14e70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14e80 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
14e90 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c 20  ase engine will 
14ea0 73 74 69 6c 6c 20 73 79 6e 63 20 61 74 20 74 68  still sync at th
14eb0 65 20 6d 6f 73 74 20 63 72 69 74 69 63 61 6c 20  e most critical 
14ec0 6d 6f 6d 65 6e 74 73 2c 20 62 75 74 0d 0a 20 20  moments, but..  
14ed0 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 6f 66 74      /// less oft
14ee0 65 6e 20 74 68 61 6e 20 69 6e 20 46 55 4c 4c 20  en than in FULL 
14ef0 6d 6f 64 65 2e 20 20 54 68 65 72 65 20 69 73 20  mode.  There is 
14f00 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 28 74 68  a very small (th
14f10 6f 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a  ough non-zero)..
14f20 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 63 65        /// chance
14f30 20 74 68 61 74 20 61 20 70 6f 77 65 72 20 66 61   that a power fa
14f40 69 6c 75 72 65 20 61 74 20 6a 75 73 74 20 74 68  ilure at just th
14f50 65 20 77 72 6f 6e 67 20 74 69 6d 65 20 63 6f 75  e wrong time cou
14f60 6c 64 20 63 6f 72 72 75 70 74 20 74 68 65 0d 0a  ld corrupt the..
14f70 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61        /// databa
14f80 73 65 20 69 6e 20 4e 4f 52 4d 41 4c 20 6d 6f 64  se in NORMAL mod
14f90 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
14fa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14fb0 4e 6f 72 6d 61 6c 20 3d 20 31 2c 0d 0a 0d 0a 20  Normal = 1,.... 
14fc0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14fd0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
14fe0 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
14ff0 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 78  e will use the x
15000 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20 74  Sync method of t
15010 68 65 20 56 46 53 20 74 6f 20 65 6e 73 75 72 65  he VFS to ensure
15020 20 74 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f   that..      ///
15030 20 61 6c 6c 20 63 6f 6e 74 65 6e 74 20 69 73 20   all content is 
15040 73 61 66 65 6c 79 20 77 72 69 74 74 65 6e 20 74  safely written t
15050 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61  o the disk surfa
15060 63 65 20 70 72 69 6f 72 20 74 6f 20 63 6f 6e 74  ce prior to cont
15070 69 6e 75 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f  inuing...      /
15080 2f 2f 20 54 68 69 73 20 65 6e 73 75 72 65 73 20  // This ensures 
15090 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69 6e  that an operatin
150a0 67 20 73 79 73 74 65 6d 20 63 72 61 73 68 20 6f  g system crash o
150b0 72 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20  r power failure 
150c0 77 69 6c 6c 20 6e 6f 74 0d 0a 20 20 20 20 20 20  will not..      
150d0 2f 2f 2f 20 63 6f 72 72 75 70 74 20 74 68 65 20  /// corrupt the 
150e0 64 61 74 61 62 61 73 65 2e 20 20 46 55 4c 4c 20  database.  FULL 
150f0 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 76  synchronous is v
15100 65 72 79 20 73 61 66 65 2c 20 62 75 74 20 69 74  ery safe, but it
15110 20 69 73 20 61 6c 73 6f 0d 0a 20 20 20 20 20 20   is also..      
15120 2f 2f 2f 20 73 6c 6f 77 65 72 2e 0d 0a 20 20 20  /// slower...   
15130 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15140 3e 0d 0a 20 20 20 20 20 20 46 75 6c 6c 20 3d 20  >..      Full = 
15150 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  2..  }....  /// 
15160 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
15170 20 54 68 65 20 72 65 71 75 65 73 74 65 64 20 63   The requested c
15180 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74 69 6f 6e  ommand execution
15190 20 74 79 70 65 2e 20 20 54 68 69 73 20 63 6f 6e   type.  This con
151a0 74 72 6f 6c 73 20 77 68 69 63 68 20 6d 65 74 68  trols which meth
151b0 6f 64 20 6f 66 20 74 68 65 0d 0a 20 20 2f 2f 2f  od of the..  ///
151c0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
151d0 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e 20 6f 62  teCommand" /> ob
151e0 6a 65 63 74 20 77 69 6c 6c 20 62 65 20 63 61 6c  ject will be cal
151f0 6c 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  led...  /// </su
15200 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63  mmary>..  public
15210 20 65 6e 75 6d 20 53 51 4c 69 74 65 45 78 65 63   enum SQLiteExec
15220 75 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20  uteType..  {..  
15230 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15240 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20  >..      /// Do 
15250 6e 6f 74 68 69 6e 67 2e 20 20 4e 6f 20 6d 65 74  nothing.  No met
15260 68 6f 64 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  hod will be call
15270 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
15280 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15290 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20   None = 0,....  
152a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
152b0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
152c0 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20   command is not 
152d0 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75  expected to retu
152e0 72 6e 20 61 20 72 65 73 75 6c 74 20 2d 4f 52 2d  rn a result -OR-
152f0 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 6e   the result is n
15300 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 65  ot..      /// ne
15310 65 64 65 64 2e 20 20 54 68 65 20 3c 73 65 65 20  eded.  The <see 
15320 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
15330 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75  and.ExecuteNonQu
15340 65 72 79 28 29 22 20 2f 3e 20 6f 72 0d 0a 20 20  ery()" /> or..  
15350 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
15360 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  f="SQLiteCommand
15370 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79  .ExecuteNonQuery
15380 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72  (CommandBehavior
15390 29 22 20 2f 3e 20 20 6d 65 74 68 6f 64 0d 0a 20  )" />  method.. 
153a0 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65       /// will be
153b0 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
153c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
153d0 20 20 20 20 20 20 4e 6f 6e 51 75 65 72 79 20 3d        NonQuery =
153e0 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   1,....      ///
153f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15400 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e    /// The comman
15410 64 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f  d is expected to
15420 20 72 65 74 75 72 6e 20 61 20 73 63 61 6c 61 72   return a scalar
15430 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65   result -OR- the
15440 20 72 65 73 75 6c 74 20 73 68 6f 75 6c 64 0d 0a   result should..
15450 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6c 69 6d        /// be lim
15460 69 74 65 64 20 74 6f 20 61 20 73 63 61 6c 61 72  ited to a scalar
15470 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 3c 73   result.  The <s
15480 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
15490 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63  ommand.ExecuteSc
154a0 61 6c 61 72 28 29 22 20 2f 3e 0d 0a 20 20 20 20  alar()" />..    
154b0 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72    /// or <see cr
154c0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ef="SQLiteComman
154d0 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72 28  d.ExecuteScalar(
154e0 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 29  CommandBehavior)
154f0 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c  " /> method will
15500 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 63  ..      /// be c
15510 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  alled...      //
15520 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15530 20 20 20 20 53 63 61 6c 61 72 20 3d 20 32 2c 0d      Scalar = 2,.
15540 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15550 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15560 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
15570 20 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74   expected to ret
15580 75 72 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 53  urn <see cref="S
15590 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 22  QLiteDataReader"
155a0 20 2f 3e 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20   /> result...   
155b0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
155c0 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
155d0 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61 64 65  and.ExecuteReade
155e0 72 28 29 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20  r()" /> or..    
155f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
15600 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45  "SQLiteCommand.E
15610 78 65 63 75 74 65 52 65 61 64 65 72 28 43 6f 6d  xecuteReader(Com
15620 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f  mandBehavior)" /
15630 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20  > method will.. 
15640 20 20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c       /// be call
15650 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
15660 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15670 20 52 65 61 64 65 72 20 3d 20 33 2c 0d 0a 0d 0a   Reader = 3,....
15680 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15690 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  ry>..      /// U
156a0 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 63  se the default c
156b0 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74 69 6f 6e  ommand execution
156c0 20 74 79 70 65 2e 20 20 55 73 69 6e 67 20 74 68   type.  Using th
156d0 69 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 20  is value is the 
156e0 73 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  same..      /// 
156f0 61 73 20 75 73 69 6e 67 20 74 68 65 20 3c 73 65  as using the <se
15700 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 78  e cref="SQLiteEx
15710 65 63 75 74 65 54 79 70 65 2e 4e 6f 6e 51 75 65  ecuteType.NonQue
15720 72 79 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  ry" /> value... 
15730 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15740 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66 61 75  ry>..      Defau
15750 6c 74 20 3d 20 4e 6f 6e 51 75 65 72 79 20 2f 2a  lt = NonQuery /*
15760 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 64 65 66 61   TODO: Good defa
15770 75 6c 74 3f 20 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a  ult? */..  }....
15780 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15790 0a 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 69 6f  .  /// The actio
157a0 6e 20 63 6f 64 65 20 72 65 73 70 6f 6e 73 69 62  n code responsib
157b0 6c 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  le for the curre
157c0 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65  nt call into the
157d0 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20 20   authorizer...  
157e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
157f0 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
15800 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63  LiteAuthorizerAc
15810 74 69 6f 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20  tionCode..  {.. 
15820 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15830 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  y>..      /// No
15840 20 61 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67   action is being
15850 20 70 65 72 66 6f 72 6d 65 64 2e 20 20 54 68 69   performed.  Thi
15860 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 6e  s value should n
15870 6f 74 20 62 65 20 75 73 65 64 20 66 72 6f 6d 0d  ot be used from.
15880 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 72  .      /// exter
15890 6e 61 6c 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  nal code...     
158a0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
158b0 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 2d 31  .      None = -1
158c0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
158d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
158e0 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73  /// No longer us
158f0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
15900 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15910 20 43 6f 70 79 20 3d 20 30 2c 0d 0a 0d 0a 20 20   Copy = 0,....  
15920 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15930 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  >..      /// An 
15940 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 63 72  index will be cr
15950 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
15960 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
15970 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
15980 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78 20 6e       /// index n
15990 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
159a0 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
159b0 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  //..      /// </
159c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
159d0 43 72 65 61 74 65 49 6e 64 65 78 20 3d 20 31 2c  CreateIndex = 1,
159e0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
159f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15a00 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20  // A table will 
15a10 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
15a20 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
15a30 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
15a40 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61  he..      /// ta
15a50 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ble name and a n
15a60 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
15a70 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15a80 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 61  ..      CreateTa
15a90 62 6c 65 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20  ble = 2,....    
15aa0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15ab0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
15ac0 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69 6c  porary index wil
15ad0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
15ae0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
15af0 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
15b00 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20      /// are the 
15b10 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74  index name and t
15b20 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
15b30 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15b40 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
15b50 74 65 54 65 6d 70 49 6e 64 65 78 20 3d 20 33 2c  teTempIndex = 3,
15b60 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15b70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15b80 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
15b90 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72 65  able will be cre
15ba0 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  ated.  The actio
15bb0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
15bc0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
15bd0 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
15be0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
15bf0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
15c00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15c10 20 20 43 72 65 61 74 65 54 65 6d 70 54 61 62 6c    CreateTempTabl
15c20 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 4,....      
15c30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15c40 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
15c50 72 61 72 79 20 74 72 69 67 67 65 72 20 77 69 6c  rary trigger wil
15c60 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
15c70 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
15c80 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
15c90 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20      /// are the 
15ca0 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64  trigger name and
15cb0 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
15cc0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15cd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
15ce0 65 61 74 65 54 65 6d 70 54 72 69 67 67 65 72 20  eateTempTrigger 
15cf0 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 5,....      //
15d00 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15d10 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
15d20 72 79 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20  ry view will be 
15d30 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
15d40 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
15d50 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20  guments are..   
15d60 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 65 77 20     /// the view 
15d70 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
15d80 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
15d90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15da0 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 56 69      CreateTempVi
15db0 65 77 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20 20  ew = 6,....     
15dc0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15dd0 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 69 67        /// A trig
15de0 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ger will be crea
15df0 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
15e00 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
15e10 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20  nts are the..   
15e20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65 72 20 6e     /// trigger n
15e30 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
15e40 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
15e50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15e60 20 20 20 20 20 43 72 65 61 74 65 54 72 69 67 67       CreateTrigg
15e70 65 72 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20 20  er = 7,....     
15e80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15e90 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 65 77        /// A view
15ea0 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
15eb0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
15ec0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
15ed0 20 61 72 65 20 74 68 65 20 76 69 65 77 0d 0a 20   are the view.. 
15ee0 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e       /// name an
15ef0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
15f00 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15f10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
15f20 61 74 65 56 69 65 77 20 3d 20 38 2c 0d 0a 0d 0a  ateView = 8,....
15f30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15f40 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15f50 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
15f60 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74  t will be execut
15f70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
15f80 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
15f90 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
15fa0 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  e the table name
15fb0 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
15fc0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
15fd0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15fe0 44 65 6c 65 74 65 20 3d 20 39 2c 0d 0a 0d 0a 20  Delete = 9,.... 
15ff0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16000 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e  y>..      /// An
16010 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64   index will be d
16020 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
16030 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16040 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
16050 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78 20        /// index 
16060 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
16070 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
16080 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16090 20 20 20 20 20 20 44 72 6f 70 49 6e 64 65 78 20        DropIndex 
160a0 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 10,....      /
160b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
160c0 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
160d0 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
160e0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
160f0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
16100 61 72 65 20 74 68 65 20 74 61 62 6c 65 73 0d 0a  are the tables..
16110 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 61        /// name a
16120 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
16130 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
16140 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72  mmary>..      Dr
16150 6f 70 54 61 62 6c 65 20 3d 20 31 31 2c 0d 0a 0d  opTable = 11,...
16160 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16170 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16180 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65  A temporary inde
16190 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  x will be droppe
161a0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
161b0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
161c0 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
161d0 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
161e0 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
161f0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
16200 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16210 20 44 72 6f 70 54 65 6d 70 49 6e 64 65 78 20 3d   DropTempIndex =
16220 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   12,....      //
16230 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16240 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
16250 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  ry table will be
16260 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
16270 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16280 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
16290 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
162a0 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  e name and a nul
162b0 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
162c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
162d0 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 54 61        DropTempTa
162e0 62 6c 65 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20  ble = 13,....   
162f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16300 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
16310 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65 72 20  mporary trigger 
16320 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
16330 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16340 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
16350 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
16360 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  he trigger name 
16370 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
16380 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
16390 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
163a0 20 44 72 6f 70 54 65 6d 70 54 72 69 67 67 65 72   DropTempTrigger
163b0 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 14,....      
163c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
163d0 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
163e0 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c 20 62  rary view will b
163f0 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
16400 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16410 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20  arguments are.. 
16420 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 65       /// the vie
16430 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  w name and a nul
16440 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
16450 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16460 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 56 69        DropTempVi
16470 65 77 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20 20 20  ew = 15,....    
16480 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16490 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 69  .      /// A tri
164a0 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f  gger will be dro
164b0 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
164c0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
164d0 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20  ents are the..  
164e0 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65 72 20      /// trigger 
164f0 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
16500 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
16510 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16520 20 20 20 20 20 20 44 72 6f 70 54 72 69 67 67 65        DropTrigge
16530 72 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20  r = 16,....     
16540 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16550 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 65 77        /// A view
16560 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
16570 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16580 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16590 20 61 72 65 20 74 68 65 20 76 69 65 77 0d 0a 20   are the view.. 
165a0 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e       /// name an
165b0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
165c0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
165d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
165e0 70 56 69 65 77 20 3d 20 31 37 2c 0d 0a 0d 0a 20  pView = 17,.... 
165f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16600 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e  y>..      /// An
16610 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
16620 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74  t will be execut
16630 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16640 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16650 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
16660 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  e the table name
16670 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
16680 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16690 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
166a0 49 6e 73 65 72 74 20 3d 20 31 38 2c 0d 0a 0d 0a  Insert = 18,....
166b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
166c0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
166d0 20 50 52 41 47 4d 41 20 73 74 61 74 65 6d 65 6e   PRAGMA statemen
166e0 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74  t will be execut
166f0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16700 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16710 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
16720 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  e the name of th
16730 65 20 50 52 41 47 4d 41 20 61 6e 64 20 74 68 65  e PRAGMA and the
16740 20 6e 65 77 20 76 61 6c 75 65 20 6f 72 20 61 20   new value or a 
16750 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16760 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16770 3e 0d 0a 20 20 20 20 20 20 50 72 61 67 6d 61 20  >..      Pragma 
16780 3d 20 31 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 19,....      /
16790 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
167a0 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
167b0 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20 62 65 20 72  column will be r
167c0 65 61 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ead.  The action
167d0 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
167e0 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20  nts are the..   
167f0 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e 61 6d     /// table nam
16800 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e  e and the column
16810 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
16820 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16830 20 20 20 20 52 65 61 64 20 3d 20 32 30 2c 0d 0a      Read = 20,..
16840 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16850 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16860 20 41 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d   A SELECT statem
16870 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
16880 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
16890 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
168a0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
168b0 61 72 65 20 62 6f 74 68 20 6e 75 6c 6c 20 76 61  are both null va
168c0 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lues...      ///
168d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
168e0 20 20 20 53 65 6c 65 63 74 20 3d 20 32 31 2c 0d     Select = 21,.
168f0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16900 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16910 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  / A transaction 
16920 77 69 6c 6c 20 62 65 20 73 74 61 72 74 65 64 2c  will be started,
16930 20 63 6f 6d 6d 69 74 74 65 64 2c 20 6f 72 20 72   committed, or r
16940 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54 68 65  olled back.  The
16950 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69  ..      /// acti
16960 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16970 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 6e 61  ments are the na
16980 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74  me of the operat
16990 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20 20 20  ion (BEGIN,..   
169a0 20 20 20 2f 2f 2f 20 43 4f 4d 4d 49 54 2c 20 6f     /// COMMIT, o
169b0 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20  r ROLLBACK) and 
169c0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
169d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
169e0 72 79 3e 0d 0a 20 20 20 20 20 20 54 72 61 6e 73  ry>..      Trans
169f0 61 63 74 69 6f 6e 20 3d 20 32 32 2c 0d 0a 0d 0a  action = 22,....
16a00 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16a10 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16a20 6e 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  n UPDATE stateme
16a30 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75  nt will be execu
16a40 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
16a50 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16a60 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
16a70 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  re the table nam
16a80 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e  e and the column
16a90 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
16aa0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16ab0 20 20 20 20 55 70 64 61 74 65 20 3d 20 32 33 2c      Update = 23,
16ac0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16ad0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16ae0 2f 2f 20 41 20 64 61 74 61 62 61 73 65 20 77 69  // A database wi
16af0 6c 6c 20 62 65 20 61 74 74 61 63 68 65 64 20 74  ll be attached t
16b00 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  o the connection
16b10 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16b20 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f  ecific..      //
16b30 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  / arguments are 
16b40 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
16b50 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  e name and a nul
16b60 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
16b70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16b80 20 20 20 20 20 20 41 74 74 61 63 68 20 3d 20 32        Attach = 2
16b90 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
16ba0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16bb0 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73 65 20   /// A database 
16bc0 77 69 6c 6c 20 62 65 20 64 65 74 61 63 68 65 64  will be detached
16bd0 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63   from the connec
16be0 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69 6f  tion.  The actio
16bf0 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20  n-specific..    
16c00 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20    /// arguments 
16c10 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  are the database
16c20 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
16c30 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16c40 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16c50 20 20 20 20 20 44 65 74 61 63 68 20 3d 20 32 35       Detach = 25
16c60 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16c70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16c80 2f 2f 2f 20 54 68 65 20 73 63 68 65 6d 61 20 6f  /// The schema o
16c90 66 20 61 20 74 61 62 6c 65 20 77 69 6c 6c 20 62  f a table will b
16ca0 65 20 61 6c 74 65 72 65 64 2e 20 20 54 68 65 20  e altered.  The 
16cb0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16cc0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
16cd0 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 64 61 74   /// are the dat
16ce0 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 74  abase name and t
16cf0 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
16d00 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16d10 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 6c 74 65  ary>..      Alte
16d20 72 54 61 62 6c 65 20 3d 20 32 36 2c 0d 0a 0d 0a  rTable = 26,....
16d30 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16d40 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16d50 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20  n index will be 
16d60 64 65 6c 65 74 65 64 20 61 6e 64 20 74 68 65 6e  deleted and then
16d70 20 72 65 63 72 65 61 74 65 64 2e 20 20 54 68 65   recreated.  The
16d80 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16d90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75  ..      /// argu
16da0 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 69 6e  ments are the in
16db0 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  dex name and a n
16dc0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
16dd0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16de0 0d 0a 20 20 20 20 20 20 52 65 69 6e 64 65 78 20  ..      Reindex 
16df0 3d 20 32 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 27,....      /
16e00 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16e10 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
16e20 77 69 6c 6c 20 62 65 20 61 6e 61 6c 79 7a 65 64  will be analyzed
16e30 20 74 6f 20 67 61 74 68 65 72 73 20 73 74 61 74   to gathers stat
16e40 69 73 74 69 63 73 20 61 62 6f 75 74 20 69 74 2e  istics about it.
16e50 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f    The..      ///
16e60 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16e70 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16e80 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
16e90 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
16ea0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16eb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 6e 61  mary>..      Ana
16ec0 6c 79 7a 65 20 3d 20 32 38 2c 0d 0a 0d 0a 20 20  lyze = 28,....  
16ed0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16ee0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76  >..      /// A v
16ef0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
16f00 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
16f10 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16f20 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16f30 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
16f40 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74  table name and t
16f50 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d  he module name..
16f60 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16f70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
16f80 61 74 65 56 74 61 62 6c 65 20 3d 20 32 39 2c 0d  ateVtable = 29,.
16f90 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16fa0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16fb0 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c  / A virtual tabl
16fc0 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  e will be droppe
16fd0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
16fe0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16ff0 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
17000 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
17010 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e  and the module n
17020 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
17030 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17040 20 20 44 72 6f 70 56 74 61 62 6c 65 20 3d 20 33    DropVtable = 3
17050 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
17060 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17070 20 2f 2f 2f 20 41 20 53 51 4c 20 66 75 6e 63 74   /// A SQL funct
17080 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  ion will be call
17090 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
170a0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
170b0 74 73 20 61 72 65 20 61 0d 0a 20 20 20 20 20 20  ts are a..      
170c0 2f 2f 2f 20 6e 75 6c 6c 20 76 61 6c 75 65 20 61  /// null value a
170d0 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  nd the function 
170e0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
170f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17100 20 20 20 46 75 6e 63 74 69 6f 6e 20 3d 20 33 31     Function = 31
17110 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17120 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17130 2f 2f 2f 20 41 20 73 61 76 65 70 6f 69 6e 74 20  /// A savepoint 
17140 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2c  will be created,
17150 20 72 65 6c 65 61 73 65 64 2c 20 6f 72 20 72 6f   released, or ro
17160 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54 68 65 0d  lled back.  The.
17170 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f  .      /// actio
17180 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
17190 65 6e 74 73 20 61 72 65 20 74 68 65 20 6e 61 6d  ents are the nam
171a0 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69  e of the operati
171b0 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20 20 20 20  on (BEGIN,..    
171c0 20 20 2f 2f 2f 20 52 45 4c 45 41 53 45 2c 20 6f    /// RELEASE, o
171d0 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20  r ROLLBACK) and 
171e0 74 68 65 20 73 61 76 65 70 6f 69 6e 74 20 6e 61  the savepoint na
171f0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
17200 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17210 20 53 61 76 65 70 6f 69 6e 74 20 3d 20 33 32 2c   Savepoint = 32,
17220 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17230 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17240 2f 2f 20 41 20 72 65 63 75 72 73 69 76 65 20 71  // A recursive q
17250 75 65 72 79 20 77 69 6c 6c 20 62 65 20 65 78 65  uery will be exe
17260 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  cuted.  The acti
17270 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17280 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
17290 20 61 72 65 20 74 77 6f 20 6e 75 6c 6c 20 76 61   are two null va
172a0 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lues...      ///
172b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
172c0 20 20 20 52 65 63 75 72 73 69 76 65 20 3d 20 33     Recursive = 3
172d0 33 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  3..  }....  /// 
172e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
172f0 20 54 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65   The return code
17300 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
17310 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61   call into the a
17320 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f  uthorizer...  //
17330 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17340 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
17350 74 65 41 75 74 68 6f 72 69 7a 65 72 52 65 74 75  teAuthorizerRetu
17360 72 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20  rnCode..  {..   
17370 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17380 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
17390 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61  action will be a
173a0 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20 20 20 20 2f  llowed...      /
173b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
173c0 20 20 20 20 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a       Ok = 0,....
173d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
173e0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
173f0 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f  he overall actio
17400 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c  n will be disall
17410 6f 77 65 64 20 61 6e 64 20 61 6e 20 65 72 72 6f  owed and an erro
17420 72 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62  r message will b
17430 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  e..      /// ret
17440 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 71  urned from the q
17450 75 65 72 79 20 70 72 65 70 61 72 61 74 69 6f 6e  uery preparation
17460 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
17470 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17480 20 20 20 20 20 20 44 65 6e 79 20 3d 20 31 2c 0d        Deny = 1,.
17490 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
174a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
174b0 2f 20 54 68 65 20 73 70 65 63 69 66 69 63 20 61  / The specific a
174c0 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69  ction will be di
174d0 73 61 6c 6c 6f 77 65 64 3b 20 68 6f 77 65 76 65  sallowed; howeve
174e0 72 2c 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 61  r, the overall a
174f0 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ction..      ///
17500 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 2e 20   will continue. 
17510 20 54 68 65 20 65 78 61 63 74 20 65 66 66 65 63   The exact effec
17520 74 73 20 6f 66 20 74 68 69 73 20 72 65 74 75 72  ts of this retur
17530 6e 20 63 6f 64 65 20 76 61 72 79 20 64 65 70 65  n code vary depe
17540 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  nding..      ///
17550 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 63   on the specific
17560 20 61 63 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20   action, please 
17570 72 65 66 65 72 20 74 6f 20 74 68 65 20 53 51 4c  refer to the SQL
17580 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
17590 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 63 75  ..      /// docu
175a0 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
175b0 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20  ther details... 
175c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
175d0 72 79 3e 0d 0a 20 20 20 20 20 20 49 67 6e 6f 72  ry>..      Ignor
175e0 65 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  e = 2..  }....  
175f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17600 20 2f 2f 2f 20 43 6c 61 73 73 20 75 73 65 64 20   /// Class used 
17610 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 65  internally to de
17620 74 65 72 6d 69 6e 65 20 74 68 65 20 64 61 74 61  termine the data
17630 74 79 70 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  type of a column
17640 20 69 6e 20 61 20 72 65 73 75 6c 74 73 65 74 0d   in a resultset.
17650 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
17660 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  >..  internal se
17670 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
17680 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20  eType..  {..    
17690 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
176a0 20 20 20 2f 2f 2f 20 54 68 65 20 44 62 54 79 70     /// The DbTyp
176b0 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c  e of the column,
176c0 20 6f 72 20 44 62 54 79 70 65 2e 4f 62 6a 65 63   or DbType.Objec
176d0 74 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  t if it cannot b
176e0 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20  e determined..  
176f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17700 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
17710 62 54 79 70 65 20 54 79 70 65 3b 0d 0a 20 20 20  bType Type;..   
17720 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17730 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 66 66 69      /// The affi
17740 6e 69 74 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  nity of a column
17750 2c 20 75 73 65 64 20 66 6f 72 20 65 78 70 72 65  , used for expre
17760 73 73 69 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54  ssions or when T
17770 79 70 65 20 69 73 20 44 62 54 79 70 65 2e 4f 62  ype is DbType.Ob
17780 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ject..    /// </
17790 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
177a0 74 65 72 6e 61 6c 20 54 79 70 65 41 66 66 69 6e  ternal TypeAffin
177b0 69 74 79 20 41 66 66 69 6e 69 74 79 3b 0d 0a 0d  ity Affinity;...
177c0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
177d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17810 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
17820 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
17830 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65 66 61  onstructs a defa
17840 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  ult instance of 
17850 74 68 69 73 20 74 79 70 65 2e 0d 0a 20 20 20 20  this type...    
17860 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17870 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
17880 65 54 79 70 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  eType()..    {..
17890 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
178a0 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ing...    }.... 
178b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
178c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17900 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
17910 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
17920 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
17930 6e 63 65 20 6f 66 20 74 68 69 73 20 74 79 70 65  nce of this type
17940 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
17950 69 65 64 20 66 69 65 6c 64 20 76 61 6c 75 65 73  ied field values
17960 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
17970 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
17980 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 66 66 69  param name="affi
17990 6e 69 74 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nity">..    /// 
179a0 54 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  The type affinit
179b0 79 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65  y to use for the
179c0 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   new instance...
179d0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
179e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
179f0 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20   name="type">.. 
17a00 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
17a10 61 73 65 20 74 79 70 65 20 74 6f 20 75 73 65 20  ase type to use 
17a20 66 6f 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74  for the new inst
17a30 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ance...    /// <
17a40 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62  /param>..    pub
17a50 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65 28 0d  lic SQLiteType(.
17a60 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
17a70 69 74 79 20 61 66 66 69 6e 69 74 79 2c 0d 0a 20  ity affinity,.. 
17a80 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
17a90 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20  ..      )..     
17aa0 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 7b   : this()..    {
17ab0 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 41 66 66  ..      this.Aff
17ac0 69 6e 69 74 79 20 3d 20 61 66 66 69 6e 69 74 79  inity = affinity
17ad0 3b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 54 79  ;..      this.Ty
17ae0 70 65 20 3d 20 74 79 70 65 3b 0d 0a 20 20 20 20  pe = type;..    
17af0 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f  }..  }....  ////
17b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69  /////////....  i
17b50 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
17b60 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79 70  lass SQLiteDbTyp
17b70 65 4d 61 70 0d 0a 20 20 20 20 20 20 3a 20 44 69  eMap..      : Di
17b80 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
17b90 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
17ba0 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20  ping>..  {..    
17bb0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
17bc0 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 70 72  e Data..      pr
17bd0 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79  ivate Dictionary
17be0 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44  <DbType, SQLiteD
17bf0 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 72 65  bTypeMapping> re
17c00 76 65 72 73 65 3b 0d 0a 20 20 20 20 20 20 23 65  verse;..      #e
17c10 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
17c20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17c70 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
17c80 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
17c90 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53  ..      public S
17ca0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 29  QLiteDbTypeMap()
17cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 62 61  ..          : ba
17cc0 73 65 28 6e 65 77 20 54 79 70 65 4e 61 6d 65 53  se(new TypeNameS
17cd0 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 28 29 29  tringComparer())
17ce0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
17cf0 20 20 20 20 20 72 65 76 65 72 73 65 20 3d 20 6e       reverse = n
17d00 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62  ew Dictionary<Db
17d10 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79  Type, SQLiteDbTy
17d20 70 65 4d 61 70 70 69 6e 67 3e 28 29 3b 0d 0a 20  peMapping>();.. 
17d30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
17d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17d90 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
17da0 44 62 54 79 70 65 4d 61 70 28 0d 0a 20 20 20 20  DbTypeMap(..    
17db0 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62 6c        IEnumerabl
17dc0 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  e<SQLiteDbTypeMa
17dd0 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f  pping> collectio
17de0 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  n..          )..
17df0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
17e00 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
17e10 20 20 20 20 20 20 20 41 64 64 28 63 6f 6c 6c 65         Add(colle
17e20 63 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ction);..      }
17e30 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
17e40 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
17e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
17ea0 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e 43 6f  region System.Co
17eb0 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69  llections.Generi
17ec0 63 2e 44 69 63 74 69 6f 6e 61 72 79 20 22 4f 76  c.Dictionary "Ov
17ed0 65 72 72 69 64 65 73 22 0d 0a 20 20 20 20 20 20  errides"..      
17ee0 70 75 62 6c 69 63 20 6e 65 77 20 69 6e 74 20 43  public new int C
17ef0 6c 65 61 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lear()..      {.
17f00 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72  .          int r
17f10 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  esult = 0;....  
17f20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65          if (reve
17f30 72 73 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rse != null)..  
17f40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17f50 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
17f60 2b 3d 20 72 65 76 65 72 73 65 2e 43 6f 75 6e 74  += reverse.Count
17f70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
17f80 20 72 65 76 65 72 73 65 2e 43 6c 65 61 72 28 29   reverse.Clear()
17f90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
17fa0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 73 75  ..          resu
17fb0 6c 74 20 2b 3d 20 62 61 73 65 2e 43 6f 75 6e 74  lt += base.Count
17fc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 61 73  ;..          bas
17fd0 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d 0a 20 20  e.Clear();....  
17fe0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
17ff0 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  esult;..      }.
18000 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
18010 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18060 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
18070 65 67 69 6f 6e 20 53 51 4c 69 74 65 44 62 54 79  egion SQLiteDbTy
18080 70 65 4d 61 70 70 69 6e 67 20 48 65 6c 70 65 72  peMapping Helper
18090 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
180a0 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28  public void Add(
180b0 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75  ..          IEnu
180c0 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62  merable<SQLiteDb
180d0 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c  TypeMapping> col
180e0 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  lection..       
180f0 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
18100 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6c           if (col
18110 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29  lection == null)
18120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18130 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
18140 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
18150 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 29 3b 0d 0a  "collection");..
18160 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65  ..          fore
18170 61 63 68 20 28 53 51 4c 69 74 65 44 62 54 79 70  ach (SQLiteDbTyp
18180 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 20 69 6e  eMapping item in
18190 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20   collection)..  
181a0 20 20 20 20 20 20 20 20 20 20 20 20 41 64 64 28              Add(
181b0 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  item);..      }.
181c0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
181d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18210 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
18220 69 63 20 76 6f 69 64 20 41 64 64 28 53 51 4c 69  ic void Add(SQLi
18230 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
18240 69 74 65 6d 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  item)..      {..
18250 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74            if (it
18260 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  em == null)..   
18270 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
18280 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
18290 6c 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d  lException("item
182a0 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
182b0 20 69 66 20 28 69 74 65 6d 2e 74 79 70 65 4e 61   if (item.typeNa
182c0 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
182d0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
182e0 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63   new ArgumentExc
182f0 65 70 74 69 6f 6e 28 22 69 74 65 6d 20 74 79 70  eption("item typ
18300 65 20 6e 61 6d 65 20 63 61 6e 6e 6f 74 20 62 65  e name cannot be
18310 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20   null");....    
18320 20 20 20 20 20 20 62 61 73 65 2e 41 64 64 28 69        base.Add(i
18330 74 65 6d 2e 74 79 70 65 4e 61 6d 65 2c 20 69 74  tem.typeName, it
18340 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  em);....        
18350 20 20 69 66 20 28 69 74 65 6d 2e 70 72 69 6d 61    if (item.prima
18360 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry)..           
18370 20 20 20 72 65 76 65 72 73 65 2e 41 64 64 28 69     reverse.Add(i
18380 74 65 6d 2e 64 61 74 61 54 79 70 65 2c 20 69 74  tem.dataType, it
18390 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  em);..      }.. 
183a0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
183b0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18400 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
18410 69 6f 6e 20 44 62 54 79 70 65 20 48 65 6c 70 65  ion DbType Helpe
18420 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
18430 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e   public bool Con
18440 74 61 69 6e 73 4b 65 79 28 44 62 54 79 70 65 20  tainsKey(DbType 
18450 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  key)..      {.. 
18460 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76           if (rev
18470 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  erse == null).. 
18480 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
18490 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
184a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
184b0 65 76 65 72 73 65 2e 43 6f 6e 74 61 69 6e 73 4b  everse.ContainsK
184c0 65 79 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ey(key);..      
184d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18520 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
18530 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79 47 65 74  blic bool TryGet
18540 56 61 6c 75 65 28 44 62 54 79 70 65 20 6b 65 79  Value(DbType key
18550 2c 20 6f 75 74 20 53 51 4c 69 74 65 44 62 54 79  , out SQLiteDbTy
18560 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 29  peMapping value)
18570 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18580 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65       if (reverse
18590 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
185a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
185b0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75        value = nu
185c0 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
185d0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
185e0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
185f0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
18600 6e 20 72 65 76 65 72 73 65 2e 54 72 79 47 65 74  n reverse.TryGet
18610 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 76  Value(key, out v
18620 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  alue);..      }.
18630 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
18690 69 63 20 62 6f 6f 6c 20 52 65 6d 6f 76 65 28 44  ic bool Remove(D
186a0 62 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20  bType key)..    
186b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
186c0 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75  f (reverse == nu
186d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
186e0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
186f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
18700 74 75 72 6e 20 72 65 76 65 72 73 65 2e 52 65 6d  turn reverse.Rem
18710 6f 76 65 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20  ove(key);..     
18720 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
18730 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  gion..  }....  /
18740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
18790 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
187a0 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62  d class SQLiteDb
187b0 54 79 70 65 4d 61 70 70 69 6e 67 0d 0a 20 20 7b  TypeMapping..  {
187c0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53  ..    internal S
187d0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
187e0 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ng(..        str
187f0 69 6e 67 20 6e 65 77 54 79 70 65 4e 61 6d 65 2c  ing newTypeName,
18800 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65  ..        DbType
18810 20 6e 65 77 44 61 74 61 54 79 70 65 2c 0d 0a 20   newDataType,.. 
18820 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 65 77 50         bool newP
18830 72 69 6d 61 72 79 0d 0a 20 20 20 20 20 20 20 20  rimary..        
18840 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
18850 74 79 70 65 4e 61 6d 65 20 3d 20 6e 65 77 54 79  typeName = newTy
18860 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64  peName;..      d
18870 61 74 61 54 79 70 65 20 3d 20 6e 65 77 44 61 74  ataType = newDat
18880 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 70 72  aType;..      pr
18890 69 6d 61 72 79 20 3d 20 6e 65 77 50 72 69 6d 61  imary = newPrima
188a0 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ry;..    }....  
188b0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
188c0 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  g typeName;..   
188d0 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65   internal DbType
188e0 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20   dataType;..    
188f0 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 70 72  internal bool pr
18900 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20  imary;..  }.... 
18910 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
18920 20 63 6c 61 73 73 20 54 79 70 65 4e 61 6d 65 53   class TypeNameS
18930 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20  tringComparer : 
18940 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65  IEqualityCompare
18950 72 3c 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a  r<string>..  {..
18960 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75      #region IEqu
18970 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74  alityComparer<st
18980 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20  ring> Members.. 
18990 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45     public bool E
189a0 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74  quals(..      st
189b0 72 69 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20  ring left,..    
189c0 20 20 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a    string right..
189d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
189e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
189f0 69 6e 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c  ing.Equals(left,
18a00 20 72 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f   right, StringCo
18a10 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
18a20 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20  IgnoreCase);..  
18a30 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75  //////....    pu
18a90 62 6c 69 63 20 69 6e 74 20 47 65 74 48 61 73 68  blic int GetHash
18aa0 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72  Code(..      str
18ab0 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
18ac0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
18ad0 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
18ae0 54 45 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69  TE: The only thi
18af0 6e 67 20 74 68 61 74 20 77 65 20 6d 75 73 74 20  ng that we must 
18b00 67 75 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20  guarantee here, 
18b10 61 63 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20  according..     
18b20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65   //       to the
18b30 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
18b40 69 6f 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74  ion for IEqualit
18b50 79 43 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a 20  yComparer, is.. 
18b60 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
18b70 61 74 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e  at for two given
18b80 20 73 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75   strings, if Equ
18b90 61 6c 73 20 72 65 74 75 72 6e 20 74 72 75 65 20  als return true 
18ba0 74 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20  then..      //  
18bb0 20 20 20 20 20 74 68 65 20 74 77 6f 20 73 74 72       the two str
18bc0 69 6e 67 73 20 6d 75 73 74 20 68 61 73 68 20 74  ings must hash t
18bd0 6f 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  o the same value
18be0 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
18bf0 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
18c00 6e 75 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41 54  null)..#if !PLAT
18c10 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
18c20 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 72  EWORK..        r
18c30 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f  eturn value.ToLo
18c40 77 65 72 49 6e 76 61 72 69 61 6e 74 28 29 2e 47  werInvariant().G
18c50 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23  etHashCode();..#
18c60 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65  else..        re
18c70 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77  turn value.ToLow
18c80 65 72 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65  er().GetHashCode
18c90 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
18ca0 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
18cb0 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
18cc0 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
18cd0 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20  ("value");..    
18ce0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
18cf0 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a                 n..  }..}..