System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 155c514b74e82e96bfde8ea7b1dea3cd09cb043b:


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 55 6e 73 61 66  eException(Unsaf
abf0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53  eNativeMethods.S
ac00: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
ac10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac20: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
ac30: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
ac40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac50: 20 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65     "Cannot conve
ac60: 72 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20 62  rt type {0} to b
ac70: 6f 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20  oolean",..      
ac80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
ac90: 70 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20  peCode));..     
aca0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
acb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
acc0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
acd0: 74 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72 75  t a value to tru
ace0: 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20  e or false...   
acf0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ad00: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
ad10: 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41 20  name="source">A 
ad20: 73 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72  string or number
ad30: 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72   representing tr
ad40: 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72  ue or false</par
ad50: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
ad60: 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e  turns></returns>
ad70: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
ad80: 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65  tic bool ToBoole
ad90: 61 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63 65  an(object source
ada0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
adb0: 69 66 20 28 73 6f 75 72 63 65 20 69 73 20 62 6f  if (source is bo
adc0: 6f 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c  ol) return (bool
add0: 29 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20  )source;....    
ade0: 20 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65    return ToBoole
adf0: 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68 50  an(ToStringWithP
ae00: 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20  rovider(..      
ae10: 20 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c 74      source, Cult
ae20: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
ae30: 74 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20  tCulture));..   
ae40: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
ae50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ae60: 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 69 6e   Convert a strin
ae70: 67 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c  g to true or fal
ae80: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
ae90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
aea0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
aeb0: 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 72  urce">A string r
aec0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65  epresenting true
aed0: 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d   or false</param
aee0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
aef0: 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  rns></returns>..
af00: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
af10: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 65 73 22  >..    /// "yes"
af20: 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22  , "no", "y", "n"
af30: 2c 20 22 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22  , "0", "1", "on"
af40: 2c 20 22 6f 66 66 22 20 61 73 20 77 65 6c 6c 20  , "off" as well 
af50: 61 73 20 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65  as Boolean.False
af60: 53 74 72 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65  String and Boole
af70: 61 6e 2e 54 72 75 65 53 74 72 69 6e 67 20 77 69  an.TrueString wi
af80: 6c 6c 20 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f  ll all be..    /
af90: 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  // converted to 
afa0: 61 20 70 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e  a proper boolean
afb0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
afc0: 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20   </remarks>..   
afd0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
afe0: 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74  ool ToBoolean(st
aff0: 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20 20  ring source)..  
b000: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 53    {..      if (S
b010: 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f  tring.Compare(so
b020: 75 72 63 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53  urce, bool.TrueS
b030: 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d  tring, StringCom
b040: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b050: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b060: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
b070: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53 74       else if (St
b080: 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75  ring.Compare(sou
b090: 72 63 65 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53  rce, bool.FalseS
b0a0: 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d  tring, StringCom
b0b0: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b0c0: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b0d0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
b0e0: 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68 28 73  ..      switch(s
b0f0: 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75  ource.ToLower(Cu
b100: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
b110: 61 6e 74 43 75 6c 74 75 72 65 29 29 0d 0a 20 20  antCulture))..  
b120: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63      {..        c
b130: 61 73 65 20 22 79 65 73 22 3a 0d 0a 20 20 20 20  ase "yes":..    
b140: 20 20 20 20 63 61 73 65 20 22 79 22 3a 0d 0a 20      case "y":.. 
b150: 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22 3a         case "1":
b160: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b170: 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  on":..          
b180: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
b190: 20 20 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a        case "no":
b1a0: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b1b0: 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  n":..        cas
b1c0: 65 20 22 30 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "0":..        
b1d0: 63 61 73 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20  case "off":..   
b1e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
b1f0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 64 65  lse;..        de
b200: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
b210: 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
b220: 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 73  mentException("s
b230: 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 20 20  ource");..      
b240: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
b250: 23 72 65 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e  #region Type Con
b260: 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  versions..    //
b270: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b280: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
b290: 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20 61 20  SQLiteType to a 
b2a0: 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a 65 63 74  .NET Type object
b2b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
b2c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
b2d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68  aram name="t">Th
b2e0: 65 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20  e SQLiteType to 
b2f0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
b300: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
b310: 73 3e 52 65 74 75 72 6e 73 20 61 20 2e 4e 45 54  s>Returns a .NET
b320: 20 54 79 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65   Type object</re
b330: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
b340: 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65  rnal static Type
b350: 20 53 51 4c 69 74 65 54 79 70 65 54 6f 54 79 70   SQLiteTypeToTyp
b360: 65 28 53 51 4c 69 74 65 54 79 70 65 20 74 29 0d  e(SQLiteType t).
b370: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
b380: 20 28 74 2e 54 79 70 65 20 3d 3d 20 44 62 54 79   (t.Type == DbTy
b390: 70 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20  pe.Object)..    
b3a0: 20 20 20 20 72 65 74 75 72 6e 20 5f 61 66 66 69      return _affi
b3b0: 6e 69 74 79 74 6f 74 79 70 65 5b 28 69 6e 74 29  nitytotype[(int)
b3c0: 74 2e 41 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20  t.Affinity];..  
b3d0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
b3e0: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43    return SQLiteC
b3f0: 6f 6e 76 65 72 74 2e 44 62 54 79 70 65 54 6f 54  onvert.DbTypeToT
b400: 79 70 65 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20  ype(t.Type);..  
b410: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
b420: 74 65 20 73 74 61 74 69 63 20 54 79 70 65 5b 5d  te static Type[]
b430: 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70 65   _affinitytotype
b440: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65   = {..      type
b450: 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f  of(object),   //
b460: 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 28   Uninitialized (
b470: 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  0)..      typeof
b480: 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49  (Int64),    // I
b490: 6e 74 36 34 20 28 31 29 0d 0a 20 20 20 20 20 20  nt64 (1)..      
b4a0: 74 79 70 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20  typeof(Double), 
b4b0: 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d    // Double (2).
b4c0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
b4d0: 72 69 6e 67 29 2c 20 20 20 2f 2f 20 54 65 78 74  ring),   // Text
b4e0: 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (3)..      type
b4f0: 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f  of(byte[]),   //
b500: 20 42 6c 6f 62 20 28 34 29 0d 0a 20 20 20 20 20   Blob (4)..     
b510: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c   typeof(object),
b520: 20 20 20 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a     // Null (5)..
b530: 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74        typeof(Dat
b540: 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54  eTime), // DateT
b550: 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20 20  ime (10)..      
b560: 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20 20  typeof(object)  
b570: 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a    // None (11)..
b580: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
b590: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b5a0: 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e   /// For a given
b5b0: 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65 2c   intrinsic type,
b5c0: 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70 65   return a DbType
b5d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
b5e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
b5f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
b600: 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65 20  The native type 
b610: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
b620: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
b630: 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73 70  urns>The corresp
b640: 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74 20  onding (closest 
b650: 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f 72  match) DbType</r
b660: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
b670: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54  ernal static DbT
b680: 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70 65  ype TypeToDbType
b690: 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  (Type typ)..    
b6a0: 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64  {..      TypeCod
b6b0: 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54  e tc = Type.GetT
b6c0: 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20  ypeCode(typ);.. 
b6d0: 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54       if (tc == T
b6e0: 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d  ypeCode.Object).
b6f0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
b700: 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70    if (typ == typ
b710: 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65 74  eof(byte[])) ret
b720: 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61 72  urn DbType.Binar
b730: 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  y;..        if (
b740: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75  typ == typeof(Gu
b750: 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54 79  id)) return DbTy
b760: 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20 20  pe.Guid;..      
b770: 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e    return DbType.
b780: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d  String;..      }
b790: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
b7a0: 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69 6e  typetodbtype[(in
b7b0: 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  t)tc];..    }...
b7c0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
b7d0: 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74 79  tic DbType[] _ty
b7e0: 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a  petodbtype = {..
b7f0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a        DbType.Obj
b800: 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20  ect,   // Empty 
b810: 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (0)..      DbTyp
b820: 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f  e.Binary,   // O
b830: 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20  bject (1)..     
b840: 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20   DbType.Object, 
b850: 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d    // DBNull (2).
b860: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 6f  .      DbType.Bo
b870: 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65  olean,  // Boole
b880: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44 62  an (3)..      Db
b890: 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20 2f  Type.SByte,    /
b8a0: 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20  / Char (4)..    
b8b0: 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20    DbType.SByte, 
b8c0: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d     // SByte (5).
b8d0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 79  .      DbType.By
b8e0: 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20  te,     // Byte 
b8f0: 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (6)..      DbTyp
b900: 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49  e.Int16,    // I
b910: 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20  nt16 (7)..      
b920: 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 20  DbType.UInt16,  
b930: 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a   // UInt16 (8)..
b940: 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74        DbType.Int
b950: 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20  32,    // Int32 
b960: 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (9)..      DbTyp
b970: 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55  e.UInt32,   // U
b980: 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20  Int32 (10)..    
b990: 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20    DbType.Int64, 
b9a0: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29     // Int64 (11)
b9b0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
b9c0: 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74  Int64,   // UInt
b9d0: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44  64 (12)..      D
b9e0: 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20  bType.Single,   
b9f0: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a  // Single (13)..
ba00: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f 75        DbType.Dou
ba10: 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65  ble,   // Double
ba20: 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62 54   (14)..      DbT
ba30: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f  ype.Decimal,  //
ba40: 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20   Decimal (15).. 
ba50: 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74 65       DbType.Date
ba60: 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d  Time, // DateTim
ba70: 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 62  e (16)..      Db
ba80: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
ba90: 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20  / ?? (17)..     
baa0: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20 20   DbType.String  
bab0: 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29    // String (18)
bac0: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
bad0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bae0: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74     /// Returns t
baf0: 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f  he ColumnSize fo
bb00: 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54 79  r the given DbTy
bb10: 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  pe..    /// </su
bb20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
bb30: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
bb40: 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f 20  ">The DbType to 
bb50: 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 3c  get the size of<
bb60: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
bb70: 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75   <returns></retu
bb80: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
bb90: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44 62  al static int Db
bba0: 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65  TypeToColumnSize
bbb0: 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20  (DbType typ)..  
bbc0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
bbd0: 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d  n _dbtypetocolum
bbe0: 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b  nsize[(int)typ];
bbf0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
bc00: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
bc10: 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c  t[] _dbtypetocol
bc20: 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20  umnsize = {..   
bc30: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bc40: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28   // AnsiString (
bc50: 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  0)..      int.Ma
bc60: 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72  xValue, // Binar
bc70: 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c 20  y (1)..      1, 
bc80: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79             // By
bc90: 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31 2c  te (2)..      1,
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
bcb0: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
bcc0: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
bcd0: 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d  // Currency (4).
bce0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
bcf0: 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35 29       // Date (5)
bd00: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bd10: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d        // DateTim
bd20: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c 20  e (6)..      8, 
bd30: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65             // De
bd40: 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20  cimal (7)..     
bd50: 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   8,            /
bd60: 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20  / Double (8)..  
bd70: 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20 20      16,         
bd80: 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20    // Guid (9).. 
bd90: 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20 20       2,         
bda0: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29     // Int16 (10)
bdb0: 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20 20  ..      4,      
bdc0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28        // Int32 (
bdd0: 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  11)..      8,   
bde0: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36           // Int6
bdf0: 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69 6e  4 (12)..      in
be00: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f  t.MaxValue, // O
be10: 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20  bject (13)..    
be20: 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20 20    1,            
be30: 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20  // SByte (14).. 
be40: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
be50: 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35     // Single (15
be60: 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78  )..      int.Max
be70: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
be80: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c 20   (16)..      8, 
be90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 69             // Ti
bea0: 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 32  me (17)..      2
beb0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
bec0: 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20  UInt16 (18)..   
bed0: 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20     4,           
bee0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d   // UInt32 (19).
bef0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
bf00: 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28       // UInt64 (
bf10: 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  20)..      8,   
bf20: 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e           // VarN
bf30: 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20  umeric (21)..   
bf40: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bf50: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
bf60: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
bf70: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
bf80: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78  ue, // StringFix
bf90: 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20  edLength (23).. 
bfa0: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bfb0: 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20  e, // ?? (24).. 
bfc0: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bfd0: 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a  e  // Xml (25)..
bfe0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e      };....    in
bff0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f 62  ternal static ob
c000: 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75 6d  ject DbTypeToNum
c010: 65 72 69 63 50 72 65 63 69 73 69 6f 6e 28 44 62  ericPrecision(Db
c020: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
c030: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
c040: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 70  dbtypetonumericp
c050: 72 65 63 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79  recision[(int)ty
c060: 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  p];..    }....  
c070: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c080: 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70   object[] _dbtyp
c090: 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63 69 73  etonumericprecis
c0a0: 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ion = {..      D
c0b0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c0c0: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
c0d0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c0e0: 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ue, // Binary (1
c0f0: 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20 20 20  )..      3,     
c100: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
c110: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c120: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65  .Value, // Boole
c130: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 31 39  an (3)..      19
c140: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43  ,           // C
c150: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
c160: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c170: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
c180: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c190: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
c1a0: 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20  )..      53,    
c1b0: 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d 61         // Decima
c1c0: 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 35 33 2c  l (7)..      53,
c1d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f             // Do
c1e0: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
c1f0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c200: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
c210: 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   5,            /
c220: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
c230: 20 20 20 20 31 30 2c 20 20 20 20 20 20 20 20 20      10,         
c240: 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d    // Int32 (11).
c250: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c260: 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31       // Int64 (1
c270: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c280: 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63  .Value, // Objec
c290: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 33 2c  t (13)..      3,
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c2b0: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
c2c0: 20 32 34 2c 20 20 20 20 20 20 20 20 20 20 20 2f   24,           /
c2d0: 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20  / Single (15).. 
c2e0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c2f0: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36  e, // String (16
c300: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c310: 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28  Value, // Time (
c320: 31 37 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20  17)..      5,   
c330: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
c340: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 31  16 (18)..      1
c350: 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  0,           // 
c360: 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20  UInt32 (19)..   
c370: 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20 20     19,          
c380: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
c390: 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20  .      53,      
c3a0: 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72       // VarNumer
c3b0: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44  ic (21)..      D
c3c0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c3d0: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
c3e0: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
c3f0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c400: 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65  // StringFixedLe
c410: 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20  ngth (23)..     
c420: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c430: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
c440: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f   DBNull.Value  /
c450: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
c460: 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e  };....    intern
c470: 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  al static object
c480: 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69 63   DbTypeToNumeric
c490: 53 63 61 6c 65 28 44 62 54 79 70 65 20 74 79 70  Scale(DbType typ
c4a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
c4b0: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f  return _dbtypeto
c4c0: 6e 75 6d 65 72 69 63 73 63 61 6c 65 5b 28 69 6e  numericscale[(in
c4d0: 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  t)typ];..    }..
c4e0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
c4f0: 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64  atic object[] _d
c500: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63  btypetonumericsc
c510: 61 6c 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ale = {..      D
c520: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c530: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
c540: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c550: 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ue, // Binary (1
c560: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20  )..      0,     
c570: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
c580: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c590: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65  .Value, // Boole
c5a0: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 34 2c  an (3)..      4,
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
c5c0: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
c5d0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c5e0: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
c5f0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c600: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
c610: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c620: 56 61 6c 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61  Value, // Decima
c630: 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 44 42 4e  l (7)..      DBN
c640: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f  ull.Value, // Do
c650: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
c660: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c670: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
c680: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
c690: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
c6a0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c6b0: 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d    // Int32 (11).
c6c0: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c6d0: 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31       // Int64 (1
c6e0: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c6f0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63  .Value, // Objec
c700: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 30 2c  t (13)..      0,
c710: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c720: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
c730: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c740: 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20  / Single (15).. 
c750: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c760: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36  e, // String (16
c770: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c780: 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28  Value, // Time (
c790: 31 37 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  17)..      0,   
c7a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
c7b0: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 30  16 (18)..      0
c7c0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c7d0: 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20  UInt32 (19)..   
c7e0: 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20     0,           
c7f0: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
c800: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c810: 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72       // VarNumer
c820: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44  ic (21)..      D
c830: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c840: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
c850: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
c860: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c870: 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65  // StringFixedLe
c880: 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20  ngth (23)..     
c890: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c8a0: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
c8b0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f   DBNull.Value  /
c8c0: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
c8d0: 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  };....    /// <s
c8e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
c8f0: 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   Determines the 
c900: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
c910: 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 62 65   type name to be
c920: 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20 20   used when a..  
c930: 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63    /// per-connec
c940: 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f  tion value is no
c950: 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  t available...  
c960: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
c980: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
c990: 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  n">..    /// The
c9a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
c9b0: 65 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61 70  ext for type map
c9c0: 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  pings, if any...
c9d0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
c9e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
c9f0: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
ca00: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
ca10: 65 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 75  e type name to u
ca20: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
ca30: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
ca40: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
ca50: 6e 67 20 47 65 74 44 65 66 61 75 6c 74 54 79 70  ng GetDefaultTyp
ca60: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
ca70: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
ca80: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
ca90: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
caa0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
cab0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
cac0: 67 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e  gs = (connection
cad0: 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20   != null) ?..   
cae0: 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
caf0: 69 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69  ion.Flags : SQLi
cb00: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
cb10: 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20  s.None;....     
cb20: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
cb30: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
cb40: 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53  Flags.NoConvertS
cb50: 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20  ettings)..      
cb60: 20 20 20 20 20 20 20 20 20 20 3d 3d 20 53 51 4c            == SQL
cb70: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
cb80: 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
cb90: 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ings)..        {
cba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
cbb0: 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66  turn FallbackDef
cbc0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
cbd0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cbe0: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20      string name 
cbf0: 3d 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e  = "Use_SQLiteCon
cc00: 76 65 72 74 5f 44 65 66 61 75 6c 74 54 79 70 65  vert_DefaultType
cc10: 4e 61 6d 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  Name";..        
cc20: 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 6e  object value = n
cc30: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 73 74  ull;..        st
cc40: 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 3d 20  ring @default = 
cc50: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
cc60: 20 69 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e   if ((connection
cc70: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
cc80: 20 20 20 20 20 20 20 20 20 20 21 63 6f 6e 6e 65            !conne
cc90: 63 74 69 6f 6e 2e 54 72 79 47 65 74 43 61 63 68  ction.TryGetCach
cca0: 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20  edSetting(name, 
ccb0: 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76 61  @default, out va
ccc0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
ccd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
cce0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
ccf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cd00: 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66 65    value = Unsafe
cd10: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65  NativeMethods.Ge
cd20: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 6e 61  tSettingValue(na
cd30: 6d 65 2c 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a  me, @default);..
cd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cd50: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
cd60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
cd70: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
cd80: 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  = FallbackDefaul
cd90: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
cda0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cdb0: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cde0: 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  f (connection !=
cdf0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ce00: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e              conn
ce10: 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64  ection.SetCached
ce20: 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61  Setting(name, va
ce30: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
ce40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
ce50: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
ce60: 6e 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54 6f  n SettingValueTo
ce70: 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a  String(value);..
ce80: 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e 45      }....#if !NE
ce90: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
cea0: 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20  TRACE_WARNING.. 
ceb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
cec0: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61 70 70  ..    /// If app
ced0: 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65 73 20  licable, issues 
cee0: 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65 73 73  a trace log mess
cef0: 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62 6f 75  age warning abou
cf00: 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74  t falling back t
cf10: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 64  o..    /// the d
cf20: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
cf30: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
cf40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cf50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cf60: 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d 0a 20  ame="dbType">.. 
cf70: 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
cf80: 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d  ase value type..
cf90: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
cfa0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
cfb0: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
cfc0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
cfd0: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
cfe0: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
cff0: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
d000: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d010: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
d020: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d  am name="typeNam
d030: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
d040: 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66   textual name of
d050: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
d060: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  pe...    /// </p
d070: 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61  aram>..    priva
d080: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 44  te static void D
d090: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61  efaultTypeNameWa
d0a0: 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  rning(..        
d0b0: 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a  DbType dbType,..
d0c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d0d0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
d0e0: 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ags,..        st
d0f0: 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 0d 0a 20  ring typeName.. 
d100: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
d110: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c  .        if ((fl
d120: 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e  ags & SQLiteConn
d130: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d140: 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c  eWarning) == SQL
d150: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d160: 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
d170: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d180: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
d190: 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e  riteLine(UnsafeN
d1a0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72  ativeMethods.Str
d1b0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
d1c0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
d1d0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
d1e0: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
d1f0: 20 20 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e           "WARNIN
d200: 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20  G: Type mapping 
d210: 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e  failed, returnin
d220: 67 20 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 5c  g default name \
d230: 22 7b 30 7d 5c 22 20 66 6f 72 20 74 79 70 65 20  "{0}\" for type 
d240: 7b 31 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  {1}.",..        
d250: 20 20 20 20 20 20 20 20 74 79 70 65 4e 61 6d 65          typeName
d260: 2c 20 64 62 54 79 70 65 29 29 3b 0d 0a 20 20 20  , dbType));..   
d270: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
d280: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
d290: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61  y>..    /// If a
d2a0: 70 70 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65  pplicable, issue
d2b0: 73 20 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65  s a trace log me
d2c0: 73 73 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62  ssage warning ab
d2d0: 6f 75 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b  out falling back
d2e0: 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65   to..    /// the
d2f0: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
d300: 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20  e value type... 
d310: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d320: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
d330: 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65  m name="typeName
d340: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
d350: 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20  textual name of 
d360: 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  the database typ
d370: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
d380: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
d390: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
d3a0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
d3b0: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
d3c0: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
d3d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
d3e0: 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ct...    /// </p
d3f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d400: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79  param name="dbTy
d410: 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  pe">..    /// Th
d420: 65 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65  e database value
d430: 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
d440: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72  </param>..    pr
d450: 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
d460: 64 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57  d DefaultDbTypeW
d470: 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  arning(..       
d480: 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
d490: 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
d4a0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
d4b0: 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20   flags,..       
d4c0: 20 44 62 54 79 70 65 3f 20 64 62 54 79 70 65 0d   DbType? dbType.
d4d0: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
d4e0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  {..        if (!
d4f0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
d500: 6d 70 74 79 28 74 79 70 65 4e 61 6d 65 29 20 26  mpty(typeName) &
d510: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  &..            (
d520: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
d530: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54  onnectionFlags.T
d540: 72 61 63 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20  raceWarning) == 
d550: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d560: 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69  Flags.TraceWarni
d570: 6e 67 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng))..        {.
d580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61  .            Tra
d590: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73  ce.WriteLine(Uns
d5a0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
d5b0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5d0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
d5e0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
d5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57 41               "WA
d600: 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70  RNING: Type mapp
d610: 69 6e 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75  ing failed, retu
d620: 72 6e 69 6e 67 20 64 65 66 61 75 6c 74 20 74 79  rning default ty
d630: 70 65 20 7b 30 7d 20 66 6f 72 20 6e 61 6d 65 20  pe {0} for name 
d640: 5c 22 7b 31 7d 5c 22 2e 22 2c 0d 0a 20 20 20 20  \"{1}\".",..    
d650: 20 20 20 20 20 20 20 20 20 20 20 20 64 62 54 79              dbTy
d660: 70 65 2c 20 74 79 70 65 4e 61 6d 65 29 29 3b 0d  pe, typeName));.
d670: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
d680: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
d690: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d6a0: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69      /// For a gi
d6b0: 76 65 6e 20 64 61 74 61 62 61 73 65 20 76 61 6c  ven database val
d6c0: 75 65 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20  ue type, return 
d6d0: 74 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74  the "closest-mat
d6e0: 63 68 22 20 74 65 78 74 75 61 6c 20 64 61 74 61  ch" textual data
d6f0: 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d  base type name..
d700: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
d710: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
d720: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
d730: 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63  tion">The connec
d740: 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
d750: 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d 61 70   custom type map
d760: 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f  pings, if any.</
d770: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
d780: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54  <param name="dbT
d790: 79 70 65 22 3e 54 68 65 20 64 61 74 61 62 61 73  ype">The databas
d7a0: 65 20 76 61 6c 75 65 20 74 79 70 65 2e 3c 2f 70  e value type.</p
d7b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d7c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
d7d0: 73 22 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73  s">The flags ass
d7e0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
d7f0: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
d800: 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61  on object.</para
d810: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
d820: 75 72 6e 73 3e 54 68 65 20 74 79 70 65 20 6e 61  urns>The type na
d830: 6d 65 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 73  me or an empty s
d840: 74 72 69 6e 67 20 69 66 20 69 74 20 63 61 6e 6e  tring if it cann
d850: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
d860: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
d870: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d880: 20 73 74 72 69 6e 67 20 44 62 54 79 70 65 54 6f   string DbTypeTo
d890: 54 79 70 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20  TypeName(..     
d8a0: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
d8b0: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d  ion connection,.
d8c0: 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20  .        DbType 
d8d0: 64 62 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20  dbType,..       
d8e0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d8f0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
d900: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
d910: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
d920: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
d930: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
d940: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
d950: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d960: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d970: 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e 65    flags |= conne
d980: 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a  ction.Flags;....
d990: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d9a0: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
d9b0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55  onnectionFlags.U
d9c0: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65  seConnectionType
d9d0: 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  s) == SQLiteConn
d9e0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43  ectionFlags.UseC
d9f0: 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 0d  onnectionTypes).
da00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da20: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20  SQLiteDbTypeMap 
da30: 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61  connectionTypeNa
da40: 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  mes = connection
da50: 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a  ._typeNames;....
da60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da70: 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79  if (connectionTy
da80: 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29  peNames != null)
da90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
daa0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dab0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
dac0: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
dad0: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
dae0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
daf0: 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
db00: 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 64  es.TryGetValue(d
db10: 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75 65  bType, out value
db20: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
db30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
db40: 72 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d  rn value.typeNam
db50: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
db60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
db70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
db80: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
db90: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65      // NOTE: Use
dba0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   the default dat
dbb0: 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20  abase type name 
dbc0: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
dbd0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
dbe0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dbf0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
dc00: 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65   = connection.De
dc10: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a  faultTypeName;..
dc20: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
dc30: 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
dc40: 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
dc50: 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c  onFlags.NoGlobal
dc60: 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65  Types) == SQLite
dc70: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
dc80: 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a  NoGlobalTypes)..
dc90: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
dca0: 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61 75         if (defau
dcb0: 6c 74 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75  ltTypeName != nu
dcc0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
dcd0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
dce0: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a  ultTypeName;....
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
dd00: 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 47 65  ultTypeName = Ge
dd10: 74 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65  tDefaultTypeName
dd20: 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d  (connection);...
dd30: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
dd40: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41  T_20 && TRACE_WA
dd50: 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20  RNING..         
dd60: 20 20 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61     DefaultTypeNa
dd70: 6d 65 57 61 72 6e 69 6e 67 28 64 62 54 79 70 65  meWarning(dbType
dd80: 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74  , flags, default
dd90: 54 79 70 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64  TypeName);..#end
dda0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
ddb0: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
ddc0: 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  TypeName;..     
ddd0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
dde0: 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29  lock (_syncRoot)
ddf0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
de00: 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79           if (_ty
de10: 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29  peNames == null)
de20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de30: 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 47    _typeNames = G
de40: 65 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  etSQLiteDbTypeMa
de50: 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  p();....        
de60: 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65      SQLiteDbType
de70: 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a  Mapping value;..
de80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
de90: 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79   (_typeNames.Try
dea0: 47 65 74 56 61 6c 75 65 28 64 62 54 79 70 65 2c  GetValue(dbType,
deb0: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ded0: 74 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e  turn value.typeN
dee0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ame;..        }.
def0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  ...        if (d
df00: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 21  efaultTypeName !
df10: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
df20: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
df30: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a  ultTypeName;....
df40: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54          defaultT
df50: 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66  ypeName = GetDef
df60: 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e  aultTypeName(con
df70: 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66  nection);....#if
df80: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
df90: 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e   && TRACE_WARNIN
dfa0: 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75  G..        Defau
dfb0: 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e  ltTypeNameWarnin
dfc0: 67 28 64 62 54 79 70 65 2c 20 66 6c 61 67 73 2c  g(dbType, flags,
dfd0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
dfe0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
dff0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66        return def
e000: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
e010: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
e020: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
e030: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 62 54  // Convert a DbT
e040: 79 70 65 20 74 6f 20 61 20 54 79 70 65 0d 0a 20  ype to a Type.. 
e050: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e060: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
e070: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
e080: 20 44 62 54 79 70 65 20 74 6f 20 63 6f 6e 76 65   DbType to conve
e090: 72 74 20 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d  rt from</param>.
e0a0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
e0b0: 73 3e 54 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61  s>The closest-ma
e0c0: 74 63 68 20 2e 4e 45 54 20 74 79 70 65 3c 2f 72  tch .NET type</r
e0d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
e0e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70  ernal static Typ
e0f0: 65 20 44 62 54 79 70 65 54 6f 54 79 70 65 28 44  e DbTypeToType(D
e100: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
e110: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
e120: 5f 64 62 74 79 70 65 54 6f 54 79 70 65 5b 28 69  _dbtypeToType[(i
e130: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d  nt)typ];..    }.
e140: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
e150: 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 64 62  tatic Type[] _db
e160: 74 79 70 65 54 6f 54 79 70 65 20 3d 20 7b 0d 0a  typeToType = {..
e170: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
e180: 69 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53  ing),   // AnsiS
e190: 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20  tring (0)..     
e1a0: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 2c   typeof(byte[]),
e1b0: 20 20 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29     // Binary (1)
e1c0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
e1d0: 79 74 65 29 2c 20 20 20 20 20 2f 2f 20 42 79 74  yte),     // Byt
e1e0: 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74 79 70  e (2)..      typ
e1f0: 65 6f 66 28 62 6f 6f 6c 29 2c 20 20 20 20 20 2f  eof(bool),     /
e200: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
e210: 20 20 20 20 20 74 79 70 65 6f 66 28 64 65 63 69       typeof(deci
e220: 6d 61 6c 29 2c 20 20 2f 2f 20 43 75 72 72 65 6e  mal),  // Curren
e230: 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20 74 79  cy (4)..      ty
e240: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20  peof(DateTime), 
e250: 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20  // Date (5)..   
e260: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
e270: 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  me), // DateTime
e280: 20 28 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (6)..      type
e290: 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f  of(decimal),  //
e2a0: 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20   Decimal (7)..  
e2b0: 20 20 20 20 74 79 70 65 6f 66 28 64 6f 75 62 6c      typeof(doubl
e2c0: 65 29 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20  e),   // Double 
e2d0: 28 38 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (8)..      typeo
e2e0: 66 28 47 75 69 64 29 2c 20 20 20 20 20 2f 2f 20  f(Guid),     // 
e2f0: 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20  Guid (9)..      
e300: 74 79 70 65 6f 66 28 49 6e 74 31 36 29 2c 20 20  typeof(Int16),  
e310: 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d    // Int16 (10).
e320: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
e330: 74 33 32 29 2c 20 20 20 20 2f 2f 20 49 6e 74 33  t32),    // Int3
e340: 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 74 79  2 (11)..      ty
e350: 70 65 6f 66 28 49 6e 74 36 34 29 2c 20 20 20 20  peof(Int64),    
e360: 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20  // Int64 (12).. 
e370: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
e380: 63 74 29 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74  ct),   // Object
e390: 20 28 31 33 29 0d 0a 20 20 20 20 20 20 74 79 70   (13)..      typ
e3a0: 65 6f 66 28 73 62 79 74 65 29 2c 20 20 20 20 2f  eof(sbyte),    /
e3b0: 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20  / SByte (14)..  
e3c0: 20 20 20 20 74 79 70 65 6f 66 28 66 6c 6f 61 74      typeof(float
e3d0: 29 2c 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20  ),    // Single 
e3e0: 28 31 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (15)..      type
e3f0: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
e400: 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20   String (16)..  
e410: 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54      typeof(DateT
e420: 69 6d 65 29 2c 20 2f 2f 20 54 69 6d 65 20 28 31  ime), // Time (1
e430: 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  7)..      typeof
e440: 28 55 49 6e 74 31 36 29 2c 20 20 20 2f 2f 20 55  (UInt16),   // U
e450: 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20  Int16 (18)..    
e460: 20 20 74 79 70 65 6f 66 28 55 49 6e 74 33 32 29    typeof(UInt32)
e470: 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31  ,   // UInt32 (1
e480: 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  9)..      typeof
e490: 28 55 49 6e 74 36 34 29 2c 20 20 20 2f 2f 20 55  (UInt64),   // U
e4a0: 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20  Int64 (20)..    
e4b0: 20 20 74 79 70 65 6f 66 28 64 6f 75 62 6c 65 29    typeof(double)
e4c0: 2c 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69  ,   // VarNumeri
e4d0: 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 74 79  c (21)..      ty
e4e0: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
e4f0: 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78  // AnsiStringFix
e500: 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20  edLength (22).. 
e510: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
e520: 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67  ng),   // String
e530: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29  FixedLength (23)
e540: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
e550: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 3f 3f 20  tring),   // ?? 
e560: 28 32 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (24)..      type
e570: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
e580: 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d   Xml (25)..    }
e590: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
e5a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e5b0: 46 6f 72 20 61 20 67 69 76 65 6e 20 74 79 70 65  For a given type
e5c0: 2c 20 72 65 74 75 72 6e 20 74 68 65 20 63 6c 6f  , return the clo
e5d0: 73 65 73 74 2d 6d 61 74 63 68 20 53 51 4c 69 74  sest-match SQLit
e5e0: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2c 20  e TypeAffinity, 
e5f0: 77 68 69 63 68 20 6f 6e 6c 79 20 75 6e 64 65 72  which only under
e600: 73 74 61 6e 64 73 20 61 20 76 65 72 79 20 6c 69  stands a very li
e610: 6d 69 74 65 64 20 73 75 62 73 65 74 20 6f 66 20  mited subset of 
e620: 74 79 70 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  types...    /// 
e630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e640: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
e650: 22 74 79 70 22 3e 54 68 65 20 74 79 70 65 20 74  "typ">The type t
e660: 6f 20 65 76 61 6c 75 61 74 65 3c 2f 70 61 72 61  o evaluate</para
e670: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
e680: 75 72 6e 73 3e 54 68 65 20 53 51 4c 69 74 65 20  urns>The SQLite 
e690: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 66 6f  type affinity fo
e6a0: 72 20 74 68 61 74 20 74 79 70 65 2e 3c 2f 72 65  r that type.</re
e6b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
e6c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65  rnal static Type
e6d0: 41 66 66 69 6e 69 74 79 20 54 79 70 65 54 6f 41  Affinity TypeToA
e6e0: 66 66 69 6e 69 74 79 28 54 79 70 65 20 74 79 70  ffinity(Type typ
e6f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
e700: 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54 79  TypeCode tc = Ty
e710: 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28 74  pe.GetTypeCode(t
e720: 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 28  yp);..      if (
e730: 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e 4f  tc == TypeCode.O
e740: 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b 0d  bject)..      {.
e750: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
e760: 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 5b   == typeof(byte[
e770: 5d 29 20 7c 7c 20 74 79 70 20 3d 3d 20 74 79 70  ]) || typ == typ
e780: 65 6f 66 28 47 75 69 64 29 29 0d 0a 20 20 20 20  eof(Guid))..    
e790: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 79 70        return Typ
e7a0: 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3b 0d  eAffinity.Blob;.
e7b0: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
e7c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e7d0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
e7e0: 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  t;..      }..   
e7f0: 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65 63     return _typec
e800: 6f 64 65 41 66 66 69 6e 69 74 69 65 73 5b 28 69  odeAffinities[(i
e810: 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  nt)tc];..    }..
e820: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
e830: 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  atic TypeAffinit
e840: 79 5b 5d 20 5f 74 79 70 65 63 6f 64 65 41 66 66  y[] _typecodeAff
e850: 69 6e 69 74 69 65 73 20 3d 20 7b 0d 0a 20 20 20  inities = {..   
e860: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
e870: 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 45 6d 70  Null,     // Emp
e880: 74 79 20 28 30 29 0d 0a 20 20 20 20 20 20 54 79  ty (0)..      Ty
e890: 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 2c  peAffinity.Blob,
e8a0: 20 20 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28       // Object (
e8b0: 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  1)..      TypeAf
e8c0: 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20  finity.Null,    
e8d0: 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a   // DBNull (2)..
e8e0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
e8f0: 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20  ty.Int64,    // 
e900: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
e910: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
e920: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 43 68 61  Int64,    // Cha
e930: 72 20 28 34 29 0d 0a 20 20 20 20 20 20 54 79 70  r (4)..      Typ
e940: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e950: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29      // SByte (5)
e960: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
e970: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
e980: 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20 20  / Byte (6)..    
e990: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
e9a0: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 31  nt64,    // Int1
e9b0: 36 20 28 37 29 0d 0a 20 20 20 20 20 20 54 79 70  6 (7)..      Typ
e9c0: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e9d0: 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38      // UInt16 (8
e9e0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
e9f0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
ea00: 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20  // Int32 (9)..  
ea10: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ea20: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
ea30: 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20  nt32 (10)..     
ea40: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
ea50: 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34  t64,    // Int64
ea60: 20 28 31 31 29 0d 0a 20 20 20 20 20 20 54 79 70   (11)..      Typ
ea70: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
ea80: 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 31      // UInt64 (1
ea90: 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  2)..      TypeAf
eaa0: 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20  finity.Double,  
eab0: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d   // Single (13).
eac0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
ead0: 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f  ity.Double,   //
eae0: 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20 20   Double (14)..  
eaf0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
eb00: 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 65  .Double,   // De
eb10: 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20  cimal (15)..    
eb20: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44    TypeAffinity.D
eb30: 61 74 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65  ateTime, // Date
eb40: 54 69 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20  Time (16)..     
eb50: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
eb60: 6c 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f 20 28 31  ll,     // ?? (1
eb70: 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  7)..      TypeAf
eb80: 66 69 6e 69 74 79 2e 54 65 78 74 20 20 20 20 20  finity.Text     
eb90: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d   // String (18).
eba0: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
ebb0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ebc0: 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 6e 64    /// Builds and
ebd0: 20 72 65 74 75 72 6e 73 20 61 20 6d 61 70 20 63   returns a map c
ebe0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61  ontaining the da
ebf0: 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79  tabase column ty
ec00: 70 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 63  pes..    /// rec
ec10: 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 20  ognized by this 
ec20: 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f  provider...    /
ec30: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ec40: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
ec50: 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 6d 61 70 20  ..    /// A map 
ec60: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64  containing the d
ec70: 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74  atabase column t
ec80: 79 70 65 73 20 72 65 63 6f 67 6e 69 7a 65 64 20  ypes recognized 
ec90: 62 79 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f  by this..    ///
eca0: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
ecb0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
ecc0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
ecd0: 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ic SQLiteDbTypeM
ece0: 61 70 20 47 65 74 53 51 4c 69 74 65 44 62 54 79  ap GetSQLiteDbTy
ecf0: 70 65 4d 61 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  peMap()..    {..
ed00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
ed10: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
ed20: 61 70 28 6e 65 77 20 53 51 4c 69 74 65 44 62 54  ap(new SQLiteDbT
ed30: 79 70 65 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d 0a  ypeMapping[] {..
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
ed50: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ed60: 69 6e 67 28 22 42 49 47 49 4e 54 22 2c 20 44 62  ing("BIGINT", Db
ed70: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
ed80: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ed90: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
eda0: 65 4d 61 70 70 69 6e 67 28 22 42 49 47 55 49 4e  eMapping("BIGUIN
edb0: 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36  T", DbType.UInt6
edc0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
edd0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ede0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
edf0: 22 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65  "BINARY", DbType
ee00: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
ee10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ee20: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ee30: 70 70 69 6e 67 28 22 42 49 54 22 2c 20 44 62 54  pping("BIT", DbT
ee40: 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72 75  ype.Boolean, tru
ee50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ee60: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ee70: 65 4d 61 70 70 69 6e 67 28 22 42 4c 4f 42 22 2c  eMapping("BLOB",
ee80: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
ee90: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
eea0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
eeb0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f  TypeMapping("BOO
eec0: 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  L", DbType.Boole
eed0: 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  an, false),..   
eee0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
eef0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
ef00: 28 22 42 4f 4f 4c 45 41 4e 22 2c 20 44 62 54 79  ("BOOLEAN", DbTy
ef10: 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73  pe.Boolean, fals
ef20: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ef30: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ef40: 65 4d 61 70 70 69 6e 67 28 22 43 48 41 52 22 2c  eMapping("CHAR",
ef50: 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69   DbType.AnsiStri
ef60: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20 74  ngFixedLength, t
ef70: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
ef80: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ef90: 79 70 65 4d 61 70 70 69 6e 67 28 22 43 4c 4f 42  ypeMapping("CLOB
efa0: 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
efb0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
efc0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
efd0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
efe0: 43 4f 55 4e 54 45 52 22 2c 20 44 62 54 79 70 65  COUNTER", DbType
eff0: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
f000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f010: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f020: 70 69 6e 67 28 22 43 55 52 52 45 4e 43 59 22 2c  ping("CURRENCY",
f030: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
f040: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f050: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f060: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
f070: 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74  ATE", DbType.Dat
f080: 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  eTime, false),..
f090: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f0a0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f0b0: 69 6e 67 28 22 44 41 54 45 54 49 4d 45 22 2c 20  ing("DATETIME", 
f0c0: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
f0d0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
f0e0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f0f0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 45  bTypeMapping("DE
f100: 43 49 4d 41 4c 22 2c 20 44 62 54 79 70 65 2e 44  CIMAL", DbType.D
f110: 65 63 69 6d 61 6c 2c 20 74 72 75 65 29 2c 0d 0a  ecimal, true),..
f120: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f130: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f140: 69 6e 67 28 22 44 4f 55 42 4c 45 22 2c 20 44 62  ing("DOUBLE", Db
f150: 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c  Type.Double, fal
f160: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f170: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f180: 70 65 4d 61 70 70 69 6e 67 28 22 46 4c 4f 41 54  peMapping("FLOAT
f190: 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65  ", DbType.Double
f1a0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f1b0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f1c0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f1d0: 47 45 4e 45 52 41 4c 22 2c 20 44 62 54 79 70 65  GENERAL", DbType
f1e0: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
f1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f200: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f210: 70 70 69 6e 67 28 22 47 55 49 44 22 2c 20 44 62  pping("GUID", Db
f220: 54 79 70 65 2e 47 75 69 64 2c 20 66 61 6c 73 65  Type.Guid, false
f230: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f240: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f250: 4d 61 70 70 69 6e 67 28 22 49 44 45 4e 54 49 54  Mapping("IDENTIT
f260: 59 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  Y", DbType.Int64
f270: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f280: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f290: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f2a0: 49 4d 41 47 45 22 2c 20 44 62 54 79 70 65 2e 42  IMAGE", DbType.B
f2b0: 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a  inary, false),..
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f2d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f2e0: 69 6e 67 28 22 49 4e 54 22 2c 20 44 62 54 79 70  ing("INT", DbTyp
f2f0: 65 2e 49 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d  e.Int32, true),.
f300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f310: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f320: 70 69 6e 67 28 22 49 4e 54 38 22 2c 20 44 62 54  ping("INT8", DbT
f330: 79 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65  ype.SByte, false
f340: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f350: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f360: 4d 61 70 70 69 6e 67 28 22 49 4e 54 31 36 22 2c  Mapping("INT16",
f370: 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20 66   DbType.Int16, f
f380: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f390: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f3a0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54  TypeMapping("INT
f3b0: 33 32 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 33  32", DbType.Int3
f3c0: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
f3d0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f3e0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f3f0: 22 49 4e 54 36 34 22 2c 20 44 62 54 79 70 65 2e  "INT64", DbType.
f400: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
f410: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f420: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f430: 69 6e 67 28 22 49 4e 54 45 47 45 52 22 2c 20 44  ing("INTEGER", D
f440: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 74 72 75  bType.Int64, tru
f450: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f460: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f470: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45  eMapping("INTEGE
f480: 52 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  R8", DbType.SByt
f490: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
f4a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f4b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f4c0: 22 49 4e 54 45 47 45 52 31 36 22 2c 20 44 62 54  "INTEGER16", DbT
f4d0: 79 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65  ype.Int16, false
f4e0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f4f0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f500: 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52  Mapping("INTEGER
f510: 33 32 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 33  32", DbType.Int3
f520: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
f530: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f540: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f550: 22 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54  "INTEGER64", DbT
f560: 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65  ype.Int64, false
f570: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f580: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f590: 4d 61 70 70 69 6e 67 28 22 4c 4f 47 49 43 41 4c  Mapping("LOGICAL
f5a0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
f5b0: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
f5c0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f5d0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f5e0: 22 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e 49  "LONG", DbType.I
f5f0: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
f600: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f610: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f620: 6e 67 28 22 4c 4f 4e 47 43 48 41 52 22 2c 20 44  ng("LONGCHAR", D
f630: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
f640: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f650: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f660: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47  ypeMapping("LONG
f670: 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74  TEXT", DbType.St
f680: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
f690: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f6a0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f6b0: 6e 67 28 22 4c 4f 4e 47 56 41 52 43 48 41 52 22  ng("LONGVARCHAR"
f6c0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f6d0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f6e0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f6f0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4d  DbTypeMapping("M
f700: 45 4d 4f 22 2c 20 44 62 54 79 70 65 2e 53 74 72  EMO", DbType.Str
f710: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
f720: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f730: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f740: 67 28 22 4d 4f 4e 45 59 22 2c 20 44 62 54 79 70  g("MONEY", DbTyp
f750: 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65  e.Decimal, false
f760: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f770: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f780: 4d 61 70 70 69 6e 67 28 22 4e 43 48 41 52 22 2c  Mapping("NCHAR",
f790: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 46 69   DbType.StringFi
f7a0: 78 65 64 4c 65 6e 67 74 68 2c 20 74 72 75 65 29  xedLength, true)
f7b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f7c0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f7d0: 61 70 70 69 6e 67 28 22 4e 4f 54 45 22 2c 20 44  apping("NOTE", D
f7e0: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
f7f0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f800: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f810: 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 54 45 58  ypeMapping("NTEX
f820: 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  T", DbType.Strin
f830: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
f840: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f850: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f860: 22 4e 55 4d 42 45 52 22 2c 20 44 62 54 79 70 65  "NUMBER", DbType
f870: 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29  .Decimal, false)
f880: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f890: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f8a0: 61 70 70 69 6e 67 28 22 4e 55 4d 45 52 49 43 22  apping("NUMERIC"
f8b0: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
f8c0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f8d0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f8e0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f8f0: 4e 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 70  NVARCHAR", DbTyp
f900: 65 2e 53 74 72 69 6e 67 2c 20 74 72 75 65 29 2c  e.String, true),
f910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f920: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f930: 70 70 69 6e 67 28 22 4f 4c 45 4f 42 4a 45 43 54  pping("OLEOBJECT
f940: 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
f950: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f960: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f970: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f980: 52 41 57 22 2c 20 44 62 54 79 70 65 2e 42 69 6e  RAW", DbType.Bin
f990: 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ary, false),..  
f9a0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f9b0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f9c0: 67 28 22 52 45 41 4c 22 2c 20 44 62 54 79 70 65  g("REAL", DbType
f9d0: 2e 44 6f 75 62 6c 65 2c 20 74 72 75 65 29 2c 0d  .Double, true),.
f9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f9f0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa00: 70 69 6e 67 28 22 53 49 4e 47 4c 45 22 2c 20 44  ping("SINGLE", D
fa10: 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 74 72  bType.Single, tr
fa20: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
fa30: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fa40: 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c  peMapping("SMALL
fa50: 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61  DATE", DbType.Da
fa60: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
fa70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fa80: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa90: 70 69 6e 67 28 22 53 4d 41 4c 4c 49 4e 54 22 2c  ping("SMALLINT",
faa0: 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20 74   DbType.Int16, t
fab0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fac0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fad0: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c  ypeMapping("SMAL
fae0: 4c 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55  LUINT", DbType.U
faf0: 49 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20  Int16, true),.. 
fb00: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fb10: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fb20: 6e 67 28 22 53 54 52 49 4e 47 22 2c 20 44 62 54  ng("STRING", DbT
fb30: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
fb40: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fb50: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fb60: 65 4d 61 70 70 69 6e 67 28 22 54 45 58 54 22 2c  eMapping("TEXT",
fb70: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
fb80: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fb90: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fba0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49  bTypeMapping("TI
fbb0: 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  ME", DbType.Date
fbc0: 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Time, false),.. 
fbd0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fbe0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fbf0: 6e 67 28 22 54 49 4d 45 53 54 41 4d 50 22 2c 20  ng("TIMESTAMP", 
fc00: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
fc10: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fc20: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fc30: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54  DbTypeMapping("T
fc40: 49 4e 59 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  INYINT", DbType.
fc50: 42 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20  Byte, true),..  
fc60: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fc70: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fc80: 67 28 22 54 49 4e 59 53 49 4e 54 22 2c 20 44 62  g("TINYSINT", Db
fc90: 54 79 70 65 2e 53 42 79 74 65 2c 20 74 72 75 65  Type.SByte, true
fca0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fcb0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fcc0: 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 22 2c 20  Mapping("UINT", 
fcd0: 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 74  DbType.UInt32, t
fce0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fcf0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fd00: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
fd10: 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c  8", DbType.Byte,
fd20: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fd30: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fd40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
fd50: 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 55  INT16", DbType.U
fd60: 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int16, false),..
fd70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fd80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fd90: 69 6e 67 28 22 55 49 4e 54 33 32 22 2c 20 44 62  ing("UINT32", Db
fda0: 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c  Type.UInt32, fal
fdb0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fdc0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fdd0: 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 36  peMapping("UINT6
fde0: 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36  4", DbType.UInt6
fdf0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
fe00: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fe10: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fe20: 22 55 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e  "ULONG", DbType.
fe30: 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  UInt64, false),.
fe40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fe50: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fe60: 70 69 6e 67 28 22 55 4e 49 51 55 45 49 44 45 4e  ping("UNIQUEIDEN
fe70: 54 49 46 49 45 52 22 2c 20 44 62 54 79 70 65 2e  TIFIER", DbType.
fe80: 47 75 69 64 2c 20 74 72 75 65 29 2c 0d 0a 20 20  Guid, true),..  
fe90: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fea0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
feb0: 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47  g("UNSIGNEDINTEG
fec0: 45 52 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  ER", DbType.UInt
fed0: 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  64, true),..    
fee0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fef0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ff00: 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52  "UNSIGNEDINTEGER
ff10: 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c  8", DbType.Byte,
ff20: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ff30: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ff40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
ff50: 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 31 36  NSIGNEDINTEGER16
ff60: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36  ", DbType.UInt16
ff70: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
ff80: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ff90: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ffa0: 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 33  UNSIGNEDINTEGER3
ffb0: 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33  2", DbType.UInt3
ffc0: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
ffd0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ffe0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fff0: 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52  "UNSIGNEDINTEGER
10000 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  64", DbType.UInt
10010 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
10020 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10030 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10040 28 22 56 41 52 42 49 4e 41 52 59 22 2c 20 44 62  ("VARBINARY", Db
10050 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c  Type.Binary, fal
10060 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10070 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10080 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43 48  peMapping("VARCH
10090 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e 73 69  AR", DbType.Ansi
100a0 53 74 72 69 6e 67 2c 20 74 72 75 65 29 2c 0d 0a  String, true),..
100b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
100c0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
100d0 69 6e 67 28 22 56 41 52 43 48 41 52 32 22 2c 20  ing("VARCHAR2", 
100e0 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
100f0 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
10100 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10110 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10120 22 59 45 53 4e 4f 22 2c 20 44 62 54 79 70 65 2e  "YESNO", DbType.
10130 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 0d  Boolean, false).
10140 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20  .        });..  
10150 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
10160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10170 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
10180 61 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  a database type 
10190 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f  is considered to
101a0 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   be a string... 
101b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
101c0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
101d0 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a  m name="type">..
101e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
101f0 62 61 73 65 20 74 79 70 65 20 74 6f 20 63 68 65  base type to che
10200 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ck...    /// </p
10210 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
10220 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
10230 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
10240 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  e database type 
10250 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f  is considered to
10260 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 7a 65   be a string, ze
10270 72 6f 0d 0a 20 20 20 20 2f 2f 2f 20 6f 74 68 65  ro..    /// othe
10280 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
10290 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
102a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
102b0 62 6f 6f 6c 20 49 73 53 74 72 69 6e 67 44 62 54  bool IsStringDbT
102c0 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20 44 62  ype(..        Db
102d0 54 79 70 65 20 74 79 70 65 0d 0a 20 20 20 20 20  Type type..     
102e0 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
102f0 20 20 20 20 20 73 77 69 74 63 68 20 28 74 79 70       switch (typ
10300 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
10310 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
10320 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
10330 67 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g:..            
10340 63 61 73 65 20 44 62 54 79 70 65 2e 53 74 72 69  case DbType.Stri
10350 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng:..           
10360 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e 73   case DbType.Ans
10370 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
10380 74 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th:..           
10390 20 63 61 73 65 20 44 62 54 79 70 65 2e 53 74 72   case DbType.Str
103a0 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 3a 0d  ingFixedLength:.
103b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
103c0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
103d0 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
103e0 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lt:..           
103f0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
10400 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
10410 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
10420 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10430 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 61 6e  // Determines an
10440 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 75  d returns the ru
10450 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74  ntime configurat
10460 69 6f 6e 20 73 65 74 74 69 6e 67 20 73 74 72 69  ion setting stri
10470 6e 67 20 74 68 61 74 0d 0a 20 20 20 20 2f 2f 2f  ng that..    ///
10480 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
10490 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
104a0 73 70 65 63 69 66 69 65 64 20 6f 62 6a 65 63 74  specified object
104b0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
104c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
104d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
104e0 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f  ="value">..    /
104f0 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 76 61  // The object va
10500 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 74  lue to convert t
10510 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  o a string...   
10520 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
10530 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
10540 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74 68 65 72  ..    /// Either
10550 20 74 68 65 20 73 74 72 69 6e 67 20 74 6f 20 75   the string to u
10560 73 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  se in place of t
10570 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20  he object value 
10580 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
10590 0a 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20  .    /// cannot 
105a0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
105b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
105c0 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  s>..    private 
105d0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 65  static string Se
105e0 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72 69  ttingValueToStri
105f0 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  ng(..        obj
10600 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ect value..     
10610 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
10620 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69       if (value i
10630 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20  s string)..     
10640 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73         return (s
10650 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d 0a 0d 0a  tring)value;....
10660 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
10670 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
10680 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
10690 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
106a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
106b0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 0d  rn null;..    }.
106c0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
106d0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
106e0 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
106f0 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d 22  ault <see cref="
10700 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65  DbType" /> value
10710 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e   to be used when
10720 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70 65 72 2d   a..    /// per-
10730 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c 75 65  connection value
10740 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
10750 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
10760 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10770 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
10780 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f  nection">..    /
10790 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  // The connectio
107a0 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 74 79  n context for ty
107b0 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20  pe mappings, if 
107c0 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  any...    /// </
107d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
107e0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
107f0 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 3c  // The default <
10800 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65  see cref="DbType
10810 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73  " /> value to us
10820 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
10830 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76  turns>..    priv
10840 61 74 65 20 73 74 61 74 69 63 20 44 62 54 79 70  ate static DbTyp
10850 65 20 47 65 74 44 65 66 61 75 6c 74 44 62 54 79  e GetDefaultDbTy
10860 70 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  pe(..        SQL
10870 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
10880 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  nnection..      
10890 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
108a0 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
108b0 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 20  tionFlags flags 
108c0 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  = (connection !=
108d0 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
108e0 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
108f0 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69 74 65 43  .Flags : SQLiteC
10900 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
10910 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  one;....        
10920 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
10930 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
10940 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
10950 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ings)..         
10960 20 20 20 20 20 20 20 3d 3d 20 53 51 4c 69 74 65         == SQLite
10970 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
10980 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
10990 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  s)..        {.. 
109a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
109b0 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  n FallbackDefaul
109c0 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  tDbType;..      
109d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62    }....        b
109e0 6f 6f 6c 20 66 6f 75 6e 64 20 3d 20 66 61 6c 73  ool found = fals
109f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e;..        stri
10a00 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65 5f 53  ng name = "Use_S
10a10 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44 65 66  QLiteConvert_Def
10a20 61 75 6c 74 44 62 54 79 70 65 22 3b 0d 0a 20 20  aultDbType";..  
10a30 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
10a40 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ue = null;..    
10a50 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66 61      string @defa
10a60 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ult = null;.... 
10a70 20 20 20 20 20 20 20 69 66 20 28 28 63 6f 6e 6e         if ((conn
10a80 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 20  ection == null) 
10a90 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
10aa0 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47  !connection.TryG
10ab0 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28  etCachedSetting(
10ac0 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20  name, @default, 
10ad0 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20  out value))..   
10ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10af0 20 20 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61      value = Unsa
10b00 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
10b10 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
10b20 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 29 3b  name, @default);
10b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10b40 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
10b50 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
10b60 20 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c      value = Fall
10b70 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70  backDefaultDbTyp
10b80 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
10b90 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
10ba0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10bb0 20 20 20 20 66 6f 75 6e 64 20 3d 20 74 72 75 65      found = true
10bc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
10bd0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10be0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10bf0 20 20 20 20 69 66 20 28 21 28 76 61 6c 75 65 20      if (!(value 
10c00 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20 20 20  is DbType))..   
10c10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10c20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
10c30 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  e = SQLiteConnec
10c40 74 69 6f 6e 2e 54 72 79 50 61 72 73 65 45 6e 75  tion.TryParseEnu
10c50 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m(..            
10c60 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 44          typeof(D
10c70 62 54 79 70 65 29 2c 20 53 65 74 74 69 6e 67 56  bType), SettingV
10c80 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 76 61 6c  alueToString(val
10c90 75 65 29 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20  ue), true);.... 
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
10cb0 66 20 28 21 28 76 61 6c 75 65 20 69 73 20 44 62  f (!(value is Db
10cc0 54 79 70 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Type))..        
10cd0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
10ce0 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61  e = FallbackDefa
10cf0 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
10d00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10d10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10d20 28 44 62 54 79 70 65 29 76 61 6c 75 65 3b 0d 0a  (DbType)value;..
10d30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10d40 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
10d50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10d60 20 20 20 69 66 20 28 21 66 6f 75 6e 64 20 26 26     if (!found &&
10d70 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20   (connection != 
10d80 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
10d90 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69          connecti
10da0 6f 6e 2e 53 65 74 43 61 63 68 65 64 53 65 74 74  on.SetCachedSett
10db0 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29  ing(name, value)
10dc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
10dd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
10de0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10df0 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
10e00 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74 65  the specified te
10e10 78 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65  xtual value appe
10e20 61 72 73 20 74 6f 20 62 65 20 61 0d 0a 20 20 20  ars to be a..   
10e30 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
10e40 44 42 4e 75 6c 6c 22 20 2f 3e 20 76 61 6c 75 65  DBNull" /> value
10e50 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
10e60 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
10e70 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74  param name="text
10e80 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
10e90 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f  textual value to
10ea0 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f   inspect...    /
10eb0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
10ec0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
10ed0 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
10ee0 20 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f   if the text loo
10ef0 6b 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63  ks like a <see c
10f00 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20  ref="DBNull" /> 
10f10 76 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20  value,..    /// 
10f20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
10f30 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
10f40 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
10f50 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f  l static bool Lo
10f60 6f 6b 73 4c 69 6b 65 4e 75 6c 6c 28 0d 0a 20 20  oksLikeNull(..  
10f70 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78        string tex
10f80 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  t..        )..  
10f90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
10fa0 75 72 6e 20 28 74 65 78 74 20 3d 3d 20 6e 75 6c  urn (text == nul
10fb0 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  l);..    }....  
10fc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10fd0 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10fe0 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69  nes if the speci
10ff0 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c  fied textual val
11000 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  ue appears to be
11010 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65   an..    /// <se
11020 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
11030 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
11040 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11050 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
11060 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
11070 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76  // The textual v
11080 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  alue to inspect.
11090 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
110a0 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
110b0 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
110c0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74  on-zero if the t
110d0 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61  ext looks like a
110e0 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74  n <see cref="Int
110f0 36 34 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20  64" /> value,.. 
11100 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65     /// zero othe
11110 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
11120 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
11130 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11140 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 49 6e  bool LooksLikeIn
11150 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 73 74  t64(..        st
11160 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20  ring text..     
11170 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
11180 20 20 20 20 20 6c 6f 6e 67 20 6c 6f 6e 67 56 61       long longVa
11190 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  lue;....#if !PLA
111a0 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
111b0 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
111c0 69 66 20 28 21 6c 6f 6e 67 2e 54 72 79 50 61 72  if (!long.TryPar
111d0 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
111e0 20 20 20 20 20 74 65 78 74 2c 20 4e 75 6d 62 65       text, Numbe
111f0 72 53 74 79 6c 65 73 2e 49 6e 74 65 67 65 72 2c  rStyles.Integer,
11200 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
11210 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  ariantCulture,..
11220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11230 6f 75 74 20 6c 6f 6e 67 56 61 6c 75 65 29 29 0d  out longValue)).
11240 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11250 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
11260 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
11270 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
11280 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d   try..        {.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e  .            lon
112a0 67 56 61 6c 75 65 20 3d 20 6c 6f 6e 67 2e 50 61  gValue = long.Pa
112b0 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rse(..          
112c0 20 20 20 20 20 20 74 65 78 74 2c 20 4e 75 6d 62        text, Numb
112d0 65 72 53 74 79 6c 65 73 2e 49 6e 74 65 67 65 72  erStyles.Integer
112e0 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  , CultureInfo.In
112f0 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b  variantCulture);
11300 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
11310 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
11320 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11330 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
11340 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e  ..        }..#en
11350 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  dif....        r
11360 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75  eturn String.Equ
11370 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
11380 20 20 6c 6f 6e 67 56 61 6c 75 65 2e 54 6f 53 74    longValue.ToSt
11390 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f  ring(CultureInfo
113a0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
113b0 65 29 2c 20 74 65 78 74 2c 0d 0a 20 20 20 20 20  e), text,..     
113c0 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d         StringCom
113d0 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29  parison.Ordinal)
113e0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
113f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11400 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65     /// Determine
11410 73 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  s if the specifi
11420 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65  ed textual value
11430 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61   appears to be a
11440 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
11450 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
11460 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
11470 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11480 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
11490 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  "text">..    ///
114a0 20 54 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c   The textual val
114b0 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a  ue to inspect...
114c0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
114d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
114e0 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e  ns>..    /// Non
114f0 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65 78  -zero if the tex
11500 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c  t looks like a <
11510 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
11520 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20  " /> value,..   
11530 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77   /// zero otherw
11540 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ise...    /// </
11550 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
11560 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f  ternal static bo
11570 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 6f 75 62  ol LooksLikeDoub
11580 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  le(..        str
11590 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
115a0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
115b0 20 20 20 20 64 6f 75 62 6c 65 20 64 6f 75 62 6c      double doubl
115c0 65 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20 21  eValue;....#if !
115d0 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54  PLATFORM_COMPACT
115e0 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20  FRAMEWORK..     
115f0 20 20 20 69 66 20 28 21 64 6f 75 62 6c 65 2e 54     if (!double.T
11600 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20  ryParse(..      
11610 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20            text, 
11620 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 46 6c 6f  NumberStyles.Flo
11630 61 74 20 7c 20 4e 75 6d 62 65 72 53 74 79 6c 65  at | NumberStyle
11640 73 2e 41 6c 6c 6f 77 54 68 6f 75 73 61 6e 64 73  s.AllowThousands
11650 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
11660 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49     CultureInfo.I
11670 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
11680 20 6f 75 74 20 64 6f 75 62 6c 65 56 61 6c 75 65   out doubleValue
11690 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
116a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
116b0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
116c0 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20    }..#else..    
116d0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
116e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
116f0 64 6f 75 62 6c 65 56 61 6c 75 65 20 3d 20 64 6f  doubleValue = do
11700 75 62 6c 65 2e 50 61 72 73 65 28 74 65 78 74 2c  uble.Parse(text,
11710 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
11720 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
11730 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
11740 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
11750 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11760 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11770 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
11780 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  if....        re
11790 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61  turn String.Equa
117a0 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
117b0 20 64 6f 75 62 6c 65 56 61 6c 75 65 2e 54 6f 53   doubleValue.ToS
117c0 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66  tring(CultureInf
117d0 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
117e0 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20 20 20 20  re), text,..    
117f0 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
11800 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
11810 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
11820 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11830 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
11840 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69 66  es if the specif
11850 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75  ied textual valu
11860 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20  e appears to be 
11870 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  a..    /// <see 
11880 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
11890 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
118a0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
118b0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
118c0 6d 65 3d 22 63 6f 6e 76 65 72 74 22 3e 0d 0a 20  me="convert">.. 
118d0 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
118e0 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 76  cref="SQLiteConv
118f0 65 72 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ert" /> object i
11900 6e 73 74 61 6e 63 65 20 63 6f 6e 66 69 67 75 72  nstance configur
11910 65 64 20 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f  ed with..    ///
11920 20 74 68 65 20 63 68 6f 73 65 6e 20 3c 73 65 65   the chosen <see
11930 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
11940 20 2f 3e 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20   /> format...   
11950 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11960 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
11970 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20  me="text">..    
11980 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20  /// The textual 
11990 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74  value to inspect
119a0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
119b0 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
119c0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
119d0 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20  Non-zero if the 
119e0 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20  text looks like 
119f0 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  a <see cref="Dat
11a00 65 54 69 6d 65 22 20 2f 3e 20 69 6e 20 74 68 65  eTime" /> in the
11a10 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67  ..    /// config
11a20 75 72 65 64 20 66 6f 72 6d 61 74 2c 20 7a 65 72  ured format, zer
11a30 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
11a40 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
11a50 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11a60 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73  tatic bool Looks
11a70 4c 69 6b 65 44 61 74 65 54 69 6d 65 28 0d 0a 20  LikeDateTime(.. 
11a80 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
11a90 76 65 72 74 20 63 6f 6e 76 65 72 74 2c 0d 0a 20  vert convert,.. 
11aa0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65         string te
11ab0 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  xt..        ).. 
11ac0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
11ad0 20 28 63 6f 6e 76 65 72 74 20 3d 3d 20 6e 75 6c   (convert == nul
11ae0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
11af0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
11b00 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
11b10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11b20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61       DateTime da
11b30 74 65 54 69 6d 65 56 61 6c 75 65 20 3d 20 63 6f  teTimeValue = co
11b40 6e 76 65 72 74 2e 54 6f 44 61 74 65 54 69 6d 65  nvert.ToDateTime
11b50 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
11b60 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
11b70 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  g.Equals(..     
11b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11b90 6f 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e 67 28  onvert.ToString(
11ba0 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 2c 0d  dateTimeValue),.
11bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11bc0 20 20 20 20 20 74 65 78 74 2c 20 53 74 72 69 6e       text, Strin
11bd0 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
11be0 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  nal))..         
11bf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11c00 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75        return tru
11c10 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
11c20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
11c30 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
11c40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11c50 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
11c60 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  g...        }...
11c70 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
11c80 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  false;..    }...
11c90 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11ca0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20  y>..    /// For 
11cb0 61 20 67 69 76 65 6e 20 74 65 78 74 75 61 6c 20  a given textual 
11cc0 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
11cd0 6d 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20 22  me, return the "
11ce0 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 22 20 64  closest-match" d
11cf0 61 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20  atabase type... 
11d00 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
11d10 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 64 75 72  od is called dur
11d20 69 6e 67 20 71 75 65 72 79 20 72 65 73 75 6c 74  ing query result
11d30 20 70 72 6f 63 65 73 73 69 6e 67 3b 20 74 68 65   processing; the
11d40 72 65 66 6f 72 65 2c 20 69 74 73 20 70 65 72 66  refore, its perf
11d50 6f 72 6d 61 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f  ormance..    ///
11d60 20 69 73 20 63 72 69 74 69 63 61 6c 2e 0d 0a 20   is critical... 
11d70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11d80 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
11d90 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
11da0 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69  on">The connecti
11db0 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 63  on context for c
11dc0 75 73 74 6f 6d 20 74 79 70 65 20 6d 61 70 70 69  ustom type mappi
11dd0 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61  ngs, if any.</pa
11de0 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
11df0 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e  aram name="typeN
11e00 61 6d 65 22 3e 54 68 65 20 74 65 78 74 75 61 6c  ame">The textual
11e10 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
11e20 61 62 61 73 65 20 74 79 70 65 20 74 6f 20 6d 61  abase type to ma
11e30 74 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  tch.</param>..  
11e40 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
11e50 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c  e="flags">The fl
11e60 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
11e70 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
11e80 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
11e90 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
11ea0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
11eb0 2e 4e 45 54 20 44 42 54 79 70 65 20 74 68 65 20  .NET DBType the 
11ec0 74 65 78 74 20 65 76 61 6c 75 61 74 65 73 20 74  text evaluates t
11ed0 6f 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  o.</returns>..  
11ee0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11ef0 63 20 44 62 54 79 70 65 20 54 79 70 65 4e 61 6d  c DbType TypeNam
11f00 65 54 6f 44 62 54 79 70 65 28 0d 0a 20 20 20 20  eToDbType(..    
11f10 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
11f20 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  tion connection,
11f30 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
11f40 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 20   typeName,..    
11f50 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
11f60 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
11f70 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11f80 7b 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70  {..        DbTyp
11f90 65 3f 20 64 65 66 61 75 6c 74 44 62 54 79 70 65  e? defaultDbType
11fa0 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
11fb0 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
11fc0 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on != null)..   
11fd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11fe0 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e      flags |= con
11ff0 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a  nection.Flags;..
12000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12010 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74   ((flags & SQLit
12020 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
12030 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79  .UseConnectionTy
12040 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  pes) == SQLiteCo
12050 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73  nnectionFlags.Us
12060 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73  eConnectionTypes
12070 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
12080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12090 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61    SQLiteDbTypeMa
120a0 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65  p connectionType
120b0 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69  Names = connecti
120c0 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a  on._typeNames;..
120d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
120e0 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
120f0 54 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c  TypeNames != nul
12100 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
12110 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12120 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
12130 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  ypeName != null)
12140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12150 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12170 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
12180 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  ping value;.... 
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121a0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
121b0 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54  ctionTypeNames.T
121c0 72 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e  ryGetValue(typeN
121d0 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29  ame, out value))
121e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
121f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12220 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d  value.dataType;.
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 7d 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 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12280 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122a0 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 74 79 70   int index = typ
122b0 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28  eName.IndexOf('(
122c0 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 20 20 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20     if ((index > 
122f0 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  0) &&..         
12300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12310 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f         connectio
12320 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65  nTypeNames.TryGe
12330 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2e  tValue(typeName.
12340 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64  Substring(0, ind
12350 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f  ex).TrimEnd(), o
12360 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
12370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12380 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
123b0 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65  n value.dataType
123c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
123d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
123e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
123f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12410 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12420 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12430 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12440 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12450 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65      // NOTE: Use
12460 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   the default dat
12470 61 62 61 73 65 20 74 79 70 65 20 66 6f 72 20 74  abase type for t
12480 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
12490 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
124a0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
124b0 75 6c 74 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e  ultDbType = conn
124c0 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62  ection.DefaultDb
124d0 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Type;..        }
124e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
124f0 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
12500 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
12510 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d  oGlobalTypes) ==
12520 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
12530 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54  nFlags.NoGlobalT
12540 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ypes)..        {
12550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
12560 20 28 64 65 66 61 75 6c 74 44 62 54 79 70 65 20   (defaultDbType 
12570 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
12580 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12590 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74   (DbType)default
125a0 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
125b0 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 44 62         defaultDb
125c0 54 79 70 65 20 3d 20 47 65 74 44 65 66 61 75 6c  Type = GetDefaul
125d0 74 44 62 54 79 70 65 28 63 6f 6e 6e 65 63 74 69  tDbType(connecti
125e0 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  on);....#if !NET
125f0 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
12600 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20  RACE_WARNING..  
12610 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
12620 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67 28 74  tDbTypeWarning(t
12630 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20  ypeName, flags, 
12640 64 65 66 61 75 6c 74 44 62 54 79 70 65 29 3b 0d  defaultDbType);.
12650 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
12660 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44         return (D
12670 62 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54  bType)defaultDbT
12680 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ype;..        }.
12690 0a 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  ...        lock 
126a0 28 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  (_syncRoot)..   
126b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
126c0 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d      if (_typeNam
126d0 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
126e0 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79               _ty
126f0 70 65 4e 61 6d 65 73 20 3d 20 47 65 74 53 51 4c  peNames = GetSQL
12700 69 74 65 44 62 54 79 70 65 4d 61 70 28 29 3b 0d  iteDbTypeMap();.
12710 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
12720 66 20 28 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e  f (typeName != n
12730 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12740 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12750 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
12760 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d  eMapping value;.
12770 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12780 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
12790 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
127a0 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75  peName, out valu
127b0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
127c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
127d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
127e0 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
127f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12800 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12810 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
12820 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12840 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
12850 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66  typeName.IndexOf
12860 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ('(');....      
12870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12880 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26   ((index > 0) &&
12890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
128a0 20 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e            _typeN
128b0 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65  ames.TryGetValue
128c0 28 74 79 70 65 4e 61 6d 65 2e 53 75 62 73 74 72  (typeName.Substr
128d0 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72  ing(0, index).Tr
128e0 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c  imEnd(), out val
128f0 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
12900 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
12930 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  e.dataType;..   
12940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12950 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12960 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
12970 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
12980 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  ...        if (d
12990 65 66 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20  efaultDbType != 
129a0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
129b0 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70     return (DbTyp
129c0 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b  e)defaultDbType;
129d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61  ....        defa
129e0 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65 74 44  ultDbType = GetD
129f0 65 66 61 75 6c 74 44 62 54 79 70 65 28 63 6f 6e  efaultDbType(con
12a00 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66  nection);....#if
12a10 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
12a20 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e   && TRACE_WARNIN
12a30 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75  G..        Defau
12a40 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67 28  ltDbTypeWarning(
12a50 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c  typeName, flags,
12a60 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 29 3b   defaultDbType);
12a70 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
12a80 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79      return (DbTy
12a90 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65  pe)defaultDbType
12aa0 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  ;..    }..    #e
12ab0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
12ac0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f  private static o
12ad0 62 6a 65 63 74 20 5f 73 79 6e 63 52 6f 6f 74 20  bject _syncRoot 
12ae0 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
12af0 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
12b00 74 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  tic SQLiteDbType
12b10 4d 61 70 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d  Map _typeNames =
12b20 20 6e 75 6c 6c 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20   null;..  }.... 
12b30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12b40 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 68 61 73    /// SQLite has
12b50 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20 74 79   very limited ty
12b60 70 65 73 2c 20 61 6e 64 20 69 73 20 69 6e 68 65  pes, and is inhe
12b70 72 65 6e 74 6c 79 20 74 65 78 74 2d 62 61 73 65  rently text-base
12b80 64 2e 20 20 54 68 65 20 66 69 72 73 74 20 35 20  d.  The first 5 
12b90 74 79 70 65 73 20 62 65 6c 6f 77 20 72 65 70 72  types below repr
12ba0 65 73 65 6e 74 20 74 68 65 20 73 75 6d 20 6f 66  esent the sum of
12bb0 20 61 6c 6c 20 74 79 70 65 73 20 53 51 4c 69 74   all types SQLit
12bc0 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64 65 72 73 74  e..  /// underst
12bd0 61 6e 64 73 2e 20 20 54 68 65 20 44 61 74 65 54  ands.  The DateT
12be0 69 6d 65 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f  ime extension to
12bf0 20 74 68 65 20 73 70 65 63 20 69 73 20 66 6f 72   the spec is for
12c00 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e   internal use on
12c10 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ly...  /// </sum
12c20 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
12c30 65 6e 75 6d 20 54 79 70 65 41 66 66 69 6e 69 74  enum TypeAffinit
12c40 79 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20  y..  {..    /// 
12c50 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
12c60 2f 2f 20 4e 6f 74 20 75 73 65 64 0d 0a 20 20 20  // Not used..   
12c70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12c80 0a 20 20 20 20 55 6e 69 6e 69 74 69 61 6c 69 7a  .    Uninitializ
12c90 65 64 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  ed = 0,..    ///
12ca0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12cb0 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65 67 65 72 73  /// All integers
12cc0 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66 61 75   in SQLite defau
12cd0 6c 74 20 74 6f 20 49 6e 74 36 34 0d 0a 20 20 20  lt to Int64..   
12ce0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12cf0 0a 20 20 20 20 49 6e 74 36 34 20 3d 20 31 2c 0d  .    Int64 = 1,.
12d00 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
12d10 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20  y>..    /// All 
12d20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e  floating point n
12d30 75 6d 62 65 72 73 20 69 6e 20 53 51 4c 69 74 65  umbers in SQLite
12d40 20 64 65 66 61 75 6c 74 20 74 6f 20 64 6f 75 62   default to doub
12d50 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  le..    /// </su
12d60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 6f 75 62  mmary>..    Doub
12d70 6c 65 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f  le = 2,..    ///
12d80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12d90 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
12da0 64 61 74 61 20 74 79 70 65 20 6f 66 20 53 51 4c  data type of SQL
12db0 69 74 65 20 69 73 20 74 65 78 74 0d 0a 20 20 20  ite is text..   
12dc0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12dd0 0a 20 20 20 20 54 65 78 74 20 3d 20 33 2c 0d 0a  .    Text = 3,..
12de0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12df0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 79 70 69 63  >..    /// Typic
12e00 61 6c 6c 79 20 62 6c 6f 62 20 74 79 70 65 73 20  ally blob types 
12e10 61 72 65 20 6f 6e 6c 79 20 73 65 65 6e 20 77 68  are only seen wh
12e20 65 6e 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  en returned from
12e30 20 61 20 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20   a function..   
12e40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12e50 0a 20 20 20 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a  .    Blob = 4,..
12e60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12e70 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20  >..    /// Null 
12e80 74 79 70 65 73 20 63 61 6e 20 62 65 20 72 65 74  types can be ret
12e90 75 72 6e 65 64 20 66 72 6f 6d 20 66 75 6e 63 74  urned from funct
12ea0 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ions..    /// </
12eb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 75  summary>..    Nu
12ec0 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f  ll = 5,..    ///
12ed0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
12ee0 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61  /// Used interna
12ef0 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72 6f 76  lly by this prov
12f00 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ider..    /// </
12f10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 61  summary>..    Da
12f20 74 65 54 69 6d 65 20 3d 20 31 30 2c 0d 0a 20 20  teTime = 10,..  
12f30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
12f40 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e  .    /// Used in
12f50 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68 69 73  ternally by this
12f60 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f   provider..    /
12f70 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12f80 20 20 20 4e 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20     None = 11,.. 
12f90 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
12fa0 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
12fb0 73 65 20 61 72 65 20 74 68 65 20 65 76 65 6e 74  se are the event
12fc0 20 74 79 70 65 73 20 61 73 73 6f 63 69 61 74 65   types associate
12fd0 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20 2f 2f  d with the..  //
12fe0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
12ff0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  iteConnectionEve
13000 6e 74 48 61 6e 64 6c 65 72 22 20 2f 3e 0d 0a 20  ntHandler" />.. 
13010 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20 28 61   /// delegate (a
13020 6e 64 20 69 74 73 20 63 6f 72 72 65 73 70 6f 6e  nd its correspon
13030 64 69 6e 67 20 65 76 65 6e 74 29 20 61 6e 64 20  ding event) and 
13040 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20  the..  /// <see 
13050 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e  cref="Connection
13060 45 76 65 6e 74 41 72 67 73 22 20 2f 3e 20 63 6c  EventArgs" /> cl
13070 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  ass...  /// </su
13080 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63  mmary>..  public
13090 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f 6e 6e   enum SQLiteConn
130a0 65 63 74 69 6f 6e 45 76 65 6e 74 54 79 70 65 0d  ectionEventType.
130b0 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  .  {..      /// 
130c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
130d0 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a   /// Not used...
130e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
130f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 76 61  ary>..      Inva
13100 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20  lid = -1,....   
13110 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13120 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20  ..      /// Not 
13130 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  used...      ///
13140 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13150 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30 2c 0d     Unknown = 0,.
13160 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13170 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13180 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
13190 20 69 73 20 62 65 69 6e 67 20 6f 70 65 6e 65 64   is being opened
131a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
131b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f  ummary>..      O
131c0 70 65 6e 69 6e 67 20 3d 20 31 2c 0d 0a 0d 0a 20  pening = 1,.... 
131d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
131e0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
131f0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  e connection str
13200 69 6e 67 20 68 61 73 20 62 65 65 6e 20 70 61 72  ing has been par
13210 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  sed...      /// 
13220 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13230 20 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69    ConnectionStri
13240 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20  ng = 2,....     
13250 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13260 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
13270 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f 70 65  nnection was ope
13280 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ned...      /// 
13290 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
132a0 20 20 4f 70 65 6e 65 64 20 3d 20 33 2c 0d 0a 0d    Opened = 3,...
132b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
132c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
132d0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 43  The <see cref="C
132e0 68 61 6e 67 65 44 61 74 61 62 61 73 65 22 20 2f  hangeDatabase" /
132f0 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 63 61 6c  > method was cal
13300 6c 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  led on the..    
13310 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e    /// connection
13320 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13330 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
13340 68 61 6e 67 65 44 61 74 61 62 61 73 65 20 3d 20  hangeDatabase = 
13350 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
13360 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13370 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63 74 69   /// A transacti
13380 6f 6e 20 77 61 73 20 63 72 65 61 74 65 64 20 75  on was created u
13390 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74  sing the connect
133a0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
133b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
133c0 20 20 4e 65 77 54 72 61 6e 73 61 63 74 69 6f 6e    NewTransaction
133d0 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 5,....      /
133e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
133f0 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e      /// The conn
13400 65 63 74 69 6f 6e 20 77 61 73 20 65 6e 6c 69 73  ection was enlis
13410 74 65 64 20 69 6e 74 6f 20 61 20 74 72 61 6e 73  ted into a trans
13420 61 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f  action...      /
13430 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13440 20 20 20 20 20 45 6e 6c 69 73 74 54 72 61 6e 73       EnlistTrans
13450 61 63 74 69 6f 6e 20 3d 20 36 2c 0d 0a 0d 0a 20  action = 6,.... 
13460 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13470 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
13480 63 6f 6d 6d 61 6e 64 20 77 61 73 20 63 72 65 61  command was crea
13490 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f  ted using the co
134a0 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  nnection...     
134b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
134c0 0a 20 20 20 20 20 20 4e 65 77 43 6f 6d 6d 61 6e  .      NewComman
134d0 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20  d = 7,....      
134e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
134f0 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20       /// A data 
13500 72 65 61 64 65 72 20 77 61 73 20 63 72 65 61 74  reader was creat
13510 65 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e  ed using the con
13520 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
13530 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13540 20 20 20 20 20 20 4e 65 77 44 61 74 61 52 65 61        NewDataRea
13550 64 65 72 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20  der = 8,....    
13560 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13570 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e  .      /// An in
13580 73 74 61 6e 63 65 20 6f 66 20 61 20 3c 73 65 65  stance of a <see
13590 20 63 72 65 66 3d 22 43 72 69 74 69 63 61 6c 48   cref="CriticalH
135a0 61 6e 64 6c 65 22 20 2f 3e 20 64 65 72 69 76 65  andle" /> derive
135b0 64 20 63 6c 61 73 73 20 68 61 73 0d 0a 20 20 20  d class has..   
135c0 20 20 20 2f 2f 2f 20 62 65 65 6e 20 63 72 65 61     /// been crea
135d0 74 65 64 20 74 6f 20 77 72 61 70 20 61 20 6e 61  ted to wrap a na
135e0 74 69 76 65 20 72 65 73 6f 75 72 63 65 2e 0d 0a  tive resource...
135f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13600 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43  ary>..      NewC
13610 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20 3d 20  riticalHandle = 
13620 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  9,....      /// 
13630 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13640 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
13650 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 63 6c 6f  ion is being clo
13660 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  sed...      /// 
13670 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13680 20 20 43 6c 6f 73 69 6e 67 20 3d 20 31 30 2c 0d    Closing = 10,.
13690 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
136a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
136b0 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
136c0 20 77 61 73 20 63 6c 6f 73 65 64 2e 0d 0a 20 20   was closed...  
136d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
136e0 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 65 64  y>..      Closed
136f0 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 11,....      
13700 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13710 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61       /// A comma
13720 6e 64 20 69 73 20 62 65 69 6e 67 20 64 69 73 70  nd is being disp
13730 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  osed...      ///
13740 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13750 20 20 20 44 69 73 70 6f 73 69 6e 67 43 6f 6d 6d     DisposingComm
13760 61 6e 64 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20  and = 12,....   
13770 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13780 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61  ..      /// A da
13790 74 61 20 72 65 61 64 65 72 20 69 73 20 62 65 69  ta reader is bei
137a0 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ng disposed...  
137b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
137c0 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73  y>..      Dispos
137d0 69 6e 67 44 61 74 61 52 65 61 64 65 72 20 3d 20  ingDataReader = 
137e0 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  13,....      ///
137f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13800 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61    /// A data rea
13810 64 65 72 20 69 73 20 62 65 69 6e 67 20 63 6c 6f  der is being clo
13820 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  sed...      /// 
13830 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13840 20 20 43 6c 6f 73 69 6e 67 44 61 74 61 52 65 61    ClosingDataRea
13850 64 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20  der = 14,....   
13860 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13870 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61  ..      /// A na
13880 74 69 76 65 20 72 65 73 6f 75 72 63 65 20 77 61  tive resource wa
13890 73 20 6f 70 65 6e 65 64 20 28 69 2e 65 2e 20 6f  s opened (i.e. o
138a0 62 74 61 69 6e 65 64 29 20 66 72 6f 6d 20 74 68  btained) from th
138b0 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f  e pool...      /
138c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
138d0 20 20 20 20 20 4f 70 65 6e 65 64 46 72 6f 6d 50       OpenedFromP
138e0 6f 6f 6c 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20 20  ool = 15,....   
138f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13900 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61  ..      /// A na
13910 74 69 76 65 20 72 65 73 6f 75 72 63 65 20 77 61  tive resource wa
13920 73 20 63 6c 6f 73 65 64 20 28 69 2e 65 2e 20 72  s closed (i.e. r
13930 65 6c 65 61 73 65 64 29 20 74 6f 20 74 68 65 20  eleased) to the 
13940 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  pool...      ///
13950 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13960 20 20 20 43 6c 6f 73 65 64 54 6f 50 6f 6f 6c 20     ClosedToPool 
13970 3d 20 31 36 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  = 16..  }....  /
13980 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13990 2f 2f 2f 20 54 68 69 73 20 69 6d 70 6c 65 6d 65  /// This impleme
139a0 6e 74 61 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74  ntation of SQLit
139b0 65 20 66 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61  e for ADO.NET ca
139c0 6e 20 70 72 6f 63 65 73 73 20 64 61 74 65 2f 74  n process date/t
139d0 69 6d 65 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20  ime fields in.. 
139e0 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 73 20 69   /// databases i
139f0 6e 20 6f 6e 65 20 6f 66 20 73 69 78 20 66 6f 72  n one of six for
13a00 6d 61 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  mats...  /// </s
13a10 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c  ummary>..  /// <
13a20 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20  remarks>..  /// 
13a30 49 53 4f 38 36 30 31 20 66 6f 72 6d 61 74 20 69  ISO8601 format i
13a40 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c  s more compatibl
13a50 65 2c 20 72 65 61 64 61 62 6c 65 2c 20 66 75 6c  e, readable, ful
13a60 6c 79 2d 70 72 6f 63 65 73 73 61 62 6c 65 2c 20  ly-processable, 
13a70 62 75 74 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20  but less..  /// 
13a80 61 63 63 75 72 61 74 65 20 61 73 20 69 74 20 64  accurate as it d
13a90 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20  oes not provide 
13aa0 74 69 6d 65 20 64 6f 77 6e 20 74 6f 20 66 72 61  time down to fra
13ab0 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f  ctions of a seco
13ac0 6e 64 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61  nd...  /// Julia
13ad0 6e 44 61 79 20 69 73 20 74 68 65 20 6e 75 6d 65  nDay is the nume
13ae0 72 69 63 20 66 6f 72 6d 61 74 20 74 68 65 20 53  ric format the S
13af0 51 4c 69 74 65 20 75 73 65 73 20 69 6e 74 65 72  QLite uses inter
13b00 6e 61 6c 6c 79 20 61 6e 64 20 69 73 20 61 72 67  nally and is arg
13b10 75 61 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65  uably..  /// the
13b20 20 6d 6f 73 74 20 63 6f 6d 70 61 74 69 62 6c 65   most compatible
13b30 20 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20   with 3rd party 
13b40 74 6f 6f 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f  tools.  It is no
13b50 74 20 72 65 61 64 61 62 6c 65 20 61 73 20 74 65  t readable as te
13b60 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75  xt..  /// withou
13b70 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e  t post-processin
13b80 67 2e 20 20 54 69 63 6b 73 20 6c 65 73 73 20 63  g.  Ticks less c
13b90 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 33  ompatible with 3
13ba0 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73 20 74  rd party tools t
13bb0 68 61 74 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79  hat..  /// query
13bc0 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 61   the database, a
13bd0 6e 64 20 72 65 6e 64 65 72 73 20 74 68 65 20 44  nd renders the D
13be0 61 74 65 54 69 6d 65 20 66 69 65 6c 64 20 75 6e  ateTime field un
13bf0 72 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74  readable as text
13c00 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20  ..  /// without 
13c10 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e  post-processing.
13c20 20 20 55 6e 69 78 45 70 6f 63 68 20 69 73 20 6d    UnixEpoch is m
13c30 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 77  ore compatible w
13c40 69 74 68 20 55 6e 69 78 20 73 79 73 74 65 6d 73  ith Unix systems
13c50 2e 0d 0a 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61  ...  /// Invaria
13c60 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73  ntCulture allows
13c70 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
13c80 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 69  format for the i
13c90 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65  nvariant culture
13ca0 0d 0a 20 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74  ..  /// format t
13cb0 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73  o be used and is
13cc0 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e   human readable.
13cd0 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65    CurrentCulture
13ce0 20 61 6c 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f   allows the..  /
13cf0 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f  // configured fo
13d00 72 6d 61 74 20 66 6f 72 20 74 68 65 20 63 75 72  rmat for the cur
13d10 72 65 6e 74 20 63 75 6c 74 75 72 65 20 74 6f 20  rent culture to 
13d20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 61  be used and is a
13d30 6c 73 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f  lso human..  ///
13d40 20 72 65 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f   readable...  //
13d50 2f 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 72 65  /..  /// The pre
13d60 66 65 72 72 65 64 20 6f 72 64 65 72 20 6f 66 20  ferred order of 
13d70 63 68 6f 6f 73 69 6e 67 20 61 20 44 61 74 65 54  choosing a DateT
13d80 69 6d 65 20 66 6f 72 6d 61 74 20 69 73 20 4a 75  ime format is Ju
13d90 6c 69 61 6e 44 61 79 2c 20 49 53 4f 38 36 30 31  lianDay, ISO8601
13da0 2c 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65  ,..  /// and the
13db0 6e 20 54 69 63 6b 73 2e 20 20 54 69 63 6b 73 20  n Ticks.  Ticks 
13dc0 69 73 20 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e  is mainly presen
13dd0 74 20 66 6f 72 20 6c 65 67 61 63 79 20 63 6f 64  t for legacy cod
13de0 65 20 73 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f  e support...  //
13df0 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
13e00 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
13e10 74 65 44 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20  teDateFormats.. 
13e20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   {..    /// <sum
13e30 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
13e40 73 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  se the value of 
13e50 44 61 74 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20  DateTime.Ticks. 
13e60 20 54 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e   This value is n
13e70 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61  ot recommended a
13e80 6e 64 20 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73  nd is not well s
13e90 75 70 70 6f 72 74 65 64 20 77 69 74 68 20 4c 49  upported with LI
13ea0 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  NQ...    /// </s
13eb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 69 63  ummary>..    Tic
13ec0 6b 73 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  ks = 0,..    ///
13ed0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13ee0 2f 2f 2f 20 55 73 65 20 74 68 65 20 49 53 4f 2d  /// Use the ISO-
13ef0 38 36 30 31 20 66 6f 72 6d 61 74 2e 20 20 55 73  8601 format.  Us
13f00 65 73 20 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d  es the "yyyy-MM-
13f10 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
13f20 46 46 46 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72  FFFK" format for
13f30 20 55 54 43 20 44 61 74 65 54 69 6d 65 20 76 61   UTC DateTime va
13f40 6c 75 65 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  lues and..    //
13f50 2f 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  / "yyyy-MM-dd HH
13f60 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 20  :mm:ss.FFFFFFF" 
13f70 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c  format for local
13f80 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73   DateTime values
13f90 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  )...    /// </su
13fa0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38  mmary>..    ISO8
13fb0 36 30 31 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  601 = 1,..    //
13fc0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13fd0 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 76 61   /// The interva
13fe0 6c 20 6f 66 20 74 69 6d 65 20 69 6e 20 64 61 79  l of time in day
13ff0 73 20 61 6e 64 20 66 72 61 63 74 69 6f 6e 73 20  s and fractions 
14000 6f 66 20 61 20 64 61 79 20 73 69 6e 63 65 20 4a  of a day since J
14010 61 6e 75 61 72 79 20 31 2c 20 34 37 31 33 20 42  anuary 1, 4713 B
14020 43 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  C...    /// </su
14030 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69  mmary>..    Juli
14040 61 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20  anDay = 2,..    
14050 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14060 20 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65     /// The whole
14070 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
14080 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
14090 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61 72 79  x epoch (January
140a0 20 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20 20 20   1, 1970)...    
140b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
140c0 20 20 20 20 55 6e 69 78 45 70 6f 63 68 20 3d 20      UnixEpoch = 
140d0 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  3,..    /// <sum
140e0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
140f0 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70  ny culture-indep
14100 65 6e 64 65 6e 74 20 73 74 72 69 6e 67 20 76 61  endent string va
14110 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45  lue that the .NE
14120 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20  T Framework can 
14130 69 6e 74 65 72 70 72 65 74 20 61 73 20 61 20 76  interpret as a v
14140 61 6c 69 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a  alid DateTime...
14150 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14160 79 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69 61 6e  y>..    Invarian
14170 74 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20  tCulture = 4,.. 
14180 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14190 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74  ..    /// Any st
141a0 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20  ring value that 
141b0 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
141c0 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74  rk can interpret
141d0 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65   as a valid Date
141e0 54 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 63  Time using the c
141f0 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d  urrent culture..
14200 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14210 72 79 3e 0d 0a 20 20 20 20 43 75 72 72 65 6e 74  ry>..    Current
14220 43 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20  Culture = 5,..  
14230 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14240 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
14250 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20  ault format for 
14260 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a  this provider...
14270 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
14280 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20  y>..    Default 
14290 3d 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a  = ISO8601..  }..
142a0 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
142b0 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e  >..  /// This en
142c0 75 6d 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f  um determines ho
142d0 77 20 53 51 4c 69 74 65 20 74 72 65 61 74 73 20  w SQLite treats 
142e0 69 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  its journal file
142f0 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
14300 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61  ry>..  /// <rema
14310 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64  rks>..  /// By d
14320 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20 77 69  efault SQLite wi
14330 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65  ll create and de
14340 6c 65 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c  lete the journal
14350 20 66 69 6c 65 20 77 68 65 6e 20 6e 65 65 64 65   file when neede
14360 64 20 64 75 72 69 6e 67 20 61 20 74 72 61 6e 73  d during a trans
14370 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48  action...  /// H
14380 6f 77 65 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65  owever, for some
14390 20 63 6f 6d 70 75 74 65 72 73 20 72 75 6e 6e 69   computers runni
143a0 6e 67 20 63 65 72 74 61 69 6e 20 66 69 6c 65 73  ng certain files
143b0 79 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67  ystem monitoring
143c0 20 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61 70 69   tools, the rapi
143d0 64 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f  d..  /// creatio
143e0 6e 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f  n and deletion o
143f0 66 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  f the journal fi
14400 6c 65 20 63 61 6e 20 63 61 75 73 65 20 74 68 6f  le can cause tho
14410 73 65 20 70 72 6f 67 72 61 6d 73 20 74 6f 20 66  se programs to f
14420 61 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72  ail, or to inter
14430 66 65 72 65 20 77 69 74 68 20 53 51 4c 69 74 65  fere with SQLite
14440 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20  ...  ///..  /// 
14450 49 66 20 61 20 70 72 6f 67 72 61 6d 20 6f 72 20  If a program or 
14460 76 69 72 75 73 20 73 63 61 6e 6e 65 72 20 69 73  virus scanner is
14470 20 69 6e 74 65 72 66 65 72 69 6e 67 20 77 69 74   interfering wit
14480 68 20 53 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e  h SQLite's journ
14490 61 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79  al file, you may
144a0 20 72 65 63 65 69 76 65 20 65 72 72 6f 72 73 20   receive errors 
144b0 6c 69 6b 65 20 22 75 6e 61 62 6c 65 20 74 6f 20  like "unable to 
144c0 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 66 69  open database fi
144d0 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20  le"..  /// when 
144e0 73 74 61 72 74 69 6e 67 20 61 20 74 72 61 6e 73  starting a trans
144f0 61 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 69 73  action.  If this
14500 20 69 73 20 68 61 70 70 65 6e 69 6e 67 2c 20 79   is happening, y
14510 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 63  ou may want to c
14520 68 61 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c  hange the defaul
14530 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74  t journal mode t
14540 6f 20 50 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f  o Persist...  //
14550 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
14560 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
14570 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75  teJournalModeEnu
14580 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20  m..  {..    /// 
14590 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
145a0 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d  // The default m
145b0 6f 64 65 2c 20 74 68 69 73 20 63 61 75 73 65 73  ode, this causes
145c0 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 74   SQLite to use t
145d0 68 65 20 65 78 69 73 74 69 6e 67 20 6a 6f 75 72  he existing jour
145e0 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20  naling mode for 
145f0 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20  the database... 
14600 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14610 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d  >..    Default =
14620 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   -1,..    /// <s
14630 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14640 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63 72 65   SQLite will cre
14650 61 74 65 20 61 6e 64 20 64 65 73 74 72 6f 79 20  ate and destroy 
14660 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
14670 20 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20   as-needed...   
14680 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14690 0a 20 20 20 20 44 65 6c 65 74 65 20 3d 20 30 2c  .    Delete = 0,
146a0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
146b0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65  ry>..    /// Whe
146c0 6e 20 74 68 69 73 20 69 73 20 73 65 74 2c 20 53  n this is set, S
146d0 51 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65 70 20  QLite will keep 
146e0 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
146f0 20 65 76 65 6e 20 61 66 74 65 72 20 61 20 74 72   even after a tr
14700 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 63 6f  ansaction has co
14710 6d 70 6c 65 74 65 64 2e 20 20 49 74 27 73 20 63  mpleted.  It's c
14720 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62 65 20  ontents will be 
14730 65 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f  erased,..    ///
14740 20 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c   and the journal
14750 20 72 65 2d 75 73 65 64 20 61 73 20 6f 66 74 65   re-used as ofte
14760 6e 20 61 73 20 6e 65 65 64 65 64 2e 20 20 49 66  n as needed.  If
14770 20 69 74 20 69 73 20 64 65 6c 65 74 65 64 2c 20   it is deleted, 
14780 69 74 20 77 69 6c 6c 20 62 65 20 72 65 63 72 65  it will be recre
14790 61 74 65 64 20 74 68 65 20 6e 65 78 74 20 74 69  ated the next ti
147a0 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e  me it is needed.
147b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
147c0 61 72 79 3e 0d 0a 20 20 20 20 50 65 72 73 69 73  ary>..    Persis
147d0 74 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  t = 1,..    /// 
147e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
147f0 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  // This option d
14800 69 73 61 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c  isables the roll
14810 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74  back journal ent
14820 69 72 65 6c 79 2e 20 20 49 6e 74 65 72 72 75 70  irely.  Interrup
14830 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
14840 20 6f 72 20 61 20 70 72 6f 67 72 61 6d 20 63 72   or a program cr
14850 61 73 68 20 63 61 6e 20 63 61 75 73 65 20 64 61  ash can cause da
14860 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20  tabase..    /// 
14870 63 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20 74 68  corruption in th
14880 69 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f  is mode!..    //
14890 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
148a0 20 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20    Off = 2,..    
148b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
148c0 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
148d0 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68 65 20  ll truncate the 
148e0 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20  journal file to 
148f0 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74  zero-length inst
14900 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e 67 20  ead of deleting 
14910 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  it...    /// </s
14920 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 72 75  ummary>..    Tru
14930 6e 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20  ncate = 3,..    
14940 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14950 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
14960 6c 6c 20 73 74 6f 72 65 20 74 68 65 20 6a 6f 75  ll store the jou
14970 72 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65  rnal in volatile
14980 20 52 41 4d 2e 20 20 54 68 69 73 20 73 61 76 65   RAM.  This save
14990 73 20 64 69 73 6b 20 49 2f 4f 20 62 75 74 20 61  s disk I/O but a
149a0 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
149b0 20 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79   database safety
149c0 20 61 6e 64 20 69 6e 74 65 67 72 69 74 79 2e 0d   and integrity..
149d0 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20  .    /// If the 
149e0 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e  application usin
149f0 67 20 53 51 4c 69 74 65 20 63 72 61 73 68 65 73  g SQLite crashes
14a00 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
14a10 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  f a transaction 
14a20 77 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20  when the MEMORY 
14a30 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20  journaling mode 
14a40 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65  is set, then the
14a50 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61  ..    /// databa
14a60 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 76 65 72  se file will ver
14a70 79 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72  y likely go corr
14a80 75 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  upt...    /// </
14a90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65  summary>..    Me
14aa0 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f  mory = 4,..    /
14ab0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14ac0 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65    /// SQLite use
14ad0 73 20 61 20 77 72 69 74 65 2d 61 68 65 61 64 20  s a write-ahead 
14ae0 6c 6f 67 20 69 6e 73 74 65 61 64 20 6f 66 20 61  log instead of a
14af0 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
14b00 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  l to implement t
14b10 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 54 68  ransactions.  Th
14b20 65 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67  e WAL journaling
14b30 20 6d 6f 64 65 20 69 73 20 70 65 72 73 69 73 74   mode is persist
14b40 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66  ent;..    /// af
14b50 74 65 72 20 62 65 69 6e 67 20 73 65 74 20 69 74  ter being set it
14b60 20 73 74 61 79 73 20 69 6e 20 65 66 66 65 63 74   stays in effect
14b70 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65   across multiple
14b80 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
14b90 74 69 6f 6e 73 20 61 6e 64 20 61 66 74 65 72 20  tions and after 
14ba0 63 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65 6f 70  closing and reop
14bb0 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ening the databa
14bc0 73 65 2e 20 41 20 64 61 74 61 62 61 73 65 0d 0a  se. A database..
14bd0 20 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a      /// in WAL j
14be0 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63  ournaling mode c
14bf0 61 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63 65 73  an only be acces
14c00 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 76 65  sed by SQLite ve
14c10 72 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c  rsion 3.7.0 or l
14c20 61 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ater...    /// <
14c30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57  /summary>..    W
14c40 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20  al = 5..  }.... 
14c50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14c60 20 20 2f 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76    /// Possible v
14c70 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 22 73  alues for the "s
14c80 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61  ynchronous" data
14c90 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 54  base setting.  T
14ca0 68 69 73 20 73 65 74 74 69 6e 67 20 64 65 74 65  his setting dete
14cb0 72 6d 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f  rmines..  /// ho
14cc0 77 20 6f 66 74 65 6e 20 74 68 65 20 64 61 74 61  w often the data
14cd0 62 61 73 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c  base engine call
14ce0 73 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68  s the xSync meth
14cf0 6f 64 20 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a  od of the VFS...
14d00 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14d10 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
14d20 6d 20 53 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e  m SQLiteSynchron
14d30 6f 75 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  ousEnum..  {..  
14d40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14d50 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  >..      /// Use
14d60 20 74 68 65 20 64 65 66 61 75 6c 74 20 22 73 79   the default "sy
14d70 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62  nchronous" datab
14d80 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 43 75  ase setting.  Cu
14d90 72 72 65 6e 74 6c 79 2c 20 74 68 69 73 20 73 68  rrently, this sh
14da0 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f  ould be..      /
14db0 2f 2f 20 74 68 65 20 73 61 6d 65 20 61 73 20 75  // the same as u
14dc0 73 69 6e 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f  sing the FULL mo
14dd0 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  de...      /// <
14de0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14df0 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a   Default = -1,..
14e00 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
14e10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
14e20 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   The database en
14e30 67 69 6e 65 20 63 6f 6e 74 69 6e 75 65 73 20 77  gine continues w
14e40 69 74 68 6f 75 74 20 73 79 6e 63 69 6e 67 20 61  ithout syncing a
14e50 73 20 73 6f 6f 6e 20 61 73 20 69 74 20 68 61 73  s soon as it has
14e60 20 68 61 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f   handed..      /
14e70 2f 2f 20 64 61 74 61 20 6f 66 66 20 74 6f 20 74  // data off to t
14e80 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
14e90 74 65 6d 2e 20 20 49 66 20 74 68 65 20 61 70 70  tem.  If the app
14ea0 6c 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67  lication running
14eb0 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f   SQLite..      /
14ec0 2f 2f 20 63 72 61 73 68 65 73 2c 20 74 68 65 20  // crashes, the 
14ed0 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73 61 66  data will be saf
14ee0 65 2c 20 62 75 74 20 74 68 65 20 64 61 74 61 62  e, but the datab
14ef0 61 73 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65  ase might become
14f00 20 63 6f 72 72 75 70 74 65 64 0d 0a 20 20 20 20   corrupted..    
14f10 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6f 70 65    /// if the ope
14f20 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72  rating system cr
14f30 61 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d  ashes or the com
14f40 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65  puter loses powe
14f50 72 20 62 65 66 6f 72 65 20 74 68 61 74 0d 0a 20  r before that.. 
14f60 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 68 61       /// data ha
14f70 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 74  s been written t
14f80 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61  o the disk surfa
14f90 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ce...      /// <
14fa0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14fb0 20 4f 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20   Off = 0,....   
14fc0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14fd0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
14fe0 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
14ff0 77 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20  will still sync 
15000 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74  at the most crit
15010 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75  ical moments, bu
15020 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73  t..      /// les
15030 73 20 6f 66 74 65 6e 20 74 68 61 6e 20 69 6e 20  s often than in 
15040 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72  FULL mode.  Ther
15050 65 20 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c  e is a very smal
15060 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65  l (though non-ze
15070 72 6f 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ro)..      /// c
15080 68 61 6e 63 65 20 74 68 61 74 20 61 20 70 6f 77  hance that a pow
15090 65 72 20 66 61 69 6c 75 72 65 20 61 74 20 6a 75  er failure at ju
150a0 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74 69 6d  st the wrong tim
150b0 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70 74 20  e could corrupt 
150c0 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  the..      /// d
150d0 61 74 61 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41  atabase in NORMA
150e0 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f  L mode...      /
150f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15100 20 20 20 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c       Normal = 1,
15110 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15120 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15130 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
15140 65 6e 67 69 6e 65 20 77 69 6c 6c 20 75 73 65 20  engine will use 
15150 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64  the xSync method
15160 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f 20 65   of the VFS to e
15170 6e 73 75 72 65 20 74 68 61 74 0d 0a 20 20 20 20  nsure that..    
15180 20 20 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e    /// all conten
15190 74 20 69 73 20 73 61 66 65 6c 79 20 77 72 69 74  t is safely writ
151a0 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ten to the disk 
151b0 73 75 72 66 61 63 65 20 70 72 69 6f 72 20 74 6f  surface prior to
151c0 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20   continuing...  
151d0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73      /// This ens
151e0 75 72 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65  ures that an ope
151f0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72  rating system cr
15200 61 73 68 20 6f 72 20 70 6f 77 65 72 20 66 61 69  ash or power fai
15210 6c 75 72 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20  lure will not.. 
15220 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74       /// corrupt
15230 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
15240 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73  FULL synchronous
15250 20 69 73 20 76 65 72 79 20 73 61 66 65 2c 20 62   is very safe, b
15260 75 74 20 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20  ut it is also.. 
15270 20 20 20 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e       /// slower.
15280 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15290 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75  mmary>..      Fu
152a0 6c 6c 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20  ll = 2..  }.... 
152b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
152c0 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
152d0 74 65 64 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63  ted command exec
152e0 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 54 68 69  ution type.  Thi
152f0 73 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68  s controls which
15300 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a   method of the..
15310 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
15320 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20  "SQLiteCommand" 
15330 2f 3e 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62  /> object will b
15340 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f  e called...  ///
15350 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70   </summary>..  p
15360 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74  ublic enum SQLit
15370 65 45 78 65 63 75 74 65 54 79 70 65 0d 0a 20 20  eExecuteType..  
15380 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
15390 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
153a0 2f 20 44 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e  / Do nothing.  N
153b0 6f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  o method will be
153c0 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
153d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
153e0 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d        None = 0,.
153f0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15400 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15410 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
15420 20 6e 6f 74 20 65 78 70 65 63 74 65 64 20 74 6f   not expected to
15430 20 72 65 74 75 72 6e 20 61 20 72 65 73 75 6c 74   return a result
15440 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74   -OR- the result
15450 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   is not..      /
15460 2f 2f 20 6e 65 65 64 65 64 2e 20 20 54 68 65 20  // needed.  The 
15470 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
15480 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
15490 4e 6f 6e 51 75 65 72 79 28 29 22 20 2f 3e 20 6f  NonQuery()" /> o
154a0 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  r..      /// <se
154b0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
154c0 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e  mmand.ExecuteNon
154d0 51 75 65 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68  Query(CommandBeh
154e0 61 76 69 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68  avior)" />  meth
154f0 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  od..      /// wi
15500 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  ll be called... 
15510 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15520 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75  ry>..      NonQu
15530 65 72 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20  ery = 1,....    
15540 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15550 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
15560 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74  ommand is expect
15570 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20 73  ed to return a s
15580 63 61 6c 61 72 20 72 65 73 75 6c 74 20 2d 4f 52  calar result -OR
15590 2d 20 74 68 65 20 72 65 73 75 6c 74 20 73 68 6f  - the result sho
155a0 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  uld..      /// b
155b0 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 61 20 73  e limited to a s
155c0 63 61 6c 61 72 20 72 65 73 75 6c 74 2e 20 20 54  calar result.  T
155d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
155e0 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63  LiteCommand.Exec
155f0 75 74 65 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d  uteScalar()" />.
15600 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73  .      /// or <s
15610 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
15620 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63  ommand.ExecuteSc
15630 61 6c 61 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61  alar(CommandBeha
15640 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64  vior)" /> method
15650 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   will..      ///
15660 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20   be called...   
15670 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15680 3e 0d 0a 20 20 20 20 20 20 53 63 61 6c 61 72 20  >..      Scalar 
15690 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
156a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
156b0 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61     /// The comma
156c0 6e 64 20 69 73 20 65 78 70 65 63 74 65 64 20 74  nd is expected t
156d0 6f 20 72 65 74 75 72 6e 20 3c 73 65 65 20 63 72  o return <see cr
156e0 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
156f0 61 64 65 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e  ader" /> result.
15700 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
15710 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
15720 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
15730 52 65 61 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d  Reader()" /> or.
15740 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
15750 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
15760 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61 64 65  and.ExecuteReade
15770 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  r(CommandBehavio
15780 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  r)" /> method wi
15790 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
157a0 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
157b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
157c0 20 20 20 20 20 20 52 65 61 64 65 72 20 3d 20 33        Reader = 3
157d0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
157e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
157f0 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61  /// Use the defa
15800 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63  ult command exec
15810 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 55 73 69  ution type.  Usi
15820 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 69 73  ng this value is
15830 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20   the same..     
15840 20 2f 2f 2f 20 61 73 20 75 73 69 6e 67 20 74 68   /// as using th
15850 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
15860 69 74 65 45 78 65 63 75 74 65 54 79 70 65 2e 4e  iteExecuteType.N
15870 6f 6e 51 75 65 72 79 22 20 2f 3e 20 76 61 6c 75  onQuery" /> valu
15880 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
15890 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
158a0 44 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65  Default = NonQue
158b0 72 79 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64  ry /* TODO: Good
158c0 20 64 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20   default? */..  
158d0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
158e0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
158f0 61 63 74 69 6f 6e 20 63 6f 64 65 20 72 65 73 70  action code resp
15900 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20  onsible for the 
15910 63 75 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74  current call int
15920 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  o the authorizer
15930 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
15940 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
15950 75 6d 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69  um SQLiteAuthori
15960 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20  zerActionCode.. 
15970 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
15980 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15990 2f 2f 20 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20  // No action is 
159a0 62 65 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e  being performed.
159b0 20 20 54 68 69 73 20 76 61 6c 75 65 20 73 68 6f    This value sho
159c0 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20  uld not be used 
159d0 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  from..      /// 
159e0 65 78 74 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a  external code...
159f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15a00 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
15a10 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = -1,....      
15a20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15a30 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67       /// No long
15a40 65 72 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  er used...      
15a50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15a60 20 20 20 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d        Copy = 0,.
15a70 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15a80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15a90 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20  / An index will 
15aa0 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
15ab0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
15ac0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
15ad0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e  he..      /// in
15ae0 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  dex name and the
15af0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
15b00 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f      ///..      /
15b10 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15b20 20 20 20 20 20 43 72 65 61 74 65 49 6e 64 65 78       CreateIndex
15b30 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
15b40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15b50 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
15b60 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
15b70 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
15b80 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
15b90 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
15ba0 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  // table name an
15bb0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
15bc0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15bd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
15be0 61 74 65 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d  ateTable = 2,...
15bf0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15c00 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15c10 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65  A temporary inde
15c20 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  x will be create
15c30 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
15c40 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
15c50 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
15c60 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
15c70 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
15c80 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
15c90 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15ca0 20 43 72 65 61 74 65 54 65 6d 70 49 6e 64 65 78   CreateTempIndex
15cb0 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 3,....      /
15cc0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15cd0 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72      /// A tempor
15ce0 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62  ary table will b
15cf0 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
15d00 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
15d10 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
15d20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
15d30 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
15d40 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
15d50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15d60 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
15d70 70 54 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20  pTable = 4,.... 
15d80 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15d90 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
15da0 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65  temporary trigge
15db0 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  r will be create
15dc0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
15dd0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
15de0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
15df0 20 74 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d   the trigger nam
15e00 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
15e10 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
15e20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15e30 20 20 20 43 72 65 61 74 65 54 65 6d 70 54 72 69     CreateTempTri
15e40 67 67 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20  gger = 5,....   
15e50 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15e60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
15e70 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c  mporary view wil
15e80 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
15e90 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
15ea0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
15eb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
15ec0 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20  view name and a 
15ed0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
15ee0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15ef0 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
15f00 65 6d 70 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a  empView = 6,....
15f10 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15f20 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15f30 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
15f40 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
15f50 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
15f60 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
15f70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67  ..      /// trig
15f80 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
15f90 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
15fa0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15fb0 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
15fc0 54 72 69 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a  Trigger = 7,....
15fd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15fe0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15ff0 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72   view will be cr
16000 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
16010 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16020 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69  ments are the vi
16030 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ew..      /// na
16040 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16050 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16060 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16070 20 20 43 72 65 61 74 65 56 69 65 77 20 3d 20 38    CreateView = 8
16080 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16090 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
160a0 2f 2f 2f 20 41 20 44 45 4c 45 54 45 20 73 74 61  /// A DELETE sta
160b0 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
160c0 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
160d0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
160e0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
160f0 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
16100 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
16110 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16120 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16130 20 20 20 20 20 44 65 6c 65 74 65 20 3d 20 39 2c       Delete = 9,
16140 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16150 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16160 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c  // An index will
16170 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16180 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16190 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
161a0 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  the..      /// i
161b0 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68  ndex name and th
161c0 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20  e table name... 
161d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
161e0 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 49  ry>..      DropI
161f0 6e 64 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20  ndex = 10,....  
16200 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16210 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16220 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
16230 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16240 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16250 65 6e 74 73 20 61 72 65 20 74 68 65 20 74 61 62  ents are the tab
16260 6c 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e  les..      /// n
16270 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
16280 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
16290 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
162a0 20 20 20 44 72 6f 70 54 61 62 6c 65 20 3d 20 31     DropTable = 1
162b0 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
162c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
162d0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
162e0 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64   index will be d
162f0 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
16300 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16310 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20  uments are..    
16320 20 20 2f 2f 2f 20 74 68 65 20 69 6e 64 65 78 20    /// the index 
16330 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
16340 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
16350 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16360 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 49 6e        DropTempIn
16370 64 65 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20  dex = 12,....   
16380 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16390 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
163a0 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69  mporary table wi
163b0 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
163c0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
163d0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
163e0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
163f0 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
16400 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16410 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16420 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
16430 65 6d 70 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a  empTable = 13,..
16440 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16450 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16460 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69   A temporary tri
16470 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f  gger will be dro
16480 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16490 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
164a0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
164b0 61 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20  are the trigger 
164c0 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
164d0 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
164e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
164f0 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 54 72        DropTempTr
16500 69 67 67 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20  igger = 14,.... 
16510 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16520 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16530 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77  temporary view w
16540 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20  ill be dropped. 
16550 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16560 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
16570 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
16580 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20  e view name and 
16590 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
165a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
165b0 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
165c0 65 6d 70 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d  empView = 15,...
165d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
165e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
165f0 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62  A trigger will b
16600 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
16610 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16620 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
16630 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69  e..      /// tri
16640 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68  gger name and th
16650 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20  e table name... 
16660 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16670 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
16680 72 69 67 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a  rigger = 16,....
16690 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
166a0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
166b0 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72   view will be dr
166c0 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
166d0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
166e0 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69  ments are the vi
166f0 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ew..      /// na
16700 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16710 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16720 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16730 20 20 44 72 6f 70 56 69 65 77 20 3d 20 31 37 2c    DropView = 17,
16740 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16750 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16760 2f 2f 20 41 6e 20 49 4e 53 45 52 54 20 73 74 61  // An INSERT sta
16770 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
16780 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
16790 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
167a0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
167b0 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
167c0 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
167d0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
167e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
167f0 20 20 20 20 20 49 6e 73 65 72 74 20 3d 20 31 38       Insert = 18
16800 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16810 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16820 2f 2f 2f 20 41 20 50 52 41 47 4d 41 20 73 74 61  /// A PRAGMA sta
16830 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
16840 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
16850 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16860 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
16870 2f 2f 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20  // are the name 
16880 6f 66 20 74 68 65 20 50 52 41 47 4d 41 20 61 6e  of the PRAGMA an
16890 64 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20  d the new value 
168a0 6f 72 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  or a null value.
168b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
168c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 50 72  mmary>..      Pr
168d0 61 67 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20  agma = 19,....  
168e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
168f0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16900 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c  able column will
16910 20 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 61   be read.  The a
16920 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16930 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
16940 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c  ..      /// tabl
16950 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63  e name and the c
16960 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20  olumn name...   
16970 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16980 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 20 3d 20  >..      Read = 
16990 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  20,....      ///
169a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
169b0 20 20 2f 2f 2f 20 41 20 53 45 4c 45 43 54 20 73    /// A SELECT s
169c0 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
169d0 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
169e0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
169f0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
16a00 20 2f 2f 2f 20 61 72 65 20 62 6f 74 68 20 6e 75   /// are both nu
16a10 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  ll values...    
16a20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16a30 0d 0a 20 20 20 20 20 20 53 65 6c 65 63 74 20 3d  ..      Select =
16a40 20 32 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   21,....      //
16a50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16a60 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63     /// A transac
16a70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 73 74 61  tion will be sta
16a80 72 74 65 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c  rted, committed,
16a90 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e   or rolled back.
16aa0 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f    The..      ///
16ab0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16ac0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16ad0 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f  he name of the o
16ae0 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c  peration (BEGIN,
16af0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d  ..      /// COMM
16b00 49 54 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  IT, or ROLLBACK)
16b10 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
16b20 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16b30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16b40 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32  Transaction = 22
16b50 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16b60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16b70 2f 2f 2f 20 41 6e 20 55 50 44 41 54 45 20 73 74  /// An UPDATE st
16b80 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20  atement will be 
16b90 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61  executed.  The a
16ba0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16bb0 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
16bc0 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c  /// are the tabl
16bd0 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63  e name and the c
16be0 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20  olumn name...   
16bf0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16c00 3e 0d 0a 20 20 20 20 20 20 55 70 64 61 74 65 20  >..      Update 
16c10 3d 20 32 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 23,....      /
16c20 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16c30 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61      /// A databa
16c40 73 65 20 77 69 6c 6c 20 62 65 20 61 74 74 61 63  se will be attac
16c50 68 65 64 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65  hed to the conne
16c60 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69  ction.  The acti
16c70 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20  on-specific..   
16c80 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
16c90 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73   are the databas
16ca0 65 20 66 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20  e file name and 
16cb0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16cc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16cd0 72 79 3e 0d 0a 20 20 20 20 20 20 41 74 74 61 63  ry>..      Attac
16ce0 68 20 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20  h = 24,....     
16cf0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16d00 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61        /// A data
16d10 62 61 73 65 20 77 69 6c 6c 20 62 65 20 64 65 74  base will be det
16d20 61 63 68 65 64 20 66 72 6f 6d 20 74 68 65 20 63  ached from the c
16d30 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20  onnection.  The 
16d40 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d  action-specific.
16d50 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d  .      /// argum
16d60 65 6e 74 73 20 61 72 65 20 74 68 65 20 64 61 74  ents are the dat
16d70 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 61  abase name and a
16d80 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
16d90 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16da0 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 61 63 68  y>..      Detach
16db0 20 3d 20 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 25,....      
16dc0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16dd0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 63 68       /// The sch
16de0 65 6d 61 20 6f 66 20 61 20 74 61 62 6c 65 20 77  ema of a table w
16df0 69 6c 6c 20 62 65 20 61 6c 74 65 72 65 64 2e 20  ill be altered. 
16e00 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16e10 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16e20 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16e30 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  e database name 
16e40 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
16e50 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
16e60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16e70 20 41 6c 74 65 72 54 61 62 6c 65 20 3d 20 32 36   AlterTable = 26
16e80 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16e90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16ea0 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c  /// An index wil
16eb0 6c 20 62 65 20 64 65 6c 65 74 65 64 20 61 6e 64  l be deleted and
16ec0 20 74 68 65 6e 20 72 65 63 72 65 61 74 65 64 2e   then recreated.
16ed0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16ee0 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f  cific..      ///
16ef0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16f00 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e  he index name an
16f10 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
16f20 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16f30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 69  mary>..      Rei
16f40 6e 64 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20  ndex = 27,....  
16f50 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16f60 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16f70 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6e 61  able will be ana
16f80 6c 79 7a 65 64 20 74 6f 20 67 61 74 68 65 72 73  lyzed to gathers
16f90 20 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75   statistics abou
16fa0 74 20 69 74 2e 20 20 54 68 65 0d 0a 20 20 20 20  t it.  The..    
16fb0 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65    /// action-spe
16fc0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
16fd0 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
16fe0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16ff0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
17000 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17010 20 20 41 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d    Analyze = 28,.
17020 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
17030 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17040 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c  / A virtual tabl
17050 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  e will be create
17060 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17070 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17080 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
17090 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
170a0 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e  and the module n
170b0 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
170c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
170d0 20 20 43 72 65 61 74 65 56 74 61 62 6c 65 20 3d    CreateVtable =
170e0 20 32 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   29,....      //
170f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17100 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c     /// A virtual
17110 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64   table will be d
17120 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
17130 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17140 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20  uments are..    
17150 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20    /// the table 
17160 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f 64  name and the mod
17170 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ule name...     
17180 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17190 0a 20 20 20 20 20 20 44 72 6f 70 56 74 61 62 6c  .      DropVtabl
171a0 65 20 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20  e = 30,....     
171b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
171c0 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20        /// A SQL 
171d0 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
171e0 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 20 61 63   called.  The ac
171f0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
17200 67 75 6d 65 6e 74 73 20 61 72 65 20 61 0d 0a 20  guments are a.. 
17210 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61       /// null va
17220 6c 75 65 20 61 6e 64 20 74 68 65 20 66 75 6e 63  lue and the func
17230 74 69 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  tion name...    
17240 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17250 0d 0a 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e  ..      Function
17260 20 3d 20 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 31,....      
17270 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17280 20 20 20 20 20 2f 2f 2f 20 41 20 73 61 76 65 70       /// A savep
17290 6f 69 6e 74 20 77 69 6c 6c 20 62 65 20 63 72 65  oint will be cre
172a0 61 74 65 64 2c 20 72 65 6c 65 61 73 65 64 2c 20  ated, released, 
172b0 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  or rolled back. 
172c0 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
172d0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
172e0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
172f0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70  e name of the op
17300 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d  eration (BEGIN,.
17310 0a 20 20 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41  .      /// RELEA
17320 53 45 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  SE, or ROLLBACK)
17330 20 61 6e 64 20 74 68 65 20 73 61 76 65 70 6f 69   and the savepoi
17340 6e 74 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  nt name...      
17350 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17360 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e 74 20        Savepoint 
17370 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 32,....      /
17380 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17390 20 20 20 20 2f 2f 2f 20 41 20 72 65 63 75 72 73      /// A recurs
173a0 69 76 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62  ive query will b
173b0 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65  e executed.  The
173c0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
173d0 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
173e0 20 20 2f 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75    /// are two nu
173f0 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  ll values...    
17400 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17410 0d 0a 20 20 20 20 20 20 52 65 63 75 72 73 69 76  ..      Recursiv
17420 65 20 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20  e = 33..  }.... 
17430 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17440 20 20 2f 2f 2f 20 54 68 65 20 70 6f 73 73 69 62    /// The possib
17450 6c 65 20 72 65 74 75 72 6e 20 63 6f 64 65 73 20  le return codes 
17460 66 6f 72 20 74 68 65 20 70 72 6f 67 72 65 73 73  for the progress
17470 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20 2f 2f   callback...  //
17480 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17490 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
174a0 74 65 50 72 6f 67 72 65 73 73 52 65 74 75 72 6e  teProgressReturn
174b0 43 6f 64 65 20 2f 2a 20 69 6e 74 20 2a 2f 0d 0a  Code /* int */..
174c0 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
174d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
174e0 2f 2f 2f 20 54 68 65 20 6f 70 65 72 61 74 69 6f  /// The operatio
174f0 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 69 6e 75  n should continu
17500 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
17510 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17520 43 6f 6e 74 69 6e 75 65 20 3d 20 30 2c 0d 0a 0d  Continue = 0,...
17530 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17540 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17550 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73 68  The operation sh
17560 6f 75 6c 64 20 62 65 20 69 6e 74 65 72 72 75 70  ould be interrup
17570 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ted...      /// 
17580 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17590 20 20 49 6e 74 65 72 72 75 70 74 20 3d 20 31 0d    Interrupt = 1.
175a0 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
175b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
175c0 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66  he return code f
175d0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  or the current c
175e0 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74  all into the aut
175f0 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20  horizer...  /// 
17600 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
17610 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
17620 41 75 74 68 6f 72 69 7a 65 72 52 65 74 75 72 6e  AuthorizerReturn
17630 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Code..  {..     
17640 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17650 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63        /// The ac
17660 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c  tion will be all
17670 6f 77 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  owed...      ///
17680 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17690 20 20 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20     Ok = 0,....  
176a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
176b0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
176c0 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20   overall action 
176d0 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77  will be disallow
176e0 65 64 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 20  ed and an error 
176f0 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62 65 0d  message will be.
17700 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72  .      /// retur
17710 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 71 75 65  ned from the que
17720 72 79 20 70 72 65 70 61 72 61 74 69 6f 6e 20 6d  ry preparation m
17730 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
17740 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17750 20 20 20 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d      Deny = 1,...
17760 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17770 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17780 54 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74  The specific act
17790 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61  ion will be disa
177a0 6c 6c 6f 77 65 64 3b 20 68 6f 77 65 76 65 72 2c  llowed; however,
177b0 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74   the overall act
177c0 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ion..      /// w
177d0 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54  ill continue.  T
177e0 68 65 20 65 78 61 63 74 20 65 66 66 65 63 74 73  he exact effects
177f0 20 6f 66 20 74 68 69 73 20 72 65 74 75 72 6e 20   of this return 
17800 63 6f 64 65 20 76 61 72 79 20 64 65 70 65 6e 64  code vary depend
17810 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ing..      /// o
17820 6e 20 74 68 65 20 73 70 65 63 69 66 69 63 20 61  n the specific a
17830 63 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65  ction, please re
17840 66 65 72 20 74 6f 20 74 68 65 20 53 51 4c 69 74  fer to the SQLit
17850 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a  e core library..
17860 20 20 20 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65        /// docume
17870 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 74 68  ntation for futh
17880 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20  er details...   
17890 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
178a0 3e 0d 0a 20 20 20 20 20 20 49 67 6e 6f 72 65 20  >..      Ignore 
178b0 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 2..  }....  //
178c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
178d0 2f 2f 20 43 6c 61 73 73 20 75 73 65 64 20 69 6e  // Class used in
178e0 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65  ternally to dete
178f0 72 6d 69 6e 65 20 74 68 65 20 64 61 74 61 74 79  rmine the dataty
17900 70 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69  pe of a column i
17910 6e 20 61 20 72 65 73 75 6c 74 73 65 74 0d 0a 20  n a resultset.. 
17920 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17930 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  .  internal seal
17940 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 54  ed class SQLiteT
17950 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ype..  {..    //
17960 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17970 20 2f 2f 2f 20 54 68 65 20 44 62 54 79 70 65 20   /// The DbType 
17980 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f  of the column, o
17990 72 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 20  r DbType.Object 
179a0 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
179b0 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
179c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
179d0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54      internal DbT
179e0 79 70 65 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f  ype Type;..    /
179f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17a00 20 20 2f 2f 2f 20 54 68 65 20 61 66 66 69 6e 69    /// The affini
17a10 74 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20  ty of a column, 
17a20 75 73 65 64 20 66 6f 72 20 65 78 70 72 65 73 73  used for express
17a30 69 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54 79 70  ions or when Typ
17a40 65 20 69 73 20 44 62 54 79 70 65 2e 4f 62 6a 65  e is DbType.Obje
17a50 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ct..    /// </su
17a60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
17a70 72 6e 61 6c 20 54 79 70 65 41 66 66 69 6e 69 74  rnal TypeAffinit
17a80 79 20 41 66 66 69 6e 69 74 79 3b 0d 0a 0d 0a 20  y Affinity;.... 
17a90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17ae0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
17af0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
17b00 73 74 72 75 63 74 73 20 61 20 64 65 66 61 75 6c  structs a defaul
17b10 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  t instance of th
17b20 69 73 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f  is type...    //
17b30 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17b40 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54    public SQLiteT
17b50 79 70 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ype()..    {..  
17b60 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
17b70 67 2e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  g...    }....   
17b80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17bd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17be0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74  >..    /// Const
17bf0 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
17c00 65 20 6f 66 20 74 68 69 73 20 74 79 70 65 20 77  e of this type w
17c10 69 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65  ith the specifie
17c20 64 20 66 69 65 6c 64 20 76 61 6c 75 65 73 2e 0d  d field values..
17c30 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
17c40 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
17c50 72 61 6d 20 6e 61 6d 65 3d 22 61 66 66 69 6e 69  ram name="affini
17c60 74 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ty">..    /// Th
17c70 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20  e type affinity 
17c80 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 6e  to use for the n
17c90 65 77 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  ew instance...  
17ca0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
17cb0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
17cc0 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20  ame="type">..   
17cd0 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73   /// The databas
17ce0 65 20 74 79 70 65 20 74 6f 20 75 73 65 20 66 6f  e type to use fo
17cf0 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e  r the new instan
17d00 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ce...    /// </p
17d10 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69  aram>..    publi
17d20 63 20 53 51 4c 69 74 65 54 79 70 65 28 0d 0a 20  c SQLiteType(.. 
17d30 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
17d40 79 20 61 66 66 69 6e 69 74 79 2c 0d 0a 20 20 20  y affinity,..   
17d50 20 20 20 44 62 54 79 70 65 20 74 79 70 65 0d 0a     DbType type..
17d60 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 3a        )..      :
17d70 20 74 68 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a   this()..    {..
17d80 20 20 20 20 20 20 74 68 69 73 2e 41 66 66 69 6e        this.Affin
17d90 69 74 79 20 3d 20 61 66 66 69 6e 69 74 79 3b 0d  ity = affinity;.
17da0 0a 20 20 20 20 20 20 74 68 69 73 2e 54 79 70 65  .      this.Type
17db0 20 3d 20 74 79 70 65 3b 0d 0a 20 20 20 20 7d 0d   = type;..    }.
17dc0 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  .  }....  //////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74  ///////....  int
17e20 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
17e30 73 73 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ss SQLiteDbTypeM
17e40 61 70 0d 0a 20 20 20 20 20 20 3a 20 44 69 63 74  ap..      : Dict
17e50 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53  ionary<string, S
17e60 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
17e70 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ng>..  {..      
17e80 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
17e90 44 61 74 61 0d 0a 20 20 20 20 20 20 70 72 69 76  Data..      priv
17ea0 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 44  ate Dictionary<D
17eb0 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54  bType, SQLiteDbT
17ec0 79 70 65 4d 61 70 70 69 6e 67 3e 20 72 65 76 65  ypeMapping> reve
17ed0 72 73 65 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64  rse;..      #end
17ee0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
17ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17f40 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
17f50 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
17f60 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
17f70 69 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a  iteDbTypeMap()..
17f80 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
17f90 28 6e 65 77 20 54 79 70 65 4e 61 6d 65 53 74 72  (new TypeNameStr
17fa0 69 6e 67 43 6f 6d 70 61 72 65 72 28 29 29 0d 0a  ingComparer())..
17fb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17fc0 20 20 20 72 65 76 65 72 73 65 20 3d 20 6e 65 77     reverse = new
17fd0 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79   Dictionary<DbTy
17fe0 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65  pe, SQLiteDbType
17ff0 4d 61 70 70 69 6e 67 3e 28 29 3b 0d 0a 20 20 20  Mapping>();..   
18000 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18030 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18060 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 44 62   public SQLiteDb
18070 54 79 70 65 4d 61 70 28 0d 0a 20 20 20 20 20 20  TypeMap(..      
18080 20 20 20 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c      IEnumerable<
18090 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
180a0 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d  ing> collection.
180b0 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20  .          )..  
180c0 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29          : this()
180d0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
180e0 20 20 20 20 20 41 64 64 28 63 6f 6c 6c 65 63 74       Add(collect
180f0 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ion);..      }..
18100 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
18110 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18160 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
18170 67 69 6f 6e 20 53 79 73 74 65 6d 2e 43 6f 6c 6c  gion System.Coll
18180 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e  ections.Generic.
18190 44 69 63 74 69 6f 6e 61 72 79 20 22 4f 76 65 72  Dictionary "Over
181a0 72 69 64 65 73 22 0d 0a 20 20 20 20 20 20 70 75  rides"..      pu
181b0 62 6c 69 63 20 6e 65 77 20 69 6e 74 20 43 6c 65  blic new int Cle
181c0 61 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  ar()..      {.. 
181d0 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
181e0 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
181f0 20 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73        if (revers
18200 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
18210 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18220 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d         result +=
18230 20 72 65 76 65 72 73 65 2e 43 6f 75 6e 74 3b 0d   reverse.Count;.
18240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
18250 65 76 65 72 73 65 2e 43 6c 65 61 72 28 29 3b 0d  everse.Clear();.
18260 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  .          }....
18270 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
18280 20 2b 3d 20 62 61 73 65 2e 43 6f 75 6e 74 3b 0d   += base.Count;.
18290 0a 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e  .          base.
182a0 43 6c 65 61 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  Clear();....    
182b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
182c0 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ult;..      }.. 
182d0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
182e0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
182f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
18340 69 6f 6e 20 53 51 4c 69 74 65 44 62 54 79 70 65  ion SQLiteDbType
18350 4d 61 70 70 69 6e 67 20 48 65 6c 70 65 72 20 4d  Mapping Helper M
18360 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75  ethods..      pu
18370 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28 0d 0a  blic void Add(..
18380 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65            IEnume
18390 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54 79  rable<SQLiteDbTy
183a0 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65  peMapping> colle
183b0 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20  ction..         
183c0 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20   )..      {..   
183d0 20 20 20 20 20 20 20 69 66 20 28 63 6f 6c 6c 65         if (colle
183e0 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ction == null)..
183f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
18400 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
18410 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 63  NullException("c
18420 6f 6c 6c 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a  ollection");....
18430 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63            foreac
18440 68 20 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d  h (SQLiteDbTypeM
18450 61 70 70 69 6e 67 20 69 74 65 6d 20 69 6e 20 63  apping item in c
18460 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20  ollection)..    
18470 20 20 20 20 20 20 20 20 20 20 41 64 64 28 69 74            Add(it
18480 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  em);..      }...
18490 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
184a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
184f0 20 76 6f 69 64 20 41 64 64 28 53 51 4c 69 74 65   void Add(SQLite
18500 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74  DbTypeMapping it
18510 65 6d 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  em)..      {..  
18520 20 20 20 20 20 20 20 20 69 66 20 28 69 74 65 6d          if (item
18530 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
18540 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
18550 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
18560 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d 22 29  xception("item")
18570 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  ;....          i
18580 66 20 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65  f (item.typeName
18590 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
185a0 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
185b0 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70  ew ArgumentExcep
185c0 74 69 6f 6e 28 22 69 74 65 6d 20 74 79 70 65 20  tion("item type 
185d0 6e 61 6d 65 20 63 61 6e 6e 6f 74 20 62 65 20 6e  name cannot be n
185e0 75 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ull");....      
185f0 20 20 20 20 62 61 73 65 2e 41 64 64 28 69 74 65      base.Add(ite
18600 6d 2e 74 79 70 65 4e 61 6d 65 2c 20 69 74 65 6d  m.typeName, item
18610 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
18620 69 66 20 28 69 74 65 6d 2e 70 72 69 6d 61 72 79  if (item.primary
18630 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
18640 20 72 65 76 65 72 73 65 2e 41 64 64 28 69 74 65   reverse.Add(ite
18650 6d 2e 64 61 74 61 54 79 70 65 2c 20 69 74 65 6d  m.dataType, item
18660 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
18670 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18680 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186d0 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
186e0 6e 20 44 62 54 79 70 65 20 48 65 6c 70 65 72 20  n DbType Helper 
186f0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 70  Methods..      p
18700 75 62 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e 74 61  ublic bool Conta
18710 69 6e 73 4b 65 79 28 44 62 54 79 70 65 20 6b 65  insKey(DbType ke
18720 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  y)..      {..   
18730 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65 72         if (rever
18740 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  se == null)..   
18750 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
18760 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
18770 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 76        return rev
18780 65 72 73 65 2e 43 6f 6e 74 61 69 6e 73 4b 65 79  erse.ContainsKey
18790 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  (key);..      }.
187a0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
18800 69 63 20 62 6f 6f 6c 20 54 72 79 47 65 74 56 61  ic bool TryGetVa
18810 6c 75 65 28 44 62 54 79 70 65 20 6b 65 79 2c 20  lue(DbType key, 
18820 6f 75 74 20 53 51 4c 69 74 65 44 62 54 79 70 65  out SQLiteDbType
18830 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 29 0d 0a  Mapping value)..
18840 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18850 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20 3d     if (reverse =
18860 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
18870 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18880 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c      value = null
18890 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
188a0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
188b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
188c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
188d0 72 65 76 65 72 73 65 2e 54 72 79 47 65 74 56 61  reverse.TryGetVa
188e0 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 76 61 6c  lue(key, out val
188f0 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ue);..      }...
18900 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
18910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18950 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  ....      public
18960 20 62 6f 6f 6c 20 52 65 6d 6f 76 65 28 44 62 54   bool Remove(DbT
18970 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20 20  ype key)..      
18980 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  {..          if 
18990 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c  (reverse == null
189a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
189b0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
189c0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
189d0 72 6e 20 72 65 76 65 72 73 65 2e 52 65 6d 6f 76  rn reverse.Remov
189e0 65 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d  e(key);..      }
189f0 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
18a00 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  on..  }....  ///
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18a60 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
18a70 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79  class SQLiteDbTy
18a80 70 65 4d 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a  peMapping..  {..
18a90 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
18aa0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
18ab0 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
18ac0 67 20 6e 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a  g newTypeName,..
18ad0 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20 6e          DbType n
18ae0 65 77 44 61 74 61 54 79 70 65 2c 0d 0a 20 20 20  ewDataType,..   
18af0 20 20 20 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69       bool newPri
18b00 6d 61 72 79 0d 0a 20 20 20 20 20 20 20 20 29 0d  mary..        ).
18b10 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 79  .    {..      ty
18b20 70 65 4e 61 6d 65 20 3d 20 6e 65 77 54 79 70 65  peName = newType
18b30 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64 61 74  Name;..      dat
18b40 61 54 79 70 65 20 3d 20 6e 65 77 44 61 74 61 54  aType = newDataT
18b50 79 70 65 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d  ype;..      prim
18b60 61 72 79 20 3d 20 6e 65 77 50 72 69 6d 61 72 79  ary = newPrimary
18b70 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
18b80 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20  internal string 
18b90 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69  typeName;..    i
18ba0 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65 20 64  nternal DbType d
18bb0 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e  ataType;..    in
18bc0 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d  ternal bool prim
18bd0 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  ary;..  }....  i
18be0 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
18bf0 6c 61 73 73 20 54 79 70 65 4e 61 6d 65 53 74 72  lass TypeNameStr
18c00 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20 49 45  ingComparer : IE
18c10 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c  qualityComparer<
18c20 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20  string>..  {..  
18c30 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75 61 6c    #region IEqual
18c40 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72 69  ityComparer<stri
18c50 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ng> Members..   
18c60 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75   public bool Equ
18c70 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74 72 69  als(..      stri
18c80 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20  ng left,..      
18c90 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a 20 20  string right..  
18ca0 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
18cb0 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
18cc0 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c 20 72  g.Equals(left, r
18cd0 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70  ight, StringComp
18ce0 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
18cf0 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20  noreCase);..    
18d00 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c  ////....    publ
18d60 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43 6f  ic int GetHashCo
18d70 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  de(..      strin
18d80 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 29  g value..      )
18d90 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ..    {..      /
18da0 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
18db0 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67  : The only thing
18dc0 20 74 68 61 74 20 77 65 20 6d 75 73 74 20 67 75   that we must gu
18dd0 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20 61 63  arantee here, ac
18de0 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  cording..      /
18df0 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65 20 4d  /       to the M
18e00 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
18e10 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74 79 43  n for IEqualityC
18e20 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a 20 20 20  omparer, is..   
18e30 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 61 74     //       that
18e40 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e 20 73   for two given s
18e50 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75 61 6c  trings, if Equal
18e60 73 20 72 65 74 75 72 6e 20 74 72 75 65 20 74 68  s return true th
18e70 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  en..      //    
18e80 20 20 20 74 68 65 20 74 77 6f 20 73 74 72 69 6e     the two strin
18e90 67 73 20 6d 75 73 74 20 68 61 73 68 20 74 6f 20  gs must hash to 
18ea0 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d  the same value..
18eb0 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
18ec0 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
18ed0 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ll)..#if !PLATFO
18ee0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
18ef0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ORK..        ret
18f00 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65  urn value.ToLowe
18f10 72 49 6e 76 61 72 69 61 6e 74 28 29 2e 47 65 74  rInvariant().Get
18f20 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6c  HashCode();..#el
18f30 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  se..        retu
18f40 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72  rn value.ToLower
18f50 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  ().GetHashCode()
18f60 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
18f70 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74   else..        t
18f80 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
18f90 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
18fa0 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d  value");..    }.
18fb0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
18fc0 0a 20 20 7d 0d 0a 7d 0d 0a                       .  }..}..