System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 24875106a3f09f010b42f999a634beedd301aa1a:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
0380: 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63 6b   DbType Fallback
0390: 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  DefaultDbType = 
03a0: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d 0a  DbType.Object;..
03b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
03c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
03d0: 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c   fallback defaul
03e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
03f0: 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63 61  name when one ca
0400: 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64  nnot be obtained
0410: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 61   from..    /// a
0420: 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
0430: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ction instance..
0440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0450: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0470: 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61 63 6b   string Fallback
0480: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  DefaultTypeName 
0490: 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
04a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
04b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
04c0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
04d0: 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e  Unix epoch (e.g.
04e0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30   January 1, 1970
04f0: 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e   at midnight, in
0500: 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   UTC)...    /// 
0510: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0520: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
0530: 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69   readonly DateTi
0540: 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a  me UnixEpoch =..
0550: 20 20 20 20 20 20 20 20 6e 65 77 20 44 61 74 65          new Date
0560: 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c  Time(1970, 1, 1,
0570: 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69   0, 0, 0, DateTi
0580: 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a  meKind.Utc);....
0590: 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e      #pragma warn
05a0: 69 6e 67 20 64 69 73 61 62 6c 65 20 34 31 34 0d  ing disable 414.
05b0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
05d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c 45  value of the OLE
05e0: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63   Automation epoc
05f0: 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  h represented as
0600: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 20 20   a Julian day.  
0610: 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 66 69  This..    /// fi
0620: 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  eld cannot be re
0630: 6d 6f 76 65 64 20 61 73 20 74 68 65 20 74 65 73  moved as the tes
0640: 74 20 73 75 69 74 65 20 72 65 6c 69 65 73 20 75  t suite relies u
0650: 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  pon it...    ///
0660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0670: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0680: 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
0690: 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f  OleAutomationEpo
06a0: 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20  chAsJulianDay = 
06b0: 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20 20 20 20  2415018.5;..    
06c0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20  #pragma warning 
06d0: 72 65 73 74 6f 72 65 20 34 31 34 0d 0a 0d 0a 20  restore 414.... 
06e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
06f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
0700: 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20  rmat string for 
0710: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
0720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 49  when using the I
0730: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
0740: 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72  or CurrentCultur
0750: 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20 20  e formats...    
0760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0770: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0780: 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f 72  t string FullFor
0790: 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  mat = "yyyy-MM-d
07a0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66 66  dTHH:mm:ss.fffff
07b0: 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ffK";....    ///
07c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
07e0: 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61 6e 20 44  minimum Julian D
07f0: 61 79 20 76 61 6c 75 65 20 73 75 70 70 6f 72 74  ay value support
0800: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
0810: 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28 31 34 38  ry..    /// (148
0820: 37 33 31 31 36 33 32 30 30 30 30 30 29 2e 0d 0a  731163200000)...
0830: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0840: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
0850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
0860: 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a 64 20 3d  long MinimumJd =
0870: 20 63 6f 6d 70 75 74 65 4a 44 28 44 61 74 65 54   computeJD(DateT
0880: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29 3b 0d 0a  ime.MinValue);..
0890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
08b0: 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  s is the maximum
08c0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
08d0: 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  e supported by t
08e0: 68 69 73 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  his library..   
08f0: 20 2f 2f 2f 20 28 34 36 34 32 36 39 30 36 30 37   /// (4642690607
0900: 39 39 30 30 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f  99000)...    ///
0910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0920: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0930: 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67 20 4d 61  readonly long Ma
0940: 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d 70 75 74  ximumJd = comput
0950: 65 4a 44 28 44 61 74 65 54 69 6d 65 2e 4d 61 78  eJD(DateTime.Max
0960: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  Value);....    /
0970: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0980: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
0990: 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54  f ISO-8601 DateT
09a0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74  ime formats that
09b0: 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73   we support pars
09c0: 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
09e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
09f0: 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46  ing[] _datetimeF
0a00: 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72  ormats = new str
0a10: 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22  ing[] {..      "
0a20: 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  THHmmssK",..    
0a30: 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20    "THHmmK",..   
0a40: 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46     "HH:mm:ss.FFF
0a50: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
0a60: 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20  HH:mm:ssK",..   
0a70: 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20     "HH:mmK",..  
0a80: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a90: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0aa0: 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43  K", /* NOTE: UTC
0ab0: 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f   default (5). */
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
0ad0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d  -dd HH:mm:ssK",.
0ae0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0af0: 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20  dd HH:mmK",..   
0b00: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
0b10: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0b20: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0b30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-ddTHH:mmK",..
0b40: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0b50: 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20  dTHH:mm:ssK",.. 
0b60: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
0b70: 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22  mmssK",..      "
0b80: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d  yyyyMMddHHmmK",.
0b90: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ba0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22  THHmmssFFFFFFFK"
0bb0: 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73  ,..      "THHmms
0bc0: 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d  s",..      "THHm
0bd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  m",..      "HH:m
0be0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a  m:ss.FFFFFFF",..
0bf0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22        "HH:mm:ss"
0c00: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22  ,..      "HH:mm"
0c10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0c20: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0c30: 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a  FFFFF", /* NOTE:
0c40: 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74   Non-UTC default
0c50: 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20   (19). */..     
0c60: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
0c70: 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22  mm:ss",..      "
0c80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0c90: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ca0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
0cb0: 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20  FFFFFF",..      
0cc0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0cd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0ce0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22  -MM-ddTHH:mm:ss"
0cf0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d00: 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20  ddHHmmss",..    
0d10: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22    "yyyyMMddHHmm"
0d20: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d30: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
0d40: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0d50: 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22  MM-dd",..      "
0d60: 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20  yyyyMMdd",..    
0d70: 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20    "yy-MM-dd"..  
0d80: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
0d90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0da0: 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  // The internal 
0db0: 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66  default format f
0dc0: 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
0dd0: 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76  values when conv
0de0: 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20  erting..    /// 
0df0: 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  to a string...  
0e00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
0e20: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0e30: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
0e40: 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74  rmatUtc = _datet
0e50: 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a  imeFormats[5];..
0e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e80: 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c   internal defaul
0e90: 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  t format for loc
0ea0: 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
0eb0: 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  es when converti
0ec0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61  ng..    /// to a
0ed0: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
0ee0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0ef0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f00: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0f10: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f20: 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d  Local = _datetim
0f30: 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d  eFormats[19];...
0f40: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55  y>..    /// An U
0f60: 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e  TF-8 Encoding in
0f70: 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61  stance, so we ca
0f80: 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67  n convert string
0f90: 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54  s to and from UT
0fa0: 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  F-8..    /// </s
0fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
0fc0: 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f  vate static Enco
0fd0: 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77  ding _utf8 = new
0fe0: 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b   UTF8Encoding();
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1000: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1010: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
1020: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  e format for thi
1030: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1050: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
1060: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
1070: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b  _datetimeFormat;
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1090: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
10a0: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
10b0: 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69  eKind for this i
10c0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54    internal DateT
10f0: 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d  imeKind _datetim
1100: 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20  eKind;..    /// 
1110: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1120: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44  // The default D
1130: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1140: 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69  tring for this i
1150: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
1160: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
1180: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
1190: 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d  tString = null;.
11a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74  y>..    /// Init
11c0: 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76  ializes the conv
11d0: 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20  ersion class..  
11e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1200: 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20   name="fmt">The 
1210: 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d  default date/tim
1220: 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20  e format to use 
1230: 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
1240: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1260: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
1270: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
1280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1290: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74  <param name="fmt
12a0: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
12b0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
12c0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
12d0: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
12e0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d   SQLiteConvert(.
12f0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44  .        SQLiteD
1300: 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d  ateFormats fmt,.
1310: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
1320: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
1330: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53       string fmtS
1340: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
1350: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
1360: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d  datetimeFormat =
1370: 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61   fmt;..      _da
1380: 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e  tetimeKind = kin
1390: 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74  d;..      _datet
13a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
13b0: 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20  = fmtString;..  
13c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69    }....    #regi
13d0: 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73  on UTF-8 Convers
13e0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
13f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1400: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1410: 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61  ts a string to a
1420: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62   UTF-8 encoded b
1430: 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20  yte array sized 
1440: 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c  to include a nul
1450: 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68  l-terminating ch
1460: 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f  aracter...    //
1470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1480: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1490: 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54  e="sourceText">T
14a0: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  he string to con
14b0: 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70  vert to UTF-8</p
14c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14d0: 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61  returns>A byte a
14e0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  rray containing 
14f0: 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74  the converted st
1500: 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74  ring plus an ext
1510: 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67  ra 0 terminating
1520: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1530: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1550: 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
1560: 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67  [] ToUTF8(string
1570: 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20   sourceText)..  
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 73    {..      if (s
1590: 6f 75 72 63 65 54 65 78 74 20 3d 3d 20 6e 75 6c  ourceText == nul
15a0: 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d  l) return null;.
15b0: 0a 20 20 20 20 20 20 42 79 74 65 5b 5d 20 62 79  .      Byte[] by
15c0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 20 20  teArray;..      
15d0: 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38  int nlen = _utf8
15e0: 2e 47 65 74 42 79 74 65 43 6f 75 6e 74 28 73 6f  .GetByteCount(so
15f0: 75 72 63 65 54 65 78 74 29 20 2b 20 31 3b 0d 0a  urceText) + 1;..
1600: 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72 61  ..      byteArra
1610: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 6c 65  y = new byte[nle
1620: 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c 65 6e 20  n];..      nlen 
1630: 3d 20 5f 75 74 66 38 2e 47 65 74 42 79 74 65 73  = _utf8.GetBytes
1640: 28 73 6f 75 72 63 65 54 65 78 74 2c 20 30 2c 20  (sourceText, 0, 
1650: 73 6f 75 72 63 65 54 65 78 74 2e 4c 65 6e 67 74  sourceText.Lengt
1660: 68 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 29  h, byteArray, 0)
1670: 3b 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72  ;..      byteArr
1680: 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b 0d 0a 0d  ay[nlen] = 0;...
1690: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79  .      return by
16a0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 7d 0d  teArray;..    }.
16b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
16c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
16d0: 6e 76 65 72 74 20 61 20 44 61 74 65 54 69 6d 65  nvert a DateTime
16e0: 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f   to a UTF-8 enco
16f0: 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  ded, zero-termin
1700: 61 74 65 64 20 62 79 74 65 20 61 72 72 61 79 2e  ated byte array.
1710: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1720: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
1730: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1740: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
1750: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
1760: 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20  function, which 
1770: 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74  first calls ToSt
1780: 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 44 61  ring() on the Da
1790: 74 65 54 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e  teTime, and then
17a0: 20 63 61 6c 6c 73 20 54 6f 55 54 46 38 28 29 20   calls ToUTF8() 
17b0: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f  with the..    //
17c0: 2f 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 2e  / string result.
17d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61  ..    /// </rema
17e0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  rks>..    /// <p
17f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
1800: 69 6d 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61  imeValue">The Da
1810: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
1820: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
1830: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
1840: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73   UTF-8 encoded s
1850: 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  tring, including
1860: 20 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67   a 0 terminating
1870: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1880: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
18a0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 54 6f 55 54  blic byte[] ToUT
18b0: 46 38 28 44 61 74 65 54 69 6d 65 20 64 61 74 65  F8(DateTime date
18c0: 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  TimeValue)..    
18d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
18e0: 54 6f 55 54 46 38 28 54 6f 53 74 72 69 6e 67 28  ToUTF8(ToString(
18f0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 29 3b  dateTimeValue));
1900: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1920: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1930: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49   UTF-8 encoded I
1940: 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73 70 65  ntPtr of the spe
1950: 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e  cified length in
1960: 74 6f 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67  to a .NET string
1970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1980: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1990: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
19a0: 65 73 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69  estring">The poi
19b0: 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
19c0: 72 79 20 77 68 65 72 65 20 74 68 65 20 55 54 46  ry where the UTF
19d0: 2d 38 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63  -8 string is enc
19e0: 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  oded</param>..  
19f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a00: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  e="nativestringl
1a10: 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  en">The number o
1a20: 66 20 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64  f bytes to decod
1a30: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1a40: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74  // <returns>A st
1a50: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
1a60: 74 68 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63  the translated c
1a70: 68 61 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74  haracter(s)</ret
1a80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
1a90: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
1aa0: 20 54 6f 53 74 72 69 6e 67 28 49 6e 74 50 74 72   ToString(IntPtr
1ab0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20 69   nativestring, i
1ac0: 6e 74 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  nt nativestringl
1ad0: 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  en)..    {..    
1ae0: 20 20 72 65 74 75 72 6e 20 55 54 46 38 54 6f 53    return UTF8ToS
1af0: 74 72 69 6e 67 28 6e 61 74 69 76 65 73 74 72 69  tring(nativestri
1b00: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1b10: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  len);..    }....
1b20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
1b40: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f  rts a UTF-8 enco
1b50: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68  ded IntPtr of th
1b60: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1b70: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73  th into a .NET s
1b80: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tring..    /// <
1b90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ba0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1bb0: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68  nativestring">Th
1bc0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1bd0: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68   memory where th
1be0: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69  e UTF-8 string i
1bf0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d  s encoded</param
1c00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1c10: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74  m name="nativest
1c20: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d  ringlen">The num
1c30: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1c40: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a  decode</param>..
1c50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c60: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  >A string contai
1c70: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61  ning the transla
1c80: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29  ted character(s)
1c90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1ca0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1cb0: 72 69 6e 67 20 55 54 46 38 54 6f 53 74 72 69 6e  ring UTF8ToStrin
1cc0: 67 28 49 6e 74 50 74 72 20 6e 61 74 69 76 65 73  g(IntPtr natives
1cd0: 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76  tring, int nativ
1ce0: 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20  estringlen)..   
1cf0: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61   {..      if (na
1d00: 74 69 76 65 73 74 72 69 6e 67 20 3d 3d 20 49 6e  tivestring == In
1d10: 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20 6e 61 74  tPtr.Zero || nat
1d20: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20  ivestringlen == 
1d30: 30 29 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67  0) return String
1d40: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 69  .Empty;..      i
1d50: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  f (nativestringl
1d60: 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 7b  en < 0)..      {
1d70: 0d 0a 20 20 20 20 20 20 20 20 6e 61 74 69 76 65  ..        native
1d80: 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30 3b 0d 0a  stringlen = 0;..
1d90: 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
1da0: 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
1db0: 65 28 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20  e(nativestring, 
1dc0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29  nativestringlen)
1dd0: 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
1de0: 20 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65    nativestringle
1df0: 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n++;....        
1e00: 69 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67  if (nativestring
1e10: 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  len == 0) return
1e20: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
1e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e40: 20 62 79 74 65 5b 5d 20 62 79 74 65 41 72 72 61   byte[] byteArra
1e50: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 61 74  y = new byte[nat
1e60: 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d 3b 0d 0a  ivestringlen];..
1e70: 0d 0a 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e  ..      Marshal.
1e80: 43 6f 70 79 28 6e 61 74 69 76 65 73 74 72 69 6e  Copy(nativestrin
1e90: 67 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 2c  g, byteArray, 0,
1ea0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1eb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
1ec0: 72 6e 20 5f 75 74 66 38 2e 47 65 74 53 74 72 69  rn _utf8.GetStri
1ed0: 6e 67 28 62 79 74 65 41 72 72 61 79 2c 20 30 2c  ng(byteArray, 0,
1ee0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1ef0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
1f00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f10: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f60: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 61 74 65      #region Date
1f70: 54 69 6d 65 20 43 6f 6e 76 65 72 73 69 6f 6e 20  Time Conversion 
1f80: 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 23  Functions..    #
1f90: 72 65 67 69 6f 6e 20 4e 65 77 20 4a 75 6c 69 61  region New Julia
1fa0: 6e 20 44 61 79 20 43 6f 6e 76 65 72 73 69 6f 6e  n Day Conversion
1fb0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 2f 2f   Methods..    //
1fc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1fd0: 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20 74   /// Checks if t
1fe0: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
1ff0: 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
2000: 3e 20 69 73 20 77 69 74 68 69 6e 20 74 68 65 0d  > is within the.
2010: 0a 20 20 20 20 2f 2f 2f 20 73 75 70 70 6f 72 74  .    /// support
2020: 65 64 20 72 61 6e 67 65 20 66 6f 72 20 61 20 4a  ed range for a J
2030: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e  ulian Day value.
2040: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2050: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2060: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d  aram name="jd">.
2070: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c  .    /// The Jul
2080: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2090: 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f   check...    ///
20a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
20b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20c0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
20d0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
20e0: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
20f0: 20 69 73 20 69 6e 20 74 68 65 20 73 75 70 70 6f   is in the suppo
2100: 72 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72 61  rted..    /// ra
2110: 6e 67 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  nge; otherwise, 
2120: 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  zero...    /// <
2130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2140: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
2150: 6f 6c 20 69 73 56 61 6c 69 64 4a 64 28 0d 0a 20  ol isValidJd(.. 
2160: 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a         long jd..
2170: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
2180: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2190: 20 28 28 6a 64 20 3e 3d 20 4d 69 6e 69 6d 75 6d   ((jd >= Minimum
21a0: 4a 64 29 20 26 26 20 28 6a 64 20 3c 3d 20 4d 61  Jd) && (jd <= Ma
21b0: 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a 20 20 20 20  ximumJd));..    
21c0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
2220: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2230: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75  // Converts a Ju
2240: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66  lian Day value f
2250: 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d  rom a <see cref=
2260: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 61  "Double" /> to a
2270: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  n..    /// <see 
2280: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 2e  cref="Int64" />.
2290: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
22a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
22b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61  aram name="julia
22c0: 6e 44 61 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nDay">..    /// 
22d0: 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c  The Julian Day <
22e0: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
22f0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2300: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2310: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2320: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2330: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2340: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2350: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
2360: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
2370: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2390: 63 20 6c 6f 6e 67 20 44 6f 75 62 6c 65 54 6f 4a  c long DoubleToJ
23a0: 64 28 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62  d(..        doub
23b0: 6c 65 20 6a 75 6c 69 61 6e 44 61 79 0d 0a 20 20  le julianDay..  
23c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
23d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
23e0: 6c 6f 6e 67 29 28 6a 75 6c 69 61 6e 44 61 79 20  long)(julianDay 
23f0: 2a 20 38 36 34 30 30 30 30 30 2e 30 29 3b 0d 0a  * 86400000.0);..
2400: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2460: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2470: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2480: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
2490: 75 65 20 66 72 6f 6d 20 61 6e 20 3c 73 65 65 20  ue from an <see 
24a0: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
24b0: 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  to a..    /// <s
24c0: 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
24d0: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
24e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
24f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2500: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  d">..    /// The
2510: 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73 65 65   Julian Day <see
2520: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
2530: 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
2540: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
2550: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
2560: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
2570: 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 4a   The resulting J
2580: 75 6c 69 61 6e 20 44 61 79 20 3c 73 65 65 20 63  ulian Day <see c
2590: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
25a0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
25b0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
25c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 64  private static d
25d0: 6f 75 62 6c 65 20 4a 64 54 6f 44 6f 75 62 6c 65  ouble JdToDouble
25e0: 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  (..        long 
25f0: 6a 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  jd..        ).. 
2600: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
2610: 74 75 72 6e 20 28 64 6f 75 62 6c 65 29 28 6a 64  turn (double)(jd
2620: 20 2f 20 38 36 34 30 30 30 30 30 2e 30 29 3b 0d   / 86400000.0);.
2630: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2690: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26a0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
26b0: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
26c0: 6c 75 65 20 74 6f 20 61 20 3c 73 65 65 20 63 72  lue to a <see cr
26d0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
26e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
26f0: 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73  method was trans
2700: 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22  lated from the "
2710: 63 6f 6d 70 75 74 65 59 4d 44 22 20 66 75 6e 63  computeYMD" func
2720: 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20  tion in the..   
2730: 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22 20 66 69   /// "date.c" fi
2740: 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20  le belonging to 
2750: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2760: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
2770: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2780: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2790: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
27a0: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
27b0: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
27c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
27d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
27e0: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c  ram name="badVal
27f0: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
2800: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  e <see cref="Dat
2810: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
2820: 74 6f 20 72 65 74 75 72 6e 20 69 6e 20 74 68 65  to return in the
2830: 20 65 76 65 6e 74 20 74 68 61 74 20 74 68 65 0d   event that the.
2840: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
2850: 44 61 79 20 69 73 20 6f 75 74 20 6f 66 20 74 68  Day is out of th
2860: 65 20 73 75 70 70 6f 72 74 65 64 20 72 61 6e 67  e supported rang
2870: 65 2e 20 20 49 66 20 74 68 69 73 20 76 61 6c 75  e.  If this valu
2880: 65 20 69 73 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20  e is null,..    
2890: 2f 2f 2f 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  /// an exception
28a0: 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 20   will be thrown 
28b0: 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f  instead...    //
28c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28d0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
28e0: 20 20 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72     /// A <see cr
28f0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
2900: 20 76 61 6c 75 65 20 74 68 61 74 20 63 6f 6e 74   value that cont
2910: 61 69 6e 73 20 74 68 65 20 79 65 61 72 2c 20 6d  ains the year, m
2920: 6f 6e 74 68 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  onth, and..    /
2930: 2f 2f 20 64 61 79 20 76 61 6c 75 65 73 20 74 68  // day values th
2940: 61 74 20 61 72 65 20 63 6c 6f 73 65 73 74 20 74  at are closest t
2950: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
2960: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
2970: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
2980: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
2990: 74 65 20 73 74 61 74 69 63 20 44 61 74 65 54 69  te static DateTi
29a0: 6d 65 20 63 6f 6d 70 75 74 65 59 4d 44 28 0d 0a  me computeYMD(..
29b0: 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 2c          long jd,
29c0: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
29d0: 6d 65 3f 20 62 61 64 56 61 6c 75 65 0d 0a 20 20  me? badValue..  
29e0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
29f0: 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 56          if (!isV
2a00: 61 6c 69 64 4a 64 28 6a 64 29 29 0d 0a 20 20 20  alidJd(jd))..   
2a10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a20: 20 20 20 20 69 66 20 28 62 61 64 56 61 6c 75 65      if (badValue
2a30: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2a40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a50: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2a60: 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65  new ArgumentExce
2a70: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74              "Not
2a90: 20 61 20 73 75 70 70 6f 72 74 65 64 20 4a 75 6c   a supported Jul
2aa0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 22 29  ian Day value.")
2ab0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2ac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ad0: 72 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65  return (DateTime
2ae0: 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20  )badValue;..    
2af0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b00: 20 69 6e 74 20 5a 2c 20 41 2c 20 42 2c 20 43 2c   int Z, A, B, C,
2b10: 20 44 2c 20 45 2c 20 58 31 3b 0d 0a 0d 0a 20 20   D, E, X1;....  
2b20: 20 20 20 20 20 20 5a 20 3d 20 28 69 6e 74 29 28        Z = (int)(
2b30: 28 6a 64 20 2b 20 34 33 32 30 30 30 30 30 29 20  (jd + 43200000) 
2b40: 2f 20 38 36 34 30 30 30 30 30 29 3b 0d 0a 20 20  / 86400000);..  
2b50: 20 20 20 20 20 20 41 20 3d 20 28 69 6e 74 29 28        A = (int)(
2b60: 28 5a 20 2d 20 31 38 36 37 32 31 36 2e 32 35 29  (Z - 1867216.25)
2b70: 20 2f 20 33 36 35 32 34 2e 32 35 29 3b 0d 0a 20   / 36524.25);.. 
2b80: 20 20 20 20 20 20 20 41 20 3d 20 5a 20 2b 20 31         A = Z + 1
2b90: 20 2b 20 41 20 2d 20 28 41 20 2f 20 34 29 3b 0d   + A - (A / 4);.
2ba0: 0a 20 20 20 20 20 20 20 20 42 20 3d 20 41 20 2b  .        B = A +
2bb0: 20 31 35 32 34 3b 0d 0a 20 20 20 20 20 20 20 20   1524;..        
2bc0: 43 20 3d 20 28 69 6e 74 29 28 28 42 20 2d 20 31  C = (int)((B - 1
2bd0: 32 32 2e 31 29 20 2f 20 33 36 35 2e 32 35 29 3b  22.1) / 365.25);
2be0: 0d 0a 20 20 20 20 20 20 20 20 44 20 3d 20 28 33  ..        D = (3
2bf0: 36 35 32 35 20 2a 20 43 29 20 2f 20 31 30 30 3b  6525 * C) / 100;
2c00: 0d 0a 20 20 20 20 20 20 20 20 45 20 3d 20 28 69  ..        E = (i
2c10: 6e 74 29 28 28 42 20 2d 20 44 29 20 2f 20 33 30  nt)((B - D) / 30
2c20: 2e 36 30 30 31 29 3b 0d 0a 20 20 20 20 20 20 20  .6001);..       
2c30: 20 58 31 20 3d 20 28 69 6e 74 29 28 33 30 2e 36   X1 = (int)(30.6
2c40: 30 30 31 20 2a 20 45 29 3b 0d 0a 0d 0a 20 20 20  001 * E);....   
2c50: 20 20 20 20 20 69 6e 74 20 64 61 79 2c 20 6d 6f       int day, mo
2c60: 6e 74 68 2c 20 79 65 61 72 3b 0d 0a 0d 0a 20 20  nth, year;....  
2c70: 20 20 20 20 20 20 64 61 79 20 3d 20 42 20 2d 20        day = B - 
2c80: 44 20 2d 20 58 31 3b 0d 0a 20 20 20 20 20 20 20  D - X1;..       
2c90: 20 6d 6f 6e 74 68 20 3d 20 45 20 3c 20 31 34 20   month = E < 14 
2ca0: 3f 20 45 20 2d 20 31 20 3a 20 45 20 2d 20 31 33  ? E - 1 : E - 13
2cb0: 3b 0d 0a 20 20 20 20 20 20 20 20 79 65 61 72 20  ;..        year 
2cc0: 3d 20 6d 6f 6e 74 68 20 3e 20 32 20 3f 20 43 20  = month > 2 ? C 
2cd0: 2d 20 34 37 31 36 20 3a 20 43 20 2d 20 34 37 31  - 4716 : C - 471
2ce0: 35 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72  5;....        tr
2cf0: 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
2d00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d10: 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 79 65   new DateTime(ye
2d20: 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 79 29 3b  ar, month, day);
2d30: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2d40: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2d50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d60: 20 20 20 69 66 20 28 62 61 64 56 61 6c 75 65 20     if (badValue 
2d70: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2d80: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 3b            throw;
2d90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2da0: 72 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65  return (DateTime
2db0: 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20  )badValue;..    
2dc0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
2dd0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e20: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2e30: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
2e40: 6e 76 65 72 74 73 20 61 20 4a 75 6c 69 61 6e 20  nverts a Julian 
2e50: 44 61 79 20 76 61 6c 75 65 20 74 6f 20 61 20 3c  Day value to a <
2e60: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
2e70: 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f  me" />...    ///
2e80: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 77 61 73   This method was
2e90: 20 74 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d   translated from
2ea0: 20 74 68 65 20 22 63 6f 6d 70 75 74 65 48 4d 53   the "computeHMS
2eb0: 22 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68  " function in th
2ec0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 22 64 61 74 65  e..    /// "date
2ed0: 2e 63 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67 69  .c" file belongi
2ee0: 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ng to the SQLite
2ef0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
2f00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2f10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2f20: 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20  am name="jd">.. 
2f30: 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61     /// The Julia
2f40: 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f 20 63  n Day value to c
2f50: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f  onvert...    ///
2f60: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2f70: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f80: 62 61 64 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  badValue">..    
2f90: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
2fa0: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
2fb0: 76 61 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20  value to return 
2fc0: 69 6e 20 74 68 65 20 65 76 65 6e 74 20 74 68 61  in the event tha
2fd0: 74 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 4a  t the..    /// J
2fe0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
2ff0: 69 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 75  is out of the su
3000: 70 70 6f 72 74 65 64 20 72 61 6e 67 65 2e 20 20  pported range.  
3010: 49 66 20 74 68 69 73 20 76 61 6c 75 65 20 69 73  If this value is
3020: 0d 0a 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2c 20  ..    /// null, 
3030: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c  an exception wil
3040: 6c 20 62 65 20 74 68 72 6f 77 6e 20 69 6e 73 74  l be thrown inst
3050: 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ead...    /// </
3060: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
3070: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
3080: 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22  // A <see cref="
3090: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
30a0: 75 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ue that contains
30b0: 20 74 68 65 20 68 6f 75 72 2c 20 6d 69 6e 75 74   the hour, minut
30c0: 65 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  e, and..    /// 
30d0: 73 65 63 6f 6e 64 2c 20 61 6e 64 20 6d 69 6c 6c  second, and mill
30e0: 69 73 65 63 6f 6e 64 20 76 61 6c 75 65 73 20 74  isecond values t
30f0: 68 61 74 20 61 72 65 20 63 6c 6f 73 65 73 74 20  hat are closest 
3100: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
3110: 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e  ..    /// Julian
3120: 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20   Day value...   
3130: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3140: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
3150: 74 69 63 20 44 61 74 65 54 69 6d 65 20 63 6f 6d  tic DateTime com
3160: 70 75 74 65 48 4d 53 28 0d 0a 20 20 20 20 20 20  puteHMS(..      
3170: 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20    long jd,..    
3180: 20 20 20 20 44 61 74 65 54 69 6d 65 3f 20 62 61      DateTime? ba
3190: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  dValue..        
31a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
31b0: 20 20 69 66 20 28 21 69 73 56 61 6c 69 64 4a 64    if (!isValidJd
31c0: 28 6a 64 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  (jd))..        {
31d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
31e0: 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75   (badValue == nu
31f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3200: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3210: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
3220: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
3230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3240: 20 20 20 20 20 20 22 4e 6f 74 20 61 20 73 75 70        "Not a sup
3250: 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e 20 44 61  ported Julian Da
3260: 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20  y value.");..   
3270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3280: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3290: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
32a0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
32b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 73  ...        int s
32c0: 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 69  i;....        si
32d0: 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b 20 34   = (int)((jd + 4
32e0: 33 32 30 30 30 30 30 29 20 25 20 38 36 34 30 30  3200000) % 86400
32f0: 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  000);....       
3300: 20 64 65 63 69 6d 61 6c 20 73 64 3b 0d 0a 0d 0a   decimal sd;....
3310: 20 20 20 20 20 20 20 20 73 64 20 3d 20 73 69 20          sd = si 
3320: 2f 20 31 30 30 30 2e 30 4d 3b 0d 0a 20 20 20 20  / 1000.0M;..    
3330: 20 20 20 20 73 69 20 3d 20 28 69 6e 74 29 73 64      si = (int)sd
3340: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
3350: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 3d 20 28   millisecond = (
3360: 69 6e 74 29 28 28 73 64 20 2d 20 73 69 29 20 2a  int)((sd - si) *
3370: 20 31 30 30 30 2e 30 4d 29 3b 0d 0a 0d 0a 20 20   1000.0M);....  
3380: 20 20 20 20 20 20 73 64 20 2d 3d 20 73 69 3b 0d        sd -= si;.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 68  ...        int h
33a0: 6f 75 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  our;....        
33b0: 68 6f 75 72 20 3d 20 73 69 20 2f 20 33 36 30 30  hour = si / 3600
33c0: 3b 0d 0a 20 20 20 20 20 20 20 20 73 69 20 2d 3d  ;..        si -=
33d0: 20 68 6f 75 72 20 2a 20 33 36 30 30 3b 0d 0a 0d   hour * 3600;...
33e0: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6d 69 6e  .        int min
33f0: 75 74 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ute;....        
3400: 6d 69 6e 75 74 65 20 3d 20 73 69 20 2f 20 36 30  minute = si / 60
3410: 3b 0d 0a 20 20 20 20 20 20 20 20 73 64 20 2b 3d  ;..        sd +=
3420: 20 73 69 20 2d 20 6d 69 6e 75 74 65 20 2a 20 36   si - minute * 6
3430: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  0;....        in
3440: 74 20 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29  t second = (int)
3450: 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  sd;....        t
3460: 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
3470: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
3480: 69 6d 65 20 6d 69 6e 56 61 6c 75 65 20 3d 20 44  ime minValue = D
3490: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
34a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34b0: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65   return new Date
34c0: 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Time(..         
34d0: 20 20 20 20 20 20 20 6d 69 6e 56 61 6c 75 65 2e         minValue.
34e0: 59 65 61 72 2c 20 6d 69 6e 56 61 6c 75 65 2e 4d  Year, minValue.M
34f0: 6f 6e 74 68 2c 20 6d 69 6e 56 61 6c 75 65 2e 44  onth, minValue.D
3500: 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay,..           
3510: 20 20 20 20 20 68 6f 75 72 2c 20 6d 69 6e 75 74       hour, minut
3520: 65 2c 20 73 65 63 6f 6e 64 2c 20 6d 69 6c 6c 69  e, second, milli
3530: 73 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 20 20  second);..      
3540: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
3550: 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
3560: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
3570: 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29  adValue == null)
3580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3590: 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20    throw;....    
35a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
35b0: 44 61 74 65 54 69 6d 65 29 62 61 64 56 61 6c 75  DateTime)badValu
35c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
35d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f  ///////....    /
3630: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3640: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
3650: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
3660: 54 69 6d 65 22 20 2f 3e 20 74 6f 20 61 20 4a 75  Time" /> to a Ju
3670: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d  lian Day value..
3680: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
3690: 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73 6c 61  thod was transla
36a0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22 63 6f  ted from the "co
36b0: 6d 70 75 74 65 4a 44 22 20 66 75 6e 63 74 69 6f  mputeJD" functio
36c0: 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  n in..    /// th
36d0: 65 20 22 64 61 74 65 2e 63 22 20 66 69 6c 65 20  e "date.c" file 
36e0: 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65  belonging to the
36f0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
3700: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 53  rary...    /// S
3710: 69 6e 63 65 20 74 68 65 20 72 61 6e 67 65 20 6f  ince the range o
3720: 66 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  f Julian Day val
3730: 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79  ues supported by
3740: 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20   this method..  
3750: 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 61    /// includes a
3760: 6c 6c 20 70 6f 73 73 69 62 6c 65 20 28 76 61 6c  ll possible (val
3770: 69 64 29 20 76 61 6c 75 65 73 20 6f 66 20 61 20  id) values of a 
3780: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
3790: 69 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ime" />..    ///
37a0: 20 76 61 6c 75 65 2c 20 69 74 20 73 68 6f 75 6c   value, it shoul
37b0: 64 20 62 65 20 65 78 74 72 65 6d 65 6c 79 20 64  d be extremely d
37c0: 69 66 66 69 63 75 6c 74 20 66 6f 72 20 74 68 69  ifficult for thi
37d0: 73 20 6d 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20  s method to..   
37e0: 20 2f 2f 2f 20 72 61 69 73 65 20 61 6e 20 65 78   /// raise an ex
37f0: 63 65 70 74 69 6f 6e 20 6f 72 20 72 65 74 75 72  ception or retur
3800: 6e 20 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 72  n an undefined r
3810: 65 73 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  esult...    /// 
3820: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3830: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3840: 22 64 61 74 65 54 69 6d 65 22 3e 0d 0a 20 20 20  "dateTime">..   
3850: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
3860: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
3870: 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
3880: 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65 0d 0a  t.  This value..
3890: 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20      /// will be 
38a0: 77 69 74 68 69 6e 20 74 68 65 20 72 61 6e 67 65  within the range
38b0: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 44   of <see cref="D
38c0: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
38d0: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 28 30  " />..    /// (0
38e0: 30 3a 30 30 3a 30 30 2e 30 30 30 30 30 30 30 2c  0:00:00.0000000,
38f0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 30 30 30 31   January 1, 0001
3900: 29 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  ) to..    /// <s
3910: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
3920: 65 2e 4d 61 78 56 61 6c 75 65 22 20 2f 3e 20 28  e.MaxValue" /> (
3930: 32 33 3a 35 39 3a 35 39 2e 39 39 39 39 39 39 39  23:59:59.9999999
3940: 2c 20 44 65 63 65 6d 62 65 72 0d 0a 20 20 20 20  , December..    
3950: 2f 2f 2f 20 33 31 2c 20 39 39 39 39 29 2e 0d 0a  /// 31, 9999)...
3960: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
3980: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
3990: 20 6e 65 61 72 65 73 74 20 4a 75 6c 69 61 6e 20   nearest Julian 
39a0: 44 61 79 20 76 61 6c 75 65 20 63 6f 72 72 65 73  Day value corres
39b0: 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 73  ponding to the s
39c0: 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f  pecified..    //
39d0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
39e0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
39f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
3a00: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
3a10: 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 63 6f  e static long co
3a20: 6d 70 75 74 65 4a 44 28 0d 0a 20 20 20 20 20 20  mputeJD(..      
3a30: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
3a40: 69 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ime..        )..
3a50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
3a60: 6e 74 20 59 2c 20 4d 2c 20 44 3b 0d 0a 0d 0a 20  nt Y, M, D;.... 
3a70: 20 20 20 20 20 20 20 59 20 3d 20 64 61 74 65 54         Y = dateT
3a80: 69 6d 65 2e 59 65 61 72 3b 0d 0a 20 20 20 20 20  ime.Year;..     
3a90: 20 20 20 4d 20 3d 20 64 61 74 65 54 69 6d 65 2e     M = dateTime.
3aa0: 4d 6f 6e 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  Month;..        
3ab0: 44 20 3d 20 64 61 74 65 54 69 6d 65 2e 44 61 79  D = dateTime.Day
3ac0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
3ad0: 28 4d 20 3c 3d 20 32 29 0d 0a 20 20 20 20 20 20  (M <= 2)..      
3ae0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3af0: 20 59 2d 2d 3b 0d 0a 20 20 20 20 20 20 20 20 20   Y--;..         
3b00: 20 20 20 4d 20 2b 3d 20 31 32 3b 0d 0a 20 20 20     M += 12;..   
3b10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b20: 20 20 69 6e 74 20 41 2c 20 42 2c 20 58 31 2c 20    int A, B, X1, 
3b30: 58 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41  X2;....        A
3b40: 20 3d 20 59 20 2f 20 31 30 30 3b 0d 0a 20 20 20   = Y / 100;..   
3b50: 20 20 20 20 20 42 20 3d 20 32 20 2d 20 41 20 2b       B = 2 - A +
3b60: 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20   (A / 4);..     
3b70: 20 20 20 58 31 20 3d 20 33 36 35 32 35 20 2a 20     X1 = 36525 * 
3b80: 28 59 20 2b 20 34 37 31 36 29 20 2f 20 31 30 30  (Y + 4716) / 100
3b90: 3b 0d 0a 20 20 20 20 20 20 20 20 58 32 20 3d 20  ;..        X2 = 
3ba0: 33 30 36 30 30 31 20 2a 20 28 4d 20 2b 20 31 29  306001 * (M + 1)
3bb0: 20 2f 20 31 30 30 30 30 3b 0d 0a 0d 0a 20 20 20   / 10000;....   
3bc0: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 3b 0d 0a 0d       long jd;...
3bd0: 0a 20 20 20 20 20 20 20 20 6a 64 20 3d 20 28 6c  .        jd = (l
3be0: 6f 6e 67 29 28 28 58 31 20 2b 20 58 32 20 2b 20  ong)((X1 + X2 + 
3bf0: 44 20 2b 20 42 20 2d 20 31 35 32 34 2e 35 29 20  D + B - 1524.5) 
3c00: 2a 20 38 36 34 30 30 30 30 30 29 3b 0d 0a 0d 0a  * 86400000);....
3c10: 20 20 20 20 20 20 20 20 6a 64 20 2b 3d 20 28 64          jd += (d
3c20: 61 74 65 54 69 6d 65 2e 48 6f 75 72 20 2a 20 33  ateTime.Hour * 3
3c30: 36 30 30 30 30 30 29 20 2b 20 28 64 61 74 65 54  600000) + (dateT
3c40: 69 6d 65 2e 4d 69 6e 75 74 65 20 2a 20 36 30 30  ime.Minute * 600
3c50: 30 30 29 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  00) +..         
3c60: 20 20 20 28 64 61 74 65 54 69 6d 65 2e 53 65 63     (dateTime.Sec
3c70: 6f 6e 64 20 2a 20 31 30 30 30 29 20 2b 20 64 61  ond * 1000) + da
3c80: 74 65 54 69 6d 65 2e 4d 69 6c 6c 69 73 65 63 6f  teTime.Milliseco
3c90: 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  nd;....        r
3ca0: 65 74 75 72 6e 20 6a 64 3b 0d 0a 20 20 20 20 7d  eturn jd;..    }
3cb0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
3cc0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
3d20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
3d30: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
3d40: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
3d50: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44  ime, using the D
3d60: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44  ateTimeFormat, D
3d70: 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20  ateTimeKind,..  
3d80: 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69    /// and DateTi
3d90: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73  meFormatString s
3da0: 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65  pecified for the
3db0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e   connection when
3dc0: 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d   it was opened..
3dd0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
3de0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
3df0: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
3e00: 41 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36  Acceptable ISO86
3e10: 30 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d  01 DateTime form
3e20: 61 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f  ats are:..    //
3e30: 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75  / <list type="bu
3e40: 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  llet">..    /// 
3e50: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3e60: 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73  on>THHmmssK</des
3e70: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
3e80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3e90: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
3ea0: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
3eb0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3ec0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3ed0: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46  tion>HH:mm:ss.FF
3ee0: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
3ef0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
3f00: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
3f10: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73  ription>HH:mm:ss
3f20: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
3f30: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
3f40: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3f50: 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72  on>HH:mmK</descr
3f60: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
3f70: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
3f80: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
3f90: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46  MM-dd HH:mm:ss.F
3fa0: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
3fb0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
3fc0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
3fd0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
3fe0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64  -dd HH:mm:ssK</d
3ff0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4000: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4010: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4020: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b  yyy-MM-dd HH:mmK
4030: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4040: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4050: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4060: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
4070: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f  mm:ss.FFFFFFFK</
4080: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4090: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
40a0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
40b0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
40c0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
40d0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
40e0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
40f0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4100: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
4110: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4120: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4130: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
4140: 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69  dHHmmssK</descri
4150: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4160: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4170: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4180: 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70  ddHHmmK</descrip
4190: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
41a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
41b0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
41c0: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b  dTHHmmssFFFFFFFK
41d0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
41e0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
41f0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4200: 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72  n>THHmmss</descr
4210: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4220: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4230: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
4240: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4250: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4260: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4270: 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  n>HH:mm:ss.FFFFF
4280: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
4290: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
42a0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
42b0: 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65  ion>HH:mm:ss</de
42c0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
42d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
42e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
42f0: 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :mm</description
4300: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4310: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4320: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
4330: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4340: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4350: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4360: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4370: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4380: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
4390: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
43a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
43b0: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
43c0: 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  d HH:mm</descrip
43d0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
43e0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
43f0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4400: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -ddTHH:mm:ss.FFF
4410: 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFF</descriptio
4420: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4430: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4440: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4450: 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74  THH:mm</descript
4460: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4470: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4480: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4490: 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73  ddTHH:mm:ss</des
44a0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
44b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
44c0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
44d0: 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73  yMMddHHmmss</des
44e0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
44f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4500: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4510: 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72  yMMddHHmm</descr
4520: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4530: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4540: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
4550: 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46  MddTHHmmssFFFFFF
4560: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4570: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4580: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4590: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64  on>yyyy-MM-dd</d
45a0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
45b0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
45c0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
45d0: 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70  yyyMMdd</descrip
45e0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
45f0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4600: 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64  cription>yy-MM-d
4610: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
4620: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4630: 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f  </list>..    ///
4640: 20 49 66 20 74 68 65 20 73 74 72 69 6e 67 20 63   If the string c
4650: 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64  annot be matched
4660: 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61   to one of the a
4670: 62 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52  bove formats -OR
4680: 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 44  -..    /// the D
4690: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72  ateTimeFormatStr
46a0: 69 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20 70  ing if one was p
46b0: 72 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63 65  rovided, an exce
46c0: 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20  ption will..    
46d0: 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a  /// be thrown...
46e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
46f0: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
4700: 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65 78  am name="dateTex
4710: 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63 6f  t">The string co
4720: 6e 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72 20  ntaining either 
4730: 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e  a long integer n
4740: 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e  umber of 100-nan
4750: 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69  osecond units si
4760: 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73  nce..    /// Sys
4770: 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e  tem.DateTime.Min
4780: 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20  Value, a Julian 
4790: 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69  day double, an i
47a0: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66  nteger number of
47b0: 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74   seconds since t
47c0: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61  he Unix epoch, a
47d0: 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72  ..    /// cultur
47e0: 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f  e-independent fo
47f0: 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64  rmatted date and
4800: 20 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61 20   time string, a 
4810: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
4820: 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69  nd time string i
4830: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  n the current.. 
4840: 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20     /// culture, 
4850: 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f  or an ISO8601-fo
4860: 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61  rmat string.</pa
4870: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
4880: 65 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69 6d  eturns>A DateTim
4890: 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73  e value</returns
48a0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61  >..    public Da
48b0: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
48c0: 65 28 73 74 72 69 6e 67 20 64 61 74 65 54 65 78  e(string dateTex
48d0: 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  t)..    {..     
48e0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
48f0: 6d 65 28 64 61 74 65 54 65 78 74 2c 20 5f 64 61  me(dateText, _da
4900: 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64  tetimeFormat, _d
4910: 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61  atetimeKind, _da
4920: 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  tetimeFormatStri
4930: 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ng);..    }.... 
4940: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4950: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
4960: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
4970: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
4980: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
4990: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c   DateTimeFormat,
49a0: 0d 0a 20 20 20 20 2f 2f 2f 20 44 61 74 65 54 69  ..    /// DateTi
49b0: 6d 65 4b 69 6e 64 20 61 6e 64 20 44 61 74 65 54  meKind and DateT
49c0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 2e  imeFormatString.
49d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
49e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
49f0: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
4a00: 20 41 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38   Acceptable ISO8
4a10: 36 30 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72  601 DateTime for
4a20: 6d 61 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f  mats are:..    /
4a30: 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62  // <list type="b
4a40: 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ullet">..    ///
4a50: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4a60: 69 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65  ion>THHmmssK</de
4a70: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4a90: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4aa0: 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  HmmK</descriptio
4ab0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4ac0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4ad0: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46  ption>HH:mm:ss.F
4ae0: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
4af0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4b00: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4b10: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73  cription>HH:mm:s
4b20: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4b30: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4b40: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4b50: 69 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  ion>HH:mmK</desc
4b60: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4b70: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4b80: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4b90: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e  -MM-dd HH:mm:ss.
4ba0: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
4bb0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4bc0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4bd0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4be0: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f  M-dd HH:mm:ssK</
4bf0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4c00: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4c10: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4c20: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
4c30: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4c40: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4c50: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4c60: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4c70: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c  :mm:ss.FFFFFFFK<
4c80: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
4c90: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4ca0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4cb0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
4cc0: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
4cd0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4ce0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4cf0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
4d00: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
4d10: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4d20: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4d30: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4d40: 64 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72  ddHHmmssK</descr
4d50: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4d60: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4d70: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
4d80: 4d 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69  MddHHmmK</descri
4d90: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4da0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4db0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4dc0: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
4dd0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4de0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4df0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4e00: 6f 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63  on>THHmmss</desc
4e10: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4e20: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4e30: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
4e40: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
4e50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4e60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4e70: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  on>HH:mm:ss.FFFF
4e80: 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFF</description
4e90: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4ea0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4eb0: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64  tion>HH:mm:ss</d
4ec0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ed0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4ee0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4ef0: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
4f00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4f10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4f20: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4f30: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
4f40: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4f50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4f60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4f70: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
4f80: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
4f90: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4fa0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4fb0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4fc0: 64 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69  dd HH:mm</descri
4fd0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4fe0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4ff0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
5000: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-ddTHH:mm:ss.FF
5010: 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69  FFFFF</descripti
5020: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5030: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5040: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
5050: 64 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  dTHH:mm</descrip
5060: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
5070: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
5080: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
5090: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65  -ddTHH:mm:ss</de
50a0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
50b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
50c0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
50d0: 79 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65  yyMMddHHmmss</de
50e0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
50f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5100: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
5110: 79 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63  yyMMddHHmm</desc
5120: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
5130: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
5140: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
5150: 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46  MMddTHHmmssFFFFF
5160: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
5170: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5180: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5190: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f  ion>yyyy-MM-dd</
51a0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
51b0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
51c0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
51d0: 79 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69  yyyyMMdd</descri
51e0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
51f0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
5200: 73 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d  scription>yy-MM-
5210: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
5220: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5230: 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f   </list>..    //
5240: 2f 20 49 66 20 74 68 65 20 73 74 72 69 6e 67 20  / If the string 
5250: 63 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65  cannot be matche
5260: 64 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20  d to one of the 
5270: 61 62 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f  above formats -O
5280: 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20  R-..    /// the 
5290: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74  DateTimeFormatSt
52a0: 72 69 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20  ring if one was 
52b0: 70 72 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63  provided, an exc
52c0: 65 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20  eption will..   
52d0: 20 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d   /// be thrown..
52e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
52f0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ks>..    /// <pa
5300: 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65  ram name="dateTe
5310: 78 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63  xt">The string c
5320: 6f 6e 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72  ontaining either
5330: 20 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20   a long integer 
5340: 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61  number of 100-na
5350: 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73  nosecond units s
5360: 69 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79  ince..    /// Sy
5370: 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69  stem.DateTime.Mi
5380: 6e 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e  nValue, a Julian
5390: 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20   day double, an 
53a0: 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f  integer number o
53b0: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
53c0: 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20  the Unix epoch, 
53d0: 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75  a..    /// cultu
53e0: 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66  re-independent f
53f0: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
5400: 64 20 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61  d time string, a
5410: 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20   formatted date 
5420: 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20  and time string 
5430: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  in the current..
5440: 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c      /// culture,
5450: 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66   or an ISO8601-f
5460: 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70  ormat string.</p
5470: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5480: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d  param name="form
5490: 61 74 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61  at">The SQLiteDa
54a0: 74 65 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65  teFormats to use
54b0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
54c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
54d0: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
54e0: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
54f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5500: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
5510: 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  matString">The D
5520: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
5530: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
5540: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5550: 72 65 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69  returns>A DateTi
5560: 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e  me value</return
5570: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
5580: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54  tatic DateTime T
5590: 6f 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20  oDateTime(..    
55a0: 20 20 20 20 73 74 72 69 6e 67 20 64 61 74 65 54      string dateT
55b0: 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  ext,..        SQ
55c0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
55d0: 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  format,..       
55e0: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
55f0: 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72  nd,..        str
5600: 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  ing formatString
5610: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
5620: 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
5630: 63 68 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20  ch (format)..   
5640: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5650: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
5660: 61 74 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73  ateFormats.Ticks
5670: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5690: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
56a0: 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76   ToDateTime(Conv
56b0: 65 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20  ert.ToInt64(..  
56c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56d0: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
56e0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
56f0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b  riantCulture), k
5700: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5710: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5720: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
5730: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
5740: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5770: 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d  return ToDateTim
5780: 65 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62  e(Convert.ToDoub
5790: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
57a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
57b0: 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e  eText, CultureIn
57c0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
57d0: 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20  ure), kind);..  
57e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
57f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
5800: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
5810: 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a  ats.UnixEpoch:..
5820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5830: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5840: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f         return To
5850: 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74  DateTime(Convert
5860: 2e 54 6f 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  .ToInt32(..     
5870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5880: 20 20 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c     dateText, Cul
5890: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
58a0: 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64  ntCulture), kind
58b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
58c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
58d0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
58e0: 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69  teFormats.Invari
58f0: 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20  antCulture:..   
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5920: 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74      if (formatSt
5930: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ring != null).. 
5940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5950: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
5960: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
5970: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73  nd(DateTime.Pars
5980: 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20  eExact(..       
5990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59a0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66       dateText, f
59b0: 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20  ormatString,..  
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59d0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
59e0: 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76  meFormatInfo.Inv
59f0: 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  ariantInfo,..   
5a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a10: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
5a20: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
5a30: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5a60: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
5a70: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
5a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a90: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5aa0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
5ad0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5ae0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
5b10: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
5b20: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
5b30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5b50: 61 74 65 54 65 78 74 2c 20 44 61 74 65 54 69 6d  ateText, DateTim
5b60: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
5b70: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
5b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b90: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
5ba0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
5bb0: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bd0: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5be0: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
5bf0: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
5c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c10: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5c20: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
5c50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5c60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5c70: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
5c80: 65 46 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74  eFormats.Current
5c90: 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20  Culture:..      
5ca0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cc0: 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e   if (formatStrin
5cd0: 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  g != null)..    
5ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cf0: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
5d00: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
5d10: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78  DateTime.ParseEx
5d20: 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  act(..          
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d    dateText, form
5d50: 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20  atString,..     
5d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d70: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 46         DateTimeF
5d80: 6f 72 6d 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e  ormatInfo.Curren
5d90: 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20  tInfo,..        
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5db0: 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65      kind == Date
5dc0: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a  TimeKind.Utc ?..
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5df0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41  DateTimeStyles.A
5e00: 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c  djustToUniversal
5e10: 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e30: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5e40: 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20  es.None),..     
5e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e60: 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20         kind);.. 
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e80: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ea0: 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65   return DateTime
5eb0: 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74  .SpecifyKind(Dat
5ec0: 65 54 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20  eTime.Parse(..  
5ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ee0: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
5ef0: 78 74 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  xt, DateTimeForm
5f00: 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e  atInfo.CurrentIn
5f10: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
5f40: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5f70: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
5f80: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
5f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5fc0: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
5fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fe0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
6000: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
6010: 6c 74 3a 20 2f 2a 20 49 53 4f 2d 38 36 30 31 20  lt: /* ISO-8601 
6020: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
6030: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6040: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66             if (f
6050: 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e  ormatString != n
6060: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6080: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
6090: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
60a0: 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a  me.ParseExact(..
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
60d0: 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69  Text, formatStri
60e0: 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng,..           
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6100: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
6110: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
6120: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6140: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
6150: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
6160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6170: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
6180: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
6190: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61c0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
61d0: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
61e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61f0: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
6200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
6210: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
6220: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6230: 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65  urn DateTime.Spe
6240: 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d  cifyKind(DateTim
6250: 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20  e.ParseExact(.. 
6260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6270: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
6280: 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ext, _datetimeFo
6290: 72 6d 61 74 73 2c 0d 0a 20 20 20 20 20 20 20 20  rmats,..        
62a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62b0: 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d      DateTimeForm
62c0: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
62d0: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62f0: 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54     kind == DateT
6300: 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20  imeKind.Utc ?.. 
6310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6330: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64  ateTimeStyles.Ad
6340: 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20  justToUniversal 
6350: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
6360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6370: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
6380: 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20  s.None),..      
6390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63a0: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
63c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
63d0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
63e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
63f0: 43 6f 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61  Converts a julia
6400: 6e 64 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20  nday value into 
6410: 61 20 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20  a DateTime..    
6420: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6430: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6440: 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e  ame="julianDay">
6450: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  The value to con
6460: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
6470: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
6480: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
6490: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
64a0: 62 6c 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  blic DateTime To
64b0: 44 61 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20  DateTime(double 
64c0: 6a 75 6c 69 61 6e 44 61 79 29 0d 0a 20 20 20 20  julianDay)..    
64d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
64e0: 54 6f 44 61 74 65 54 69 6d 65 28 6a 75 6c 69 61  ToDateTime(julia
64f0: 6e 44 61 79 2c 20 5f 64 61 74 65 74 69 6d 65 4b  nDay, _datetimeK
6500: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6510: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6520: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6530: 72 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20  rts a julianday 
6540: 76 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74  value into a Dat
6550: 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  eTime..    /// <
6560: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6570: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6580: 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76  julianDay">The v
6590: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
65a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
65b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
65c0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
65d0: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
65e0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
65f0: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
6600: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
6610: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
6620: 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44  tic DateTime ToD
6630: 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20  ateTime(..      
6640: 20 20 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44    double julianD
6650: 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74  ay,..        Dat
6660: 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 0d 0a  eTimeKind kind..
6670: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
6680: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a  ..        long j
6690: 64 20 3d 20 44 6f 75 62 6c 65 54 6f 4a 64 28 6a  d = DoubleToJd(j
66a0: 75 6c 69 61 6e 44 61 79 29 3b 0d 0a 20 20 20 20  ulianDay);..    
66b0: 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61 74      DateTime dat
66c0: 65 54 69 6d 65 59 4d 44 20 3d 20 63 6f 6d 70 75  eTimeYMD = compu
66d0: 74 65 59 4d 44 28 6a 64 2c 20 6e 75 6c 6c 29 3b  teYMD(jd, null);
66e0: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
66f0: 6d 65 20 64 61 74 65 54 69 6d 65 48 4d 53 20 3d  me dateTimeHMS =
6700: 20 63 6f 6d 70 75 74 65 48 4d 53 28 6a 64 2c 20   computeHMS(jd, 
6710: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
6720: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74    return new Dat
6730: 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eTime(..        
6740: 20 20 20 20 64 61 74 65 54 69 6d 65 59 4d 44 2e      dateTimeYMD.
6750: 59 65 61 72 2c 20 64 61 74 65 54 69 6d 65 59 4d  Year, dateTimeYM
6760: 44 2e 4d 6f 6e 74 68 2c 20 64 61 74 65 54 69 6d  D.Month, dateTim
6770: 65 59 4d 44 2e 44 61 79 2c 0d 0a 20 20 20 20 20  eYMD.Day,..     
6780: 20 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 48         dateTimeH
6790: 4d 53 2e 48 6f 75 72 2c 20 64 61 74 65 54 69 6d  MS.Hour, dateTim
67a0: 65 48 4d 53 2e 4d 69 6e 75 74 65 2c 20 64 61 74  eHMS.Minute, dat
67b0: 65 54 69 6d 65 48 4d 53 2e 53 65 63 6f 6e 64 2c  eTimeHMS.Second,
67c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61  ..            da
67d0: 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6c 6c 69 73  teTimeHMS.Millis
67e0: 65 63 6f 6e 64 2c 20 6b 69 6e 64 29 3b 0d 0a 20  econd, kind);.. 
67f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
6800: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6810: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
6820: 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72  specified number
6830: 20 6f 66 20 73 65 63 6f 6e 64 73 20 66 72 6f 6d   of seconds from
6840: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20   the Unix epoch 
6850: 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  into a..    /// 
6860: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6870: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6880: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6890: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
68a0: 61 6d 20 6e 61 6d 65 3d 22 73 65 63 6f 6e 64 73  am name="seconds
68b0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
68c0: 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20  number of whole 
68d0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
68e0: 65 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20  e Unix epoch... 
68f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6900: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6910: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20  name="kind">..  
6920: 20 20 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63    /// Either Utc
6930: 20 6f 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d   or Local time..
6940: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
6950: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6960: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
6970: 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  e new <see cref=
6980: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
6990: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
69a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
69b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61  ternal static Da
69c0: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
69d0: 65 28 69 6e 74 20 73 65 63 6f 6e 64 73 2c 20 44  e(int seconds, D
69e0: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
69f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
6a00: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
6a10: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 55 6e  e.SpecifyKind(Un
6a20: 69 78 45 70 6f 63 68 2e 41 64 64 53 65 63 6f 6e  ixEpoch.AddSecon
6a30: 64 73 28 73 65 63 6f 6e 64 73 29 2c 20 6b 69 6e  ds(seconds), kin
6a40: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
6a50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6a60: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6a70: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
6a80: 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 20  number of ticks 
6a90: 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63 68 20  since the epoch 
6aa0: 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  into a..    /// 
6ab0: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6ac0: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6ad0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6ae0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
6af0: 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b 73 22 3e  am name="ticks">
6b00: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75  ..    /// The nu
6b10: 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20 74 69  mber of whole ti
6b20: 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20 65 70  cks since the ep
6b30: 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  och...    /// </
6b40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
6b50: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e  <param name="kin
6b60: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74  d">..    /// Eit
6b70: 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61 6c  her Utc or Local
6b80: 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   time...    /// 
6b90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6ba0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6bb0: 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65   /// The new <se
6bc0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
6bd0: 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
6be0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
6bf0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6c00: 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  atic DateTime To
6c10: 44 61 74 65 54 69 6d 65 28 6c 6f 6e 67 20 74 69  DateTime(long ti
6c20: 63 6b 73 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e  cks, DateTimeKin
6c30: 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a  d kind)..    {..
6c40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
6c50: 65 77 20 44 61 74 65 54 69 6d 65 28 74 69 63 6b  ew DateTime(tick
6c60: 73 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d  s, kind);..    }
6c70: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
6c80: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
6c90: 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54 69  onverts a DateTi
6ca0: 6d 65 20 73 74 72 75 63 74 20 74 6f 20 61 20 4a  me struct to a J
6cb0: 75 6c 69 61 6e 44 61 79 20 64 6f 75 62 6c 65 0d  ulianDay double.
6cc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
6cd0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
6ce0: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
6cf0: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f  >The DateTime to
6d00: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
6d10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
6d20: 6e 73 3e 54 68 65 20 4a 75 6c 69 61 6e 44 61 79  ns>The JulianDay
6d30: 20 76 61 6c 75 65 20 74 68 65 20 44 61 74 65 74   value the Datet
6d40: 69 6d 65 20 72 65 70 72 65 73 65 6e 74 73 3c 2f  ime represents</
6d50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
6d60: 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
6d70: 6c 65 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 44  le ToJulianDay(D
6d80: 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a  ateTime value)..
6d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
6da0: 65 74 75 72 6e 20 4a 64 54 6f 44 6f 75 62 6c 65  eturn JdToDouble
6db0: 28 63 6f 6d 70 75 74 65 4a 44 28 76 61 6c 75 65  (computeJD(value
6dc0: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ));..    }....  
6dd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6de0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6df0: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72  s a DateTime str
6e00: 75 63 74 20 74 6f 20 74 68 65 20 77 68 6f 6c 65  uct to the whole
6e10: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
6e20: 64 73 20 73 69 6e 63 65 20 74 68 65 0d 0a 20 20  ds since the..  
6e30: 20 20 2f 2f 2f 20 55 6e 69 78 20 65 70 6f 63 68    /// Unix epoch
6e40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6e50: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6e60: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
6e70: 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  e">The DateTime 
6e80: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
6e90: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6ea0: 75 72 6e 73 3e 54 68 65 20 77 68 6f 6c 65 20 6e  urns>The whole n
6eb0: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
6ec0: 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
6ed0: 65 70 6f 63 68 3c 2f 72 65 74 75 72 6e 73 3e 0d  epoch</returns>.
6ee0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
6ef0: 69 63 20 6c 6f 6e 67 20 54 6f 55 6e 69 78 45 70  ic long ToUnixEp
6f00: 6f 63 68 28 44 61 74 65 54 69 6d 65 20 76 61 6c  och(DateTime val
6f10: 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
6f20: 20 20 20 20 72 65 74 75 72 6e 20 28 76 61 6c 75      return (valu
6f30: 65 2e 53 75 62 74 72 61 63 74 28 55 6e 69 78 45  e.Subtract(UnixE
6f40: 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20 54 69  poch).Ticks / Ti
6f50: 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50 65 72 53  meSpan.TicksPerS
6f60: 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a  econd);..    }..
6f70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
6f80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
6f90: 75 72 6e 73 20 74 68 65 20 44 61 74 65 54 69 6d  urns the DateTim
6fa0: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
6fb0: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 73  to use for the s
6fc0: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
6fd0: 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eKind...    /// 
6fe0: 49 66 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  If <paramref nam
6ff0: 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22  e="formatString"
7000: 20 2f 3e 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c   /> is not null,
7010: 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 74 75   it will be retu
7020: 72 6e 65 64 20 76 65 72 62 61 74 69 6d 2e 0d 0a  rned verbatim...
7030: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7040: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
7050: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54  am name="kind">T
7060: 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  he DateTimeKind 
7070: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
7080: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7090: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69  name="formatStri
70a0: 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  ng">The DateTime
70b0: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74   format string t
70c0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
70d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
70e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44  >..    /// The D
70f0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
7100: 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f 72  tring to use for
7110: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44   the specified D
7120: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20  ateTimeKind...  
7130: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7140: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
7150: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
7160: 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61  ateTimeKindForma
7170: 74 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  t(..        Date
7180: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a  TimeKind kind,..
7190: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
71a0: 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20  ormatString..   
71b0: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
71c0: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61         if (forma
71d0: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29  tString != null)
71e0: 20 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 53 74   return formatSt
71f0: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 72  ring;..        r
7200: 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d 3d 20 44  eturn (kind == D
7210: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29  ateTimeKind.Utc)
7220: 20 3f 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d   ? _datetimeForm
7230: 61 74 55 74 63 20 3a 20 5f 64 61 74 65 74 69 6d  atUtc : _datetim
7240: 65 46 6f 72 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20  eFormatLocal;.. 
7250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
7260: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7270: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74  // Converts a st
7280: 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65  ring into a Date
7290: 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20  Time, using the 
72a0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20  DateTimeFormat, 
72b0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20  DateTimeKind,.. 
72c0: 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54     /// and DateT
72d0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
72e0: 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68  specified for th
72f0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65  e connection whe
7300: 6e 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e  n it was opened.
7310: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
7320: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
7330: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56  aram name="dateV
7340: 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69  alue">The DateTi
7350: 6d 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  me value to conv
7360: 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ert</param>..   
7370: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69   /// <returns>Ei
7380: 74 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f  ther a string co
7390: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e  ntaining the lon
73a0: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
73b0: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
73c0: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53  nd units since S
73d0: 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d  ystem.DateTime.M
73e0: 69 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20  inValue, a..    
73f0: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  /// Julian day d
7400: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
7410: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
7420: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
7430: 69 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74  ix epoch, a cult
7440: 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20  ure-independent 
7450: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
7460: 6e 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f  nd time..    ///
7470: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
7480: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
7490: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
74a0: 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
74b0: 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d  , or an ISO8601-
74c0: 66 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65  format date/time
74d0: 20 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e   string.</return
74e0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
74f0: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 44  tring ToString(D
7500: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
7510: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
7520: 20 20 20 72 65 74 75 72 6e 20 54 6f 53 74 72 69     return ToStri
7530: 6e 67 28 64 61 74 65 56 61 6c 75 65 2c 20 5f 64  ng(dateValue, _d
7540: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f  atetimeFormat, _
7550: 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64  datetimeKind, _d
7560: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
7570: 69 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ing);..    }....
7580: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7590: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
75a0: 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74  rts a string int
75b0: 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73  o a DateTime, us
75c0: 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65  ing the DateTime
75d0: 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65  Format, DateTime
75e0: 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61  Kind,..    /// a
75f0: 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  nd DateTimeForma
7600: 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65  tString specifie
7610: 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  d for the connec
7620: 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73  tion when it was
7630: 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f   opened...    //
7640: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7650: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7660: 65 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68  e="dateValue">Th
7670: 65 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  e DateTime value
7680: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
7690: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
76a0: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
76b0: 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61 74 65  ">The SQLiteDate
76c0: 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c  Formats to use.<
76d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
76e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
76f0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
7700: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
7710: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
7720: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61  aram name="forma
7730: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74  tString">The Dat
7740: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72  eTime format str
7750: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ing to use.</par
7760: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
7770: 74 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73  turns>Either a s
7780: 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
7790: 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65   the long intege
77a0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d  r number of 100-
77b0: 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73  nanosecond units
77c0: 20 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61   since System.Da
77d0: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
77e0: 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69   a..    /// Juli
77f0: 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61  an day double, a
7800: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
7810: 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63   of seconds sinc
7820: 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68  e the Unix epoch
7830: 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  , a culture-inde
7840: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
7850: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d  d date and time.
7860: 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c  .    /// string,
7870: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74   a formatted dat
7880: 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e  e and time strin
7890: 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  g in the current
78a0: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
78b0: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64  ISO8601-format d
78c0: 61 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e  ate/time string.
78d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
78e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
78f0: 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 0d 0a  ring ToString(..
7900: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7910: 20 64 61 74 65 56 61 6c 75 65 2c 0d 0a 20 20 20   dateValue,..   
7920: 20 20 20 20 20 53 51 4c 69 74 65 44 61 74 65 46       SQLiteDateF
7930: 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 2c 0d 0a  ormats format,..
7940: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7950: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
7960: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
7970: 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  tString..       
7980: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
7990: 20 20 20 73 77 69 74 63 68 20 28 66 6f 72 6d 61     switch (forma
79a0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
79b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
79c0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
79d0: 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 20 20 20  s.Ticks:..      
79e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
79f0: 20 64 61 74 65 56 61 6c 75 65 2e 54 69 63 6b 73   dateValue.Ticks
7a00: 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
7a10: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
7a20: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
7a30: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
7a40: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
7a50: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
7a60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7a70: 54 6f 4a 75 6c 69 61 6e 44 61 79 28 64 61 74 65  ToJulianDay(date
7a80: 56 61 6c 75 65 29 2e 54 6f 53 74 72 69 6e 67 28  Value).ToString(
7a90: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
7aa0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
7ac0: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
7ad0: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7af0: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 28 64 61  eturn ((long)(da
7b00: 74 65 56 61 6c 75 65 2e 53 75 62 74 72 61 63 74  teValue.Subtract
7b10: 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63 6b  (UnixEpoch).Tick
7b20: 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69 63  s / TimeSpan.Tic
7b30: 6b 73 50 65 72 53 65 63 6f 6e 64 29 29 2e 54 6f  ksPerSecond)).To
7b40: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
7b50: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
7b60: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e  teDateFormats.In
7b70: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d  variantCulture:.
7b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7b90: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
7ba0: 65 2e 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d  e.ToString((form
7bb0: 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c  atString != null
7bc0: 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
7bd0: 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53           formatS
7be0: 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d  tring : FullForm
7bf0: 61 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  at, CultureInfo.
7c00: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
7c10: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7c20: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
7c30: 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75  ormats.CurrentCu
7c40: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
7c50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
7c60: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
7c70: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
7c80: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
7c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ca0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
7cb0: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
7cc0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
7cd0: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
7ce0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20       default:.. 
7cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7d00: 65 74 75 72 6e 20 28 64 61 74 65 56 61 6c 75 65  eturn (dateValue
7d10: 2e 4b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d  .Kind == DateTim
7d20: 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65  eKind.Unspecifie
7d30: 64 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  d) ?..          
7d40: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
7d50: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 64  me.SpecifyKind(d
7d60: 61 74 65 56 61 6c 75 65 2c 20 6b 69 6e 64 29 2e  ateValue, kind).
7d70: 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ToString(..     
7d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d90: 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69     GetDateTimeKi
7da0: 6e 64 46 6f 72 6d 61 74 28 6b 69 6e 64 2c 20 66  ndFormat(kind, f
7db0: 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20  ormatString),.. 
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7dd0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
7de0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
7df0: 43 75 6c 74 75 72 65 29 20 3a 20 64 61 74 65 56  Culture) : dateV
7e00: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 0d 0a  alue.ToString(..
7e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e20: 20 20 20 20 20 20 20 20 47 65 74 44 61 74 65 54          GetDateT
7e30: 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 64 61  imeKindFormat(da
7e40: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c 20 66 6f  teValue.Kind, fo
7e50: 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20  rmatString),..  
7e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e70: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
7e80: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
7e90: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
7ea0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
7eb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7ec0: 0a 20 20 20 20 2f 2f 2f 20 49 6e 74 65 72 6e 61  .    /// Interna
7ed0: 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6f  l function to co
7ee0: 6e 76 65 72 74 20 61 20 55 54 46 2d 38 20 65 6e  nvert a UTF-8 en
7ef0: 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20  coded IntPtr of 
7f00: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65  the specified le
7f10: 6e 67 74 68 20 74 6f 20 61 20 44 61 74 65 54 69  ngth to a DateTi
7f20: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
7f30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
7f40: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
7f50: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 63 6f  /// This is a co
7f60: 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69  nvenience functi
7f70: 6f 6e 2c 20 77 68 69 63 68 20 66 69 72 73 74 20  on, which first 
7f80: 63 61 6c 6c 73 20 54 6f 53 74 72 69 6e 67 28 29  calls ToString()
7f90: 20 6f 6e 20 74 68 65 20 49 6e 74 50 74 72 20 74   on the IntPtr t
7fa0: 6f 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20  o convert it to 
7fb0: 61 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 63  a string, then c
7fc0: 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f  alls..    /// To
7fd0: 44 61 74 65 54 69 6d 65 28 29 20 6f 6e 20 74 68  DateTime() on th
7fe0: 65 20 73 74 72 69 6e 67 20 74 6f 20 72 65 74 75  e string to retu
7ff0: 72 6e 20 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a  rn a DateTime...
8000: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
8010: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
8020: 61 6d 20 6e 61 6d 65 3d 22 70 74 72 22 3e 41 20  am name="ptr">A 
8030: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 55  pointer to the U
8040: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72  TF-8 encoded str
8050: 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ing</param>..   
8060: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8070: 3d 22 6c 65 6e 22 3e 54 68 65 20 6c 65 6e 67 74  ="len">The lengt
8080: 68 20 69 6e 20 62 79 74 65 73 20 6f 66 20 74 68  h in bytes of th
8090: 65 20 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e  e string</param>
80a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
80b0: 6e 73 3e 54 68 65 20 70 61 72 73 65 64 20 44 61  ns>The parsed Da
80c0: 74 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65  teTime value</re
80d0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
80e0: 72 6e 61 6c 20 44 61 74 65 54 69 6d 65 20 54 6f  rnal DateTime To
80f0: 44 61 74 65 54 69 6d 65 28 49 6e 74 50 74 72 20  DateTime(IntPtr 
8100: 70 74 72 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a 20  ptr, int len).. 
8110: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
8120: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 54 6f  rn ToDateTime(To
8130: 53 74 72 69 6e 67 28 70 74 72 2c 20 6c 65 6e 29  String(ptr, len)
8140: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
8150: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8160: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8170: 20 20 20 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65      /// Smart me
8180: 74 68 6f 64 20 6f 66 20 73 70 6c 69 74 74 69 6e  thod of splittin
8190: 67 20 61 20 73 74 72 69 6e 67 2e 20 20 53 6b 69  g a string.  Ski
81a0: 70 73 20 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e  ps quoted elemen
81b0: 74 73 2c 20 72 65 6d 6f 76 65 73 20 74 68 65 20  ts, removes the 
81c0: 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  quotes...    ///
81d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
81e0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
81f0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c      /// This spl
8200: 69 74 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b  it function work
8210: 73 20 73 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20  s somewhat like 
8220: 74 68 65 20 53 74 72 69 6e 67 2e 53 70 6c 69 74  the String.Split
8230: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74  () function in t
8240: 68 61 74 20 69 74 20 62 72 65 61 6b 73 20 61 70  hat it breaks ap
8250: 61 72 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74  art a string int
8260: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 70 69 65 63 65  o..    /// piece
8270: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
8280: 65 20 70 69 65 63 65 73 20 61 73 20 61 6e 20 61  e pieces as an a
8290: 72 72 61 79 2e 20 20 54 68 65 20 70 72 69 6d 61  rray.  The prima
82a0: 72 79 20 64 69 66 66 65 72 65 6e 63 65 73 20 61  ry differences a
82b0: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
82c0: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
82d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
82e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e  ><description>On
82f0: 6c 79 20 6f 6e 65 20 63 68 61 72 61 63 74 65 72  ly one character
8300: 20 63 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64   can be provided
8310: 20 61 73 20 61 20 73 65 70 61 72 61 74 6f 72 20   as a separator 
8320: 63 68 61 72 61 63 74 65 72 3c 2f 64 65 73 63 72  character</descr
8330: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
8340: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
8350: 65 73 63 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65  escription>Quote
8360: 64 20 74 65 78 74 20 69 6e 73 69 64 65 20 74 68  d text inside th
8370: 65 20 73 74 72 69 6e 67 20 69 73 20 73 6b 69 70  e string is skip
8380: 70 65 64 20 6f 76 65 72 20 77 68 65 6e 20 73 65  ped over when se
8390: 61 72 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20  arching for the 
83a0: 73 65 70 61 72 61 74 6f 72 2c 20 61 6e 64 20 74  separator, and t
83b0: 68 65 20 71 75 6f 74 65 73 20 61 72 65 20 72 65  he quotes are re
83c0: 6d 6f 76 65 64 2e 3c 2f 64 65 73 63 72 69 70 74  moved.</descript
83d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
83e0: 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20   /// </list>..  
83f0: 20 20 2f 2f 2f 20 54 68 75 73 2c 20 69 66 20 73    /// Thus, if s
8400: 70 6c 69 74 74 69 6e 67 20 74 68 65 20 66 6f 6c  plitting the fol
8410: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f  lowing string lo
8420: 6f 6b 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d  oking for a comm
8430: 61 3a 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  a:<br/>..    ///
8440: 20 4f 6e 65 2c 54 77 6f 2c 20 22 54 68 72 65 65   One,Two, "Three
8450: 2c 20 46 6f 75 72 22 2c 20 46 69 76 65 3c 62 72  , Four", Five<br
8460: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
8470: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
8480: 65 73 75 6c 74 69 6e 67 20 61 72 72 61 79 20 77  esulting array w
8490: 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f  ould contain<br/
84a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f  >..    /// [0] O
84b0: 6e 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ne<br/>..    ///
84c0: 20 5b 31 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20   [1] Two<br/>.. 
84d0: 20 20 20 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65     /// [2] Three
84e0: 2c 20 46 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20  , Four<br/>..   
84f0: 20 2f 2f 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72   /// [3] Five<br
8500: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
8510: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20  >..    /// Note 
8520: 74 68 61 74 20 74 68 65 20 6c 65 61 64 69 6e 67  that the leading
8530: 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 73 70   and trailing sp
8540: 61 63 65 73 20 77 65 72 65 20 72 65 6d 6f 76 65  aces were remove
8550: 64 20 66 72 6f 6d 20 65 61 63 68 20 69 74 65 6d  d from each item
8560: 20 64 75 72 69 6e 67 20 74 68 65 20 73 70 6c 69   during the spli
8570: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
8580: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
8590: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
85a0: 72 63 65 22 3e 53 6f 75 72 63 65 20 73 74 72 69  rce">Source stri
85b0: 6e 67 20 74 6f 20 73 70 6c 69 74 20 61 70 61 72  ng to split apar
85c0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
85d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
85e0: 73 65 70 61 72 61 74 6f 72 22 3e 53 65 70 61 72  separator">Separ
85f0: 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 3c 2f  ator character</
8600: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
8610: 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69 6e  <returns>A strin
8620: 67 20 61 72 72 61 79 20 6f 66 20 74 68 65 20 73  g array of the s
8630: 70 6c 69 74 20 75 70 20 65 6c 65 6d 65 6e 74 73  plit up elements
8640: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
8650: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
8660: 72 69 6e 67 5b 5d 20 53 70 6c 69 74 28 73 74 72  ring[] Split(str
8670: 69 6e 67 20 73 6f 75 72 63 65 2c 20 63 68 61 72  ing source, char
8680: 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20   separator)..   
8690: 20 7b 0d 0a 20 20 20 20 20 20 63 68 61 72 5b 5d   {..      char[]
86a0: 20 74 6f 6b 73 20 3d 20 6e 65 77 20 63 68 61 72   toks = new char
86b0: 5b 32 5d 20 7b 20 27 5c 22 27 2c 20 73 65 70 61  [2] { '\"', sepa
86c0: 72 61 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20  rator };..      
86d0: 63 68 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65  char[] quot = ne
86e0: 77 20 63 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27  w char[1] { '\"'
86f0: 20 7d 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e   };..      int n
8700: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73   = 0;..      Lis
8710: 74 3c 73 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e  t<string> ls = n
8720: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
8730: 29 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  );..      string
8740: 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69   s;....      whi
8750: 6c 65 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74  le (source.Lengt
8760: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d  h > 0)..      {.
8770: 0a 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75  .        n = sou
8780: 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74  rce.IndexOfAny(t
8790: 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20  oks, n);..      
87a0: 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62    if (n == -1) b
87b0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69  reak;..        i
87c0: 66 20 28 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20  f (source[n] == 
87d0: 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  toks[0])..      
87e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
87f0: 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65  /source = source
8800: 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a  .Remove(n, 1);..
8810: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f            n = so
8820: 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28  urce.IndexOfAny(
8830: 71 75 6f 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20  quot, n + 1);.. 
8840: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d           if (n =
8850: 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20  = -1)..         
8860: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8870: 2f 2f 73 6f 75 72 63 65 20 3d 20 22 5c 22 22 20  //source = "\"" 
8880: 2b 20 73 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20  + source;..     
8890: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
88a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
88b0: 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20        n++;..    
88c0: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
88d0: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
88e0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  , 1);..        }
88f0: 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
8900: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8910: 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e       s = source.
8920: 53 75 62 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e  Substring(0, n).
8930: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
8940: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
8950: 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71  > 1 && s[0] == q
8960: 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65  uot[0] && s[s.Le
8970: 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30  ngth - 1] == s[0
8980: 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ])..            
8990: 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28  s = s.Substring(
89a0: 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29  1, s.Length - 2)
89b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
89c0: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 53  ource = source.S
89d0: 75 62 73 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e  ubstring(n + 1).
89e0: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
89f0: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
8a00: 3e 20 30 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d  > 0) ls.Add(s);.
8a10: 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 30  .          n = 0
8a20: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
8a30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 20      }..      if 
8a40: 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e  (source.Length >
8a50: 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   0)..      {..  
8a60: 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65        s = source
8a70: 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20  .Trim();..      
8a80: 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e    if (s.Length >
8a90: 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75   1 && s[0] == qu
8aa0: 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e  ot[0] && s[s.Len
8ab0: 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d  gth - 1] == s[0]
8ac0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d  )..          s =
8ad0: 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20   s.Substring(1, 
8ae0: 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a  s.Length - 2);..
8af0: 20 20 20 20 20 20 20 20 6c 73 2e 41 64 64 28 73          ls.Add(s
8b00: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
8b10: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
8b20: 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73   = new string[ls
8b30: 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20  .Count];..      
8b40: 6c 73 2e 43 6f 70 79 54 6f 28 61 72 2c 20 30 29  ls.CopyTo(ar, 0)
8b50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
8b60: 6e 20 61 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  n ar;..    }....
8b70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8b80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74  >..    /// Split
8b90: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
8ba0: 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74  string into mult
8bb0: 69 70 6c 65 20 73 74 72 69 6e 67 73 20 62 61 73  iple strings bas
8bc0: 65 64 20 6f 6e 20 61 20 73 65 70 61 72 61 74 6f  ed on a separato
8bd0: 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72  r..    /// and r
8be0: 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c  eturns the resul
8bf0: 74 20 61 73 20 61 6e 20 61 72 72 61 79 20 6f 66  t as an array of
8c00: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f   strings...    /
8c10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8c20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8c30: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
8c40: 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20   /// The string 
8c50: 74 6f 20 73 70 6c 69 74 20 69 6e 74 6f 20 70 69  to split into pi
8c60: 65 63 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68  eces based on th
8c70: 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72  e separator char
8c80: 61 63 74 65 72 2e 20 20 49 66 0d 0a 20 20 20 20  acter.  If..    
8c90: 2f 2f 2f 20 74 68 69 73 20 73 74 72 69 6e 67 20  /// this string 
8ca0: 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69  is null, null wi
8cb0: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65 74  ll always be ret
8cc0: 75 72 6e 65 64 2e 20 20 49 66 20 74 68 69 73 20  urned.  If this 
8cd0: 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f  string is..    /
8ce0: 2f 2f 20 65 6d 70 74 79 2c 20 61 6e 20 61 72 72  // empty, an arr
8cf0: 61 79 20 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e  ay of zero strin
8d00: 67 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  gs will always b
8d10: 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
8d20: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8d30: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8d40: 6d 65 3d 22 73 65 70 61 72 61 74 6f 72 22 3e 0d  me="separator">.
8d50: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 68 61  .    /// The cha
8d60: 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20 64  racter used to d
8d70: 69 76 69 64 65 20 74 68 65 20 6f 72 69 67 69 6e  ivide the origin
8d80: 61 6c 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 73  al string into s
8d90: 75 62 2d 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20  ub-strings...   
8da0: 20 2f 2f 2f 20 54 68 69 73 20 63 68 61 72 61 63   /// This charac
8db0: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 61 20  ter cannot be a 
8dc0: 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64  backslash or a d
8dd0: 6f 75 62 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68  ouble-quote; oth
8de0: 65 72 77 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20  erwise, no..    
8df0: 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65  /// work will be
8e00: 20 70 65 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e   performed and n
8e10: 75 6c 6c 20 77 69 6c 6c 20 62 65 20 72 65 74 75  ull will be retu
8e20: 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rned...    /// <
8e30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
8e40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65   <param name="ke
8e50: 65 70 51 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f  epQuote">..    /
8e60: 2f 2f 20 49 66 20 74 68 69 73 20 70 61 72 61 6d  // If this param
8e70: 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  eter is non-zero
8e80: 2c 20 61 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f  , all double-quo
8e90: 74 65 20 63 68 61 72 61 63 74 65 72 73 20 77 69  te characters wi
8ea0: 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72  ll be..    /// r
8eb0: 65 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 72  etained in the r
8ec0: 65 74 75 72 6e 65 64 20 6c 69 73 74 20 6f 66 20  eturned list of 
8ed0: 73 74 72 69 6e 67 73 3b 20 6f 74 68 65 72 77 69  strings; otherwi
8ee0: 73 65 2c 20 74 68 65 79 20 77 69 6c 6c 20 62 65  se, they will be
8ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65  ..    /// droppe
8f00: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8f10: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8f20: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
8f30: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ">..    /// Upon
8f40: 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
8f50: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
8f60: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
8f70: 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69  tain an appropri
8f80: 61 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72  ate..    /// err
8f90: 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
8fa0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8fb0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8fc0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
8fd0: 77 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  w array of strin
8fe0: 67 73 20 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68  gs or null if th
8ff0: 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 69  e input string i
9000: 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d  s null -OR- the.
9010: 0a 20 20 20 20 2f 2f 2f 20 73 65 70 61 72 61 74  .    /// separat
9020: 6f 72 20 63 68 61 72 61 63 74 65 72 20 69 73 20  or character is 
9030: 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61  a backslash or a
9040: 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f   double-quote -O
9050: 52 2d 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20  R- the string.. 
9060: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20     /// contains 
9070: 61 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 62 61  an unbalanced ba
9080: 63 6b 73 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c  ckslash or doubl
9090: 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  e-quote characte
90a0: 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  r...    /// </re
90b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
90c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
90d0: 6e 67 5b 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a  ng[] NewSplit(..
90e0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
90f0: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 63  alue,..        c
9100: 68 61 72 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a  har separator,..
9110: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65          bool kee
9120: 70 51 75 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20  pQuote,..       
9130: 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
9140: 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  r..        )..  
9150: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e    {..        con
9160: 73 74 20 63 68 61 72 20 45 73 63 61 70 65 43 68  st char EscapeCh
9170: 61 72 20 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20  ar = '\\';..    
9180: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 51      const char Q
9190: 75 6f 74 65 43 68 61 72 20 3d 20 27 5c 22 27 3b  uoteChar = '\"';
91a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
91b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
91c0: 20 49 74 20 69 73 20 69 6c 6c 65 67 61 6c 20 66   It is illegal f
91d0: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
91e0: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
91f0: 20 65 69 74 68 65 72 20 61 0d 0a 20 20 20 20 20   either a..     
9200: 20 20 20 2f 2f 20 20 20 20 20 20 20 62 61 63 6b     //       back
9210: 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c  slash or a doubl
9220: 65 2d 71 75 6f 74 65 20 62 65 63 61 75 73 65 20  e-quote because 
9230: 62 6f 74 68 20 6f 66 20 74 68 6f 73 65 20 63 68  both of those ch
9240: 61 72 61 63 74 65 72 73 0d 0a 20 20 20 20 20 20  aracters..      
9250: 20 20 2f 2f 20 20 20 20 20 20 20 61 72 65 20 75    //       are u
9260: 73 65 64 20 66 6f 72 20 65 73 63 61 70 69 6e 67  sed for escaping
9270: 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65 72   other character
9280: 73 20 28 65 2e 67 2e 20 74 68 65 20 73 65 70 61  s (e.g. the sepa
9290: 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  rator..        /
92a0: 2f 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65  /       characte
92b0: 72 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  r)...        //.
92c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 73 65  .        if ((se
92d0: 70 61 72 61 74 6f 72 20 3d 3d 20 45 73 63 61 70  parator == Escap
92e0: 65 43 68 61 72 29 20 7c 7c 20 28 73 65 70 61 72  eChar) || (separ
92f0: 61 74 6f 72 20 3d 3d 20 51 75 6f 74 65 43 68 61  ator == QuoteCha
9300: 72 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  r))..        {..
9310: 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
9320: 72 20 3d 20 22 73 65 70 61 72 61 74 6f 72 20 63  r = "separator c
9330: 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20  haracter cannot 
9340: 62 65 20 74 68 65 20 65 73 63 61 70 65 20 6f 72  be the escape or
9350: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
9360: 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s";..           
9370: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
9380: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9390: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
93a0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
93b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
93c0: 72 72 6f 72 20 3d 20 22 73 74 72 69 6e 67 20 76  rror = "string v
93d0: 61 6c 75 65 20 74 6f 20 73 70 6c 69 74 20 63 61  alue to split ca
93e0: 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a  nnot be null";..
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9400: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
9410: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
9420: 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75  nt length = valu
9430: 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  e.Length;....   
9440: 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
9450: 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
9460: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 73 74     return new st
9470: 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  ring[0];....    
9480: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
9490: 20 6c 69 73 74 20 3d 20 6e 65 77 20 4c 69 73 74   list = new List
94a0: 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20  <string>();..   
94b0: 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
94c0: 65 72 20 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77  er element = new
94d0: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
94e0: 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ;..        int i
94f0: 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20  ndex = 0;..     
9500: 20 20 20 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d     bool escape =
9510: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
9520: 20 62 6f 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61   bool quote = fa
9530: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9540: 77 68 69 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c  while (index < l
9550: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
9560: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
9570: 68 61 72 20 63 68 61 72 61 63 74 65 72 20 3d 20  har character = 
9580: 76 61 6c 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d  value[index++];.
9590: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
95a0: 66 20 28 65 73 63 61 70 65 29 0d 0a 20 20 20 20  f (escape)..    
95b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
95c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
95e0: 2f 20 48 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e  / HACK: Only con
95f0: 73 69 64 65 72 20 74 68 65 20 65 73 63 61 70 65  sider the escape
9600: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
9610: 20 61 6e 20 61 63 74 75 61 6c 0d 0a 20 20 20 20   an actual..    
9620: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
9630: 20 20 20 20 20 22 65 73 63 61 70 65 22 20 69 66       "escape" if
9640: 20 69 74 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20   it is followed 
9650: 62 79 20 61 20 72 65 73 65 72 76 65 64 20 63 68  by a reserved ch
9660: 61 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20  aracter;..      
9670: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9680: 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 65 6d     otherwise, em
9690: 69 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  it the original 
96a0: 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72  escape character
96b0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
96c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
96d0: 68 65 20 63 75 72 72 65 6e 74 20 63 68 61 72 61  he current chara
96e0: 63 74 65 72 20 69 6e 20 61 6e 20 65 66 66 6f 72  cter in an effor
96f0: 74 20 74 6f 20 68 65 6c 70 20 70 72 65 73 65 72  t to help preser
9700: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
9710: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
9720: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
9730: 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20   content...     
9740: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9760: 66 20 28 28 63 68 61 72 61 63 74 65 72 20 21 3d  f ((character !=
9770: 20 45 73 63 61 70 65 43 68 61 72 29 20 26 26 0d   EscapeChar) &&.
9780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9790: 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72 20       (character 
97a0: 21 3d 20 51 75 6f 74 65 43 68 61 72 29 20 26 26  != QuoteChar) &&
97b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97c0: 20 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72        (character
97d0: 20 21 3d 20 73 65 70 61 72 61 74 6f 72 29 29 0d   != separator)).
97e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
97f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9800: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
9810: 41 70 70 65 6e 64 28 45 73 63 61 70 65 43 68 61  Append(EscapeCha
9820: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9830: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9840: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
9850: 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74  t.Append(charact
9860: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
9870: 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 66        escape = f
9880: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
9890: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
98a0: 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72 61    else if (chara
98b0: 63 74 65 72 20 3d 3d 20 45 73 63 61 70 65 43 68  cter == EscapeCh
98c0: 61 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ar)..           
98d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
98e0: 20 20 20 20 65 73 63 61 70 65 20 3d 20 74 72 75      escape = tru
98f0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
9900: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
9910: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
9920: 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 0d  r == QuoteChar).
9930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9950: 69 66 20 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a  if (keepQuote)..
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9970: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65      element.Appe
9980: 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a  nd(character);..
9990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
99a0: 20 20 71 75 6f 74 65 20 3d 20 21 71 75 6f 74 65    quote = !quote
99b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
99c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
99d0: 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72  se if (character
99e0: 20 3d 3d 20 73 65 70 61 72 61 74 6f 72 29 0d 0a   == separator)..
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9a10: 66 20 28 71 75 6f 74 65 29 0d 0a 20 20 20 20 20  f (quote)..     
9a20: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a40: 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64    element.Append
9a50: 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20  (character);..  
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a80: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
9a90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
9ab0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
9ac0: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20  oString());..   
9ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ae0: 20 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20   element.Length 
9af0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
9b00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9b10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9b20: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
9b30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9b40: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
9b50: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
9b60: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9b70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9b80: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
9b90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e       // NOTE: An
9ba0: 20 75 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61   unbalanced esca
9bb0: 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72  pe or quote char
9bc0: 61 63 74 65 72 20 69 6e 20 74 68 65 20 73 74 72  acter in the str
9bd0: 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ing is..        
9be0: 2f 2f 20 20 20 20 20 20 20 63 6f 6e 73 69 64 65  //       conside
9bf0: 72 65 64 20 74 6f 20 62 65 20 61 20 66 61 74 61  red to be a fata
9c00: 6c 20 65 72 72 6f 72 3b 20 74 68 65 72 65 66 6f  l error; therefo
9c10: 72 65 2c 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e  re, return null.
9c20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
9c30: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
9c40: 20 7c 7c 20 71 75 6f 74 65 29 0d 0a 20 20 20 20   || quote)..    
9c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9c60: 20 20 20 65 72 72 6f 72 20 3d 20 22 75 6e 62 61     error = "unba
9c70: 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f 72  lanced escape or
9c80: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
9c90: 20 66 6f 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20   found";..      
9ca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
9cb0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
9cc0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65  .        if (ele
9cd0: 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29  ment.Length > 0)
9ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69  ..            li
9cf0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
9d00: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20  oString());.... 
9d10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69         return li
9d20: 73 74 2e 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20  st.ToArray();.. 
9d30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
9d40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
9d50: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
9d60: 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e  eturns the strin
9d70: 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
9d80: 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63 74 2c 20   for an object, 
9d90: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f  using the..    /
9da0: 2f 2f 20 73 70 65 63 69 66 69 65 64 20 28 6f 72  // specified (or
9db0: 20 63 75 72 72 65 6e 74 29 20 66 6f 72 6d 61 74   current) format
9dc0: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
9dd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9de0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9df0: 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20  ame="obj">..    
9e00: 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 69  /// The object i
9e10: 6e 73 74 61 6e 63 65 20 74 6f 20 72 65 74 75 72  nstance to retur
9e20: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70  n the string rep
9e30: 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 2e  resentation for.
9e40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
9e50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
9e60: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65  am name="provide
9e70: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  r">..    /// The
9e80: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9e90: 20 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c   to use -OR- nul
9ea0: 6c 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74  l if the current
9eb0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9ec0: 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 74 68   for..    /// th
9ed0: 65 20 74 68 72 65 61 64 20 73 68 6f 75 6c 64 20  e thread should 
9ee0: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e  be used instead.
9ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
9f00: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
9f10: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
9f20: 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73  he string repres
9f30: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
9f40: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
9f50: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
9f60: 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63  e..    /// objec
9f70: 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 61 6c  t instance is al
9f80: 73 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f  so null...    //
9f90: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9fa0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
9fb0: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 57  string ToStringW
9fc0: 69 74 68 50 72 6f 76 69 64 65 72 28 0d 0a 20 20  ithProvider(..  
9fd0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a        object obj
9fe0: 2c 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d  ,..        IForm
9ff0: 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69  atProvider provi
a000: 64 65 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  der..        )..
a010: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
a020: 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d  f (obj == null).
a030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
a040: 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 6e 75 6c  urn null; /* nul
a050: 6c 20 2d 2d 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d  l --> null */...
a060: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
a070: 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
a080: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a090: 28 73 74 72 69 6e 67 29 6f 62 6a 3b 20 2f 2a 20  (string)obj; /* 
a0a0: 69 64 65 6e 74 69 74 79 20 2a 2f 0d 0a 0d 0a 20  identity */.... 
a0b0: 20 20 20 20 20 20 20 49 43 6f 6e 76 65 72 74 69         IConverti
a0c0: 62 6c 65 20 63 6f 6e 76 65 72 74 69 62 6c 65 20  ble convertible 
a0d0: 3d 20 6f 62 6a 20 61 73 20 49 43 6f 6e 76 65 72  = obj as IConver
a0e0: 74 69 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tible;....      
a0f0: 20 20 69 66 20 28 63 6f 6e 76 65 72 74 69 62 6c    if (convertibl
a100: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
a110: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
a120: 6f 6e 76 65 72 74 69 62 6c 65 2e 54 6f 53 74 72  onvertible.ToStr
a130: 69 6e 67 28 70 72 6f 76 69 64 65 72 29 3b 0d 0a  ing(provider);..
a140: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
a150: 20 6f 62 6a 2e 54 6f 53 74 72 69 6e 67 28 29 3b   obj.ToString();
a160: 20 2f 2a 20 6e 6f 74 20 49 43 6f 6e 76 65 72 74   /* not IConvert
a170: 69 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ible */..    }..
a180: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
a190: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74  ry>..    /// Att
a1a0: 65 6d 70 74 73 20 74 6f 20 63 6f 6e 76 65 72 74  empts to convert
a1b0: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 6f 62   an arbitrary ob
a1c0: 6a 65 63 74 20 74 6f 20 74 68 65 20 42 6f 6f 6c  ject to the Bool
a1d0: 65 61 6e 20 64 61 74 61 20 74 79 70 65 2e 0d 0a  ean data type...
a1e0: 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 6f 62 6a      /// Null obj
a1f0: 65 63 74 20 76 61 6c 75 65 73 20 61 72 65 20 63  ect values are c
a200: 6f 6e 76 65 72 74 65 64 20 74 6f 20 66 61 6c 73  onverted to fals
a210: 65 2e 20 20 54 68 72 6f 77 73 20 61 6e 20 65 78  e.  Throws an ex
a220: 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  ception..    ///
a230: 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
a240: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a250: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
a260: 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a  am name="obj">..
a270: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
a280: 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  ct value to conv
a290: 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ert...    /// </
a2a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
a2b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
a2c0: 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f  vider">..    ///
a2d0: 20 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f 76   The format prov
a2e0: 69 64 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20  ider to use...  
a2f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a300: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a310: 61 6d 65 3d 22 76 69 61 46 72 61 6d 65 77 6f 72  ame="viaFramewor
a320: 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  k">..    /// If 
a330: 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 20 73 74 72 69  non-zero, a stri
a340: 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  ng value will be
a350: 20 63 6f 6e 76 65 72 74 65 64 20 75 73 69 6e 67   converted using
a360: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
a370: 65 65 20 63 72 65 66 3d 22 43 6f 6e 76 65 72 74  ee cref="Convert
a380: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 4f 62 6a 65 63  .ToBoolean(Objec
a390: 74 2c 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  t, IFormatProvid
a3a0: 65 72 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  er)" />..    ///
a3b0: 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
a3c0: 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
a3d0: 66 3d 22 54 6f 42 6f 6f 6c 65 61 6e 28 53 74 72  f="ToBoolean(Str
a3e0: 69 6e 67 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  ing)" />..    //
a3f0: 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  / method will be
a400: 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20   used...    /// 
a410: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
a420: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
a430: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
a440: 65 64 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  ed boolean value
a450: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
a460: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
a470: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
a480: 54 6f 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20  ToBoolean(..    
a490: 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d      object obj,.
a4a0: 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74  .        IFormat
a4b0: 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65  Provider provide
a4c0: 72 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  r,..        bool
a4d0: 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 0d 0a 20   viaFramework.. 
a4e0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
a4f0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
a500: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a510: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a520: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a530: 54 79 70 65 43 6f 64 65 20 74 79 70 65 43 6f 64  TypeCode typeCod
a540: 65 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  e = Type.GetType
a550: 43 6f 64 65 28 6f 62 6a 2e 47 65 74 54 79 70 65  Code(obj.GetType
a560: 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ());....        
a570: 73 77 69 74 63 68 20 28 74 79 70 65 43 6f 64 65  switch (typeCode
a580: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a590: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a5a0: 79 70 65 43 6f 64 65 2e 45 6d 70 74 79 3a 0d 0a  ypeCode.Empty:..
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a5c0: 20 54 79 70 65 43 6f 64 65 2e 44 42 4e 75 6c 6c   TypeCode.DBNull
a5d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
a5e0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a600: 73 65 20 54 79 70 65 43 6f 64 65 2e 42 6f 6f 6c  se TypeCode.Bool
a610: 65 61 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ean:..          
a620: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 62 6f        return (bo
a630: 6f 6c 29 6f 62 6a 3b 0d 0a 20 20 20 20 20 20 20  ol)obj;..       
a640: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a650: 64 65 2e 43 68 61 72 3a 0d 0a 20 20 20 20 20 20  de.Char:..      
a660: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a670: 20 28 28 63 68 61 72 29 6f 62 6a 29 20 21 3d 20   ((char)obj) != 
a680: 28 63 68 61 72 29 30 20 3f 20 74 72 75 65 20 3a  (char)0 ? true :
a690: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a6a0: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a6b0: 64 65 2e 53 42 79 74 65 3a 0d 0a 20 20 20 20 20  de.SByte:..     
a6c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a6d0: 6e 20 28 28 73 62 79 74 65 29 6f 62 6a 29 20 21  n ((sbyte)obj) !
a6e0: 3d 20 28 73 62 79 74 65 29 30 20 3f 20 74 72 75  = (sbyte)0 ? tru
a6f0: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a700: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a710: 65 43 6f 64 65 2e 42 79 74 65 3a 0d 0a 20 20 20  eCode.Byte:..   
a720: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a730: 75 72 6e 20 28 28 62 79 74 65 29 6f 62 6a 29 20  urn ((byte)obj) 
a740: 21 3d 20 28 62 79 74 65 29 30 20 3f 20 74 72 75  != (byte)0 ? tru
a750: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a760: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a770: 65 43 6f 64 65 2e 49 6e 74 31 36 3a 0d 0a 20 20  eCode.Int16:..  
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a790: 74 75 72 6e 20 28 28 73 68 6f 72 74 29 6f 62 6a  turn ((short)obj
a7a0: 29 20 21 3d 20 28 73 68 6f 72 74 29 30 20 3f 20  ) != (short)0 ? 
a7b0: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
a7c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
a7d0: 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 31 36 3a  TypeCode.UInt16:
a7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a7f0: 20 20 72 65 74 75 72 6e 20 28 28 75 73 68 6f 72    return ((ushor
a800: 74 29 6f 62 6a 29 20 21 3d 20 28 75 73 68 6f 72  t)obj) != (ushor
a810: 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  t)0 ? true : fal
a820: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
a830: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49   case TypeCode.I
a840: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
a850: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a860: 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 69 6e 74  int)obj) != (int
a870: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
a880: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a890: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49  case TypeCode.UI
a8a0: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
a8b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a8c0: 75 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 75 69  uint)obj) != (ui
a8d0: 6e 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  nt)0 ? true : fa
a8e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a8f0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a900: 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20  Int64:..        
a910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
a920: 28 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 6c  (long)obj) != (l
a930: 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20 66  ong)0 ? true : f
a940: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
a950: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a960: 2e 55 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20  .UInt64:..      
a970: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a980: 20 28 28 75 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d   ((ulong)obj) !=
a990: 20 28 75 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65   (ulong)0 ? true
a9a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a9b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a9c0: 43 6f 64 65 2e 53 69 6e 67 6c 65 3a 0d 0a 20 20  Code.Single:..  
a9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a9e0: 74 75 72 6e 20 28 28 66 6c 6f 61 74 29 6f 62 6a  turn ((float)obj
a9f0: 29 20 21 3d 20 28 66 6c 6f 61 74 29 30 2e 30 20  ) != (float)0.0 
aa00: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
aa10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
aa20: 65 20 54 79 70 65 43 6f 64 65 2e 44 6f 75 62 6c  e TypeCode.Doubl
aa30: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
aa40: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 6f 75      return ((dou
aa50: 62 6c 65 29 6f 62 6a 29 20 21 3d 20 28 64 6f 75  ble)obj) != (dou
aa60: 62 6c 65 29 30 2e 30 20 3f 20 74 72 75 65 20 3a  ble)0.0 ? true :
aa70: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
aa80: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
aa90: 64 65 2e 44 65 63 69 6d 61 6c 3a 0d 0a 20 20 20  de.Decimal:..   
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
aab0: 75 72 6e 20 28 28 64 65 63 69 6d 61 6c 29 6f 62  urn ((decimal)ob
aac0: 6a 29 20 21 3d 20 44 65 63 69 6d 61 6c 2e 5a 65  j) != Decimal.Ze
aad0: 72 6f 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  ro ? true : fals
aae0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
aaf0: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53 74  case TypeCode.St
ab00: 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20  ring:..         
ab10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 69         return vi
ab20: 61 46 72 61 6d 65 77 6f 72 6b 20 3f 0d 0a 20 20  aFramework ?..  
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab40: 20 20 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c    Convert.ToBool
ab50: 65 61 6e 28 6f 62 6a 2c 20 70 72 6f 76 69 64 65  ean(obj, provide
ab60: 72 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  r) :..          
ab70: 20 20 20 20 20 20 20 20 20 20 54 6f 42 6f 6f 6c            ToBool
ab80: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
ab90: 50 72 6f 76 69 64 65 72 28 6f 62 6a 2c 20 70 72  Provider(obj, pr
aba0: 6f 76 69 64 65 72 29 29 3b 0d 0a 20 20 20 20 20  ovider));..     
abb0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
abc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
abd0: 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
abe0: 65 45 78 63 65 70 74 69 6f 6e 28 53 74 72 69 6e  eException(Strin
abf0: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
ac00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
ac10: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
ac20: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac40: 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65 72 74 20  "Cannot convert 
ac50: 74 79 70 65 20 7b 30 7d 20 74 6f 20 62 6f 6f 6c  type {0} to bool
ac60: 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ean",..         
ac70: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 43             typeC
ac80: 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode));..        
ac90: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
aca0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
acb0: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61     /// Convert a
acc0: 20 76 61 6c 75 65 20 74 6f 20 74 72 75 65 20 6f   value to true o
acd0: 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f  r false...    //
ace0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
acf0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ad00: 65 3d 22 73 6f 75 72 63 65 22 3e 41 20 73 74 72  e="source">A str
ad10: 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72 20 72 65  ing or number re
ad20: 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20  presenting true 
ad30: 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e  or false</param>
ad40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
ad50: 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ns></returns>.. 
ad60: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
ad70: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28   bool ToBoolean(
ad80: 6f 62 6a 65 63 74 20 73 6f 75 72 63 65 29 0d 0a  object source)..
ad90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
ada0: 28 73 6f 75 72 63 65 20 69 73 20 62 6f 6f 6c 29  (source is bool)
adb0: 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 73 6f   return (bool)so
adc0: 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  urce;....      r
add0: 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65 61 6e 28  eturn ToBoolean(
ade0: 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76  ToStringWithProv
adf0: 69 64 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  ider(..         
ae00: 20 73 6f 75 72 63 65 2c 20 43 75 6c 74 75 72 65   source, Culture
ae10: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
ae20: 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20 20 7d 0d  lture));..    }.
ae30: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
ae40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
ae50: 6e 76 65 72 74 20 61 20 73 74 72 69 6e 67 20 74  nvert a string t
ae60: 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 2e  o true or false.
ae70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ae80: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
ae90: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63  aram name="sourc
aea0: 65 22 3e 41 20 73 74 72 69 6e 67 20 72 65 70 72  e">A string repr
aeb0: 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20 6f 72  esenting true or
aec0: 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a   false</param>..
aed0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
aee0: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
aef0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
af00: 20 20 20 20 2f 2f 2f 20 22 79 65 73 22 2c 20 22      /// "yes", "
af10: 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22 2c 20 22  no", "y", "n", "
af20: 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22 2c 20 22  0", "1", "on", "
af30: 6f 66 66 22 20 61 73 20 77 65 6c 6c 20 61 73 20  off" as well as 
af40: 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53 74 72  Boolean.FalseStr
af50: 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65 61 6e 2e  ing and Boolean.
af60: 54 72 75 65 53 74 72 69 6e 67 20 77 69 6c 6c 20  TrueString will 
af70: 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20  all be..    /// 
af80: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 70  converted to a p
af90: 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e 20 76 61  roper boolean va
afa0: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
afb0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 70 75  remarks>..    pu
afc0: 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c  blic static bool
afd0: 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74 72 69 6e   ToBoolean(strin
afe0: 67 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b  g source)..    {
aff0: 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72 69  ..      if (Stri
b000: 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63  ng.Compare(sourc
b010: 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74 72 69  e, bool.TrueStri
b020: 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ng, StringCompar
b030: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
b040: 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72 65  reCase) == 0) re
b050: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
b060: 20 20 65 6c 73 65 20 69 66 20 28 53 74 72 69 6e    else if (Strin
b070: 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65  g.Compare(source
b080: 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53 74 72 69  , bool.FalseStri
b090: 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ng, StringCompar
b0a0: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
b0b0: 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72 65  reCase) == 0) re
b0c0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
b0d0: 20 20 20 20 20 73 77 69 74 63 68 28 73 6f 75 72       switch(sour
b0e0: 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75  ce.ToLower(Cultu
b0f0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
b100: 43 75 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20  Culture))..     
b110: 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65   {..        case
b120: 20 22 79 65 73 22 3a 0d 0a 20 20 20 20 20 20 20   "yes":..       
b130: 20 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20 20   case "y":..    
b140: 20 20 20 20 63 61 73 65 20 22 31 22 3a 0d 0a 20      case "1":.. 
b150: 20 20 20 20 20 20 20 63 61 73 65 20 22 6f 6e 22         case "on"
b160: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  :..          ret
b170: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
b180: 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a 20     case "no":.. 
b190: 20 20 20 20 20 20 20 63 61 73 65 20 22 6e 22 3a         case "n":
b1a0: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b1b0: 30 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  0":..        cas
b1c0: 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20  e "off":..      
b1d0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
b1e0: 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75  ;..        defau
b1f0: 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  lt:..          t
b200: 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
b210: 74 45 78 63 65 70 74 69 6f 6e 28 22 73 6f 75 72  tException("sour
b220: 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ce");..      }..
b230: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65      }....    #re
b240: 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e 76 65 72  gion Type Conver
b250: 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sions..    /// <
b260: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b270: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 53 51 4c  / Converts a SQL
b280: 69 74 65 54 79 70 65 20 74 6f 20 61 20 2e 4e 45  iteType to a .NE
b290: 54 20 54 79 70 65 20 6f 62 6a 65 63 74 0d 0a 20  T Type object.. 
b2a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b2b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
b2c0: 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68 65 20 53  m name="t">The S
b2d0: 51 4c 69 74 65 54 79 70 65 20 74 6f 20 63 6f 6e  QLiteType to con
b2e0: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
b2f0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52    /// <returns>R
b300: 65 74 75 72 6e 73 20 61 20 2e 4e 45 54 20 54 79  eturns a .NET Ty
b310: 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65 74 75 72  pe object</retur
b320: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
b330: 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 53 51  l static Type SQ
b340: 4c 69 74 65 54 79 70 65 54 6f 54 79 70 65 28 53  LiteTypeToType(S
b350: 51 4c 69 74 65 54 79 70 65 20 74 29 0d 0a 20 20  QLiteType t)..  
b360: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 74    {..      if (t
b370: 2e 54 79 70 65 20 3d 3d 20 44 62 54 79 70 65 2e  .Type == DbType.
b380: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 20  Object)..       
b390: 20 72 65 74 75 72 6e 20 5f 61 66 66 69 6e 69 74   return _affinit
b3a0: 79 74 6f 74 79 70 65 5b 28 69 6e 74 29 74 2e 41  ytotype[(int)t.A
b3b0: 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20 20 20 20  ffinity];..     
b3c0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72   else..        r
b3d0: 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76  eturn SQLiteConv
b3e0: 65 72 74 2e 44 62 54 79 70 65 54 6f 54 79 70 65  ert.DbTypeToType
b3f0: 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20 20 20 7d  (t.Type);..    }
b400: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
b410: 73 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 61  static Type[] _a
b420: 66 66 69 6e 69 74 79 74 6f 74 79 70 65 20 3d 20  ffinitytotype = 
b430: 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  {..      typeof(
b440: 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 55 6e  object),   // Un
b450: 69 6e 69 74 69 61 6c 69 7a 65 64 20 28 30 29 0d  initialized (0).
b460: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
b470: 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36  t64),    // Int6
b480: 34 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79 70  4 (1)..      typ
b490: 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20 20 20 2f  eof(Double),   /
b4a0: 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d 0a 20 20  / Double (2)..  
b4b0: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
b4c0: 67 29 2c 20 20 20 2f 2f 20 54 65 78 74 20 28 33  g),   // Text (3
b4d0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b4e0: 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c  byte[]),   // Bl
b4f0: 6f 62 20 28 34 29 0d 0a 20 20 20 20 20 20 74 79  ob (4)..      ty
b500: 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20  peof(object),   
b510: 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a 20 20 20  // Null (5)..   
b520: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
b530: 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  me), // DateTime
b540: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70   (10)..      typ
b550: 65 6f 66 28 6f 62 6a 65 63 74 29 20 20 20 20 2f  eof(object)    /
b560: 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a 20 20 20  / None (11)..   
b570: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   };....    /// <
b580: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b590: 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 69 6e  / For a given in
b5a0: 74 72 69 6e 73 69 63 20 74 79 70 65 2c 20 72 65  trinsic type, re
b5b0: 74 75 72 6e 20 61 20 44 62 54 79 70 65 0d 0a 20  turn a DbType.. 
b5c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b5d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
b5e0: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
b5f0: 20 6e 61 74 69 76 65 20 74 79 70 65 20 74 6f 20   native type to 
b600: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
b610: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
b620: 73 3e 54 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  s>The correspond
b630: 69 6e 67 20 28 63 6c 6f 73 65 73 74 20 6d 61 74  ing (closest mat
b640: 63 68 29 20 44 62 54 79 70 65 3c 2f 72 65 74 75  ch) DbType</retu
b650: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
b660: 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65  al static DbType
b670: 20 54 79 70 65 54 6f 44 62 54 79 70 65 28 54 79   TypeToDbType(Ty
b680: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
b690: 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74        TypeCode t
b6a0: 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  c = Type.GetType
b6b0: 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20 20  Code(typ);..    
b6c0: 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70 65    if (tc == Type
b6d0: 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20  Code.Object)..  
b6e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
b6f0: 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66  f (typ == typeof
b700: 28 62 79 74 65 5b 5d 29 29 20 72 65 74 75 72 6e  (byte[])) return
b710: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 3b 0d   DbType.Binary;.
b720: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
b730: 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29   == typeof(Guid)
b740: 29 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e  ) return DbType.
b750: 47 75 69 64 3b 0d 0a 20 20 20 20 20 20 20 20 72  Guid;..        r
b760: 65 74 75 72 6e 20 44 62 54 79 70 65 2e 53 74 72  eturn DbType.Str
b770: 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ing;..      }.. 
b780: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70       return _typ
b790: 65 74 6f 64 62 74 79 70 65 5b 28 69 6e 74 29 74  etodbtype[(int)t
b7a0: 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  c];..    }....  
b7b0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b7c0: 20 44 62 54 79 70 65 5b 5d 20 5f 74 79 70 65 74   DbType[] _typet
b7d0: 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a 20 20 20  odbtype = {..   
b7e0: 20 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74     DbType.Object
b7f0: 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30 29  ,   // Empty (0)
b800: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
b810: 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f 62 6a 65  inary,   // Obje
b820: 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20 44 62  ct (1)..      Db
b830: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
b840: 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20 20  / DBNull (2)..  
b850: 20 20 20 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65      DbType.Boole
b860: 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  an,  // Boolean 
b870: 28 33 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (3)..      DbTyp
b880: 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 43  e.SByte,    // C
b890: 68 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20 44  har (4)..      D
b8a0: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
b8b0: 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20  // SByte (5)..  
b8c0: 20 20 20 20 44 62 54 79 70 65 2e 42 79 74 65 2c      DbType.Byte,
b8d0: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36 29       // Byte (6)
b8e0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49  ..      DbType.I
b8f0: 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49 6e 74 31  nt16,    // Int1
b900: 36 20 28 37 29 0d 0a 20 20 20 20 20 20 44 62 54  6 (7)..      DbT
b910: 79 70 65 2e 55 49 6e 74 31 36 2c 20 20 20 2f 2f  ype.UInt16,   //
b920: 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20 20   UInt16 (8)..   
b930: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c     DbType.Int32,
b940: 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 39 29      // Int32 (9)
b950: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
b960: 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55 49 6e 74  Int32,   // UInt
b970: 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20 44  32 (10)..      D
b980: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 20 20 20  bType.Int64,    
b990: 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20  // Int64 (11).. 
b9a0: 20 20 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74       DbType.UInt
b9b0: 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74 36 34 20  64,   // UInt64 
b9c0: 28 31 32 29 0d 0a 20 20 20 20 20 20 44 62 54 79  (12)..      DbTy
b9d0: 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20 2f 2f 20  pe.Single,   // 
b9e0: 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20  Single (13)..   
b9f0: 20 20 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65     DbType.Double
ba00: 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31  ,   // Double (1
ba10: 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  4)..      DbType
ba20: 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f 20 44 65  .Decimal,  // De
ba30: 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20  cimal (15)..    
ba40: 20 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d    DbType.DateTim
ba50: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
ba60: 31 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  16)..      DbTyp
ba70: 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 3f  e.Object,   // ?
ba80: 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20 44 62  ? (17)..      Db
ba90: 54 79 70 65 2e 53 74 72 69 6e 67 20 20 20 20 2f  Type.String    /
baa0: 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a 20  / String (18).. 
bab0: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
bac0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
bad0: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
bae0: 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f 72 20 74  ColumnSize for t
baf0: 68 65 20 67 69 76 65 6e 20 44 62 54 79 70 65 0d  he given DbType.
bb00: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
bb10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
bb20: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54  ram name="typ">T
bb30: 68 65 20 44 62 54 79 70 65 20 74 6f 20 67 65 74  he DbType to get
bb40: 20 74 68 65 20 73 69 7a 65 20 6f 66 3c 2f 70 61   the size of</pa
bb50: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
bb60: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
bb70: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
bb80: 73 74 61 74 69 63 20 69 6e 74 20 44 62 54 79 70  static int DbTyp
bb90: 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65 28 44 62  eToColumnSize(Db
bba0: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
bbb0: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
bbc0: 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69  dbtypetocolumnsi
bbd0: 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20  ze[(int)typ];.. 
bbe0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
bbf0: 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 5b 5d  ate static int[]
bc00: 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e   _dbtypetocolumn
bc10: 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20  size = {..      
bc20: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
bc30: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
bc40: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
bc50: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
bc60: 31 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20  1)..      1,    
bc70: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
bc80: 28 32 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20  (2)..      1,   
bc90: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 6f 6f 6c           // Bool
bca0: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 38  ean (3)..      8
bcb0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
bcc0: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
bcd0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bce0: 20 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20    // Date (5).. 
bcf0: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
bd00: 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28     // DateTime (
bd10: 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  6)..      8,    
bd20: 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d          // Decim
bd30: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 38 2c  al (7)..      8,
bd40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
bd50: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
bd60: 20 31 36 2c 20 20 20 20 20 20 20 20 20 20 20 2f   16,           /
bd70: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
bd80: 20 20 32 2c 20 20 20 20 20 20 20 20 20 20 20 20    2,            
bd90: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
bda0: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
bdb0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
bdc0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bdd0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
bde0: 31 32 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  12)..      int.M
bdf0: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  axValue, // Obje
be00: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 31  ct (13)..      1
be10: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
be20: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
be30: 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20    4,            
be40: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
be50: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
be60: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
be70: 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  6)..      8,    
be80: 20 20 20 20 20 20 20 20 2f 2f 20 54 69 6d 65 20          // Time 
be90: 28 31 37 29 0d 0a 20 20 20 20 20 20 32 2c 20 20  (17)..      2,  
bea0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
beb0: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
bec0: 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  4,            //
bed0: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
bee0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bef0: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
bf00: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bf10: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
bf20: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
bf30: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
bf40: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
bf50: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
bf60: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bf70: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
bf80: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
bf90: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
bfa0: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
bfb0: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 20 20    int.MaxValue  
bfc0: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
bfd0: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72   };....    inter
bfe0: 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63  nal static objec
bff0: 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69  t DbTypeToNumeri
c000: 63 50 72 65 63 69 73 69 6f 6e 28 44 62 54 79 70  cPrecision(DbTyp
c010: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
c020: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74       return _dbt
c030: 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63  ypetonumericprec
c040: 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79 70 5d 3b  ision[(int)typ];
c050: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
c060: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
c070: 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f  ject[] _dbtypeto
c080: 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e  numericprecision
c090: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
c0a0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c0b0: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
c0c0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c0d0: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
c0e0: 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20 20        3,        
c0f0: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
c100: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c110: 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  lue, // Boolean 
c120: 28 33 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20  (3)..      19,  
c130: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
c140: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
c150: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c160: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
c170: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c180: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
c190: 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20        53,       
c1a0: 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28      // Decimal (
c1b0: 37 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20  7)..      53,   
c1c0: 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c          // Doubl
c1d0: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (8)..      DBN
c1e0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47 75  ull.Value, // Gu
c1f0: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 35 2c  id (9)..      5,
c200: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
c210: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
c220: 20 31 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f   10,           /
c230: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
c240: 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20      19,         
c250: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
c260: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c270: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
c280: 31 33 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20  13)..      3,   
c290: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
c2a0: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 32 34  e (14)..      24
c2b0: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53  ,           // S
c2c0: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
c2d0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c2e0: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
c2f0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c300: 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29  ue, // Time (17)
c310: 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20 20  ..      5,      
c320: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
c330: 28 31 38 29 0d 0a 20 20 20 20 20 20 31 30 2c 20  (18)..      10, 
c340: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c350: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
c360: 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  19,           //
c370: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
c380: 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20 20      53,         
c390: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
c3a0: 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (21)..      DBNu
c3b0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c3c0: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
c3d0: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 44  th (22)..      D
c3e0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c3f0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
c400: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44 42  h (23)..      DB
c410: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f  Null.Value, // ?
c420: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44 42  ? (24)..      DB
c430: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 58  Null.Value  // X
c440: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
c450: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
c460: 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62  static object Db
c470: 54 79 70 65 54 6f 4e 75 6d 65 72 69 63 53 63 61  TypeToNumericSca
c480: 6c 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a  le(DbType typ)..
c490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
c4a0: 75 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d  urn _dbtypetonum
c4b0: 65 72 69 63 73 63 61 6c 65 5b 28 69 6e 74 29 74  ericscale[(int)t
c4c0: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  yp];..    }.... 
c4d0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
c4e0: 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79  c object[] _dbty
c4f0: 70 65 74 6f 6e 75 6d 65 72 69 63 73 63 61 6c 65  petonumericscale
c500: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
c510: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c520: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
c530: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c540: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
c550: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
c560: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
c570: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c580: 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  lue, // Boolean 
c590: 28 33 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20  (3)..      4,   
c5a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
c5b0: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
c5c0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c5d0: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
c5e0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c5f0: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
c600: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c610: 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28  ue, // Decimal (
c620: 37 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  7)..      DBNull
c630: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f 75 62 6c  .Value, // Doubl
c640: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (8)..      DBN
c650: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47 75  ull.Value, // Gu
c660: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 30 2c  id (9)..      0,
c670: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
c680: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
c690: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
c6a0: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
c6b0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c6c0: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
c6d0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c6e0: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
c6f0: 31 33 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  13)..      0,   
c700: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
c710: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 42  e (14)..      DB
c720: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
c730: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
c740: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c750: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
c760: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c770: 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29  ue, // Time (17)
c780: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
c790: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
c7a0: 28 31 38 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (18)..      0,  
c7b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
c7c0: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
c7d0: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
c7e0: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
c7f0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c800: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
c810: 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (21)..      DBNu
c820: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
c830: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
c840: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 44  th (22)..      D
c850: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c860: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
c870: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44 42  h (23)..      DB
c880: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f  Null.Value, // ?
c890: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44 42  ? (24)..      DB
c8a0: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 58  Null.Value  // X
c8b0: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
c8c0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
c8d0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
c8e0: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
c8f0: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79  ault database ty
c900: 70 65 20 6e 61 6d 65 20 74 6f 20 62 65 20 75 73  pe name to be us
c910: 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
c920: 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
c930: 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
c940: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
c950: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c960: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
c970: 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
c980: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
c990: 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
c9a0: 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e   for type mappin
c9b0: 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  gs, if any...   
c9c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
c9d0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
c9e0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
c9f0: 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74  fault database t
ca00: 79 70 65 20 6e 61 6d 65 20 74 6f 20 75 73 65 2e  ype name to use.
ca10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
ca20: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
ca30: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
ca40: 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e 61  GetDefaultTypeNa
ca50: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  me(..        SQL
ca60: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
ca70: 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  nnection..      
ca80: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
ca90: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
caa0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 20  tionFlags flags 
cab0: 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  = (connection !=
cac0: 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
cad0: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
cae0: 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69 74 65 43  .Flags : SQLiteC
caf0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
cb00: 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  one;....        
cb10: 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
cb20: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
cb30: 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
cb40: 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ings)..         
cb50: 20 20 20 20 20 20 20 3d 3d 20 53 51 4c 69 74 65         == SQLite
cb60: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
cb70: 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
cb80: 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  s)..        {.. 
cb90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
cba0: 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  n FallbackDefaul
cbb0: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
cbc0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
cbd0: 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22   string name = "
cbe0: 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72  Use_SQLiteConver
cbf0: 74 5f 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  t_DefaultTypeNam
cc00: 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  e";..        obj
cc10: 65 63 74 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ect value = null
cc20: 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ;..        strin
cc30: 67 20 40 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c  g @default = nul
cc40: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
cc50: 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d   ((connection ==
cc60: 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
cc70: 20 20 20 20 20 20 20 21 63 6f 6e 6e 65 63 74 69         !connecti
cc80: 6f 6e 2e 54 72 79 47 65 74 43 61 63 68 65 64 53  on.TryGetCachedS
cc90: 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65  etting(name, @de
cca0: 66 61 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65  fault, out value
ccb0: 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
ccc0: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
ccd0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
ccf0: 61 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74  alue = UnsafeNat
cd00: 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65  iveMethods.GetSe
cd10: 74 74 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c  ttingValue(name,
cd20: 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20   @default);.... 
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cd40: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
cd50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
cd60: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46         value = F
cd70: 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 54 79  allbackDefaultTy
cd80: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
cd90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
cda0: 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
cdb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
cdd0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75  connection != nu
cde0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
cdf0: 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
ce00: 69 6f 6e 2e 53 65 74 43 61 63 68 65 64 53 65 74  ion.SetCachedSet
ce10: 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65  ting(name, value
ce20: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ce30: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
ce40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
ce50: 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72  ettingValueToStr
ce60: 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ing(value);..   
ce70: 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43   }....#if !NET_C
ce80: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
ce90: 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20  CE_WARNING..    
cea0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ceb0: 20 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63     /// If applic
cec0: 61 62 6c 65 2c 20 69 73 73 75 65 73 20 61 20 74  able, issues a t
ced0: 72 61 63 65 20 6c 6f 67 20 6d 65 73 73 61 67 65  race log message
cee0: 20 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20 66   warning about f
cef0: 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 0d 0a  alling back to..
cf00: 20 20 20 20 2f 2f 2f 20 74 68 65 20 64 65 66 61      /// the defa
cf10: 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
cf20: 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e name...    ///
cf30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
cf40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
cf50: 3d 22 64 62 54 79 70 65 22 3e 0d 0a 20 20 20 20  ="dbType">..    
cf60: 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65  /// The database
cf70: 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20   value type...  
cf80: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
cf90: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cfa0: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
cfb0: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
cfc0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
cfd0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
cfe0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
cff0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d000: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d010: 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e  name="typeName">
d020: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
d030: 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68  xtual name of th
d040: 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65 2e  e database type.
d050: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d060: 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  m>..    private 
d070: 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 66 61  static void Defa
d080: 75 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69  ultTypeNameWarni
d090: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 44 62 54  ng(..        DbT
d0a0: 79 70 65 20 64 62 54 79 70 65 2c 0d 0a 20 20 20  ype dbType,..   
d0b0: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
d0c0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
d0d0: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
d0e0: 67 20 74 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20  g typeName..    
d0f0: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
d100: 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73        if ((flags
d110: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
d120: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
d130: 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65  rning) == SQLite
d140: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d150: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 0d 0a 20  TraceWarning).. 
d160: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d170: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
d180: 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72  eLine(String.For
d190: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
d1a0: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66        CultureInf
d1b0: 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  o.CurrentCulture
d1c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d1d0: 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79 70     "WARNING: Typ
d1e0: 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65 64  e mapping failed
d1f0: 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66 61  , returning defa
d200: 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22  ult name \"{0}\"
d210: 20 66 6f 72 20 74 79 70 65 20 7b 31 7d 2e 22 2c   for type {1}.",
d220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d230: 20 20 74 79 70 65 4e 61 6d 65 2c 20 64 62 54 79    typeName, dbTy
d240: 70 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  pe));..        }
d250: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
d260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
d270: 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63 61    /// If applica
d280: 62 6c 65 2c 20 69 73 73 75 65 73 20 61 20 74 72  ble, issues a tr
d290: 61 63 65 20 6c 6f 67 20 6d 65 73 73 61 67 65 20  ace log message 
d2a0: 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20 66 61  warning about fa
d2b0: 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 0d 0a 20  lling back to.. 
d2c0: 20 20 20 2f 2f 2f 20 74 68 65 20 64 65 66 61 75     /// the defau
d2d0: 6c 74 20 64 61 74 61 62 61 73 65 20 76 61 6c 75  lt database valu
d2e0: 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e type...    ///
d2f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d300: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d310: 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20 20  ="typeName">..  
d320: 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
d330: 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  l name of the da
d340: 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20  tabase type...  
d350: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
d360: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d370: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
d380: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
d390: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
d3a0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
d3b0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20  ction object... 
d3c0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d3d0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
d3e0: 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d 0a  name="dbType">..
d3f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
d400: 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e  base value type.
d410: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d420: 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  m>..    private 
d430: 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 66 61  static void Defa
d440: 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67  ultDbTypeWarning
d450: 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
d460: 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20  g typeName,..   
d470: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
d480: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
d490: 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70  ,..        DbTyp
d4a0: 65 3f 20 64 62 54 79 70 65 0d 0a 20 20 20 20 20  e? dbType..     
d4b0: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
d4c0: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
d4d0: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
d4e0: 79 70 65 4e 61 6d 65 29 20 26 26 0d 0a 20 20 20  ypeName) &&..   
d4f0: 20 20 20 20 20 20 20 20 20 28 28 66 6c 61 67 73           ((flags
d500: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
d510: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
d520: 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65  rning) == SQLite
d530: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d540: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d 0a  TraceWarning))..
d550: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
d560: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
d570: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
d580: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
d590: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
d5a0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
d5b0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
d5c0: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
d5d0: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
d5e0: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
d5f0: 61 75 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f  ault type {0} fo
d600: 72 20 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22  r name \"{1}\"."
d610: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
d620: 20 20 20 64 62 54 79 70 65 2c 20 74 79 70 65 4e     dbType, typeN
d630: 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ame));..        
d640: 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66  }..    }..#endif
d650: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
d660: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46  mary>..    /// F
d670: 6f 72 20 61 20 67 69 76 65 6e 20 64 61 74 61 62  or a given datab
d680: 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2c 20  ase value type, 
d690: 72 65 74 75 72 6e 20 74 68 65 20 22 63 6c 6f 73  return the "clos
d6a0: 65 73 74 2d 6d 61 74 63 68 22 20 74 65 78 74 75  est-match" textu
d6b0: 61 6c 20 64 61 74 61 62 61 73 65 20 74 79 70 65  al database type
d6c0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   name...    /// 
d6d0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d6e0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
d6f0: 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65  "connection">The
d700: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
d710: 65 78 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74  ext for custom t
d720: 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66  ype mappings, if
d730: 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20   any.</param>.. 
d740: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d750: 6d 65 3d 22 64 62 54 79 70 65 22 3e 54 68 65 20  me="dbType">The 
d760: 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74  database value t
d770: 79 70 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ype.</param>..  
d780: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d790: 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c  e="flags">The fl
d7a0: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
d7b0: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
d7c0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
d7d0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
d7e0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
d7f0: 74 79 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e 20  type name or an 
d800: 65 6d 70 74 79 20 73 74 72 69 6e 67 20 69 66 20  empty string if 
d810: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
d820: 65 72 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72 6e  ermined.</return
d830: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
d840: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44   static string D
d850: 62 54 79 70 65 54 6f 54 79 70 65 4e 61 6d 65 28  bTypeToTypeName(
d860: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
d870: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
d880: 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
d890: 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a  DbType dbType,..
d8a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d8b0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
d8c0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
d8d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
d8e0: 74 72 69 6e 67 20 64 65 66 61 75 6c 74 54 79 70  tring defaultTyp
d8f0: 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  eName = null;...
d900: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
d910: 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
d920: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d930: 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c           flags |
d940: 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61  = connection.Fla
d950: 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  gs;....         
d960: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
d970: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d980: 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74  Flags.UseConnect
d990: 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c  ionTypes) == SQL
d9a0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d9b0: 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  gs.UseConnection
d9c0: 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20  Types)..        
d9d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d9e0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
d9f0: 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f  ypeMap connectio
da00: 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e  nTypeNames = con
da10: 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d  nection._typeNam
da20: 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  es;....         
da30: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
da40: 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21  ctionTypeNames !
da50: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
da60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
da90: 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ing value;....  
daa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dab0: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
dac0: 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
dad0: 56 61 6c 75 65 28 64 62 54 79 70 65 2c 20 6f 75  Value(dbType, ou
dae0: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db00: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
db10: 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  typeName;..     
db20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
db30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
db40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
db50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
db60: 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61  TE: Use the defa
db70: 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
db80: 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 63  e name for the c
db90: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
dba0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
dbb0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54          defaultT
dbc0: 79 70 65 4e 61 6d 65 20 3d 20 63 6f 6e 6e 65 63  ypeName = connec
dbd0: 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70 65  tion.DefaultType
dbe0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Name;..        }
dbf0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
dc00: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
dc10: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
dc20: 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d  oGlobalTypes) ==
dc30: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
dc40: 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54  nFlags.NoGlobalT
dc50: 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ypes)..        {
dc60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
dc70: 20 28 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d   (defaultTypeNam
dc80: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dca0: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
dcb0: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  me;....         
dcc0: 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61     defaultTypeNa
dcd0: 6d 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 54  me = GetDefaultT
dce0: 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65 63 74 69  ypeName(connecti
dcf0: 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  on);....#if !NET
dd00: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
dd10: 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20  RACE_WARNING..  
dd20: 20 20 20 20 20 20 20 20 20 20 44 65 66 61 75 6c            Defaul
dd30: 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67  tTypeNameWarning
dd40: 28 64 62 54 79 70 65 2c 20 66 6c 61 67 73 2c 20  (dbType, flags, 
dd50: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 29  defaultTypeName)
dd60: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
dd70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
dd80: 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b  defaultTypeName;
dd90: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
dda0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79         lock (_sy
ddb0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
ddc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ddd0: 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d  if (_typeNames =
dde0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ddf0: 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61           _typeNa
de00: 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44  mes = GetSQLiteD
de10: 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20  bTypeMap();.... 
de20: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
de30: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
de40: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
de50: 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61       if (_typeNa
de60: 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
de70: 64 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75  dbType, out valu
de80: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
de90: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
dea0: 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  e.typeName;..   
deb0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
dec0: 20 20 69 66 20 28 64 65 66 61 75 6c 74 54 79 70    if (defaultTyp
ded0: 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eName != null)..
dee0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
def0: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
df00: 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64  me;....        d
df10: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
df20: 20 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e   GetDefaultTypeN
df30: 61 6d 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ame(connection);
df40: 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
df50: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
df60: 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
df70: 20 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d    DefaultTypeNam
df80: 65 57 61 72 6e 69 6e 67 28 64 62 54 79 70 65 2c  eWarning(dbType,
df90: 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 54   flags, defaultT
dfa0: 79 70 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69  ypeName);..#endi
dfb0: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  f....        ret
dfc0: 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e  urn defaultTypeN
dfd0: 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ame;..    }.... 
dfe0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
dff0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
e000: 74 20 61 20 44 62 54 79 70 65 20 74 6f 20 61 20  t a DbType to a 
e010: 54 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  Type..    /// </
e020: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
e030: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
e040: 79 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74  yp">The DbType t
e050: 6f 20 63 6f 6e 76 65 72 74 20 66 72 6f 6d 3c 2f  o convert from</
e060: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
e070: 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 63 6c 6f  <returns>The clo
e080: 73 65 73 74 2d 6d 61 74 63 68 20 2e 4e 45 54 20  sest-match .NET 
e090: 74 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  type</returns>..
e0a0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e0b0: 74 69 63 20 54 79 70 65 20 44 62 54 79 70 65 54  tic Type DbTypeT
e0c0: 6f 54 79 70 65 28 44 62 54 79 70 65 20 74 79 70  oType(DbType typ
e0d0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
e0e0: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 54 6f  return _dbtypeTo
e0f0: 54 79 70 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d  Type[(int)typ];.
e100: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
e110: 69 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70  ivate static Typ
e120: 65 5b 5d 20 5f 64 62 74 79 70 65 54 6f 54 79 70  e[] _dbtypeToTyp
e130: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70  e = {..      typ
e140: 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f  eof(string),   /
e150: 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29  / AnsiString (0)
e160: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
e170: 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 69 6e  yte[]),   // Bin
e180: 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74  ary (1)..      t
e190: 79 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20  ypeof(byte),    
e1a0: 20 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20   // Byte (2)..  
e1b0: 20 20 20 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29      typeof(bool)
e1c0: 2c 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e  ,     // Boolean
e1d0: 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (3)..      type
e1e0: 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f  of(decimal),  //
e1f0: 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20   Currency (4).. 
e200: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
e210: 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 20 28  Time), // Date (
e220: 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  5)..      typeof
e230: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44  (DateTime), // D
e240: 61 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20  ateTime (6)..   
e250: 20 20 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61     typeof(decima
e260: 6c 29 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20  l),  // Decimal 
e270: 28 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (7)..      typeo
e280: 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20  f(double),   // 
e290: 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20  Double (8)..    
e2a0: 20 20 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20    typeof(Guid), 
e2b0: 20 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d      // Guid (9).
e2c0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
e2d0: 74 31 36 29 2c 20 20 20 20 2f 2f 20 49 6e 74 31  t16),    // Int1
e2e0: 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79  6 (10)..      ty
e2f0: 70 65 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20  peof(Int32),    
e300: 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20  // Int32 (11).. 
e310: 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36       typeof(Int6
e320: 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20  4),    // Int64 
e330: 28 31 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (12)..      type
e340: 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f  of(object),   //
e350: 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20   Object (13)..  
e360: 20 20 20 20 74 79 70 65 6f 66 28 73 62 79 74 65      typeof(sbyte
e370: 29 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28  ),    // SByte (
e380: 31 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  14)..      typeo
e390: 66 28 66 6c 6f 61 74 29 2c 20 20 20 20 2f 2f 20  f(float),    // 
e3a0: 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20  Single (15)..   
e3b0: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e3c0: 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28  ),   // String (
e3d0: 31 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  16)..      typeo
e3e0: 66 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20  f(DateTime), // 
e3f0: 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20  Time (17)..     
e400: 20 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c   typeof(UInt16),
e410: 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38     // UInt16 (18
e420: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e430: 55 49 6e 74 33 32 29 2c 20 20 20 2f 2f 20 55 49  UInt32),   // UI
e440: 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20  nt32 (19)..     
e450: 20 74 79 70 65 6f 66 28 55 49 6e 74 36 34 29 2c   typeof(UInt64),
e460: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30     // UInt64 (20
e470: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e480: 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 56 61  double),   // Va
e490: 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20  rNumeric (21).. 
e4a0: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
e4b0: 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74  ng),   // AnsiSt
e4c0: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20  ringFixedLength 
e4d0: 28 32 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (22)..      type
e4e0: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
e4f0: 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67   StringFixedLeng
e500: 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74  th (23)..      t
e510: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
e520: 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20   // ?? (24)..   
e530: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e540: 29 2c 20 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29  ),   // Xml (25)
e550: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
e560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e570: 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76     /// For a giv
e580: 65 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20  en type, return 
e590: 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63  the closest-matc
e5a0: 68 20 53 51 4c 69 74 65 20 54 79 70 65 41 66 66  h SQLite TypeAff
e5b0: 69 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c  inity, which onl
e5c0: 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20  y understands a 
e5d0: 76 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62  very limited sub
e5e0: 73 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20  set of types... 
e5f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e600: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
e610: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
e620: 20 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74   type to evaluat
e630: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
e640: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
e650: 53 51 4c 69 74 65 20 74 79 70 65 20 61 66 66 69  SQLite type affi
e660: 6e 69 74 79 20 66 6f 72 20 74 68 61 74 20 74 79  nity for that ty
e670: 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  pe.</returns>.. 
e680: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
e690: 69 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  ic TypeAffinity 
e6a0: 54 79 70 65 54 6f 41 66 66 69 6e 69 74 79 28 54  TypeToAffinity(T
e6b0: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
e6c0: 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20  .      TypeCode 
e6d0: 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70  tc = Type.GetTyp
e6e0: 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20  eCode(typ);..   
e6f0: 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70     if (tc == Typ
e700: 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20  eCode.Object).. 
e710: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e720: 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f  if (typ == typeo
e730: 66 28 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79 70  f(byte[]) || typ
e740: 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29   == typeof(Guid)
e750: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  )..          ret
e760: 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  urn TypeAffinity
e770: 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20 20  .Blob;..        
e780: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
e790: 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e  return TypeAffin
e7a0: 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20 20  ity.Text;..     
e7b0: 20 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   }..      return
e7c0: 20 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69   _typecodeAffini
e7d0: 74 69 65 73 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a  ties[(int)tc];..
e7e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
e7f0: 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65  vate static Type
e800: 41 66 66 69 6e 69 74 79 5b 5d 20 5f 74 79 70 65  Affinity[] _type
e810: 63 6f 64 65 41 66 66 69 6e 69 74 69 65 73 20 3d  codeAffinities =
e820: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66   {..      TypeAf
e830: 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20  finity.Null,    
e840: 20 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20   // Empty (0).. 
e850: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
e860: 79 2e 42 6c 6f 62 2c 20 20 20 20 20 2f 2f 20 4f  y.Blob,     // O
e870: 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20  bject (1)..     
e880: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
e890: 6c 6c 2c 20 20 20 20 20 2f 2f 20 44 42 4e 75 6c  ll,     // DBNul
e8a0: 6c 20 28 32 29 0d 0a 20 20 20 20 20 20 54 79 70  l (2)..      Typ
e8b0: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e8c0: 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28      // Boolean (
e8d0: 33 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  3)..      TypeAf
e8e0: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
e8f0: 20 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20   // Char (4)..  
e900: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
e910: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 53 42  .Int64,    // SB
e920: 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 54  yte (5)..      T
e930: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
e940: 34 2c 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36  4,    // Byte (6
e950: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
e960: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
e970: 2f 2f 20 49 6e 74 31 36 20 28 37 29 0d 0a 20 20  // Int16 (7)..  
e980: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
e990: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
e9a0: 6e 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20  nt16 (8)..      
e9b0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
e9c0: 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20  64,    // Int32 
e9d0: 28 39 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (9)..      TypeA
e9e0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
e9f0: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 30 29    // UInt32 (10)
ea00: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
ea10: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
ea20: 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20 20  / Int64 (11)..  
ea30: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ea40: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
ea50: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
ea60: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f   TypeAffinity.Do
ea70: 75 62 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c  uble,   // Singl
ea80: 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 54 79  e (13)..      Ty
ea90: 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c  peAffinity.Doubl
eaa0: 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28  e,   // Double (
eab0: 31 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  14)..      TypeA
eac0: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20  ffinity.Double, 
ead0: 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 31 35    // Decimal (15
eae0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
eaf0: 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 20  inity.DateTime, 
eb00: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29  // DateTime (16)
eb10: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
eb20: 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f  nity.Null,     /
eb30: 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20  / ?? (17)..     
eb40: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
eb50: 78 74 20 20 20 20 20 20 2f 2f 20 53 74 72 69 6e  xt      // Strin
eb60: 67 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a  g (18)..    };..
eb70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
eb80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69  ry>..    /// Bui
eb90: 6c 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  lds and returns 
eba0: 61 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67  a map containing
ebb0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
ebc0: 6c 75 6d 6e 20 74 79 70 65 73 0d 0a 20 20 20 20  lumn types..    
ebd0: 2f 2f 2f 20 72 65 63 6f 67 6e 69 7a 65 64 20 62  /// recognized b
ebe0: 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e  y this provider.
ebf0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ec00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
ec10: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
ec20: 20 41 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e   A map containin
ec30: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  g the database c
ec40: 6f 6c 75 6d 6e 20 74 79 70 65 73 20 72 65 63 6f  olumn types reco
ec50: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a  gnized by this..
ec60: 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 72      /// provider
ec70: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
ec80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
ec90: 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65  te static SQLite
eca0: 44 62 54 79 70 65 4d 61 70 20 47 65 74 53 51 4c  DbTypeMap GetSQL
ecb0: 69 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a  iteDbTypeMap()..
ecc0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
ecd0: 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
ece0: 44 62 54 79 70 65 4d 61 70 28 6e 65 77 20 53 51  DbTypeMap(new SQ
ecf0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
ed00: 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  g[] {..         
ed10: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ed20: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 49  ypeMapping("BIGI
ed30: 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  NT", DbType.Int6
ed40: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
ed50: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ed60: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ed70: 22 42 49 47 55 49 4e 54 22 2c 20 44 62 54 79 70  "BIGUINT", DbTyp
ed80: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
ed90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
eda0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
edb0: 61 70 70 69 6e 67 28 22 42 49 4e 41 52 59 22 2c  apping("BINARY",
edc0: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
edd0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
ede0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
edf0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49  bTypeMapping("BI
ee00: 54 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  T", DbType.Boole
ee10: 61 6e 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  an, true),..    
ee20: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ee30: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ee40: 22 42 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 42  "BLOB", DbType.B
ee50: 69 6e 61 72 79 2c 20 74 72 75 65 29 2c 0d 0a 20  inary, true),.. 
ee60: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ee70: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ee80: 6e 67 28 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70  ng("BOOL", DbTyp
ee90: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65  e.Boolean, false
eea0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
eeb0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
eec0: 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c 45 41 4e  Mapping("BOOLEAN
eed0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
eee0: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
eef0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ef00: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ef10: 22 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41  "CHAR", DbType.A
ef20: 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65  nsiStringFixedLe
ef30: 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20  ngth, true),..  
ef40: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
ef50: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
ef60: 67 28 22 43 4c 4f 42 22 2c 20 44 62 54 79 70 65  g("CLOB", DbType
ef70: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
ef80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ef90: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
efa0: 70 70 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 2c  pping("COUNTER",
efb0: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66   DbType.Int64, f
efc0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
efd0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
efe0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 55 52  TypeMapping("CUR
eff0: 52 45 4e 43 59 22 2c 20 44 62 54 79 70 65 2e 44  RENCY", DbType.D
f000: 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
f010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f020: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f030: 70 69 6e 67 28 22 44 41 54 45 22 2c 20 44 62 54  ping("DATE", DbT
f040: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61  ype.DateTime, fa
f050: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f060: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f070: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45  ypeMapping("DATE
f080: 54 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61  TIME", DbType.Da
f090: 74 65 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d 0a  teTime, true),..
f0a0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f0b0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f0c0: 69 6e 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 44  ing("DECIMAL", D
f0d0: 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 74  bType.Decimal, t
f0e0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
f0f0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f100: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42  ypeMapping("DOUB
f110: 4c 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62  LE", DbType.Doub
f120: 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  le, false),..   
f130: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f140: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f150: 28 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65  ("FLOAT", DbType
f160: 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c  .Double, false),
f170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f180: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f190: 70 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c  pping("GENERAL",
f1a0: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
f1b0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f1c0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f1d0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55  bTypeMapping("GU
f1e0: 49 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64  ID", DbType.Guid
f1f0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f200: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f210: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f220: 49 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70  IDENTITY", DbTyp
f230: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
f240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f250: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f260: 70 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44  pping("IMAGE", D
f270: 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
f280: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f290: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f2a0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22  ypeMapping("INT"
f2b0: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
f2c0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f2d0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f2e0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54  TypeMapping("INT
f2f0: 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65  8", DbType.SByte
f300: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f310: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f320: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f330: 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49  INT16", DbType.I
f340: 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt16, false),.. 
f350: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f360: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f370: 6e 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79  ng("INT32", DbTy
f380: 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  pe.Int32, false)
f390: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f3a0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f3b0: 61 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20  apping("INT64", 
f3c0: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61  DbType.Int64, fa
f3d0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f3e0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f3f0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
f400: 47 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  GER", DbType.Int
f410: 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  64, true),..    
f420: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f430: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f440: 22 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79  "INTEGER8", DbTy
f450: 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29  pe.SByte, false)
f460: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f470: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f480: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31  apping("INTEGER1
f490: 36 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36  6", DbType.Int16
f4a0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f4b0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f4c0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f4d0: 49 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79  INTEGER32", DbTy
f4e0: 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  pe.Int32, false)
f4f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f500: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f510: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36  apping("INTEGER6
f520: 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  4", DbType.Int64
f530: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f540: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f550: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f560: 4c 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65  LOGICAL", DbType
f570: 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29  .Boolean, false)
f580: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f590: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f5a0: 61 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44  apping("LONG", D
f5b0: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
f5c0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f5d0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f5e0: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43  peMapping("LONGC
f5f0: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72  HAR", DbType.Str
f600: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
f610: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f620: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f630: 67 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62  g("LONGTEXT", Db
f640: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
f650: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f660: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f670: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56  peMapping("LONGV
f680: 41 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e  ARCHAR", DbType.
f690: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
f6a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f6b0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f6c0: 70 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54  ping("MEMO", DbT
f6d0: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
f6e0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f6f0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f700: 65 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22  eMapping("MONEY"
f710: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
f720: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f730: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f740: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f750: 4e 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  NCHAR", DbType.S
f760: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
f770: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
f780: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f790: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
f7a0: 4f 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72  OTE", DbType.Str
f7b0: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
f7c0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f7d0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f7e0: 67 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70  g("NTEXT", DbTyp
f7f0: 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  e.String, false)
f800: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f810: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f820: 61 70 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c  apping("NUMBER",
f830: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
f840: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f850: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f860: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
f870: 55 4d 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e  UMERIC", DbType.
f880: 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c  Decimal, false),
f890: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f8a0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f8b0: 70 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22  pping("NVARCHAR"
f8c0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f8d0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
f8e0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f8f0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c  bTypeMapping("OL
f900: 45 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65  EOBJECT", DbType
f910: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
f920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f930: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f940: 70 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54  pping("RAW", DbT
f950: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
f960: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f970: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f980: 65 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c  eMapping("REAL",
f990: 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20   DbType.Double, 
f9a0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
f9b0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f9c0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e  TypeMapping("SIN
f9d0: 47 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e  GLE", DbType.Sin
f9e0: 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gle, true),..   
f9f0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fa00: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fa10: 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62  ("SMALLDATE", Db
fa20: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66  Type.DateTime, f
fa30: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fa40: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fa50: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
fa60: 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  LLINT", DbType.I
fa70: 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt16, true),..  
fa80: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fa90: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
faa0: 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44  g("SMALLUINT", D
fab0: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72  bType.UInt16, tr
fac0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
fad0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fae0: 70 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e  peMapping("STRIN
faf0: 47 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  G", DbType.Strin
fb00: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
fb10: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fb20: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fb30: 22 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53  "TEXT", DbType.S
fb40: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fb60: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fb70: 69 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79  ing("TIME", DbTy
fb80: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
fb90: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fba0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fbb0: 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53  peMapping("TIMES
fbc0: 54 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61  TAMP", DbType.Da
fbd0: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
fbe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fbf0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fc00: 70 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20  ping("TINYINT", 
fc10: 44 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75  DbType.Byte, tru
fc20: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fc30: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fc40: 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49  eMapping("TINYSI
fc50: 4e 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  NT", DbType.SByt
fc60: 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
fc70: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fc80: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fc90: 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49  UINT", DbType.UI
fca0: 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
fcb0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fcc0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fcd0: 67 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70  g("UINT8", DbTyp
fce0: 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
fcf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fd00: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fd10: 70 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44  ping("UINT16", D
fd20: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61  bType.UInt16, fa
fd30: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
fd40: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fd50: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
fd60: 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  32", DbType.UInt
fd70: 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
fd80: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fd90: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fda0: 28 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70  ("UINT64", DbTyp
fdb0: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
fdc0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fdd0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fde0: 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20  apping("ULONG", 
fdf0: 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66  DbType.UInt64, f
fe00: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fe10: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fe20: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49  TypeMapping("UNI
fe30: 51 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20  QUEIDENTIFIER", 
fe40: 44 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75  DbType.Guid, tru
fe50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fe60: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fe70: 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
fe80: 45 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  EDINTEGER", DbTy
fe90: 70 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29  pe.UInt64, true)
fea0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
feb0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fec0: 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
fed0: 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
fee0: 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
fef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ff00: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ff10: 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
ff20: 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
ff30: 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  .UInt16, false),
ff40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ff50: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ff60: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
ff70: 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
ff80: 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  e.UInt32, false)
ff90: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
ffa0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
ffb0: 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
ffc0: 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79  INTEGER64", DbTy
ffd0: 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65  pe.UInt64, false
ffe0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fff0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10000 4d 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41  Mapping("VARBINA
10010 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  RY", DbType.Bina
10020 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
10030 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10040 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10050 28 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  ("VARCHAR", DbTy
10060 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74  pe.AnsiString, t
10070 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
10080 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10090 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43  ypeMapping("VARC
100a0 48 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e  HAR2", DbType.An
100b0 73 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  siString, false)
100c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
100d0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
100e0 61 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20  apping("YESNO", 
100f0 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
10100 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20  false)..        
10110 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  });..    }....  
10120 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10130 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10140 6e 65 73 20 69 66 20 61 20 64 61 74 61 62 61 73  nes if a databas
10150 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
10160 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
10170 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
10180 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10190 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
101a0 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ype">..    /// T
101b0 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65  he database type
101c0 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20   to check...    
101d0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
101e0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
101f0 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
10200 6f 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73  o if the databas
10210 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
10220 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
10230 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20 20 20 2f  ing, zero..    /
10240 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  // otherwise... 
10250 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10260 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
10270 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 74  static bool IsSt
10280 72 69 6e 67 44 62 54 79 70 65 28 0d 0a 20 20 20  ringDbType(..   
10290 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
102a0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
102b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
102c0 63 68 20 28 74 79 70 65 29 0d 0a 20 20 20 20 20  ch (type)..     
102d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
102e0 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e    case DbType.An
102f0 73 69 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20  siString:..     
10300 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79         case DbTy
10310 70 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20  pe.String:..    
10320 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10330 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69  ype.AnsiStringFi
10340 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20  xedLength:..    
10350 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10360 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c  ype.StringFixedL
10370 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20  ength:..        
10380 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
10390 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
103a0 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
103b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
103c0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
103d0 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
103e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
103f0 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
10400 69 6e 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ines and returns
10410 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
10420 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
10430 6e 67 20 73 74 72 69 6e 67 20 74 68 61 74 0d 0a  ng string that..
10440 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62      /// should b
10450 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20  e used in place 
10460 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
10470 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2e 0d 0a   object value...
10480 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10490 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
104a0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
104b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62  ..    /// The ob
104c0 6a 65 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f  ject value to co
104d0 6e 76 65 72 74 20 74 6f 20 61 20 73 74 72 69 6e  nvert to a strin
104e0 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  g...    /// </pa
104f0 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
10500 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
10510 20 45 69 74 68 65 72 20 74 68 65 20 73 74 72 69   Either the stri
10520 6e 67 20 74 6f 20 75 73 65 20 69 6e 20 70 6c 61  ng to use in pla
10530 63 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74  ce of the object
10540 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c   value -OR- null
10550 20 69 66 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20   if it..    /// 
10560 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
10570 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ined...    /// <
10580 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
10590 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
105a0 72 69 6e 67 20 53 65 74 74 69 6e 67 56 61 6c 75  ring SettingValu
105b0 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  eToString(..    
105c0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
105d0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
105e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
105f0 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29  value is string)
10600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
10610 74 75 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c  turn (string)val
10620 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
10630 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
10640 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
10650 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74  eturn value.ToSt
10660 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ring();....     
10670 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
10680 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
10690 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
106a0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
106b0 74 68 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65  the default <see
106c0 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
106d0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 75 73  > value to be us
106e0 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
106f0 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
10700 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
10710 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
10720 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10730 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
10740 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
10750 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
10760 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
10770 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e   for type mappin
10780 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  gs, if any...   
10790 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
107a0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
107b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
107c0 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d  fault <see cref=
107d0 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
107e0 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f  e to use...    /
107f0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10800 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10810 63 20 44 62 54 79 70 65 20 47 65 74 44 65 66 61  c DbType GetDefa
10820 75 6c 74 44 62 54 79 70 65 28 0d 0a 20 20 20 20  ultDbType(..    
10830 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
10840 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  tion connection.
10850 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
10860 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  {..        SQLit
10870 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
10880 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e 6e 65 63   flags = (connec
10890 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  tion != null) ?.
108a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
108b0 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 20 3a 20  nection.Flags : 
108c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
108d0 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20  Flags.None;.... 
108e0 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
108f0 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
10900 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76  tionFlags.NoConv
10910 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a 20 20  ertSettings)..  
10920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 3d                ==
10930 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
10940 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74  nFlags.NoConvert
10950 53 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20  Settings)..     
10960 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10970 20 20 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63    return Fallbac
10980 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  kDefaultDbType;.
10990 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
109a0 20 20 20 20 20 20 62 6f 6f 6c 20 66 6f 75 6e 64        bool found
109b0 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
109c0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d     string name =
109d0 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76   "Use_SQLiteConv
109e0 65 72 74 5f 44 65 66 61 75 6c 74 44 62 54 79 70  ert_DefaultDbTyp
109f0 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  e";..        obj
10a00 65 63 74 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ect value = null
10a10 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ;..        strin
10a20 67 20 40 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c  g @default = nul
10a30 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
10a40 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d   ((connection ==
10a50 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
10a60 20 20 20 20 20 20 20 21 63 6f 6e 6e 65 63 74 69         !connecti
10a70 6f 6e 2e 54 72 79 47 65 74 43 61 63 68 65 64 53  on.TryGetCachedS
10a80 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65  etting(name, @de
10a90 66 61 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65  fault, out value
10aa0 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
10ab0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
10ac0 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
10ad0 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e  ethods.GetSettin
10ae0 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65  gValue(name, @de
10af0 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  fault);....     
10b00 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
10b10 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
10b20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
10b30 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75   = FallbackDefau
10b40 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20  ltDbType;..     
10b50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c     }..        el
10b60 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  se..        {.. 
10b70 20 20 20 20 20 20 20 20 20 20 20 66 6f 75 6e 64             found
10b80 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
10b90 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74    }....        t
10ba0 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
10bb0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
10bc0 28 76 61 6c 75 65 20 69 73 20 44 62 54 79 70 65  (value is DbType
10bd0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
10be0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10bf0 20 20 20 76 61 6c 75 65 20 3d 20 53 51 4c 69 74     value = SQLit
10c00 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 50  eConnection.TryP
10c10 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20  arseEnum(..     
10c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
10c30 79 70 65 6f 66 28 44 62 54 79 70 65 29 2c 20 53  ypeof(DbType), S
10c40 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72  ettingValueToStr
10c50 69 6e 67 28 76 61 6c 75 65 29 2c 20 74 72 75 65  ing(value), true
10c60 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10c70 20 20 20 20 20 20 69 66 20 28 21 28 76 61 6c 75        if (!(valu
10c80 65 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20  e is DbType)).. 
10c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ca0 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62     value = Fallb
10cb0 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65  ackDefaultDbType
10cc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
10cd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10ce0 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29 76  return (DbType)v
10cf0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alue;..        }
10d00 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
10d10 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
10d20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66            if (!f
10d30 6f 75 6e 64 20 26 26 20 28 63 6f 6e 6e 65 63 74  ound && (connect
10d40 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ion != null)).. 
10d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
10d60 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 43 61 63  onnection.SetCac
10d70 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c  hedSetting(name,
10d80 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
10d90 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
10da0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10db0 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10dc0 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69  nes if the speci
10dd0 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c  fied textual val
10de0 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  ue appears to be
10df0 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65   a..    /// <see
10e00 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f   cref="DBNull" /
10e10 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
10e20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e30 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
10e40 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
10e50 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76  // The textual v
10e60 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  alue to inspect.
10e70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
10e80 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
10e90 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
10ea0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74  on-zero if the t
10eb0 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61  ext looks like a
10ec0 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75   <see cref="DBNu
10ed0 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20  ll" /> value,.. 
10ee0 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65     /// zero othe
10ef0 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
10f00 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
10f10 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
10f20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75  bool LooksLikeNu
10f30 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ll(..        str
10f40 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
10f50 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
10f60 20 20 20 20 72 65 74 75 72 6e 20 28 74 65 78 74      return (text
10f70 20 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20   == null);..    
10f80 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
10f90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10fa0 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
10fb0 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74  e specified text
10fc0 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72  ual value appear
10fd0 73 20 74 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20  s to be an..    
10fe0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
10ff0 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  nt64" /> value..
11000 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
11010 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
11020 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e  ram name="text">
11030 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
11040 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69  xtual value to i
11050 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  nspect...    ///
11060 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
11070 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
11080 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
11090 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73  f the text looks
110a0 20 6c 69 6b 65 20 61 6e 20 3c 73 65 65 20 63 72   like an <see cr
110b0 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
110c0 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65  lue,..    /// ze
110d0 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
110e0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
110f0 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
11100 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b  static bool Look
11110 73 4c 69 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20  sLikeInt64(..   
11120 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
11130 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
11140 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67   {..        long
11150 20 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23   longValue;....#
11160 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
11170 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
11180 20 20 20 20 20 20 20 69 66 20 28 21 6c 6f 6e 67         if (!long
11190 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20  .TryParse(..    
111a0 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
111b0 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49  , NumberStyles.I
111c0 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49  nteger, CultureI
111d0 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
111e0 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
111f0 20 20 20 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56         out longV
11200 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
11210 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
11220 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
11230 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
11240 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
11250 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11260 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20      longValue = 
11270 6c 6f 6e 67 2e 50 61 72 73 65 28 0d 0a 20 20 20  long.Parse(..   
11280 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78               tex
11290 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e  t, NumberStyles.
112a0 49 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65  Integer, Culture
112b0 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
112c0 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
112d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63   }..        catc
112e0 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  h..        {..  
112f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11300 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
11310 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20   }..#endif....  
11320 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
11330 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20  ing.Equals(..   
11340 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c           longVal
11350 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  ue.ToString(Cult
11360 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
11370 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c  tCulture), text,
11380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74  ..            St
11390 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
113a0 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d  rdinal);..    }.
113b0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
113c0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
113d0 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
113e0 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61  specified textua
113f0 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20  l value appears 
11400 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f  to be a..    ///
11410 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
11420 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  le" /> value... 
11430 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11440 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
11450 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a  m name="text">..
11460 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74      /// The text
11470 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73  ual value to ins
11480 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  pect...    /// <
11490 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
114a0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
114b0 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
114c0 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c  the text looks l
114d0 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ike a <see cref=
114e0 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75  "Double" /> valu
114f0 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f  e,..    /// zero
11500 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20   otherwise...   
11510 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
11520 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
11530 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c  atic bool LooksL
11540 69 6b 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20  ikeDouble(..    
11550 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d      string text.
11560 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11570 7b 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c  {..        doubl
11580 65 20 64 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a  e doubleValue;..
11590 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
115a0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
115b0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 64  ..        if (!d
115c0 6f 75 62 6c 65 2e 54 72 79 50 61 72 73 65 28 0d  ouble.TryParse(.
115d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
115e0 20 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79   text, NumberSty
115f0 6c 65 73 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62  les.Float | Numb
11600 65 72 53 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68  erStyles.AllowTh
11610 6f 75 73 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20  ousands,..      
11620 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
11630 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
11640 75 6c 74 75 72 65 2c 20 6f 75 74 20 64 6f 75 62  ulture, out doub
11650 6c 65 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  leValue))..     
11660 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11670 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11680 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73  .        }..#els
11690 65 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  e..        try..
116a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
116b0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c         doubleVal
116c0 75 65 20 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73  ue = double.Pars
116d0 65 28 74 65 78 74 2c 20 43 75 6c 74 75 72 65 49  e(text, CultureI
116e0 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
116f0 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ture);..        
11700 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
11710 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
11720 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11730 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
11740 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
11750 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
11760 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ng.Equals(..    
11770 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61          doubleVa
11780 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c  lue.ToString(Cul
11790 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
117a0 6e 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74  ntCulture), text
117b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
117c0 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
117d0 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d  Ordinal);..    }
117e0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
117f0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
11800 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
11810 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75   specified textu
11820 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73  al value appears
11830 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f   to be a..    //
11840 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
11850 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
11860 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11870 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
11880 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65  aram name="conve
11890 72 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rt">..    /// Th
118a0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
118b0 69 74 65 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f  iteConvert" /> o
118c0 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63  bject instance c
118d0 6f 6e 66 69 67 75 72 65 64 20 77 69 74 68 0d 0a  onfigured with..
118e0 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73      /// the chos
118f0 65 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  en <see cref="Da
11900 74 65 54 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61  teTime" /> forma
11910 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
11920 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
11930 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22  aram name="text"
11940 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
11950 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20  extual value to 
11960 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f  inspect...    //
11970 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11980 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
11990 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
119a0 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b  if the text look
119b0 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72  s like a <see cr
119c0 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
119d0 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f   in the..    ///
119e0 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d   configured form
119f0 61 74 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  at, zero otherwi
11a00 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
11a10 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
11a20 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
11a30 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54  l LooksLikeDateT
11a40 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ime(..        SQ
11a50 4c 69 74 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76  LiteConvert conv
11a60 65 72 74 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ert,..        st
11a70 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20  ring text..     
11a80 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
11a90 20 20 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74       if (convert
11aa0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
11ab0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
11ac0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
11ad0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  try..        {..
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
11af0 54 69 6d 65 20 64 61 74 65 54 69 6d 65 56 61 6c  Time dateTimeVal
11b00 75 65 20 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44  ue = convert.ToD
11b10 61 74 65 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a  ateTime(text);..
11b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
11b30 20 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28   (String.Equals(
11b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11b50 20 20 20 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f        convert.To
11b60 53 74 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56  String(dateTimeV
11b70 61 6c 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alue),..        
11b80 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
11b90 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73  , StringComparis
11ba0 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20  on.Ordinal))..  
11bb0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11bd0 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
11be0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11bf0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
11c00 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
11c10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
11c20 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
11c30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11c40 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
11c50 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
11c60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
11c70 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74  // For a given t
11c80 65 78 74 75 61 6c 20 64 61 74 61 62 61 73 65 20  extual database 
11c90 74 79 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72  type name, retur
11ca0 6e 20 74 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d  n the "closest-m
11cb0 61 74 63 68 22 20 64 61 74 61 62 61 73 65 20 74  atch" database t
11cc0 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ype...    /// Th
11cd0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
11ce0 6c 65 64 20 64 75 72 69 6e 67 20 71 75 65 72 79  led during query
11cf0 20 72 65 73 75 6c 74 20 70 72 6f 63 65 73 73 69   result processi
11d00 6e 67 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 69  ng; therefore, i
11d10 74 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a  ts performance..
11d20 20 20 20 20 2f 2f 2f 20 69 73 20 63 72 69 74 69      /// is criti
11d30 63 61 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  cal...    /// </
11d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
11d50 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
11d60 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63  onnection">The c
11d70 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78  onnection contex
11d80 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70  t for custom typ
11d90 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61  e mappings, if a
11da0 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ny.</param>..   
11db0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
11dc0 3d 22 74 79 70 65 4e 61 6d 65 22 3e 54 68 65 20  ="typeName">The 
11dd0 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20  textual name of 
11de0 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  the database typ
11df0 65 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72  e to match.</par
11e00 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
11e10 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
11e20 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63  >The flags assoc
11e30 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
11e40 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
11e50 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e   object.</param>
11e60 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
11e70 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 79  ns>The .NET DBTy
11e80 70 65 20 74 68 65 20 74 65 78 74 20 65 76 61 6c  pe the text eval
11e90 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72  uates to.</retur
11ea0 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
11eb0 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20  l static DbType 
11ec0 54 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 65  TypeNameToDbType
11ed0 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  (..        SQLit
11ee0 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
11ef0 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ection,..       
11f00 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
11f10 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
11f20 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
11f30 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20   flags..        
11f40 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
11f50 20 20 44 62 54 79 70 65 3f 20 64 65 66 61 75 6c    DbType? defaul
11f60 74 44 62 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d  tDbType = null;.
11f70 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63  ...        if (c
11f80 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c  onnection != nul
11f90 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  l)..        {.. 
11fa0 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73             flags
11fb0 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46   |= connection.F
11fc0 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lags;....       
11fd0 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
11fe0 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
11ff0 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65  onFlags.UseConne
12000 63 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53  ctionTypes) == S
12010 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
12020 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69  lags.UseConnecti
12030 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20  onTypes)..      
12040 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12050 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
12060 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74  bTypeMap connect
12070 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63  ionTypeNames = c
12080 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e  onnection._typeN
12090 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ames;....       
120a0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
120b0 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
120c0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
120d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
120e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
120f0 20 20 69 66 20 28 74 79 70 65 4e 61 6d 65 20 21    if (typeName !
12100 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12110 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12130 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62          SQLiteDb
12140 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75  TypeMapping valu
12150 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
12160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12170 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65   (connectionType
12180 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75  Names.TryGetValu
12190 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20  e(typeName, out 
121a0 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
121b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74  return value.dat
121f0 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  aType;..        
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
12220 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
12230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12240 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12260 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
12270 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64  x = typeName.Ind
12280 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20  exOf('(');....  
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69            if ((i
122b0 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20  ndex > 0) &&..  
122c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
122e0 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
122f0 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
12300 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e 67  peName.Substring
12310 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d 45  (0, index).TrimE
12320 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75 65 29  nd(), out value)
12330 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12370 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64    return value.d
12380 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
12390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
123b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
123d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
123e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
123f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12400 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
12410 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
12420 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61  TE: Use the defa
12430 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
12440 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  e for the connec
12450 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20  tion...         
12460 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
12470 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
12480 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65   = connection.De
12490 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
124a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
124b0 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
124c0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
124d0 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
124e0 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  pes) == SQLiteCo
124f0 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
12500 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a 20 20  GlobalTypes)..  
12510 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
12520 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74       if (default
12530 44 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d  DbType != null).
12540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12550 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
12560 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  defaultDbType;..
12570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
12580 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65  faultDbType = Ge
12590 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 63  tDefaultDbType(c
125a0 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23  onnection);....#
125b0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
125c0 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
125d0 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ING..           
125e0 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57 61   DefaultDbTypeWa
125f0 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65 2c 20  rning(typeName, 
12600 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 44 62  flags, defaultDb
12610 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Type);..#endif..
12620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
12630 74 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66  turn (DbType)def
12640 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20  aultDbType;..   
12650 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12660 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f    lock (_syncRoo
12670 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
12680 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f             if (_
12690 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c  typeNames == nul
126a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
126b0 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d      _typeNames =
126c0 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70 65   GetSQLiteDbType
126d0 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Map();....      
126e0 20 20 20 20 20 20 69 66 20 28 74 79 70 65 4e 61        if (typeNa
126f0 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
12700 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12710 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
12720 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
12730 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
12740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74            if (_t
12750 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56  ypeNames.TryGetV
12760 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f  alue(typeName, o
12770 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
12780 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127a0 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
127b0 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  dataType;..     
127c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
127e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
127f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12800 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69             int i
12810 6e 64 65 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e  ndex = typeName.
12820 49 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d  IndexOf('(');...
12830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12840 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
12850 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20  > 0) &&..       
12860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12870 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47   _typeNames.TryG
12880 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65  etValue(typeName
12890 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e  .Substring(0, in
128a0 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20  dex).TrimEnd(), 
128b0 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20  out value))..   
128c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
128e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
128f0 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
12900 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
12910 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12920 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
12930 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
12940 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12950 20 20 69 66 20 28 64 65 66 61 75 6c 74 44 62 54    if (defaultDbT
12960 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ype != null)..  
12970 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12980 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74   (DbType)default
12990 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
129a0 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
129b0 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62 54   = GetDefaultDbT
129c0 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b  ype(connection);
129d0 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
129e0 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
129f0 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
12a00 20 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57    DefaultDbTypeW
12a10 61 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65 2c  arning(typeName,
12a20 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 44   flags, defaultD
12a30 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  bType);..#endif.
12a40 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
12a50 6e 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c  n (DbType)defaul
12a60 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 7d 0d  tDbType;..    }.
12a70 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
12a80 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
12a90 74 61 74 69 63 20 6f 62 6a 65 63 74 20 5f 73 79  tatic object _sy
12aa0 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
12ab0 65 63 74 28 29 3b 0d 0a 20 20 20 20 70 72 69 76  ect();..    priv
12ac0 61 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74  ate static SQLit
12ad0 65 44 62 54 79 70 65 4d 61 70 20 5f 74 79 70 65  eDbTypeMap _type
12ae0 4e 61 6d 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  Names = null;.. 
12af0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
12b00 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c  mary>..  /// SQL
12b10 69 74 65 20 68 61 73 20 76 65 72 79 20 6c 69 6d  ite has very lim
12b20 69 74 65 64 20 74 79 70 65 73 2c 20 61 6e 64 20  ited types, and 
12b30 69 73 20 69 6e 68 65 72 65 6e 74 6c 79 20 74 65  is inherently te
12b40 78 74 2d 62 61 73 65 64 2e 20 20 54 68 65 20 66  xt-based.  The f
12b50 69 72 73 74 20 35 20 74 79 70 65 73 20 62 65 6c  irst 5 types bel
12b60 6f 77 20 72 65 70 72 65 73 65 6e 74 20 74 68 65  ow represent the
12b70 20 73 75 6d 20 6f 66 20 61 6c 6c 20 74 79 70 65   sum of all type
12b80 73 20 53 51 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20  s SQLite..  /// 
12b90 75 6e 64 65 72 73 74 61 6e 64 73 2e 20 20 54 68  understands.  Th
12ba0 65 20 44 61 74 65 54 69 6d 65 20 65 78 74 65 6e  e DateTime exten
12bb0 73 69 6f 6e 20 74 6f 20 74 68 65 20 73 70 65 63  sion to the spec
12bc0 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c   is for internal
12bd0 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f   use only...  //
12be0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12bf0 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 79 70 65  public enum Type
12c00 41 66 66 69 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20  Affinity..  {.. 
12c10 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12c20 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73  ..    /// Not us
12c30 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ed..    /// </su
12c40 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 6e  mmary>..    Unin
12c50 69 74 69 61 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a  itialized = 0,..
12c60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12c70 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 69  >..    /// All i
12c80 6e 74 65 67 65 72 73 20 69 6e 20 53 51 4c 69 74  ntegers in SQLit
12c90 65 20 64 65 66 61 75 6c 74 20 74 6f 20 49 6e 74  e default to Int
12ca0 36 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  64..    /// </su
12cb0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e 74 36  mmary>..    Int6
12cc0 34 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  4 = 1,..    /// 
12cd0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
12ce0 2f 2f 20 41 6c 6c 20 66 6c 6f 61 74 69 6e 67 20  // All floating 
12cf0 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e  point numbers in
12d00 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20   SQLite default 
12d10 74 6f 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f  to double..    /
12d20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12d30 20 20 20 44 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a     Double = 2,..
12d40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12d50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
12d60 65 66 61 75 6c 74 20 64 61 74 61 20 74 79 70 65  efault data type
12d70 20 6f 66 20 53 51 4c 69 74 65 20 69 73 20 74 65   of SQLite is te
12d80 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  xt..    /// </su
12d90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 65 78 74  mmary>..    Text
12da0 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 3,..    /// <
12db0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
12dc0 2f 20 54 79 70 69 63 61 6c 6c 79 20 62 6c 6f 62  / Typically blob
12dd0 20 74 79 70 65 73 20 61 72 65 20 6f 6e 6c 79 20   types are only 
12de0 73 65 65 6e 20 77 68 65 6e 20 72 65 74 75 72 6e  seen when return
12df0 65 64 20 66 72 6f 6d 20 61 20 66 75 6e 63 74 69  ed from a functi
12e00 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  on..    /// </su
12e10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 42 6c 6f 62  mmary>..    Blob
12e20 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 4,..    /// <
12e30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
12e40 2f 20 4e 75 6c 6c 20 74 79 70 65 73 20 63 61 6e  / Null types can
12e50 20 62 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f   be returned fro
12e60 6d 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20  m functions..   
12e70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12e80 0a 20 20 20 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a  .    Null = 5,..
12e90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12ea0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20  >..    /// Used 
12eb0 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68  internally by th
12ec0 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20  is provider..   
12ed0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12ee0 0a 20 20 20 20 44 61 74 65 54 69 6d 65 20 3d 20  .    DateTime = 
12ef0 31 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  10,..    /// <su
12f00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
12f10 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
12f20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72  by this provider
12f30 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
12f40 61 72 79 3e 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d  ary>..    None =
12f50 20 31 31 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f   11,..  }....  /
12f60 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12f70 2f 2f 2f 20 54 68 65 73 65 20 61 72 65 20 74 68  /// These are th
12f80 65 20 65 76 65 6e 74 20 74 79 70 65 73 20 61 73  e event types as
12f90 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
12fa0 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  e..  /// <see cr
12fb0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ef="SQLiteConnec
12fc0 74 69 6f 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72  tionEventHandler
12fd0 22 20 2f 3e 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65  " />..  /// dele
12fe0 67 61 74 65 20 28 61 6e 64 20 69 74 73 20 63 6f  gate (and its co
12ff0 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 76 65 6e  rresponding even
13000 74 29 20 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f  t) and the..  //
13010 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f 6e  / <see cref="Con
13020 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72 67 73  nectionEventArgs
13030 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 2f  " /> class...  /
13040 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13050 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
13060 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  iteConnectionEve
13070 6e 74 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20  ntType..  {..   
13080 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13090 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20  ..      /// Not 
130a0 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  used...      ///
130b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
130c0 20 20 20 49 6e 76 61 6c 69 64 20 3d 20 2d 31 2c     Invalid = -1,
130d0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
130e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
130f0 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20  // Not used...  
13100 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13110 79 3e 0d 0a 20 20 20 20 20 20 55 6e 6b 6e 6f 77  y>..      Unknow
13120 6e 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  n = 0,....      
13130 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13140 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
13150 6e 65 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67  nection is being
13160 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20   opened...      
13170 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13180 20 20 20 20 20 20 4f 70 65 6e 69 6e 67 20 3d 20        Opening = 
13190 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
131a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
131b0 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
131c0 69 6f 6e 20 73 74 72 69 6e 67 20 68 61 73 20 62  ion string has b
131d0 65 65 6e 20 70 61 72 73 65 64 2e 0d 0a 20 20 20  een parsed...   
131e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
131f0 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 6e 65 63 74  >..      Connect
13200 69 6f 6e 53 74 72 69 6e 67 20 3d 20 32 2c 0d 0a  ionString = 2,..
13210 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13220 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13230 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
13240 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20  was opened...   
13250 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13260 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 20  >..      Opened 
13270 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 3,....      //
13280 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13290 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
132a0 63 72 65 66 3d 22 43 68 61 6e 67 65 44 61 74 61  cref="ChangeData
132b0 62 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20  base" /> method 
132c0 77 61 73 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68  was called on th
132d0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e  e..      /// con
132e0 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
132f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13300 20 20 20 20 20 20 43 68 61 6e 67 65 44 61 74 61        ChangeData
13310 62 61 73 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  base = 4,....   
13320 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13330 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72  ..      /// A tr
13340 61 6e 73 61 63 74 69 6f 6e 20 77 61 73 20 63 72  ansaction was cr
13350 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
13360 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
13370 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13380 3e 0d 0a 20 20 20 20 20 20 4e 65 77 54 72 61 6e  >..      NewTran
13390 73 61 63 74 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a  saction = 5,....
133a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
133b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
133c0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61  he connection wa
133d0 73 20 65 6e 6c 69 73 74 65 64 20 69 6e 74 6f 20  s enlisted into 
133e0 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a  a transaction...
133f0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13400 61 72 79 3e 0d 0a 20 20 20 20 20 20 45 6e 6c 69  ary>..      Enli
13410 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20  stTransaction = 
13420 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
13430 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13440 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 77   /// A command w
13450 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  as created using
13460 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
13470 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13480 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
13490 77 43 6f 6d 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d  wCommand = 7,...
134a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
134b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
134c0 41 20 64 61 74 61 20 72 65 61 64 65 72 20 77 61  A data reader wa
134d0 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
134e0 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
134f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77  mary>..      New
13510 44 61 74 61 52 65 61 64 65 72 20 3d 20 38 2c 0d  DataReader = 8,.
13520 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13530 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13540 2f 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  / An instance of
13550 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 43 72   a <see cref="Cr
13560 69 74 69 63 61 6c 48 61 6e 64 6c 65 22 20 2f 3e  iticalHandle" />
13570 20 64 65 72 69 76 65 64 20 63 6c 61 73 73 20 68   derived class h
13580 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  as..      /// be
13590 65 6e 20 63 72 65 61 74 65 64 20 74 6f 20 77 72  en created to wr
135a0 61 70 20 61 20 6e 61 74 69 76 65 20 72 65 73 6f  ap a native reso
135b0 75 72 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  urce...      ///
135c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
135d0 20 20 20 4e 65 77 43 72 69 74 69 63 61 6c 48 61     NewCriticalHa
135e0 6e 64 6c 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20  ndle = 9,....   
135f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13610 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65  connection is be
13620 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  ing closed...   
13630 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13640 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67  >..      Closing
13650 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 10,....      
13660 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13670 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
13680 6e 65 63 74 69 6f 6e 20 77 61 73 20 63 6c 6f 73  nection was clos
13690 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
136a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
136b0 20 43 6c 6f 73 65 64 20 3d 20 31 31 2c 0d 0a 0d   Closed = 11,...
136c0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
136d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
136e0 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20 62 65 69  A command is bei
136f0 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ng disposed...  
13700 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13710 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70 6f 73  y>..      Dispos
13720 69 6e 67 43 6f 6d 6d 61 6e 64 20 3d 20 31 32 2c  ingCommand = 12,
13730 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13740 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13750 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72  // A data reader
13760 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
13770 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13780 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13790 20 44 69 73 70 6f 73 69 6e 67 44 61 74 61 52 65   DisposingDataRe
137a0 61 64 65 72 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20  ader = 13,....  
137b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
137c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64  >..      /// A d
137d0 61 74 61 20 72 65 61 64 65 72 20 69 73 20 62 65  ata reader is be
137e0 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20  ing closed...   
137f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13800 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e 67  >..      Closing
13810 44 61 74 61 52 65 61 64 65 72 20 3d 20 31 34 2c  DataReader = 14,
13820 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13830 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13840 2f 2f 20 41 20 6e 61 74 69 76 65 20 72 65 73 6f  // A native reso
13850 75 72 63 65 20 77 61 73 20 6f 70 65 6e 65 64 20  urce was opened 
13860 28 69 2e 65 2e 20 6f 62 74 61 69 6e 65 64 29 20  (i.e. obtained) 
13870 66 72 6f 6d 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a  from the pool...
13880 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13890 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e  ary>..      Open
138a0 65 64 46 72 6f 6d 50 6f 6f 6c 20 3d 20 31 35 2c  edFromPool = 15,
138b0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
138c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
138d0 2f 2f 20 41 20 6e 61 74 69 76 65 20 72 65 73 6f  // A native reso
138e0 75 72 63 65 20 77 61 73 20 63 6c 6f 73 65 64 20  urce was closed 
138f0 28 69 2e 65 2e 20 72 65 6c 65 61 73 65 64 29 20  (i.e. released) 
13900 74 6f 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20  to the pool...  
13910 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13920 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 65 64  y>..      Closed
13930 54 6f 50 6f 6f 6c 20 3d 20 31 36 0d 0a 20 20 7d  ToPool = 16..  }
13940 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
13950 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
13960 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
13970 66 20 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f  f SQLite for ADO
13980 2e 4e 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73  .NET can process
13990 20 64 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64   date/time field
139a0 73 20 69 6e 0d 0a 20 20 2f 2f 2f 20 64 61 74 61  s in..  /// data
139b0 62 61 73 65 73 20 69 6e 20 6f 6e 65 20 6f 66 20  bases in one of 
139c0 73 69 78 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20  six formats...  
139d0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
139e0 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
139f0 0a 20 20 2f 2f 2f 20 49 53 4f 38 36 30 31 20 66  .  /// ISO8601 f
13a00 6f 72 6d 61 74 20 69 73 20 6d 6f 72 65 20 63 6f  ormat is more co
13a10 6d 70 61 74 69 62 6c 65 2c 20 72 65 61 64 61 62  mpatible, readab
13a20 6c 65 2c 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73  le, fully-proces
13a30 73 61 62 6c 65 2c 20 62 75 74 20 6c 65 73 73 0d  sable, but less.
13a40 0a 20 20 2f 2f 2f 20 61 63 63 75 72 61 74 65 20  .  /// accurate 
13a50 61 73 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 70  as it does not p
13a60 72 6f 76 69 64 65 20 74 69 6d 65 20 64 6f 77 6e  rovide time down
13a70 20 74 6f 20 66 72 61 63 74 69 6f 6e 73 20 6f 66   to fractions of
13a80 20 61 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 2f 2f   a second...  //
13a90 2f 20 4a 75 6c 69 61 6e 44 61 79 20 69 73 20 74  / JulianDay is t
13aa0 68 65 20 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61  he numeric forma
13ab0 74 20 74 68 65 20 53 51 4c 69 74 65 20 75 73 65  t the SQLite use
13ac0 73 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64  s internally and
13ad0 20 69 73 20 61 72 67 75 61 62 6c 79 0d 0a 20 20   is arguably..  
13ae0 2f 2f 2f 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d  /// the most com
13af0 70 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64  patible with 3rd
13b00 20 70 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49   party tools.  I
13b10 74 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c  t is not readabl
13b20 65 20 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f  e as text..  ///
13b30 20 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72   without post-pr
13b40 6f 63 65 73 73 69 6e 67 2e 20 20 54 69 63 6b 73  ocessing.  Ticks
13b50 20 6c 65 73 73 20 63 6f 6d 70 61 74 69 62 6c 65   less compatible
13b60 20 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20   with 3rd party 
13b70 74 6f 6f 6c 73 20 74 68 61 74 0d 0a 20 20 2f 2f  tools that..  //
13b80 2f 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61  / query the data
13b90 62 61 73 65 2c 20 61 6e 64 20 72 65 6e 64 65 72  base, and render
13ba0 73 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66  s the DateTime f
13bb0 69 65 6c 64 20 75 6e 72 65 61 64 61 62 6c 65 20  ield unreadable 
13bc0 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77  as text..  /// w
13bd0 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63  ithout post-proc
13be0 65 73 73 69 6e 67 2e 20 20 55 6e 69 78 45 70 6f  essing.  UnixEpo
13bf0 63 68 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61  ch is more compa
13c00 74 69 62 6c 65 20 77 69 74 68 20 55 6e 69 78 20  tible with Unix 
13c10 73 79 73 74 65 6d 73 2e 0d 0a 20 20 2f 2f 2f 20  systems...  /// 
13c20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
13c30 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 6e 66   allows the conf
13c40 69 67 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f  igured format fo
13c50 72 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20  r the invariant 
13c60 63 75 6c 74 75 72 65 0d 0a 20 20 2f 2f 2f 20 66  culture..  /// f
13c70 6f 72 6d 61 74 20 74 6f 20 62 65 20 75 73 65 64  ormat to be used
13c80 20 61 6e 64 20 69 73 20 68 75 6d 61 6e 20 72 65   and is human re
13c90 61 64 61 62 6c 65 2e 20 20 43 75 72 72 65 6e 74  adable.  Current
13ca0 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74  Culture allows t
13cb0 68 65 0d 0a 20 20 2f 2f 2f 20 63 6f 6e 66 69 67  he..  /// config
13cc0 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20  ured format for 
13cd0 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74  the current cult
13ce0 75 72 65 20 74 6f 20 62 65 20 75 73 65 64 20 61  ure to be used a
13cf0 6e 64 20 69 73 20 61 6c 73 6f 20 68 75 6d 61 6e  nd is also human
13d00 0d 0a 20 20 2f 2f 2f 20 72 65 61 64 61 62 6c 65  ..  /// readable
13d10 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20  ...  ///..  /// 
13d20 54 68 65 20 70 72 65 66 65 72 72 65 64 20 6f 72  The preferred or
13d30 64 65 72 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20  der of choosing 
13d40 61 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  a DateTime forma
13d50 74 20 69 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20  t is JulianDay, 
13d60 49 53 4f 38 36 30 31 2c 0d 0a 20 20 2f 2f 2f 20  ISO8601,..  /// 
13d70 61 6e 64 20 74 68 65 6e 20 54 69 63 6b 73 2e 20  and then Ticks. 
13d80 20 54 69 63 6b 73 20 69 73 20 6d 61 69 6e 6c 79   Ticks is mainly
13d90 20 70 72 65 73 65 6e 74 20 66 6f 72 20 6c 65 67   present for leg
13da0 61 63 79 20 63 6f 64 65 20 73 75 70 70 6f 72 74  acy code support
13db0 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  ...  /// </remar
13dc0 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ks>..  public en
13dd0 75 6d 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  um SQLiteDateFor
13de0 6d 61 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f  mats..  {..    /
13df0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13e00 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 76 61    /// Use the va
13e10 6c 75 65 20 6f 66 20 44 61 74 65 54 69 6d 65 2e  lue of DateTime.
13e20 54 69 63 6b 73 2e 20 20 54 68 69 73 20 76 61 6c  Ticks.  This val
13e30 75 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  ue is not recomm
13e40 65 6e 64 65 64 20 61 6e 64 20 69 73 20 6e 6f 74  ended and is not
13e50 20 77 65 6c 6c 20 73 75 70 70 6f 72 74 65 64 20   well supported 
13e60 77 69 74 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20  with LINQ...    
13e70 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13e80 20 20 20 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a      Ticks = 0,..
13e90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13ea0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  >..    /// Use t
13eb0 68 65 20 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d  he ISO-8601 form
13ec0 61 74 2e 20 20 55 73 65 73 20 74 68 65 20 22 79  at.  Uses the "y
13ed0 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
13ee0 73 73 2e 46 46 46 46 46 46 46 4b 22 20 66 6f 72  ss.FFFFFFFK" for
13ef0 6d 61 74 20 66 6f 72 20 55 54 43 20 44 61 74 65  mat for UTC Date
13f00 54 69 6d 65 20 76 61 6c 75 65 73 20 61 6e 64 0d  Time values and.
13f10 0a 20 20 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d  .    /// "yyyy-M
13f20 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
13f30 46 46 46 46 46 22 20 66 6f 72 6d 61 74 20 66 6f  FFFFF" format fo
13f40 72 20 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65  r local DateTime
13f50 20 76 61 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f   values)...    /
13f60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13f70 20 20 20 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d     ISO8601 = 1,.
13f80 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
13f90 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
13fa0 69 6e 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65  interval of time
13fb0 20 69 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61   in days and fra
13fc0 63 74 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20  ctions of a day 
13fd0 73 69 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c  since January 1,
13fe0 20 34 37 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f   4713 BC...    /
13ff0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14000 20 20 20 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32     JulianDay = 2
14010 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14020 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
14030 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f  e whole number o
14040 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
14050 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28  the Unix epoch (
14060 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 29  January 1, 1970)
14070 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14080 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45  mary>..    UnixE
14090 70 6f 63 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f  poch = 3,..    /
140a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
140b0 20 20 2f 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72    /// Any cultur
140c0 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 74  e-independent st
140d0 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20  ring value that 
140e0 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
140f0 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74  rk can interpret
14100 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65   as a valid Date
14110 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Time...    /// <
14120 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49  /summary>..    I
14130 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
14140 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 4,..    /// <s
14150 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14160 20 41 6e 79 20 73 74 72 69 6e 67 20 76 61 6c 75   Any string valu
14170 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20  e that the .NET 
14180 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e  Framework can in
14190 74 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c  terpret as a val
141a0 69 64 20 44 61 74 65 54 69 6d 65 20 75 73 69 6e  id DateTime usin
141b0 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75  g the current cu
141c0 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lture...    /// 
141d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
141e0 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d  CurrentCulture =
141f0 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   5,..    /// <su
14200 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
14210 54 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d  The default form
14220 61 74 20 66 6f 72 20 74 68 69 73 20 70 72 6f 76  at for this prov
14230 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ider...    /// <
14240 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44  /summary>..    D
14250 65 66 61 75 6c 74 20 3d 20 49 53 4f 38 36 30 31  efault = ISO8601
14260 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
14270 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
14280 54 68 69 73 20 65 6e 75 6d 20 64 65 74 65 72 6d  This enum determ
14290 69 6e 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20  ines how SQLite 
142a0 74 72 65 61 74 73 20 69 74 73 20 6a 6f 75 72 6e  treats its journ
142b0 61 6c 20 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20  al file...  /// 
142c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f  </summary>..  //
142d0 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f  / <remarks>..  /
142e0 2f 2f 20 42 79 20 64 65 66 61 75 6c 74 20 53 51  // By default SQ
142f0 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65  Lite will create
14300 20 61 6e 64 20 64 65 6c 65 74 65 20 74 68 65 20   and delete the 
14310 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 77 68 65  journal file whe
14320 6e 20 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20  n needed during 
14330 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a  a transaction...
14340 20 20 2f 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66    /// However, f
14350 6f 72 20 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72  or some computer
14360 73 20 72 75 6e 6e 69 6e 67 20 63 65 72 74 61 69  s running certai
14370 6e 20 66 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e  n filesystem mon
14380 69 74 6f 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74  itoring tools, t
14390 68 65 20 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20  he rapid..  /// 
143a0 63 72 65 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c  creation and del
143b0 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75  etion of the jou
143c0 72 6e 61 6c 20 66 69 6c 65 20 63 61 6e 20 63 61  rnal file can ca
143d0 75 73 65 20 74 68 6f 73 65 20 70 72 6f 67 72 61  use those progra
143e0 6d 73 20 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74  ms to fail, or t
143f0 6f 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68  o interfere with
14400 20 53 51 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d   SQLite...  ///.
14410 0a 20 20 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67  .  /// If a prog
14420 72 61 6d 20 6f 72 20 76 69 72 75 73 20 73 63 61  ram or virus sca
14430 6e 6e 65 72 20 69 73 20 69 6e 74 65 72 66 65 72  nner is interfer
14440 69 6e 67 20 77 69 74 68 20 53 51 4c 69 74 65 27  ing with SQLite'
14450 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20  s journal file, 
14460 79 6f 75 20 6d 61 79 20 72 65 63 65 69 76 65 20  you may receive 
14470 65 72 72 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61  errors like "una
14480 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61  ble to open data
14490 62 61 73 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f  base file"..  //
144a0 2f 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67 20  / when starting 
144b0 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  a transaction.  
144c0 49 66 20 74 68 69 73 20 69 73 20 68 61 70 70 65  If this is happe
144d0 6e 69 6e 67 2c 20 79 6f 75 20 6d 61 79 20 77 61  ning, you may wa
144e0 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  nt to change the
144f0 20 64 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c   default journal
14500 20 6d 6f 64 65 20 74 6f 20 50 65 72 73 69 73 74   mode to Persist
14510 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  ...  /// </remar
14520 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ks>..  public en
14530 75 6d 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c  um SQLiteJournal
14540 4d 6f 64 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20  ModeEnum..  {.. 
14550 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14560 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
14570 66 61 75 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73  fault mode, this
14580 20 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74   causes SQLite t
14590 6f 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69  o use the existi
145a0 6e 67 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  ng journaling mo
145b0 64 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  de for the datab
145c0 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ase...    /// </
145d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65  summary>..    De
145e0 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20  fault = -1,..   
145f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14600 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77      /// SQLite w
14610 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64  ill create and d
14620 65 73 74 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e  estroy the journ
14630 61 6c 20 66 69 6c 65 20 61 73 2d 6e 65 65 64 65  al file as-neede
14640 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
14650 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65  mmary>..    Dele
14660 74 65 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  te = 0,..    ///
14670 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14680 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 69 73  /// When this is
14690 20 73 65 74 2c 20 53 51 4c 69 74 65 20 77 69 6c   set, SQLite wil
146a0 6c 20 6b 65 65 70 20 74 68 65 20 6a 6f 75 72 6e  l keep the journ
146b0 61 6c 20 66 69 6c 65 20 65 76 65 6e 20 61 66 74  al file even aft
146c0 65 72 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  er a transaction
146d0 20 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20   has completed. 
146e0 20 49 74 27 73 20 63 6f 6e 74 65 6e 74 73 20 77   It's contents w
146f0 69 6c 6c 20 62 65 20 65 72 61 73 65 64 2c 0d 0a  ill be erased,..
14700 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20      /// and the 
14710 6a 6f 75 72 6e 61 6c 20 72 65 2d 75 73 65 64 20  journal re-used 
14720 61 73 20 6f 66 74 65 6e 20 61 73 20 6e 65 65 64  as often as need
14730 65 64 2e 20 20 49 66 20 69 74 20 69 73 20 64 65  ed.  If it is de
14740 6c 65 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 62  leted, it will b
14750 65 20 72 65 63 72 65 61 74 65 64 20 74 68 65 20  e recreated the 
14760 6e 65 78 74 20 74 69 6d 65 20 69 74 20 69 73 20  next time it is 
14770 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  needed...    ///
14780 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14790 20 50 65 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20   Persist = 1,.. 
147a0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
147b0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f  ..    /// This o
147c0 70 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74  ption disables t
147d0 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  he rollback jour
147e0 6e 61 6c 20 65 6e 74 69 72 65 6c 79 2e 20 20 49  nal entirely.  I
147f0 6e 74 65 72 72 75 70 74 65 64 20 74 72 61 6e 73  nterrupted trans
14800 61 63 74 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f  actions or a pro
14810 67 72 61 6d 20 63 72 61 73 68 20 63 61 6e 20 63  gram crash can c
14820 61 75 73 65 20 64 61 74 61 62 61 73 65 0d 0a 20  ause database.. 
14830 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f     /// corruptio
14840 6e 20 69 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d  n in this mode!.
14850 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14860 72 79 3e 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32  ry>..    Off = 2
14870 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14880 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
14890 4c 69 74 65 20 77 69 6c 6c 20 74 72 75 6e 63 61  Lite will trunca
148a0 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66  te the journal f
148b0 69 6c 65 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67  ile to zero-leng
148c0 74 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65  th instead of de
148d0 6c 65 74 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20  leting it...    
148e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
148f0 20 20 20 20 54 72 75 6e 63 61 74 65 20 3d 20 33      Truncate = 3
14900 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14910 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
14920 4c 69 74 65 20 77 69 6c 6c 20 73 74 6f 72 65 20  Lite will store 
14930 74 68 65 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76  the journal in v
14940 6f 6c 61 74 69 6c 65 20 52 41 4d 2e 20 20 54 68  olatile RAM.  Th
14950 69 73 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f  is saves disk I/
14960 4f 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70  O but at the exp
14970 65 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65  ense of database
14980 20 73 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65   safety and inte
14990 67 72 69 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  grity...    /// 
149a0 49 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  If the applicati
149b0 6f 6e 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20  on using SQLite 
149c0 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
149d0 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73  iddle of a trans
149e0 61 63 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20  action when the 
149f0 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e  MEMORY journalin
14a00 67 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74  g mode is set, t
14a10 68 65 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f  hen the..    ///
14a20 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77   database file w
14a30 69 6c 6c 20 76 65 72 79 20 6c 69 6b 65 6c 79 20  ill very likely 
14a40 67 6f 20 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20  go corrupt...   
14a50 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14a60 0a 20 20 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c  .    Memory = 4,
14a70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
14a80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
14a90 69 74 65 20 75 73 65 73 20 61 20 77 72 69 74 65  ite uses a write
14aa0 2d 61 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65  -ahead log inste
14ab0 61 64 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b  ad of a rollback
14ac0 20 6a 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c   journal to impl
14ad0 65 6d 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  ement transactio
14ae0 6e 73 2e 20 20 54 68 65 20 57 41 4c 20 6a 6f 75  ns.  The WAL jou
14af0 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20  rnaling mode is 
14b00 70 65 72 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20  persistent;..   
14b10 20 2f 2f 2f 20 61 66 74 65 72 20 62 65 69 6e 67   /// after being
14b20 20 73 65 74 20 69 74 20 73 74 61 79 73 20 69 6e   set it stays in
14b30 20 65 66 66 65 63 74 20 61 63 72 6f 73 73 20 6d   effect across m
14b40 75 6c 74 69 70 6c 65 20 64 61 74 61 62 61 73 65  ultiple database
14b50 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64   connections and
14b60 20 61 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61   after closing a
14b70 6e 64 20 72 65 6f 70 65 6e 69 6e 67 20 74 68 65  nd reopening the
14b80 20 64 61 74 61 62 61 73 65 2e 20 41 20 64 61 74   database. A dat
14b90 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69  abase..    /// i
14ba0 6e 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67  n WAL journaling
14bb0 20 6d 6f 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62   mode can only b
14bc0 65 20 61 63 63 65 73 73 65 64 20 62 79 20 53 51  e accessed by SQ
14bd0 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37  Lite version 3.7
14be0 2e 30 20 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20  .0 or later...  
14bf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14c00 0d 0a 20 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20  ..    Wal = 5.. 
14c10 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
14c20 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73  mary>..  /// Pos
14c30 73 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72  sible values for
14c40 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75   the "synchronou
14c50 73 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74  s" database sett
14c60 69 6e 67 2e 20 20 54 68 69 73 20 73 65 74 74 69  ing.  This setti
14c70 6e 67 20 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20  ng determines.. 
14c80 20 2f 2f 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74   /// how often t
14c90 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
14ca0 6e 65 20 63 61 6c 6c 73 20 74 68 65 20 78 53 79  ne calls the xSy
14cb0 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65  nc method of the
14cc0 20 56 46 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73   VFS...  /// </s
14cd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72  ummary>..  inter
14ce0 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65 53  nal enum SQLiteS
14cf0 79 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a  ynchronousEnum..
14d00 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
14d10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14d20 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61  /// Use the defa
14d30 75 6c 74 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  ult "synchronous
14d40 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69  " database setti
14d50 6e 67 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20  ng.  Currently, 
14d60 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a  this should be..
14d70 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 61        /// the sa
14d80 6d 65 20 61 73 20 75 73 69 6e 67 20 74 68 65 20  me as using the 
14d90 46 55 4c 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20  FULL mode...    
14da0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14db0 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20  ..      Default 
14dc0 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = -1,....      /
14dd0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14de0 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
14df0 62 61 73 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74  base engine cont
14e00 69 6e 75 65 73 20 77 69 74 68 6f 75 74 20 73 79  inues without sy
14e10 6e 63 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73  ncing as soon as
14e20 20 69 74 20 68 61 73 20 68 61 6e 64 65 64 0d 0a   it has handed..
14e30 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f        /// data o
14e40 66 66 20 74 6f 20 74 68 65 20 6f 70 65 72 61 74  ff to the operat
14e50 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 66 20  ing system.  If 
14e60 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
14e70 72 75 6e 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a  running SQLite..
14e80 20 20 20 20 20 20 2f 2f 2f 20 63 72 61 73 68 65        /// crashe
14e90 73 2c 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c  s, the data will
14ea0 20 62 65 20 73 61 66 65 2c 20 62 75 74 20 74 68   be safe, but th
14eb0 65 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74  e database might
14ec0 20 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65   become corrupte
14ed0 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20  d..      /// if 
14ee0 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
14ef0 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20  stem crashes or 
14f00 74 68 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73  the computer los
14f10 65 73 20 70 6f 77 65 72 20 62 65 66 6f 72 65 20  es power before 
14f20 74 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  that..      /// 
14f30 64 61 74 61 20 68 61 73 20 62 65 65 6e 20 77 72  data has been wr
14f40 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73  itten to the dis
14f50 6b 20 73 75 72 66 61 63 65 2e 0d 0a 20 20 20 20  k surface...    
14f60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14f70 0d 0a 20 20 20 20 20 20 4f 66 66 20 3d 20 30 2c  ..      Off = 0,
14f80 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
14f90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14fa0 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
14fb0 65 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c  engine will stil
14fc0 6c 20 73 79 6e 63 20 61 74 20 74 68 65 20 6d 6f  l sync at the mo
14fd0 73 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65  st critical mome
14fe0 6e 74 73 2c 20 62 75 74 0d 0a 20 20 20 20 20 20  nts, but..      
14ff0 2f 2f 2f 20 6c 65 73 73 20 6f 66 74 65 6e 20 74  /// less often t
15000 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65  han in FULL mode
15010 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 76 65  .  There is a ve
15020 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68  ry small (though
15030 20 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20   non-zero)..    
15040 20 20 2f 2f 2f 20 63 68 61 6e 63 65 20 74 68 61    /// chance tha
15050 74 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72  t a power failur
15060 65 20 61 74 20 6a 75 73 74 20 74 68 65 20 77 72  e at just the wr
15070 6f 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63  ong time could c
15080 6f 72 72 75 70 74 20 74 68 65 0d 0a 20 20 20 20  orrupt the..    
15090 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 69    /// database i
150a0 6e 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a  n NORMAL mode...
150b0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
150c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d  ary>..      Norm
150d0 61 6c 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  al = 1,....     
150e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
150f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61        /// The da
15100 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69  tabase engine wi
15110 6c 6c 20 75 73 65 20 74 68 65 20 78 53 79 6e 63  ll use the xSync
15120 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56   method of the V
15130 46 53 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61  FS to ensure tha
15140 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  t..      /// all
15150 20 63 6f 6e 74 65 6e 74 20 69 73 20 73 61 66 65   content is safe
15160 6c 79 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68  ly written to th
15170 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 20 70  e disk surface p
15180 72 69 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69  rior to continui
15190 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ng...      /// T
151a0 68 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74  his ensures that
151b0 20 61 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79   an operating sy
151c0 73 74 65 6d 20 63 72 61 73 68 20 6f 72 20 70 6f  stem crash or po
151d0 77 65 72 20 66 61 69 6c 75 72 65 20 77 69 6c 6c  wer failure will
151e0 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
151f0 63 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61  corrupt the data
15200 62 61 73 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63  base.  FULL sync
15210 68 72 6f 6e 6f 75 73 20 69 73 20 76 65 72 79 20  hronous is very 
15220 73 61 66 65 2c 20 62 75 74 20 69 74 20 69 73 20  safe, but it is 
15230 61 6c 73 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  also..      /// 
15240 73 6c 6f 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f  slower...      /
15250 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15260 20 20 20 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20       Full = 2.. 
15270 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
15280 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
15290 20 72 65 71 75 65 73 74 65 64 20 63 6f 6d 6d 61   requested comma
152a0 6e 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  nd execution typ
152b0 65 2e 20 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c  e.  This control
152c0 73 20 77 68 69 63 68 20 6d 65 74 68 6f 64 20 6f  s which method o
152d0 66 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  f the..  /// <se
152e0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
152f0 6d 6d 61 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74  mmand" /> object
15300 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e   will be called.
15310 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
15320 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
15330 6d 20 53 51 4c 69 74 65 45 78 65 63 75 74 65 54  m SQLiteExecuteT
15340 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ype..  {..      
15350 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15360 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68       /// Do noth
15370 69 6e 67 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20  ing.  No method 
15380 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
15390 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
153a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e  mary>..      Non
153b0 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 0,....      
153c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
153d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
153e0 6d 61 6e 64 20 69 73 20 6e 6f 74 20 65 78 70 65  mand is not expe
153f0 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61  cted to return a
15400 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65   result -OR- the
15410 20 72 65 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a   result is not..
15420 20 20 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64        /// needed
15430 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  .  The <see cref
15440 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
15450 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28  ExecuteNonQuery(
15460 29 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20  )" /> or..      
15470 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
15480 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
15490 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 43 6f 6d  cuteNonQuery(Com
154a0 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f  mandBehavior)" /
154b0 3e 20 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20  >  method..     
154c0 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 63 61 6c   /// will be cal
154d0 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  led...      /// 
154e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
154f0 20 20 4e 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d    NonQuery = 1,.
15500 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15510 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15520 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
15530 20 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74   expected to ret
15540 75 72 6e 20 61 20 73 63 61 6c 61 72 20 72 65 73  urn a scalar res
15550 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73  ult -OR- the res
15560 75 6c 74 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20  ult should..    
15570 20 20 2f 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64    /// be limited
15580 20 74 6f 20 61 20 73 63 61 6c 61 72 20 72 65 73   to a scalar res
15590 75 6c 74 2e 20 20 54 68 65 20 3c 73 65 65 20 63  ult.  The <see c
155a0 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
155b0 6e 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72  nd.ExecuteScalar
155c0 28 29 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f  ()" />..      //
155d0 2f 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22  / or <see cref="
155e0 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78  SQLiteCommand.Ex
155f0 65 63 75 74 65 53 63 61 6c 61 72 28 43 6f 6d 6d  ecuteScalar(Comm
15600 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e  andBehavior)" />
15610 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20   method will..  
15620 20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65      /// be calle
15630 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
15640 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15650 53 63 61 6c 61 72 20 3d 20 32 2c 0d 0a 0d 0a 20  Scalar = 2,.... 
15660 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15670 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15680 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70  e command is exp
15690 65 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20  ected to return 
156a0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
156b0 65 44 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20  eDataReader" /> 
156c0 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f  result...      /
156d0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
156e0 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
156f0 45 78 65 63 75 74 65 52 65 61 64 65 72 28 29 22  ExecuteReader()"
15700 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f   /> or..      //
15710 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
15720 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
15730 74 65 52 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64  teReader(Command
15740 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65  Behavior)" /> me
15750 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20  thod will..     
15760 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d   /// be called..
15770 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15780 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61  mary>..      Rea
15790 64 65 72 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20  der = 3,....    
157a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
157b0 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74  .      /// Use t
157c0 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61  he default comma
157d0 6e 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70  nd execution typ
157e0 65 2e 20 20 55 73 69 6e 67 20 74 68 69 73 20 76  e.  Using this v
157f0 61 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65  alue is the same
15800 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 75  ..      /// as u
15810 73 69 6e 67 20 74 68 65 20 3c 73 65 65 20 63 72  sing the <see cr
15820 65 66 3d 22 53 51 4c 69 74 65 45 78 65 63 75 74  ef="SQLiteExecut
15830 65 54 79 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20  eType.NonQuery" 
15840 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  /> value...     
15850 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15860 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d  .      Default =
15870 20 4e 6f 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44   NonQuery /* TOD
15880 4f 3a 20 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f  O: Good default?
15890 20 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f   */..  }....  //
158a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
158b0 2f 2f 20 54 68 65 20 61 63 74 69 6f 6e 20 63 6f  // The action co
158c0 64 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  de responsible f
158d0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  or the current c
158e0 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74  all into the aut
158f0 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20  horizer...  /// 
15900 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
15910 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
15920 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
15930 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Code..  {..     
15940 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15950 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 61 63 74        /// No act
15960 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 70 65 72  ion is being per
15970 66 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 76 61  formed.  This va
15980 6c 75 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  lue should not b
15990 65 20 75 73 65 64 20 66 72 6f 6d 0d 0a 20 20 20  e used from..   
159a0 20 20 20 2f 2f 2f 20 65 78 74 65 72 6e 61 6c 20     /// external 
159b0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  code...      ///
159c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
159d0 20 20 20 4e 6f 6e 65 20 3d 20 2d 31 2c 0d 0a 0d     None = -1,...
159e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
159f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15a00 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0d  No longer used..
15a10 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15a20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 70  mary>..      Cop
15a30 79 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  y = 0,....      
15a40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15a50 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65       /// An inde
15a60 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  x will be create
15a70 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
15a80 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
15a90 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
15aa0 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20   /// index name 
15ab0 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
15ac0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 0d 0a  me...      ///..
15ad0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
15ae0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
15af0 74 65 49 6e 64 65 78 20 3d 20 31 2c 0d 0a 0d 0a  teIndex = 1,....
15b00 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15b10 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15b20 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63   table will be c
15b30 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
15b40 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
15b50 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
15b60 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20        /// table 
15b70 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
15b80 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
15b90 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15ba0 20 20 20 20 43 72 65 61 74 65 54 61 62 6c 65 20      CreateTable 
15bb0 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
15bc0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15bd0 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
15be0 72 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  ry index will be
15bf0 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
15c00 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
15c10 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
15c20 2f 2f 2f 20 61 72 65 20 74 68 65 20 69 6e 64 65  /// are the inde
15c30 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
15c40 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
15c50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15c60 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65  ..      CreateTe
15c70 6d 70 49 6e 64 65 78 20 3d 20 33 2c 0d 0a 0d 0a  mpIndex = 3,....
15c80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15c90 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15ca0 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65   temporary table
15cb0 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
15cc0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
15cd0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
15ce0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
15cf0 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61  the table name a
15d00 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
15d10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15d20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
15d30 65 61 74 65 54 65 6d 70 54 61 62 6c 65 20 3d 20  eateTempTable = 
15d40 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
15d50 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15d60 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
15d70 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
15d80 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
15d90 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
15da0 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
15db0 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 72 69 67  /// are the trig
15dc0 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
15dd0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
15de0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15df0 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
15e00 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 35 2c  TempTrigger = 5,
15e10 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15e20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15e30 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 76  // A temporary v
15e40 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61  iew will be crea
15e50 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
15e60 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
15e70 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
15e80 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d 65  // the view name
15e90 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
15ea0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
15eb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15ec0 43 72 65 61 74 65 54 65 6d 70 56 69 65 77 20 3d  CreateTempView =
15ed0 20 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   6,....      ///
15ee0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15ef0 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20    /// A trigger 
15f00 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
15f10 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
15f20 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
15f30 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
15f40 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  // trigger name 
15f50 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
15f60 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
15f70 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
15f80 20 43 72 65 61 74 65 54 72 69 67 67 65 72 20 3d   CreateTrigger =
15f90 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   7,....      ///
15fa0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15fb0 20 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c    /// A view wil
15fc0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
15fd0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
15fe0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
15ff0 20 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20   the view..     
16000 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
16010 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16020 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16030 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56  >..      CreateV
16040 69 65 77 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20  iew = 8,....    
16050 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16060 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 44 45 4c  .      /// A DEL
16070 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ETE statement wi
16080 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16090 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
160a0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
160b0 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
160c0 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
160d0 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
160e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
160f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6c 65  ary>..      Dele
16100 74 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20  te = 9,....     
16110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16120 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64        /// An ind
16130 65 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  ex will be dropp
16140 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16150 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16160 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20  ts are the..    
16170 20 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65    /// index name
16180 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
16190 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
161a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
161b0 20 20 44 72 6f 70 49 6e 64 65 78 20 3d 20 31 30    DropIndex = 10
161c0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
161d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
161e0 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c  /// A table will
161f0 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16200 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16210 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
16220 74 68 65 20 74 61 62 6c 65 73 0d 0a 20 20 20 20  the tables..    
16230 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61    /// name and a
16240 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
16250 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16260 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 61  y>..      DropTa
16270 62 6c 65 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20  ble = 11,....   
16280 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16290 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
162a0 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69  mporary index wi
162b0 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
162c0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
162d0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
162e0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
162f0 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
16300 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16310 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16320 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16330 70 54 65 6d 70 49 6e 64 65 78 20 3d 20 31 32 2c  pTempIndex = 12,
16340 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16350 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16360 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
16370 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
16380 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
16390 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
163a0 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
163b0 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61  /// the table na
163c0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
163d0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
163e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
163f0 20 20 44 72 6f 70 54 65 6d 70 54 61 62 6c 65 20    DropTempTable 
16400 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 13,....      /
16410 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16420 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72      /// A tempor
16430 61 72 79 20 74 72 69 67 67 65 72 20 77 69 6c 6c  ary trigger will
16440 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16450 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16460 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
16470 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
16480 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20  rigger name and 
16490 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
164a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
164b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
164c0 70 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 31  pTempTrigger = 1
164d0 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
164e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
164f0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
16500 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72   view will be dr
16510 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
16520 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16530 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20  ments are..     
16540 20 2f 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61   /// the view na
16550 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16560 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16570 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16580 20 20 44 72 6f 70 54 65 6d 70 56 69 65 77 20 3d    DropTempView =
16590 20 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   15,....      //
165a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
165b0 20 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72     /// A trigger
165c0 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
165d0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
165e0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
165f0 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20   are the..      
16600 2f 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65  /// trigger name
16610 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e   and the table n
16620 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
16630 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16640 20 20 44 72 6f 70 54 72 69 67 67 65 72 20 3d 20    DropTrigger = 
16650 31 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  16,....      ///
16660 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16670 20 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c    /// A view wil
16680 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
16690 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
166a0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
166b0 20 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20   the view..     
166c0 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
166d0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
166e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
166f0 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 69 65  >..      DropVie
16700 77 20 3d 20 31 37 2c 0d 0a 0d 0a 20 20 20 20 20  w = 17,....     
16710 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16720 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 49 4e 53        /// An INS
16730 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ERT statement wi
16740 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16750 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16760 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16770 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16780 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
16790 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
167a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
167b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 73 65  ary>..      Inse
167c0 72 74 20 3d 20 31 38 2c 0d 0a 0d 0a 20 20 20 20  rt = 18,....    
167d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
167e0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 50 52 41  .      /// A PRA
167f0 47 4d 41 20 73 74 61 74 65 6d 65 6e 74 20 77 69  GMA statement wi
16800 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
16810 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16820 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16830 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16840 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 50 52  e name of the PR
16850 41 47 4d 41 20 61 6e 64 20 74 68 65 20 6e 65 77  AGMA and the new
16860 20 76 61 6c 75 65 20 6f 72 20 61 20 6e 75 6c 6c   value or a null
16870 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16880 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16890 20 20 20 20 20 50 72 61 67 6d 61 20 3d 20 31 39       Pragma = 19
168a0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
168b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
168c0 2f 2f 2f 20 41 20 74 61 62 6c 65 20 63 6f 6c 75  /// A table colu
168d0 6d 6e 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e  mn will be read.
168e0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
168f0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
16900 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
16910 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  // table name an
16920 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  d the column nam
16930 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16940 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16950 52 65 61 64 20 3d 20 32 30 2c 0d 0a 0d 0a 20 20  Read = 20,....  
16960 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16970 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53  >..      /// A S
16980 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
16990 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
169a0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
169b0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
169c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
169d0 62 6f 74 68 20 6e 75 6c 6c 20 76 61 6c 75 65 73  both null values
169e0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
169f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
16a00 65 6c 65 63 74 20 3d 20 32 31 2c 0d 0a 0d 0a 20  elect = 21,.... 
16a10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16a20 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16a30 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c  transaction will
16a40 20 62 65 20 73 74 61 72 74 65 64 2c 20 63 6f 6d   be started, com
16a50 6d 69 74 74 65 64 2c 20 6f 72 20 72 6f 6c 6c 65  mitted, or rolle
16a60 64 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20  d back.  The..  
16a70 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73      /// action-s
16a80 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16a90 73 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f  s are the name o
16aa0 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  f the operation 
16ab0 28 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f  (BEGIN,..      /
16ac0 2f 2f 20 43 4f 4d 4d 49 54 2c 20 6f 72 20 52 4f  // COMMIT, or RO
16ad0 4c 4c 42 41 43 4b 29 20 61 6e 64 20 61 20 6e 75  LLBACK) and a nu
16ae0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
16af0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16b00 0a 20 20 20 20 20 20 54 72 61 6e 73 61 63 74 69  .      Transacti
16b10 6f 6e 20 3d 20 32 32 2c 0d 0a 0d 0a 20 20 20 20  on = 22,....    
16b20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16b30 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 55 50  .      /// An UP
16b40 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77  DATE statement w
16b50 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e  ill be executed.
16b60 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16b70 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
16b80 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
16b90 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
16ba0 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  d the column nam
16bb0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16bc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16bd0 55 70 64 61 74 65 20 3d 20 32 33 2c 0d 0a 0d 0a  Update = 23,....
16be0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16bf0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16c00 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62   database will b
16c10 65 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68  e attached to th
16c20 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54  e connection.  T
16c30 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
16c40 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ic..      /// ar
16c50 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
16c60 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e 61  database file na
16c70 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16c80 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16c90 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16ca0 20 20 41 74 74 61 63 68 20 3d 20 32 34 2c 0d 0a    Attach = 24,..
16cb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16cc0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16cd0 20 41 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c   A database will
16ce0 20 62 65 20 64 65 74 61 63 68 65 64 20 66 72 6f   be detached fro
16cf0 6d 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  m the connection
16d00 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16d10 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f  ecific..      //
16d20 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  / arguments are 
16d30 74 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d  the database nam
16d40 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
16d50 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
16d60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16d70 20 44 65 74 61 63 68 20 3d 20 32 35 2c 0d 0a 0d   Detach = 25,...
16d80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16d90 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16da0 54 68 65 20 73 63 68 65 6d 61 20 6f 66 20 61 20  The schema of a 
16db0 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6c  table will be al
16dc0 74 65 72 65 64 2e 20 20 54 68 65 20 61 63 74 69  tered.  The acti
16dd0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16de0 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
16df0 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73   are the databas
16e00 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  e name and the t
16e10 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
16e20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16e30 0d 0a 20 20 20 20 20 20 41 6c 74 65 72 54 61 62  ..      AlterTab
16e40 6c 65 20 3d 20 32 36 2c 0d 0a 0d 0a 20 20 20 20  le = 26,....    
16e50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16e60 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e  .      /// An in
16e70 64 65 78 20 77 69 6c 6c 20 62 65 20 64 65 6c 65  dex will be dele
16e80 74 65 64 20 61 6e 64 20 74 68 65 6e 20 72 65 63  ted and then rec
16e90 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
16ea0 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20  ion-specific..  
16eb0 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
16ec0 73 20 61 72 65 20 74 68 65 20 69 6e 64 65 78 20  s are the index 
16ed0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16ee0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16ef0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16f00 20 20 20 20 52 65 69 6e 64 65 78 20 3d 20 32 37      Reindex = 27
16f10 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16f20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16f30 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c  /// A table will
16f40 20 62 65 20 61 6e 61 6c 79 7a 65 64 20 74 6f 20   be analyzed to 
16f50 67 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69  gathers statisti
16f60 63 73 20 61 62 6f 75 74 20 69 74 2e 20 20 54 68  cs about it.  Th
16f70 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74  e..      /// act
16f80 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16f90 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74  uments are the t
16fa0 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
16fb0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16fc0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16fd0 3e 0d 0a 20 20 20 20 20 20 41 6e 61 6c 79 7a 65  >..      Analyze
16fe0 20 3d 20 32 38 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 28,....      
16ff0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17000 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75       /// A virtu
17010 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  al table will be
17020 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
17030 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
17040 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
17050 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
17060 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d  e name and the m
17070 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  odule name...   
17080 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17090 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56  >..      CreateV
170a0 74 61 62 6c 65 20 3d 20 32 39 2c 0d 0a 0d 0a 20  table = 29,.... 
170b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
170c0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
170d0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
170e0 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
170f0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
17100 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
17110 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
17120 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
17130 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e  the module name.
17140 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17150 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72  mmary>..      Dr
17160 6f 70 56 74 61 62 6c 65 20 3d 20 33 30 2c 0d 0a  opVtable = 30,..
17170 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17180 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17190 20 41 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20   A SQL function 
171a0 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20  will be called. 
171b0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
171c0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
171d0 72 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  re a..      /// 
171e0 6e 75 6c 6c 20 76 61 6c 75 65 20 61 6e 64 20 74  null value and t
171f0 68 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65  he function name
17200 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17210 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46  ummary>..      F
17220 75 6e 63 74 69 6f 6e 20 3d 20 33 31 2c 0d 0a 0d  unction = 31,...
17230 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17240 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17250 41 20 73 61 76 65 70 6f 69 6e 74 20 77 69 6c 6c  A savepoint will
17260 20 62 65 20 63 72 65 61 74 65 64 2c 20 72 65 6c   be created, rel
17270 65 61 73 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64  eased, or rolled
17280 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20   back.  The..   
17290 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70     /// action-sp
172a0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
172b0 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66   are the name of
172c0 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28   the operation (
172d0 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f  BEGIN,..      //
172e0 2f 20 52 45 4c 45 41 53 45 2c 20 6f 72 20 52 4f  / RELEASE, or RO
172f0 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20  LLBACK) and the 
17300 73 61 76 65 70 6f 69 6e 74 20 6e 61 6d 65 2e 0d  savepoint name..
17310 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17320 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 61 76  mary>..      Sav
17330 65 70 6f 69 6e 74 20 3d 20 33 32 2c 0d 0a 0d 0a  epoint = 32,....
17340 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17350 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17360 20 72 65 63 75 72 73 69 76 65 20 71 75 65 72 79   recursive query
17370 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65   will be execute
17380 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17390 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
173a0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
173b0 20 74 77 6f 20 6e 75 6c 6c 20 76 61 6c 75 65 73   two null values
173c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
173d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
173e0 65 63 75 72 73 69 76 65 20 3d 20 33 33 0d 0a 20  ecursive = 33.. 
173f0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
17400 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
17410 20 70 6f 73 73 69 62 6c 65 20 72 65 74 75 72 6e   possible return
17420 20 63 6f 64 65 73 20 66 6f 72 20 74 68 65 20 70   codes for the p
17430 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b  rogress callback
17440 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
17450 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
17460 75 6d 20 53 51 4c 69 74 65 50 72 6f 67 72 65 73  um SQLiteProgres
17470 73 52 65 74 75 72 6e 43 6f 64 65 20 2f 2a 20 69  sReturnCode /* i
17480 6e 74 20 2a 2f 0d 0a 20 20 7b 0d 0a 20 20 20 20  nt */..  {..    
17490 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
174a0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  .      /// The o
174b0 70 65 72 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  peration should 
174c0 63 6f 6e 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20  continue...     
174d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
174e0 0a 20 20 20 20 20 20 43 6f 6e 74 69 6e 75 65 20  .      Continue 
174f0 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 0,....      //
17500 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17510 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 65 72 61     /// The opera
17520 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 69  tion should be i
17530 6e 74 65 72 72 75 70 74 65 64 2e 0d 0a 20 20 20  nterrupted...   
17540 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17550 3e 0d 0a 20 20 20 20 20 20 49 6e 74 65 72 72 75  >..      Interru
17560 70 74 20 3d 20 31 0d 0a 20 20 7d 0d 0a 0d 0a 20  pt = 1..  }.... 
17570 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17580 20 20 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e    /// The return
17590 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 63 75   code for the cu
175a0 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20  rrent call into 
175b0 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d  the authorizer..
175c0 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
175d0 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
175e0 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
175f0 72 52 65 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b  rReturnCode..  {
17600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17610 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17620 20 54 68 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c   The action will
17630 20 62 65 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20   be allowed...  
17640 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17650 79 3e 0d 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30  y>..      Ok = 0
17660 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17670 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17680 2f 2f 2f 20 54 68 65 20 6f 76 65 72 61 6c 6c 20  /// The overall 
17690 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64  action will be d
176a0 69 73 61 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e  isallowed and an
176b0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77   error message w
176c0 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  ill be..      //
176d0 2f 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  / returned from 
176e0 74 68 65 20 71 75 65 72 79 20 70 72 65 70 61 72  the query prepar
176f0 61 74 69 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20  ation method... 
17700 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17710 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 20  ry>..      Deny 
17720 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
17730 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17740 20 20 20 2f 2f 2f 20 54 68 65 20 73 70 65 63 69     /// The speci
17750 66 69 63 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20  fic action will 
17760 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68  be disallowed; h
17770 6f 77 65 76 65 72 2c 20 74 68 65 20 6f 76 65 72  owever, the over
17780 61 6c 6c 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20  all action..    
17790 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69    /// will conti
177a0 6e 75 65 2e 20 20 54 68 65 20 65 78 61 63 74 20  nue.  The exact 
177b0 65 66 66 65 63 74 73 20 6f 66 20 74 68 69 73 20  effects of this 
177c0 72 65 74 75 72 6e 20 63 6f 64 65 20 76 61 72 79  return code vary
177d0 20 64 65 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20   depending..    
177e0 20 20 2f 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65    /// on the spe
177f0 63 69 66 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c  cific action, pl
17800 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 68  ease refer to th
17810 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
17820 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
17830 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
17840 6f 72 20 66 75 74 68 65 72 20 64 65 74 61 69 6c  or futher detail
17850 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
17860 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17870 49 67 6e 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d  Ignore = 2..  }.
17880 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
17890 79 3e 0d 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20  y>..  /// Class 
178a0 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  used internally 
178b0 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
178c0 20 64 61 74 61 74 79 70 65 20 6f 66 20 61 20 63   datatype of a c
178d0 6f 6c 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c  olumn in a resul
178e0 74 73 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  tset..  /// </su
178f0 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
17900 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
17910 53 51 4c 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d  SQLiteType..  {.
17920 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
17930 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
17940 44 62 54 79 70 65 20 6f 66 20 74 68 65 20 63 6f  DbType of the co
17950 6c 75 6d 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e  lumn, or DbType.
17960 4f 62 6a 65 63 74 20 69 66 20 69 74 20 63 61 6e  Object if it can
17970 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
17980 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  d..    /// </sum
17990 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
179a0 6e 61 6c 20 44 62 54 79 70 65 20 54 79 70 65 3b  nal DbType Type;
179b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
179c0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
179d0 20 61 66 66 69 6e 69 74 79 20 6f 66 20 61 20 63   affinity of a c
179e0 6f 6c 75 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20  olumn, used for 
179f0 65 78 70 72 65 73 73 69 6f 6e 73 20 6f 72 20 77  expressions or w
17a00 68 65 6e 20 54 79 70 65 20 69 73 20 44 62 54 79  hen Type is DbTy
17a10 70 65 2e 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe.Object..    /
17a20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17a30 20 20 20 69 6e 74 65 72 6e 61 6c 20 54 79 70 65     internal Type
17a40 41 66 66 69 6e 69 74 79 20 41 66 66 69 6e 69 74  Affinity Affinit
17a50 79 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  y;....    //////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
17ab0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17ac0 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
17ad0 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63   default instanc
17ae0 65 20 6f 66 20 74 68 69 73 20 74 79 70 65 2e 0d  e of this type..
17af0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
17b00 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
17b10 53 51 4c 69 74 65 54 79 70 65 28 29 0d 0a 20 20  SQLiteType()..  
17b20 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 20 64 6f    {..      // do
17b30 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d   nothing...    }
17b40 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
17b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b90 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
17ba0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
17bb0 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
17bc0 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
17bd0 20 74 79 70 65 20 77 69 74 68 20 74 68 65 20 73   type with the s
17be0 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 20 76  pecified field v
17bf0 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  alues...    /// 
17c00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17c10 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17c20 22 61 66 66 69 6e 69 74 79 22 3e 0d 0a 20 20 20  "affinity">..   
17c30 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61 66   /// The type af
17c40 66 69 6e 69 74 79 20 74 6f 20 75 73 65 20 66 6f  finity to use fo
17c50 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e  r the new instan
17c60 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ce...    /// </p
17c70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
17c80 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65  param name="type
17c90 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
17ca0 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f  database type to
17cb0 20 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77   use for the new
17cc0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
17cd0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
17ce0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54    public SQLiteT
17cf0 79 70 65 28 0d 0a 20 20 20 20 20 20 54 79 70 65  ype(..      Type
17d00 41 66 66 69 6e 69 74 79 20 61 66 66 69 6e 69 74  Affinity affinit
17d10 79 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  y,..      DbType
17d20 20 74 79 70 65 0d 0a 20 20 20 20 20 20 29 0d 0a   type..      )..
17d30 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
17d40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 68 69      {..      thi
17d50 73 2e 41 66 66 69 6e 69 74 79 20 3d 20 61 66 66  s.Affinity = aff
17d60 69 6e 69 74 79 3b 0d 0a 20 20 20 20 20 20 74 68  inity;..      th
17d70 69 73 2e 54 79 70 65 20 3d 20 74 79 70 65 3b 0d  is.Type = type;.
17d80 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20  .    }..  }.... 
17d90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17de0 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61  ..  internal sea
17df0 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
17e00 44 62 54 79 70 65 4d 61 70 0d 0a 20 20 20 20 20  DbTypeMap..     
17e10 20 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74   : Dictionary<st
17e20 72 69 6e 67 2c 20 53 51 4c 69 74 65 44 62 54 79  ring, SQLiteDbTy
17e30 70 65 4d 61 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d  peMapping>..  {.
17e40 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
17e50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
17e60 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
17e70 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c 20 53 51  onary<DbType, SQ
17e80 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
17e90 67 3e 20 72 65 76 65 72 73 65 3b 0d 0a 20 20 20  g> reverse;..   
17ea0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
17eb0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
17ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f00 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
17f10 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
17f20 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 70 75 62  ctors..      pub
17f30 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  lic SQLiteDbType
17f40 4d 61 70 28 29 0d 0a 20 20 20 20 20 20 20 20 20  Map()..         
17f50 20 3a 20 62 61 73 65 28 6e 65 77 20 54 79 70 65   : base(new Type
17f60 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72  NameStringCompar
17f70 65 72 28 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  er())..      {..
17f80 20 20 20 20 20 20 20 20 20 20 72 65 76 65 72 73            revers
17f90 65 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  e = new Dictiona
17fa0 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74  ry<DbType, SQLit
17fb0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 28  eDbTypeMapping>(
17fc0 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
17fd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18020 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53  ..      public S
18030 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 0d  QLiteDbTypeMap(.
18040 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d  .          IEnum
18050 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54  erable<SQLiteDbT
18060 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c  ypeMapping> coll
18070 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ection..        
18080 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a    )..          :
18090 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 7b   this()..      {
180a0 0d 0a 20 20 20 20 20 20 20 20 20 20 41 64 64 28  ..          Add(
180b0 63 6f 6c 6c 65 63 74 69 6f 6e 29 3b 0d 0a 20 20  collection);..  
180c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
180d0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
180e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18130 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74      #region Syst
18140 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
18150 65 6e 65 72 69 63 2e 44 69 63 74 69 6f 6e 61 72  eneric.Dictionar
18160 79 20 22 4f 76 65 72 72 69 64 65 73 22 0d 0a 20  y "Overrides".. 
18170 20 20 20 20 20 70 75 62 6c 69 63 20 6e 65 77 20       public new 
18180 69 6e 74 20 43 6c 65 61 72 28 29 0d 0a 20 20 20  int Clear()..   
18190 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
181a0 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d  int result = 0;.
181b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
181c0 28 72 65 76 65 72 73 65 20 21 3d 20 6e 75 6c 6c  (reverse != null
181d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
181e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
181f0 73 75 6c 74 20 2b 3d 20 72 65 76 65 72 73 65 2e  sult += reverse.
18200 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  Count;..        
18210 20 20 20 20 20 20 72 65 76 65 72 73 65 2e 43 6c        reverse.Cl
18220 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ear();..        
18230 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
18240 20 72 65 73 75 6c 74 20 2b 3d 20 62 61 73 65 2e   result += base.
18250 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  Count;..        
18260 20 20 62 61 73 65 2e 43 6c 65 61 72 28 29 3b 0d    base.Clear();.
18270 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
18280 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
18290 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
182a0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18300 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
18310 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 48  eDbTypeMapping H
18320 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
18330 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
18340 20 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20   Add(..         
18350 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c   IEnumerable<SQL
18360 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
18370 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20  > collection..  
18380 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
18390 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
183a0 20 28 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20   (collection == 
183b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
183c0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
183d0 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
183e0 74 69 6f 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e  tion("collection
183f0 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
18400 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65   foreach (SQLite
18410 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74  DbTypeMapping it
18420 65 6d 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e  em in collection
18430 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
18440 20 41 64 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20   Add(item);..   
18450 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
184b0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64   public void Add
184c0 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70  (SQLiteDbTypeMap
184d0 70 69 6e 67 20 69 74 65 6d 29 0d 0a 20 20 20 20  ping item)..    
184e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
184f0 66 20 28 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29  f (item == null)
18500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18510 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
18520 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
18530 22 69 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20  "item");....    
18540 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 74        if (item.t
18550 79 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  ypeName == null)
18560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18570 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
18580 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65  ntException("ite
18590 6d 20 74 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e  m type name cann
185a0 6f 74 20 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d  ot be null");...
185b0 0a 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e  .          base.
185c0 41 64 64 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d  Add(item.typeNam
185d0 65 2c 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20  e, item);....   
185e0 20 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e         if (item.
185f0 70 72 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20  primary)..      
18600 20 20 20 20 20 20 20 20 72 65 76 65 72 73 65 2e          reverse.
18610 41 64 64 28 69 74 65 6d 2e 64 61 74 61 54 79 70  Add(item.dataTyp
18620 65 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20  e, item);..     
18630 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
18640 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18690 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
186a0 20 23 72 65 67 69 6f 6e 20 44 62 54 79 70 65 20   #region DbType 
186b0 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
186c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
186d0 6c 20 43 6f 6e 74 61 69 6e 73 4b 65 79 28 44 62  l ContainsKey(Db
186e0 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20  Type key)..     
186f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
18700 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c   (reverse == nul
18710 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
18720 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
18730 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
18740 75 72 6e 20 72 65 76 65 72 73 65 2e 43 6f 6e 74  urn reverse.Cont
18750 61 69 6e 73 4b 65 79 28 6b 65 79 29 3b 0d 0a 20  ainsKey(key);.. 
18760 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
187c0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54     public bool T
187d0 72 79 47 65 74 56 61 6c 75 65 28 44 62 54 79 70  ryGetValue(DbTyp
187e0 65 20 6b 65 79 2c 20 6f 75 74 20 53 51 4c 69 74  e key, out SQLit
187f0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
18800 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  alue)..      {..
18810 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
18820 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
18830 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
18840 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
18850 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
18860 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
18870 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
18880 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
18890 72 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e 54  return reverse.T
188a0 72 79 47 65 74 56 61 6c 75 65 28 6b 65 79 2c 20  ryGetValue(key, 
188b0 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  out value);..   
188c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
188d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18910 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18920 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 6d   public bool Rem
18930 6f 76 65 28 44 62 54 79 70 65 20 6b 65 79 29 0d  ove(DbType key).
18940 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
18950 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
18960 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
18970 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
18980 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
18990 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73     return revers
189a0 65 2e 52 65 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a  e.Remove(key);..
189b0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
189c0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
189d0 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
189e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a20 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  /....  internal 
18a30 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
18a40 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
18a50 0d 0a 20 20 7b 0d 0a 20 20 20 20 69 6e 74 65 72  ..  {..    inter
18a60 6e 61 6c 20 53 51 4c 69 74 65 44 62 54 79 70 65  nal SQLiteDbType
18a70 4d 61 70 70 69 6e 67 28 0d 0a 20 20 20 20 20 20  Mapping(..      
18a80 20 20 73 74 72 69 6e 67 20 6e 65 77 54 79 70 65    string newType
18a90 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 44  Name,..        D
18aa0 62 54 79 70 65 20 6e 65 77 44 61 74 61 54 79 70  bType newDataTyp
18ab0 65 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  e,..        bool
18ac0 20 6e 65 77 50 72 69 6d 61 72 79 0d 0a 20 20 20   newPrimary..   
18ad0 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
18ae0 20 20 20 20 20 74 79 70 65 4e 61 6d 65 20 3d 20       typeName = 
18af0 6e 65 77 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  newTypeName;..  
18b00 20 20 20 20 64 61 74 61 54 79 70 65 20 3d 20 6e      dataType = n
18b10 65 77 44 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  ewDataType;..   
18b20 20 20 20 70 72 69 6d 61 72 79 20 3d 20 6e 65 77     primary = new
18b30 50 72 69 6d 61 72 79 3b 0d 0a 20 20 20 20 7d 0d  Primary;..    }.
18b40 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
18b50 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b  string typeName;
18b60 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
18b70 62 54 79 70 65 20 64 61 74 61 54 79 70 65 3b 0d  bType dataType;.
18b80 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f  .    internal bo
18b90 6f 6c 20 70 72 69 6d 61 72 79 3b 0d 0a 20 20 7d  ol primary;..  }
18ba0 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  ....  internal s
18bb0 65 61 6c 65 64 20 63 6c 61 73 73 20 54 79 70 65  ealed class Type
18bc0 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72  NameStringCompar
18bd0 65 72 20 3a 20 49 45 71 75 61 6c 69 74 79 43 6f  er : IEqualityCo
18be0 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 0d 0a  mparer<string>..
18bf0 20 20 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e    {..    #region
18c00 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72   IEqualityCompar
18c10 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65  er<string> Membe
18c20 72 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  rs..    public b
18c30 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20  ool Equals(..   
18c40 20 20 20 73 74 72 69 6e 67 20 6c 65 66 74 2c 0d     string left,.
18c50 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 72 69  .      string ri
18c60 67 68 74 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20  ght..      )..  
18c70 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
18c80 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  n String.Equals(
18c90 6c 65 66 74 2c 20 72 69 67 68 74 2c 20 53 74 72  left, right, Str
18ca0 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
18cb0 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
18cc0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
18cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18d20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65     public int Ge
18d30 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20  tHashCode(..    
18d40 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a    string value..
18d50 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
18d60 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
18d70 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 6e 6c  // NOTE: The onl
18d80 79 20 74 68 69 6e 67 20 74 68 61 74 20 77 65 20  y thing that we 
18d90 6d 75 73 74 20 67 75 61 72 61 6e 74 65 65 20 68  must guarantee h
18da0 65 72 65 2c 20 61 63 63 6f 72 64 69 6e 67 0d 0a  ere, according..
18db0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
18dc0 6f 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d  o the MSDN docum
18dd0 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 49 45 71  entation for IEq
18de0 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 2c 20  ualityComparer, 
18df0 69 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  is..      //    
18e00 20 20 20 74 68 61 74 20 66 6f 72 20 74 77 6f 20     that for two 
18e10 67 69 76 65 6e 20 73 74 72 69 6e 67 73 2c 20 69  given strings, i
18e20 66 20 45 71 75 61 6c 73 20 72 65 74 75 72 6e 20  f Equals return 
18e30 74 72 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20  true then..     
18e40 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 74 77   //       the tw
18e50 6f 20 73 74 72 69 6e 67 73 20 6d 75 73 74 20 68  o strings must h
18e60 61 73 68 20 74 6f 20 74 68 65 20 73 61 6d 65 20  ash to the same 
18e70 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
18e80 0d 0a 20 20 20 20 20 20 69 66 20 28 76 61 6c 75  ..      if (valu
18e90 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 23 69 66 20  e != null)..#if 
18ea0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
18eb0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
18ec0 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
18ed0 2e 54 6f 4c 6f 77 65 72 49 6e 76 61 72 69 61 6e  .ToLowerInvarian
18ee0 74 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65 28  t().GetHashCode(
18ef0 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
18f00 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
18f10 54 6f 4c 6f 77 65 72 28 29 2e 47 65 74 48 61 73  ToLower().GetHas
18f20 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6e 64 69 66  hCode();..#endif
18f30 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20  ..      else..  
18f40 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
18f50 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
18f60 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
18f70 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
18f80 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a  region..  }..}..