System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 7cba89c517b0c6147e759560cfafb350bfbe6168:


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 69 63 6b 73 54 6f 44 61 74 65 54 69 6d 65   TicksToDateTime
56b0: 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 36 34  (Convert.ToInt64
56c0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
56d0: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
56e0: 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
56f0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
5700: 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20  e), kind);..    
5710: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5720: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5730: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
5740: 73 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20  s.JulianDay:..  
5750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
5760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5770: 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61       return ToDa
5780: 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54  teTime(Convert.T
5790: 6f 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20  oDouble(..      
57a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57b0: 20 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74    dateText, Cult
57c0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
57d0: 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29  tCulture), kind)
57e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
57f0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5800: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
5810: 65 46 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f  eFormats.UnixEpo
5820: 63 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ch:..           
5830: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5840: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5850: 72 6e 20 55 6e 69 78 45 70 6f 63 68 54 6f 44 61  rn UnixEpochToDa
5860: 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54  teTime(Convert.T
5870: 6f 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20  oInt64(..       
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5890: 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75   dateText, Cultu
58a0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
58b0: 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b  Culture), kind);
58c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
58d0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
58e0: 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65   case SQLiteDate
58f0: 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e  Formats.Invarian
5900: 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20  tCulture:..     
5910: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5930: 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69    if (formatStri
5940: 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ng != null)..   
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
5970: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
5980: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
5990: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72     dateText, for
59c0: 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20  matString,..    
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59e0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
59f0: 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72  FormatInfo.Invar
5a00: 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20  iantInfo,..     
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a20: 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44         kind == D
5a30: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20  ateTimeKind.Utc 
5a40: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a60: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
5a70: 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72  s.AdjustToUniver
5a80: 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  sal :..         
5a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5aa0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
5ab0: 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20  tyles.None),..  
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b            kind);
5ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5af0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
5b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b10: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
5b20: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
5b30: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 28 0d  DateTime.Parse(.
5b40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
5b60: 65 54 65 78 74 2c 20 44 61 74 65 54 69 6d 65 46  eText, DateTimeF
5b70: 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69  ormatInfo.Invari
5b80: 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20  antInfo,..      
5b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ba0: 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61        kind == Da
5bb0: 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f  teTimeKind.Utc ?
5bc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73    DateTimeStyles
5bf0: 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73  .AdjustToUnivers
5c00: 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  al :..          
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74        DateTimeSt
5c30: 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20  yles.None),..   
5c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c50: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d           kind);.
5c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5c70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5c80: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
5c90: 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75  ormats.CurrentCu
5ca0: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
5cb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5cd0: 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  f (formatString 
5ce0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d00: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
5d10: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61  e.SpecifyKind(Da
5d20: 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63  teTime.ParseExac
5d30: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d50: 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d 61 74  dateText, format
5d60: 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20  String,..       
5d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d80: 20 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72       DateTimeFor
5d90: 6d 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49  matInfo.CurrentI
5da0: 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nfo,..          
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69    kind == DateTi
5dd0: 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20  meKind.Utc ?..  
5de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
5e00: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a  teTimeStyles.Adj
5e10: 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a  ustToUniversal :
5e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e40: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73    DateTimeStyles
5e50: 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20  .None),..       
5e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e70: 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20       kind);..   
5e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e90: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
5ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5eb0: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
5ec0: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
5ed0: 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20  ime.Parse(..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ef0: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74          dateText
5f00: 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  , DateTimeFormat
5f10: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f  Info.CurrentInfo
5f20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
5f40: 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b  ind == DateTimeK
5f50: 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20  ind.Utc ?..     
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f70: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
5f80: 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74  imeStyles.Adjust
5f90: 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20  ToUniversal :.. 
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
5fc0: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f  ateTimeStyles.No
5fd0: 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ne),..          
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ff0: 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20    kind);..      
6000: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
6010: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
6020: 3a 20 2f 2a 20 49 53 4f 2d 38 36 30 31 20 2a 2f  : /* ISO-8601 */
6030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6040: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6050: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72           if (for
6060: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
6070: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6080: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6090: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
60a0: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
60b0: 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20  .ParseExact(..  
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60d0: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
60e0: 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  xt, formatString
60f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6110: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
6120: 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c  o.InvariantInfo,
6130: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
6150: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
6160: 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20  nd.Utc ?..      
6170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6180: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
6190: 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54  meStyles.AdjustT
61a0: 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20  oUniversal :..  
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
61d0: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e  teTimeStyles.Non
61e0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20   kind);..       
6210: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
6220: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
6230: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
6240: 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69  n DateTime.Speci
6250: 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e  fyKind(DateTime.
6260: 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20  ParseExact(..   
6270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6280: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78           dateTex
6290: 74 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d  t, _datetimeForm
62a0: 61 74 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ats,..          
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
62d0: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e  Info.InvariantIn
62e0: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
62f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6300: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
6310: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
6320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
6340: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
6350: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
6360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
6390: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
63a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63b0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
63c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
63d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
63e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
63f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
6400: 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61 6e 64  nverts a juliand
6410: 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20 61 20  ay value into a 
6420: 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f  DateTime..    //
6430: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6440: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6450: 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68  e="julianDay">Th
6460: 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65  e value to conve
6470: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
6480: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 2e  /// <returns>A .
6490: 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f 72 65  NET DateTime</re
64a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
64b0: 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61  ic DateTime ToDa
64c0: 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20 6a 75  teTime(double ju
64d0: 6c 69 61 6e 44 61 79 29 0d 0a 20 20 20 20 7b 0d  lianDay)..    {.
64e0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f  .      return To
64f0: 44 61 74 65 54 69 6d 65 28 6a 75 6c 69 61 6e 44  DateTime(julianD
6500: 61 79 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e  ay, _datetimeKin
6510: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
6520: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6530: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6540: 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61  s a julianday va
6550: 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54  lue into a DateT
6560: 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ime..    /// </s
6570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6580: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75   <param name="ju
6590: 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c  lianDay">The val
65a0: 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70  ue to convert</p
65b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
65c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64  param name="kind
65d0: 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69  ">The DateTimeKi
65e0: 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  nd to use.</para
65f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6600: 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61 74 65  urns>A .NET Date
6610: 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  Time</returns>..
6620: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
6630: 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74  c DateTime ToDat
6640: 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eTime(..        
6650: 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79  double julianDay
6660: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  ,..        DateT
6670: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 0d 0a 20 20  imeKind kind..  
6680: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
6690: 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 20          long jd 
66a0: 3d 20 44 6f 75 62 6c 65 54 6f 4a 64 28 6a 75 6c  = DoubleToJd(jul
66b0: 69 61 6e 44 61 79 29 3b 0d 0a 20 20 20 20 20 20  ianDay);..      
66c0: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
66d0: 69 6d 65 59 4d 44 20 3d 20 63 6f 6d 70 75 74 65  imeYMD = compute
66e0: 59 4d 44 28 6a 64 2c 20 6e 75 6c 6c 29 3b 0d 0a  YMD(jd, null);..
66f0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
6700: 20 64 61 74 65 54 69 6d 65 48 4d 53 20 3d 20 63   dateTimeHMS = c
6710: 6f 6d 70 75 74 65 48 4d 53 28 6a 64 2c 20 6e 75  omputeHMS(jd, nu
6720: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
6730: 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54  return new DateT
6740: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ime(..          
6750: 20 20 64 61 74 65 54 69 6d 65 59 4d 44 2e 59 65    dateTimeYMD.Ye
6760: 61 72 2c 20 64 61 74 65 54 69 6d 65 59 4d 44 2e  ar, dateTimeYMD.
6770: 4d 6f 6e 74 68 2c 20 64 61 74 65 54 69 6d 65 59  Month, dateTimeY
6780: 4d 44 2e 44 61 79 2c 0d 0a 20 20 20 20 20 20 20  MD.Day,..       
6790: 20 20 20 20 20 64 61 74 65 54 69 6d 65 48 4d 53       dateTimeHMS
67a0: 2e 48 6f 75 72 2c 20 64 61 74 65 54 69 6d 65 48  .Hour, dateTimeH
67b0: 4d 53 2e 4d 69 6e 75 74 65 2c 20 64 61 74 65 54  MS.Minute, dateT
67c0: 69 6d 65 48 4d 53 2e 53 65 63 6f 6e 64 2c 0d 0a  imeHMS.Second,..
67d0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
67e0: 54 69 6d 65 48 4d 53 2e 4d 69 6c 6c 69 73 65 63  TimeHMS.Millisec
67f0: 6f 6e 64 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  ond, kind);..   
6800: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
6810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6820: 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
6830: 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f  ecified number o
6840: 66 20 73 65 63 6f 6e 64 73 20 66 72 6f 6d 20 74  f seconds from t
6850: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 69 6e  he Unix epoch in
6860: 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  to a..    /// <s
6870: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
6880: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
6890: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
68a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
68b0: 20 6e 61 6d 65 3d 22 73 65 63 6f 6e 64 73 22 3e   name="seconds">
68c0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75  ..    /// The nu
68d0: 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20 73 65  mber of whole se
68e0: 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20  conds since the 
68f0: 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20  Unix epoch...   
6900: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6910: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6920: 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20 20 20  me="kind">..    
6930: 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63 20 6f  /// Either Utc o
6940: 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a 20  r Local time... 
6950: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6960: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
6970: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
6980: 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 44  new <see cref="D
6990: 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75  ateTime" /> valu
69a0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
69b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
69c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61 74 65  rnal static Date
69d0: 54 69 6d 65 20 55 6e 69 78 45 70 6f 63 68 54 6f  Time UnixEpochTo
69e0: 44 61 74 65 54 69 6d 65 28 6c 6f 6e 67 20 73 65  DateTime(long se
69f0: 63 6f 6e 64 73 2c 20 44 61 74 65 54 69 6d 65 4b  conds, DateTimeK
6a00: 69 6e 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b  ind kind)..    {
6a10: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
6a20: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
6a30: 79 4b 69 6e 64 28 55 6e 69 78 45 70 6f 63 68 2e  yKind(UnixEpoch.
6a40: 41 64 64 53 65 63 6f 6e 64 73 28 73 65 63 6f 6e  AddSeconds(secon
6a50: 64 73 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  ds), kind);..   
6a60: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
6a70: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
6a80: 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
6a90: 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f  ecified number o
6aa0: 66 20 74 69 63 6b 73 20 73 69 6e 63 65 20 74 68  f ticks since th
6ab0: 65 20 65 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a  e epoch into a..
6ac0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
6ad0: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
6ae0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
6af0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6b00: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6b10: 22 74 69 63 6b 73 22 3e 0d 0a 20 20 20 20 2f 2f  "ticks">..    //
6b20: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
6b30: 77 68 6f 6c 65 20 74 69 63 6b 73 20 73 69 6e 63  whole ticks sinc
6b40: 65 20 74 68 65 20 65 70 6f 63 68 2e 0d 0a 20 20  e the epoch...  
6b50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6b60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6b70: 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20 20  ame="kind">..   
6b80: 20 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63 20   /// Either Utc 
6b90: 6f 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a  or Local time...
6ba0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
6bb0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
6bc0: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
6bd0: 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
6be0: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
6bf0: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ue...    /// </r
6c00: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
6c10: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61 74  ernal static Dat
6c20: 65 54 69 6d 65 20 54 69 63 6b 73 54 6f 44 61 74  eTime TicksToDat
6c30: 65 54 69 6d 65 28 6c 6f 6e 67 20 74 69 63 6b 73  eTime(long ticks
6c40: 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b  , DateTimeKind k
6c50: 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ind)..    {..   
6c60: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
6c70: 44 61 74 65 54 69 6d 65 28 74 69 63 6b 73 2c 20  DateTime(ticks, 
6c80: 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  kind);..    }...
6c90: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
6ca0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
6cb0: 65 72 74 73 20 61 20 44 61 74 65 54 69 6d 65 20  erts a DateTime 
6cc0: 73 74 72 75 63 74 20 74 6f 20 61 20 4a 75 6c 69  struct to a Juli
6cd0: 61 6e 44 61 79 20 64 6f 75 62 6c 65 0d 0a 20 20  anDay double..  
6ce0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
6cf0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
6d00: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68   name="value">Th
6d10: 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f  e DateTime to co
6d20: 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20  nvert</param>.. 
6d30: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6d40: 54 68 65 20 4a 75 6c 69 61 6e 44 61 79 20 76 61  The JulianDay va
6d50: 6c 75 65 20 74 68 65 20 44 61 74 65 74 69 6d 65  lue the Datetime
6d60: 20 72 65 70 72 65 73 65 6e 74 73 3c 2f 72 65 74   represents</ret
6d70: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
6d80: 63 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20  c static double 
6d90: 54 6f 4a 75 6c 69 61 6e 44 61 79 28 44 61 74 65  ToJulianDay(Date
6da0: 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20 20 20  Time value)..   
6db0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
6dc0: 72 6e 20 4a 64 54 6f 44 6f 75 62 6c 65 28 63 6f  rn JdToDouble(co
6dd0: 6d 70 75 74 65 4a 44 28 76 61 6c 75 65 29 29 3b  mputeJD(value));
6de0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
6df0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6e00: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
6e10: 20 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74   DateTime struct
6e20: 20 74 6f 20 74 68 65 20 77 68 6f 6c 65 20 6e 75   to the whole nu
6e30: 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20  mber of seconds 
6e40: 73 69 6e 63 65 20 74 68 65 0d 0a 20 20 20 20 2f  since the..    /
6e50: 2f 2f 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a  // Unix epoch...
6e60: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6e70: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
6e80: 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
6e90: 54 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20  The DateTime to 
6ea0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
6eb0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
6ec0: 73 3e 54 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62  s>The whole numb
6ed0: 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er of seconds si
6ee0: 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f  nce the Unix epo
6ef0: 63 68 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  ch</returns>..  
6f00: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
6f10: 6c 6f 6e 67 20 54 6f 55 6e 69 78 45 70 6f 63 68  long ToUnixEpoch
6f20: 28 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29  (DateTime value)
6f30: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
6f40: 20 72 65 74 75 72 6e 20 28 76 61 6c 75 65 2e 53   return (value.S
6f50: 75 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63  ubtract(UnixEpoc
6f60: 68 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53  h).Ticks / TimeS
6f70: 70 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f  pan.TicksPerSeco
6f80: 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nd);..    }.... 
6f90: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
6fa0: 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
6fb0: 73 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66  s the DateTime f
6fc0: 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20  ormat string to 
6fd0: 75 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  use for the spec
6fe0: 69 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69  ified DateTimeKi
6ff0: 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  nd...    /// If 
7000: 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22  <paramref name="
7010: 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 20 2f 3e  formatString" />
7020: 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c 20 69 74   is not null, it
7030: 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65   will be returne
7040: 64 20 76 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20  d verbatim...   
7050: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7060: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7070: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20  name="kind">The 
7080: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20  DateTimeKind to 
7090: 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  use.</param>..  
70a0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
70b0: 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22  e="formatString"
70c0: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f  >The DateTime fo
70d0: 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75  rmat string to u
70e0: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
70f0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
7100: 20 20 20 20 2f 2f 2f 20 54 68 65 20 44 61 74 65      /// The Date
7110: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
7120: 6e 67 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68  ng to use for th
7130: 65 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65  e specified Date
7140: 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f  TimeKind...    /
7150: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
7160: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
7170: 63 20 73 74 72 69 6e 67 20 47 65 74 44 61 74 65  c string GetDate
7180: 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 0d  TimeKindFormat(.
7190: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
71a0: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
71b0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d       string form
71c0: 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  atString..      
71d0: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
71e0: 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74      if (formatSt
71f0: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 72 65  ring != null) re
7200: 74 75 72 6e 20 66 6f 72 6d 61 74 53 74 72 69 6e  turn formatStrin
7210: 67 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  g;..        retu
7220: 72 6e 20 28 6b 69 6e 64 20 3d 3d 20 44 61 74 65  rn (kind == Date
7230: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29 20 3f 20  TimeKind.Utc) ? 
7240: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 55  _datetimeFormatU
7250: 74 63 20 3a 20 5f 64 61 74 65 74 69 6d 65 46 6f  tc : _datetimeFo
7260: 72 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20 20 20 20  rmatLocal;..    
7270: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
7280: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7290: 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e  Converts a strin
72a0: 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d  g into a DateTim
72b0: 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44 61 74  e, using the Dat
72c0: 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74  eTimeFormat, Dat
72d0: 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20  eTimeKind,..    
72e0: 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65  /// and DateTime
72f0: 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65  FormatString spe
7300: 63 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 63  cified for the c
7310: 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69  onnection when i
7320: 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20  t was opened... 
7330: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7340: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
7350: 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56 61 6c 75  m name="dateValu
7360: 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  e">The DateTime 
7370: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
7380: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
7390: 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69 74 68 65  / <returns>Eithe
73a0: 72 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  r a string conta
73b0: 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69  ining the long i
73c0: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66  nteger number of
73d0: 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20   100-nanosecond 
73e0: 75 6e 69 74 73 20 73 69 6e 63 65 20 53 79 73 74  units since Syst
73f0: 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56  em.DateTime.MinV
7400: 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f  alue, a..    ///
7410: 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f 75 62   Julian day doub
7420: 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72 20 6e  le, an integer n
7430: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
7440: 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
7450: 65 70 6f 63 68 2c 20 61 20 63 75 6c 74 75 72 65  epoch, a culture
7460: 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72  -independent for
7470: 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20  matted date and 
7480: 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74  time..    /// st
7490: 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74 65  ring, a formatte
74a0: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  d date and time 
74b0: 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 63 75  string in the cu
74c0: 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f  rrent culture, o
74d0: 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72  r an ISO8601-for
74e0: 6d 61 74 20 64 61 74 65 2f 74 69 6d 65 20 73 74  mat date/time st
74f0: 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  ring.</returns>.
7500: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69  .    public stri
7510: 6e 67 20 54 6f 53 74 72 69 6e 67 28 44 61 74 65  ng ToString(Date
7520: 54 69 6d 65 20 64 61 74 65 56 61 6c 75 65 29 0d  Time dateValue).
7530: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
7540: 72 65 74 75 72 6e 20 54 6f 53 74 72 69 6e 67 28  return ToString(
7550: 64 61 74 65 56 61 6c 75 65 2c 20 5f 64 61 74 65  dateValue, _date
7560: 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64 61 74  timeFormat, _dat
7570: 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65  etimeKind, _date
7580: 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67  timeFormatString
7590: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
75a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
75b0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
75c0: 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61   a string into a
75d0: 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67   DateTime, using
75e0: 20 74 68 65 20 44 61 74 65 54 69 6d 65 46 6f 72   the DateTimeFor
75f0: 6d 61 74 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e  mat, DateTimeKin
7600: 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20  d,..    /// and 
7610: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74  DateTimeFormatSt
7620: 72 69 6e 67 20 73 70 65 63 69 66 69 65 64 20 66  ring specified f
7630: 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
7640: 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20 6f 70  n when it was op
7650: 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ened...    /// <
7660: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
7670: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7680: 64 61 74 65 56 61 6c 75 65 22 3e 54 68 65 20 44  dateValue">The D
7690: 61 74 65 54 69 6d 65 20 76 61 6c 75 65 20 74 6f  ateTime value to
76a0: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
76b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
76c0: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54   name="format">T
76d0: 68 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  he SQLiteDateFor
76e0: 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61  mats to use.</pa
76f0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
7700: 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22  aram name="kind"
7710: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e  >The DateTimeKin
7720: 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  d to use.</param
7730: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
7740: 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74  m name="formatSt
7750: 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69  ring">The DateTi
7760: 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67  me format string
7770: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
7780: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
7790: 6e 73 3e 45 69 74 68 65 72 20 61 20 73 74 72 69  ns>Either a stri
77a0: 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
77b0: 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e  e long integer n
77c0: 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e  umber of 100-nan
77d0: 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69  osecond units si
77e0: 6e 63 65 20 53 79 73 74 65 6d 2e 44 61 74 65 54  nce System.DateT
77f0: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20 61 0d  ime.MinValue, a.
7800: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
7810: 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69  day double, an i
7820: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66  nteger number of
7830: 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74   seconds since t
7840: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61  he Unix epoch, a
7850: 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e   culture-indepen
7860: 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64 20 64  dent formatted d
7870: 61 74 65 20 61 6e 64 20 74 69 6d 65 0d 0a 20 20  ate and time..  
7880: 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20 61 20    /// string, a 
7890: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
78a0: 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69  nd time string i
78b0: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75  n the current cu
78c0: 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49 53 4f  lture, or an ISO
78d0: 38 36 30 31 2d 66 6f 72 6d 61 74 20 64 61 74 65  8601-format date
78e0: 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e 3c 2f 72  /time string.</r
78f0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
7900: 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
7910: 67 20 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20  g ToString(..   
7920: 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61       DateTime da
7930: 74 65 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20  teValue,..      
7940: 20 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d    SQLiteDateForm
7950: 61 74 73 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20  ats format,..   
7960: 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e       DateTimeKin
7970: 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20  d kind,..       
7980: 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 53 74   string formatSt
7990: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d  ring..        ).
79a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
79b0: 73 77 69 74 63 68 20 28 66 6f 72 6d 61 74 29 0d  switch (format).
79c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
79d0: 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c          case SQL
79e0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 54  iteDateFormats.T
79f0: 69 63 6b 73 3a 0d 0a 20 20 20 20 20 20 20 20 20  icks:..         
7a00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 61         return da
7a10: 74 65 56 61 6c 75 65 2e 54 69 63 6b 73 2e 54 6f  teValue.Ticks.To
7a20: 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e  String(CultureIn
7a30: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7a40: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ure);..         
7a50: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
7a60: 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69 61 6e  teFormats.Julian
7a70: 44 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  Day:..          
7a80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 4a        return ToJ
7a90: 75 6c 69 61 6e 44 61 79 28 64 61 74 65 56 61 6c  ulianDay(dateVal
7aa0: 75 65 29 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c  ue).ToString(Cul
7ab0: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
7ac0: 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20  ntCulture);..   
7ad0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51           case SQ
7ae0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e  LiteDateFormats.
7af0: 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20  UnixEpoch:..    
7b00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7b10: 72 6e 20 28 28 6c 6f 6e 67 29 28 64 61 74 65 56  rn ((long)(dateV
7b20: 61 6c 75 65 2e 53 75 62 74 72 61 63 74 28 55 6e  alue.Subtract(Un
7b30: 69 78 45 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f  ixEpoch).Ticks /
7b40: 20 54 69 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50   TimeSpan.TicksP
7b50: 65 72 53 65 63 6f 6e 64 29 29 2e 54 6f 53 74 72  erSecond)).ToStr
7b60: 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ing();..        
7b70: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
7b80: 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72  ateFormats.Invar
7b90: 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20  iantCulture:..  
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
7bb0: 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54  turn dateValue.T
7bc0: 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d 61 74 53  oString((formatS
7bd0: 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f  tring != null) ?
7be0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7bf0: 20 20 20 20 20 20 66 6f 72 6d 61 74 53 74 72 69        formatStri
7c00: 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74 2c  ng : FullFormat,
7c10: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
7c20: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7c40: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
7c50: 61 74 73 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  ats.CurrentCultu
7c60: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re:..           
7c70: 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65       return date
7c80: 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 28  Value.ToString((
7c90: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20  formatString != 
7ca0: 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20  null) ?..       
7cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
7cc0: 6d 61 74 53 74 72 69 6e 67 20 3a 20 46 75 6c 6c  matString : Full
7cd0: 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75 72 65 49  Format, CultureI
7ce0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
7cf0: 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  re);..          
7d00: 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
7d10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
7d20: 72 6e 20 28 64 61 74 65 56 61 6c 75 65 2e 4b 69  rn (dateValue.Ki
7d30: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
7d40: 6e 64 2e 55 6e 73 70 65 63 69 66 69 65 64 29 20  nd.Unspecified) 
7d50: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
7d60: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 2e         DateTime.
7d70: 53 70 65 63 69 66 79 4b 69 6e 64 28 64 61 74 65  SpecifyKind(date
7d80: 56 61 6c 75 65 2c 20 6b 69 6e 64 29 2e 54 6f 53  Value, kind).ToS
7d90: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7db0: 47 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46  GetDateTimeKindF
7dc0: 6f 72 6d 61 74 28 6b 69 6e 64 2c 20 66 6f 72 6d  ormat(kind, form
7dd0: 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20  atString),..    
7de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7df0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
7e00: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
7e10: 74 75 72 65 29 20 3a 20 64 61 74 65 56 61 6c 75  ture) : dateValu
7e20: 65 2e 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20  e.ToString(..   
7e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e40: 20 20 20 20 20 47 65 74 44 61 74 65 54 69 6d 65       GetDateTime
7e50: 4b 69 6e 64 46 6f 72 6d 61 74 28 64 61 74 65 56  KindFormat(dateV
7e60: 61 6c 75 65 2e 4b 69 6e 64 2c 20 66 6f 72 6d 61  alue.Kind, forma
7e70: 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20  tString),..     
7e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e90: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
7ea0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7eb0: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ure);..        }
7ec0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
7ed0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7ee0: 20 20 2f 2f 2f 20 49 6e 74 65 72 6e 61 6c 20 66    /// Internal f
7ef0: 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6f 6e 76 65  unction to conve
7f00: 72 74 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64  rt a UTF-8 encod
7f10: 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65  ed IntPtr of the
7f20: 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
7f30: 68 20 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2e  h to a DateTime.
7f40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
7f50: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
7f60: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
7f70: 20 54 68 69 73 20 69 73 20 61 20 63 6f 6e 76 65   This is a conve
7f80: 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c  nience function,
7f90: 20 77 68 69 63 68 20 66 69 72 73 74 20 63 61 6c   which first cal
7fa0: 6c 73 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e  ls ToString() on
7fb0: 20 74 68 65 20 49 6e 74 50 74 72 20 74 6f 20 63   the IntPtr to c
7fc0: 6f 6e 76 65 72 74 20 69 74 20 74 6f 20 61 20 73  onvert it to a s
7fd0: 74 72 69 6e 67 2c 20 74 68 65 6e 20 63 61 6c 6c  tring, then call
7fe0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f 44 61 74  s..    /// ToDat
7ff0: 65 54 69 6d 65 28 29 20 6f 6e 20 74 68 65 20 73  eTime() on the s
8000: 74 72 69 6e 67 20 74 6f 20 72 65 74 75 72 6e 20  tring to return 
8010: 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20  a DateTime...   
8020: 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d   /// </remarks>.
8030: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
8040: 6e 61 6d 65 3d 22 70 74 72 22 3e 41 20 70 6f 69  name="ptr">A poi
8050: 6e 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d  nter to the UTF-
8060: 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67  8 encoded string
8070: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
8080: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
8090: 65 6e 22 3e 54 68 65 20 6c 65 6e 67 74 68 20 69  en">The length i
80a0: 6e 20 62 79 74 65 73 20 6f 66 20 74 68 65 20 73  n bytes of the s
80b0: 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20  tring</param>.. 
80c0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
80d0: 54 68 65 20 70 61 72 73 65 64 20 44 61 74 65 54  The parsed DateT
80e0: 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72  ime value</retur
80f0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
8100: 6c 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74  l DateTime ToDat
8110: 65 54 69 6d 65 28 49 6e 74 50 74 72 20 70 74 72  eTime(IntPtr ptr
8120: 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a 20 20 20 20  , int len)..    
8130: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
8140: 54 6f 44 61 74 65 54 69 6d 65 28 54 6f 53 74 72  ToDateTime(ToStr
8150: 69 6e 67 28 70 74 72 2c 20 6c 65 6e 29 29 3b 0d  ing(ptr, len));.
8160: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
8170: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
8180: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
8190: 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65 74 68 6f   /// Smart metho
81a0: 64 20 6f 66 20 73 70 6c 69 74 74 69 6e 67 20 61  d of splitting a
81b0: 20 73 74 72 69 6e 67 2e 20 20 53 6b 69 70 73 20   string.  Skips 
81c0: 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e 74 73 2c  quoted elements,
81d0: 20 72 65 6d 6f 76 65 73 20 74 68 65 20 71 75 6f   removes the quo
81e0: 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tes...    /// </
81f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
8200: 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20  / <remarks>..   
8210: 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c 69 74 20   /// This split 
8220: 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 73  function works s
8230: 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20 74 68 65  omewhat like the
8240: 20 53 74 72 69 6e 67 2e 53 70 6c 69 74 28 29 20   String.Split() 
8250: 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 61 74  function in that
8260: 20 69 74 20 62 72 65 61 6b 73 20 61 70 61 72 74   it breaks apart
8270: 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 0d 0a   a string into..
8280: 20 20 20 20 2f 2f 2f 20 70 69 65 63 65 73 20 61      /// pieces a
8290: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70  nd returns the p
82a0: 69 65 63 65 73 20 61 73 20 61 6e 20 61 72 72 61  ieces as an arra
82b0: 79 2e 20 20 54 68 65 20 70 72 69 6d 61 72 79 20  y.  The primary 
82c0: 64 69 66 66 65 72 65 6e 63 65 73 20 61 72 65 3a  differences are:
82d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20  ..    /// <list 
82e0: 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a  type="bullet">..
82f0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
8300: 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e 6c 79 20  escription>Only 
8310: 6f 6e 65 20 63 68 61 72 61 63 74 65 72 20 63 61  one character ca
8320: 6e 20 62 65 20 70 72 6f 76 69 64 65 64 20 61 73  n be provided as
8330: 20 61 20 73 65 70 61 72 61 74 6f 72 20 63 68 61   a separator cha
8340: 72 61 63 74 65 72 3c 2f 64 65 73 63 72 69 70 74  racter</descript
8350: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
8360: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
8370: 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65 64 20 74  ription>Quoted t
8380: 65 78 74 20 69 6e 73 69 64 65 20 74 68 65 20 73  ext inside the s
8390: 74 72 69 6e 67 20 69 73 20 73 6b 69 70 70 65 64  tring is skipped
83a0: 20 6f 76 65 72 20 77 68 65 6e 20 73 65 61 72 63   over when searc
83b0: 68 69 6e 67 20 66 6f 72 20 74 68 65 20 73 65 70  hing for the sep
83c0: 61 72 61 74 6f 72 2c 20 61 6e 64 20 74 68 65 20  arator, and the 
83d0: 71 75 6f 74 65 73 20 61 72 65 20 72 65 6d 6f 76  quotes are remov
83e0: 65 64 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ed.</description
83f0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
8400: 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f  / </list>..    /
8410: 2f 2f 20 54 68 75 73 2c 20 69 66 20 73 70 6c 69  // Thus, if spli
8420: 74 74 69 6e 67 20 74 68 65 20 66 6f 6c 6c 6f 77  tting the follow
8430: 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f 6f 6b 69  ing string looki
8440: 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d 61 3a 3c  ng for a comma:<
8450: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 6e  br/>..    /// On
8460: 65 2c 54 77 6f 2c 20 22 54 68 72 65 65 2c 20 46  e,Two, "Three, F
8470: 6f 75 72 22 2c 20 46 69 76 65 3c 62 72 2f 3e 0d  our", Five<br/>.
8480: 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  .    /// <br/>..
8490: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75      /// The resu
84a0: 6c 74 69 6e 67 20 61 72 72 61 79 20 77 6f 75 6c  lting array woul
84b0: 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f 3e 0d 0a  d contain<br/>..
84c0: 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f 6e 65 3c      /// [0] One<
84d0: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 31  br/>..    /// [1
84e0: 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20 20 20 20  ] Two<br/>..    
84f0: 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65 2c 20 46  /// [2] Three, F
8500: 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  our<br/>..    //
8510: 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72 2f 3e 0d  / [3] Five<br/>.
8520: 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  .    /// <br/>..
8530: 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61      /// Note tha
8540: 74 20 74 68 65 20 6c 65 61 64 69 6e 67 20 61 6e  t the leading an
8550: 64 20 74 72 61 69 6c 69 6e 67 20 73 70 61 63 65  d trailing space
8560: 73 20 77 65 72 65 20 72 65 6d 6f 76 65 64 20 66  s were removed f
8570: 72 6f 6d 20 65 61 63 68 20 69 74 65 6d 20 64 75  rom each item du
8580: 72 69 6e 67 20 74 68 65 20 73 70 6c 69 74 2e 0d  ring the split..
8590: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
85a0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ks>..    /// <pa
85b0: 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65  ram name="source
85c0: 22 3e 53 6f 75 72 63 65 20 73 74 72 69 6e 67 20  ">Source string 
85d0: 74 6f 20 73 70 6c 69 74 20 61 70 61 72 74 3c 2f  to split apart</
85e0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
85f0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70  <param name="sep
8600: 61 72 61 74 6f 72 22 3e 53 65 70 61 72 61 74 6f  arator">Separato
8610: 72 20 63 68 61 72 61 63 74 65 72 3c 2f 70 61 72  r character</par
8620: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
8630: 74 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 61  turns>A string a
8640: 72 72 61 79 20 6f 66 20 74 68 65 20 73 70 6c 69  rray of the spli
8650: 74 20 75 70 20 65 6c 65 6d 65 6e 74 73 3c 2f 72  t up elements</r
8660: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
8670: 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
8680: 67 5b 5d 20 53 70 6c 69 74 28 73 74 72 69 6e 67  g[] Split(string
8690: 20 73 6f 75 72 63 65 2c 20 63 68 61 72 20 73 65   source, char se
86a0: 70 61 72 61 74 6f 72 29 0d 0a 20 20 20 20 7b 0d  parator)..    {.
86b0: 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 74 6f  .      char[] to
86c0: 6b 73 20 3d 20 6e 65 77 20 63 68 61 72 5b 32 5d  ks = new char[2]
86d0: 20 7b 20 27 5c 22 27 2c 20 73 65 70 61 72 61 74   { '\"', separat
86e0: 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20 63 68 61  or };..      cha
86f0: 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65 77 20 63  r[] quot = new c
8700: 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27 20 7d 3b  har[1] { '\"' };
8710: 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20  ..      int n = 
8720: 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73 74 3c 73  0;..      List<s
8730: 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e 65 77 20  tring> ls = new 
8740: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d  List<string>();.
8750: 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 3b  .      string s;
8760: 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69 6c 65 20  ....      while 
8770: 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e  (source.Length >
8780: 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   0)..      {..  
8790: 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 65        n = source
87a0: 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74 6f 6b 73  .IndexOfAny(toks
87b0: 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  , n);..        i
87c0: 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62 72 65 61  f (n == -1) brea
87d0: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  k;..        if (
87e0: 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20 74 6f 6b  source[n] == tok
87f0: 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 7b  s[0])..        {
8800: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f  ..          //so
8810: 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52 65  urce = source.Re
8820: 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 20  move(n, 1);..   
8830: 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63         n = sourc
8840: 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 71 75 6f  e.IndexOfAny(quo
8850: 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20 20 20 20  t, n + 1);..    
8860: 20 20 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d        if (n == -
8870: 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  1)..          {.
8880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73  .            //s
8890: 6f 75 72 63 65 20 3d 20 22 5c 22 22 20 2b 20 73  ource = "\"" + s
88a0: 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20 20 20 20  ource;..        
88b0: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
88c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
88d0: 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20     n++;..       
88e0: 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f     //source = so
88f0: 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31  urce.Remove(n, 1
8900: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
8910: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
8920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8930: 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 53 75 62    s = source.Sub
8940: 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e 54 72 69  string(0, n).Tri
8950: 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  m();..          
8960: 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31  if (s.Length > 1
8970: 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74   && s[0] == quot
8980: 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74  [0] && s[s.Lengt
8990: 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d  h - 1] == s[0]).
89a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d  .            s =
89b0: 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20   s.Substring(1, 
89c0: 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a  s.Length - 2);..
89d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75 72  ..          sour
89e0: 63 65 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 73  ce = source.Subs
89f0: 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e 54 72 69  tring(n + 1).Tri
8a00: 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  m();..          
8a10: 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 30  if (s.Length > 0
8a20: 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20  ) ls.Add(s);..  
8a30: 20 20 20 20 20 20 20 20 6e 20 3d 20 30 3b 0d 0a          n = 0;..
8a40: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8a50: 20 7d 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f   }..      if (so
8a60: 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29  urce.Length > 0)
8a70: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
8a80: 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 54 72     s = source.Tr
8a90: 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  im();..        i
8aa0: 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 20  f (s.Length > 1 
8ab0: 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 5b  && s[0] == quot[
8ac0: 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 68  0] && s[s.Length
8ad0: 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d 0a   - 1] == s[0])..
8ae0: 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e            s = s.
8af0: 53 75 62 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c  Substring(1, s.L
8b00: 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 20  ength - 2);..   
8b10: 20 20 20 20 20 6c 73 2e 41 64 64 28 73 29 3b 0d       ls.Add(s);.
8b20: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
8b30: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 20 3d 20    string[] ar = 
8b40: 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73 2e 43 6f  new string[ls.Co
8b50: 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 6c 73 2e  unt];..      ls.
8b60: 43 6f 70 79 54 6f 28 61 72 2c 20 30 29 3b 0d 0a  CopyTo(ar, 0);..
8b70: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  ..      return a
8b80: 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  r;..    }....   
8b90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8ba0: 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74 73 20 74      /// Splits t
8bb0: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74 72  he specified str
8bc0: 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74 69 70 6c  ing into multipl
8bd0: 65 20 73 74 72 69 6e 67 73 20 62 61 73 65 64 20  e strings based 
8be0: 6f 6e 20 61 20 73 65 70 61 72 61 74 6f 72 0d 0a  on a separator..
8bf0: 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72 65 74 75      /// and retu
8c00: 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74 20 61  rns the result a
8c10: 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74  s an array of st
8c20: 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rings...    /// 
8c30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8c40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
8c50: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  "value">..    //
8c60: 2f 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20  / The string to 
8c70: 73 70 6c 69 74 20 69 6e 74 6f 20 70 69 65 63 65  split into piece
8c80: 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73  s based on the s
8c90: 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74  eparator charact
8ca0: 65 72 2e 20 20 49 66 0d 0a 20 20 20 20 2f 2f 2f  er.  If..    ///
8cb0: 20 74 68 69 73 20 73 74 72 69 6e 67 20 69 73 20   this string is 
8cc0: 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69 6c 6c 20  null, null will 
8cd0: 61 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 6e  always be return
8ce0: 65 64 2e 20 20 49 66 20 74 68 69 73 20 73 74 72  ed.  If this str
8cf0: 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20  ing is..    /// 
8d00: 65 6d 70 74 79 2c 20 61 6e 20 61 72 72 61 79 20  empty, an array 
8d10: 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e 67 73 20  of zero strings 
8d20: 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72  will always be r
8d30: 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f  eturned...    //
8d40: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
8d50: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
8d60: 22 73 65 70 61 72 61 74 6f 72 22 3e 0d 0a 20 20  "separator">..  
8d70: 20 20 2f 2f 2f 20 54 68 65 20 63 68 61 72 61 63    /// The charac
8d80: 74 65 72 20 75 73 65 64 20 74 6f 20 64 69 76 69  ter used to divi
8d90: 64 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  de the original 
8da0: 73 74 72 69 6e 67 20 69 6e 74 6f 20 73 75 62 2d  string into sub-
8db0: 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f  strings...    //
8dc0: 2f 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72  / This character
8dd0: 20 63 61 6e 6e 6f 74 20 62 65 20 61 20 62 61 63   cannot be a bac
8de0: 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62  kslash or a doub
8df0: 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68 65 72 77  le-quote; otherw
8e00: 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20 2f 2f 2f  ise, no..    ///
8e10: 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65 20 70 65   work will be pe
8e20: 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e 75 6c 6c  rformed and null
8e30: 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65   will be returne
8e40: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8e50: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8e60: 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65 65 70 51  aram name="keepQ
8e70: 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  uote">..    /// 
8e80: 49 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  If this paramete
8e90: 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61  r is non-zero, a
8ea0: 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20  ll double-quote 
8eb0: 63 68 61 72 61 63 74 65 72 73 20 77 69 6c 6c 20  characters will 
8ec0: 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 74 61  be..    /// reta
8ed0: 69 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 75  ined in the retu
8ee0: 72 6e 65 64 20 6c 69 73 74 20 6f 66 20 73 74 72  rned list of str
8ef0: 69 6e 67 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  ings; otherwise,
8f00: 20 74 68 65 79 20 77 69 6c 6c 20 62 65 0d 0a 20   they will be.. 
8f10: 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65 64 2e 0d     /// dropped..
8f20: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
8f30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
8f40: 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
8f50: 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61  .    /// Upon fa
8f60: 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
8f70: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
8f80: 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
8f90: 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  n an appropriate
8fa0: 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 20  ..    /// error 
8fb0: 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f  message...    //
8fc0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
8fd0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
8fe0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 61     /// The new a
8ff0: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20  rray of strings 
9000: 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68 65 20 69  or null if the i
9010: 6e 70 75 74 20 73 74 72 69 6e 67 20 69 73 20 6e  nput string is n
9020: 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d 0a 20 20  ull -OR- the..  
9030: 20 20 2f 2f 2f 20 73 65 70 61 72 61 74 6f 72 20    /// separator 
9040: 63 68 61 72 61 63 74 65 72 20 69 73 20 61 20 62  character is a b
9050: 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f  ackslash or a do
9060: 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f 52 2d 20  uble-quote -OR- 
9070: 74 68 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  the string..    
9080: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20  /// contains an 
9090: 75 6e 62 61 6c 61 6e 63 65 64 20 62 61 63 6b 73  unbalanced backs
90a0: 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c 65 2d 71  lash or double-q
90b0: 75 6f 74 65 20 63 68 61 72 61 63 74 65 72 2e 0d  uote character..
90c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
90d0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
90e0: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b  l static string[
90f0: 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a 20 20 20  ] NewSplit(..   
9100: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
9110: 65 2c 0d 0a 20 20 20 20 20 20 20 20 63 68 61 72  e,..        char
9120: 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a 20 20 20   separator,..   
9130: 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65 70 51 75       bool keepQu
9140: 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ote,..        re
9150: 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a  f string error..
9160: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
9170: 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20  ..        const 
9180: 63 68 61 72 20 45 73 63 61 70 65 43 68 61 72 20  char EscapeChar 
9190: 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20 20 20 20  = '\\';..       
91a0: 20 63 6f 6e 73 74 20 63 68 61 72 20 51 75 6f 74   const char Quot
91b0: 65 43 68 61 72 20 3d 20 27 5c 22 27 3b 0d 0a 0d  eChar = '\"';...
91c0: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
91d0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 74       // NOTE: It
91e0: 20 69 73 20 69 6c 6c 65 67 61 6c 20 66 6f 72 20   is illegal for 
91f0: 74 68 65 20 73 65 70 61 72 61 74 6f 72 20 63 68  the separator ch
9200: 61 72 61 63 74 65 72 20 74 6f 20 62 65 20 65 69  aracter to be ei
9210: 74 68 65 72 20 61 0d 0a 20 20 20 20 20 20 20 20  ther a..        
9220: 2f 2f 20 20 20 20 20 20 20 62 61 63 6b 73 6c 61  //       backsla
9230: 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71  sh or a double-q
9240: 75 6f 74 65 20 62 65 63 61 75 73 65 20 62 6f 74  uote because bot
9250: 68 20 6f 66 20 74 68 6f 73 65 20 63 68 61 72 61  h of those chara
9260: 63 74 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  cters..        /
9270: 2f 20 20 20 20 20 20 20 61 72 65 20 75 73 65 64  /       are used
9280: 20 66 6f 72 20 65 73 63 61 70 69 6e 67 20 6f 74   for escaping ot
9290: 68 65 72 20 63 68 61 72 61 63 74 65 72 73 20 28  her characters (
92a0: 65 2e 67 2e 20 74 68 65 20 73 65 70 61 72 61 74  e.g. the separat
92b0: 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  or..        //  
92c0: 20 20 20 20 20 63 68 61 72 61 63 74 65 72 29 2e       character).
92d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
92e0: 20 20 20 20 20 20 69 66 20 28 28 73 65 70 61 72        if ((separ
92f0: 61 74 6f 72 20 3d 3d 20 45 73 63 61 70 65 43 68  ator == EscapeCh
9300: 61 72 29 20 7c 7c 20 28 73 65 70 61 72 61 74 6f  ar) || (separato
9310: 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 29  r == QuoteChar))
9320: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9330: 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
9340: 20 22 73 65 70 61 72 61 74 6f 72 20 63 68 61 72   "separator char
9350: 61 63 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20  acter cannot be 
9360: 74 68 65 20 65 73 63 61 70 65 20 6f 72 20 71 75  the escape or qu
9370: 6f 74 65 20 63 68 61 72 61 63 74 65 72 73 22 3b  ote characters";
9380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
9390: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
93a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
93b0: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
93c0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
93d0: 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
93e0: 72 20 3d 20 22 73 74 72 69 6e 67 20 76 61 6c 75  r = "string valu
93f0: 65 20 74 6f 20 73 70 6c 69 74 20 63 61 6e 6e 6f  e to split canno
9400: 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a 20 20 20  t be null";..   
9410: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9420: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d  null;..        }
9430: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
9440: 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c  length = value.L
9450: 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  ength;....      
9460: 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20    if (length == 
9470: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
9480: 72 65 74 75 72 6e 20 6e 65 77 20 73 74 72 69 6e  return new strin
9490: 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  g[0];....       
94a0: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69   List<string> li
94b0: 73 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74  st = new List<st
94c0: 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20  ring>();..      
94d0: 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
94e0: 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77 20 53 74  element = new St
94f0: 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a  ringBuilder();..
9500: 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
9510: 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  x = 0;..        
9520: 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d 20 66 61  bool escape = fa
9530: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 62 6f  lse;..        bo
9540: 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61 6c 73 65  ol quote = false
9550: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69  ;....        whi
9560: 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c 65 6e 67  le (index < leng
9570: 74 68 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  th)..        {..
9580: 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72              char
9590: 20 63 68 61 72 61 63 74 65 72 20 3d 20 76 61 6c   character = val
95a0: 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d 0a 0d 0a  ue[index++];....
95b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
95c0: 65 73 63 61 70 65 29 0d 0a 20 20 20 20 20 20 20  escape)..       
95d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
95e0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48              // H
9600: 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e 73 69 64  ACK: Only consid
9610: 65 72 20 74 68 65 20 65 73 63 61 70 65 20 63 68  er the escape ch
9620: 61 72 61 63 74 65 72 20 74 6f 20 62 65 20 61 6e  aracter to be an
9630: 20 61 63 74 75 61 6c 0d 0a 20 20 20 20 20 20 20   actual..       
9640: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9650: 20 20 22 65 73 63 61 70 65 22 20 69 66 20 69 74    "escape" if it
9660: 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20   is followed by 
9670: 61 20 72 65 73 65 72 76 65 64 20 63 68 61 72 61  a reserved chara
9680: 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  cter;..         
9690: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
96a0: 6f 74 68 65 72 77 69 73 65 2c 20 65 6d 69 74 20  otherwise, emit 
96b0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 65 73 63  the original esc
96c0: 61 70 65 20 63 68 61 72 61 63 74 65 72 20 61 6e  ape character an
96d0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
96e0: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
96f0: 63 75 72 72 65 6e 74 20 63 68 61 72 61 63 74 65  current characte
9700: 72 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74  r in an effort t
9710: 6f 20 68 65 6c 70 20 70 72 65 73 65 72 76 65 0d  o help preserve.
9720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9730: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 6f 72   //       the or
9740: 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 63 6f  iginal string co
9750: 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  ntent...        
9760: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9770: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9780: 28 63 68 61 72 61 63 74 65 72 20 21 3d 20 45 73  (character != Es
9790: 63 61 70 65 43 68 61 72 29 20 26 26 0d 0a 20 20  capeChar) &&..  
97a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97b0: 20 20 28 63 68 61 72 61 63 74 65 72 20 21 3d 20    (character != 
97c0: 51 75 6f 74 65 43 68 61 72 29 20 26 26 0d 0a 20  QuoteChar) &&.. 
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97e0: 20 20 20 28 63 68 61 72 61 63 74 65 72 20 21 3d     (character !=
97f0: 20 73 65 70 61 72 61 74 6f 72 29 29 0d 0a 20 20   separator))..  
9800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9820: 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70       element.App
9830: 65 6e 64 28 45 73 63 61 70 65 43 68 61 72 29 3b  end(EscapeChar);
9840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9850: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
9860: 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41         element.A
9870: 70 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29  ppend(character)
9880: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9890: 20 20 20 65 73 63 61 70 65 20 3d 20 66 61 6c 73     escape = fals
98a0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
98b0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
98c0: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
98d0: 72 20 3d 3d 20 45 73 63 61 70 65 43 68 61 72 29  r == EscapeChar)
98e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
98f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9900: 20 65 73 63 61 70 65 20 3d 20 74 72 75 65 3b 0d   escape = true;.
9910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9920: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
9930: 20 69 66 20 28 63 68 61 72 61 63 74 65 72 20 3d   if (character =
9940: 3d 20 51 75 6f 74 65 43 68 61 72 29 0d 0a 20 20  = QuoteChar)..  
9950: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9970: 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a 20 20 20  (keepQuote)..   
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28   element.Append(
99a0: 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 0d 0a 20  character);.... 
99b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 71                 q
99c0: 75 6f 74 65 20 3d 20 21 71 75 6f 74 65 3b 0d 0a  uote = !quote;..
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
99e0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
99f0: 69 66 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d  if (character ==
9a00: 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20   separator)..   
9a10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9a30: 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20  quote)..        
9a40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
9a60: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68  lement.Append(ch
9a70: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20  aracter);..     
9a80: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
9aa0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
9ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9ac0: 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e             list.
9ad0: 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74  Add(element.ToSt
9ae0: 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20  ring());..      
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
9b00: 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3d 20 30  ement.Length = 0
9b10: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9b20: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9b30: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9b40: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
9b50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9b60: 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70        element.Ap
9b70: 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b  pend(character);
9b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9b90: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9ba0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
9bb0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e 20 75 6e    // NOTE: An un
9bc0: 62 61 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20  balanced escape 
9bd0: 6f 72 20 71 75 6f 74 65 20 63 68 61 72 61 63 74  or quote charact
9be0: 65 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67  er in the string
9bf0: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20   is..        // 
9c00: 20 20 20 20 20 20 63 6f 6e 73 69 64 65 72 65 64        considered
9c10: 20 74 6f 20 62 65 20 61 20 66 61 74 61 6c 20 65   to be a fatal e
9c20: 72 72 6f 72 3b 20 74 68 65 72 65 66 6f 72 65 2c  rror; therefore,
9c30: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e 0d 0a 20   return null... 
9c40: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
9c50: 20 20 20 69 66 20 28 65 73 63 61 70 65 20 7c 7c     if (escape ||
9c60: 20 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20   quote)..       
9c70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9c80: 65 72 72 6f 72 20 3d 20 22 75 6e 62 61 6c 61 6e  error = "unbalan
9c90: 63 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 75  ced escape or qu
9ca0: 6f 74 65 20 63 68 61 72 61 63 74 65 72 20 66 6f  ote character fo
9cb0: 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  und";..         
9cc0: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
9cd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9ce0: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
9cf0: 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  t.Length > 0).. 
9d00: 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e             list.
9d10: 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74  Add(element.ToSt
9d20: 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20 20 20 20  ring());....    
9d30: 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 2e      return list.
9d40: 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 20  ToArray();..    
9d50: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
9d60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
9d70: 51 75 65 72 69 65 73 20 61 6e 64 20 72 65 74 75  Queries and retu
9d80: 72 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 72  rns the string r
9d90: 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f  epresentation fo
9da0: 72 20 61 6e 20 6f 62 6a 65 63 74 2c 20 75 73 69  r an object, usi
9db0: 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  ng the..    /// 
9dc0: 73 70 65 63 69 66 69 65 64 20 28 6f 72 20 63 75  specified (or cu
9dd0: 72 72 65 6e 74 29 20 66 6f 72 6d 61 74 20 70 72  rrent) format pr
9de0: 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  ovider...    ///
9df0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
9e00: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
9e10: 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ="obj">..    ///
9e20: 20 54 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74   The object inst
9e30: 61 6e 63 65 20 74 6f 20 72 65 74 75 72 6e 20 74  ance to return t
9e40: 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73  he string repres
9e50: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 2e 0d 0a 20  entation for... 
9e60: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9e70: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
9e80: 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e  name="provider">
9e90: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
9ea0: 72 6d 61 74 20 70 72 6f 76 69 64 65 72 20 74 6f  rmat provider to
9eb0: 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69   use -OR- null i
9ec0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 6f  f the current fo
9ed0: 72 6d 61 74 20 70 72 6f 76 69 64 65 72 20 66 6f  rmat provider fo
9ee0: 72 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 74  r..    /// the t
9ef0: 68 72 65 61 64 20 73 68 6f 75 6c 64 20 62 65 20  hread should be 
9f00: 75 73 65 64 20 69 6e 73 74 65 61 64 2e 0d 0a 20  used instead... 
9f10: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
9f20: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
9f30: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
9f40: 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
9f50: 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 6f 62  ation for the ob
9f60: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 2d 4f  ject instance -O
9f70: 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 65 0d 0a  R- null if the..
9f80: 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69      /// object i
9f90: 6e 73 74 61 6e 63 65 20 69 73 20 61 6c 73 6f 20  nstance is also 
9fa0: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  null...    /// <
9fb0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
9fc0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
9fd0: 69 6e 67 20 54 6f 53 74 72 69 6e 67 57 69 74 68  ing ToStringWith
9fe0: 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20  Provider(..     
9ff0: 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d 0a     object obj,..
a000: 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50          IFormatP
a010: 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65 72  rovider provider
a020: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
a030: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
a040: 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  obj == null)..  
a050: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a060: 20 6e 75 6c 6c 3b 20 2f 2a 20 6e 75 6c 6c 20 2d   null; /* null -
a070: 2d 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d 0a 20 20  -> null */....  
a080: 20 20 20 20 20 20 69 66 20 28 6f 62 6a 20 69 73        if (obj is
a090: 20 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20   string)..      
a0a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73 74        return (st
a0b0: 72 69 6e 67 29 6f 62 6a 3b 20 2f 2a 20 69 64 65  ring)obj; /* ide
a0c0: 6e 74 69 74 79 20 2a 2f 0d 0a 0d 0a 20 20 20 20  ntity */....    
a0d0: 20 20 20 20 49 43 6f 6e 76 65 72 74 69 62 6c 65      IConvertible
a0e0: 20 63 6f 6e 76 65 72 74 69 62 6c 65 20 3d 20 6f   convertible = o
a0f0: 62 6a 20 61 73 20 49 43 6f 6e 76 65 72 74 69 62  bj as IConvertib
a100: 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  le;....        i
a110: 66 20 28 63 6f 6e 76 65 72 74 69 62 6c 65 20 21  f (convertible !
a120: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
a130: 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 76       return conv
a140: 65 72 74 69 62 6c 65 2e 54 6f 53 74 72 69 6e 67  ertible.ToString
a150: 28 70 72 6f 76 69 64 65 72 29 3b 0d 0a 0d 0a 20  (provider);.... 
a160: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62         return ob
a170: 6a 2e 54 6f 53 74 72 69 6e 67 28 29 3b 20 2f 2a  j.ToString(); /*
a180: 20 6e 6f 74 20 49 43 6f 6e 76 65 72 74 69 62 6c   not IConvertibl
a190: 65 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  e */..    }.... 
a1a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a1b0: 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70  ..    /// Attemp
a1c0: 74 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 6e  ts to convert an
a1d0: 20 61 72 62 69 74 72 61 72 79 20 6f 62 6a 65 63   arbitrary objec
a1e0: 74 20 74 6f 20 74 68 65 20 42 6f 6f 6c 65 61 6e  t to the Boolean
a1f0: 20 64 61 74 61 20 74 79 70 65 2e 0d 0a 20 20 20   data type...   
a200: 20 2f 2f 2f 20 4e 75 6c 6c 20 6f 62 6a 65 63 74   /// Null object
a210: 20 76 61 6c 75 65 73 20 61 72 65 20 63 6f 6e 76   values are conv
a220: 65 72 74 65 64 20 74 6f 20 66 61 6c 73 65 2e 20  erted to false. 
a230: 20 54 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70   Throws an excep
a240: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 75 70  tion..    /// up
a250: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20  on failure...   
a260: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a270: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
a280: 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20  name="obj">..   
a290: 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20   /// The object 
a2a0: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
a2b0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
a2c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
a2d0: 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64  ram name="provid
a2e0: 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  er">..    /// Th
a2f0: 65 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65  e format provide
a300: 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f  r to use...    /
a310: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
a320: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a330: 3d 22 76 69 61 46 72 61 6d 65 77 6f 72 6b 22 3e  ="viaFramework">
a340: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 6e 6f 6e  ..    /// If non
a350: 2d 7a 65 72 6f 2c 20 61 20 73 74 72 69 6e 67 20  -zero, a string 
a360: 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f  value will be co
a370: 6e 76 65 72 74 65 64 20 75 73 69 6e 67 20 74 68  nverted using th
a380: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  e..    /// <see 
a390: 63 72 65 66 3d 22 43 6f 6e 76 65 72 74 2e 54 6f  cref="Convert.To
a3a0: 42 6f 6f 6c 65 61 6e 28 4f 62 6a 65 63 74 2c 20  Boolean(Object, 
a3b0: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 29  IFormatProvider)
a3c0: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65  " />..    /// me
a3d0: 74 68 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c  thod; otherwise,
a3e0: 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
a3f0: 54 6f 42 6f 6f 6c 65 61 6e 28 53 74 72 69 6e 67  ToBoolean(String
a400: 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d  )" />..    /// m
a410: 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 75 73  ethod will be us
a420: 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ed...    /// </p
a430: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
a440: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
a450: 2f 20 54 68 65 20 63 6f 6e 76 65 72 74 65 64 20  / The converted 
a460: 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 2e 0d 0a  boolean value...
a470: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
a480: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
a490: 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42   static bool ToB
a4a0: 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20 20 20 20  oolean(..       
a4b0: 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d 0a 20 20   object obj,..  
a4c0: 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f        IFormatPro
a4d0: 76 69 64 65 72 20 70 72 6f 76 69 64 65 72 2c 0d  vider provider,.
a4e0: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69  .        bool vi
a4f0: 61 46 72 61 6d 65 77 6f 72 6b 0d 0a 20 20 20 20  aFramework..    
a500: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
a510: 20 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d        if (obj ==
a520: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
a530: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
a540: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 54 79 70  ;....        Typ
a550: 65 43 6f 64 65 20 74 79 70 65 43 6f 64 65 20 3d  eCode typeCode =
a560: 20 54 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64   Type.GetTypeCod
a570: 65 28 6f 62 6a 2e 47 65 74 54 79 70 65 28 29 29  e(obj.GetType())
a580: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 77 69  ;....        swi
a590: 74 63 68 20 28 74 79 70 65 43 6f 64 65 29 0d 0a  tch (typeCode)..
a5a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a5b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a5c0: 43 6f 64 65 2e 45 6d 70 74 79 3a 0d 0a 20 20 20  Code.Empty:..   
a5d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
a5e0: 70 65 43 6f 64 65 2e 44 42 4e 75 6c 6c 3a 0d 0a  peCode.DBNull:..
a5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a600: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
a610: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
a620: 54 79 70 65 43 6f 64 65 2e 42 6f 6f 6c 65 61 6e  TypeCode.Boolean
a630: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
a640: 20 20 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29     return (bool)
a650: 6f 62 6a 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  obj;..          
a660: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a670: 43 68 61 72 3a 0d 0a 20 20 20 20 20 20 20 20 20  Char:..         
a680: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a690: 63 68 61 72 29 6f 62 6a 29 20 21 3d 20 28 63 68  char)obj) != (ch
a6a0: 61 72 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  ar)0 ? true : fa
a6b0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a6c0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a6d0: 53 42 79 74 65 3a 0d 0a 20 20 20 20 20 20 20 20  SByte:..        
a6e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
a6f0: 28 73 62 79 74 65 29 6f 62 6a 29 20 21 3d 20 28  (sbyte)obj) != (
a700: 73 62 79 74 65 29 30 20 3f 20 74 72 75 65 20 3a  sbyte)0 ? true :
a710: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a720: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a730: 64 65 2e 42 79 74 65 3a 0d 0a 20 20 20 20 20 20  de.Byte:..      
a740: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a750: 20 28 28 62 79 74 65 29 6f 62 6a 29 20 21 3d 20   ((byte)obj) != 
a760: 28 62 79 74 65 29 30 20 3f 20 74 72 75 65 20 3a  (byte)0 ? true :
a770: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a780: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a790: 64 65 2e 49 6e 74 31 36 3a 0d 0a 20 20 20 20 20  de.Int16:..     
a7a0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a7b0: 6e 20 28 28 73 68 6f 72 74 29 6f 62 6a 29 20 21  n ((short)obj) !
a7c0: 3d 20 28 73 68 6f 72 74 29 30 20 3f 20 74 72 75  = (short)0 ? tru
a7d0: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a7e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a7f0: 65 43 6f 64 65 2e 55 49 6e 74 31 36 3a 0d 0a 20  eCode.UInt16:.. 
a800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a810: 65 74 75 72 6e 20 28 28 75 73 68 6f 72 74 29 6f  eturn ((ushort)o
a820: 62 6a 29 20 21 3d 20 28 75 73 68 6f 72 74 29 30  bj) != (ushort)0
a830: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
a840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a850: 73 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74 33  se TypeCode.Int3
a860: 32 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2:..            
a870: 20 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e 74      return ((int
a880: 29 6f 62 6a 29 20 21 3d 20 28 69 6e 74 29 30 20  )obj) != (int)0 
a890: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
a8a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
a8b0: 65 20 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 33  e TypeCode.UInt3
a8c0: 32 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2:..            
a8d0: 20 20 20 20 72 65 74 75 72 6e 20 28 28 75 69 6e      return ((uin
a8e0: 74 29 6f 62 6a 29 20 21 3d 20 28 75 69 6e 74 29  t)obj) != (uint)
a8f0: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a900: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a910: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74  ase TypeCode.Int
a920: 36 34 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64:..           
a930: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c 6f       return ((lo
a940: 6e 67 29 6f 62 6a 29 20 21 3d 20 28 6c 6f 6e 67  ng)obj) != (long
a950: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
a960: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a970: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49  case TypeCode.UI
a980: 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt64:..         
a990: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a9a0: 75 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 75  ulong)obj) != (u
a9b0: 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20  long)0 ? true : 
a9c0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
a9d0: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
a9e0: 65 2e 53 69 6e 67 6c 65 3a 0d 0a 20 20 20 20 20  e.Single:..     
a9f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
aa00: 6e 20 28 28 66 6c 6f 61 74 29 6f 62 6a 29 20 21  n ((float)obj) !
aa10: 3d 20 28 66 6c 6f 61 74 29 30 2e 30 20 3f 20 74  = (float)0.0 ? t
aa20: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
aa30: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
aa40: 79 70 65 43 6f 64 65 2e 44 6f 75 62 6c 65 3a 0d  ypeCode.Double:.
aa50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa60: 20 72 65 74 75 72 6e 20 28 28 64 6f 75 62 6c 65   return ((double
aa70: 29 6f 62 6a 29 20 21 3d 20 28 64 6f 75 62 6c 65  )obj) != (double
aa80: 29 30 2e 30 20 3f 20 74 72 75 65 20 3a 20 66 61  )0.0 ? true : fa
aa90: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
aaa0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
aab0: 44 65 63 69 6d 61 6c 3a 0d 0a 20 20 20 20 20 20  Decimal:..      
aac0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
aad0: 20 28 28 64 65 63 69 6d 61 6c 29 6f 62 6a 29 20   ((decimal)obj) 
aae0: 21 3d 20 44 65 63 69 6d 61 6c 2e 5a 65 72 6f 20  != Decimal.Zero 
aaf0: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
ab00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
ab10: 65 20 54 79 70 65 43 6f 64 65 2e 53 74 72 69 6e  e TypeCode.Strin
ab20: 67 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g:..            
ab30: 20 20 20 20 72 65 74 75 72 6e 20 76 69 61 46 72      return viaFr
ab40: 61 6d 65 77 6f 72 6b 20 3f 0d 0a 20 20 20 20 20  amework ?..     
ab50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
ab60: 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e  onvert.ToBoolean
ab70: 28 6f 62 6a 2c 20 70 72 6f 76 69 64 65 72 29 20  (obj, provider) 
ab80: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
ab90: 20 20 20 20 20 20 20 54 6f 42 6f 6f 6c 65 61 6e         ToBoolean
aba0: 28 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f  (ToStringWithPro
abb0: 76 69 64 65 72 28 6f 62 6a 2c 20 70 72 6f 76 69  vider(obj, provi
abc0: 64 65 72 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  der));..        
abd0: 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20      default:..  
abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
abf0: 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78  row new SQLiteEx
ac00: 63 65 70 74 69 6f 6e 28 48 65 6c 70 65 72 4d 65  ception(HelperMe
ac10: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
ac20: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
ac30: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
ac40: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
ac50: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
ac60: 20 20 20 20 20 20 20 20 20 20 22 43 61 6e 6e 6f            "Canno
ac70: 74 20 63 6f 6e 76 65 72 74 20 74 79 70 65 20 7b  t convert type {
ac80: 30 7d 20 74 6f 20 62 6f 6f 6c 65 61 6e 22 2c 0d  0} to boolean",.
ac90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aca0: 20 20 20 20 20 74 79 70 65 43 6f 64 65 29 29 3b       typeCode));
acb0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
acc0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
acd0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ace0: 20 43 6f 6e 76 65 72 74 20 61 20 76 61 6c 75 65   Convert a value
acf0: 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73   to true or fals
ad00: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
ad10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
ad20: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
ad30: 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 6f 72  rce">A string or
ad40: 20 6e 75 6d 62 65 72 20 72 65 70 72 65 73 65 6e   number represen
ad50: 74 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61 6c  ting true or fal
ad60: 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  se</param>..    
ad70: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72  /// <returns></r
ad80: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
ad90: 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  lic static bool 
ada0: 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 65 63 74  ToBoolean(object
adb0: 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b 0d   source)..    {.
adc0: 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63  .      if (sourc
add0: 65 20 69 73 20 62 6f 6f 6c 29 20 72 65 74 75 72  e is bool) retur
ade0: 6e 20 28 62 6f 6f 6c 29 73 6f 75 72 63 65 3b 0d  n (bool)source;.
adf0: 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
ae00: 54 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74 72 69  ToBoolean(ToStri
ae10: 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72 28 0d  ngWithProvider(.
ae20: 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63  .          sourc
ae30: 65 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  e, CultureInfo.I
ae40: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
ae50: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
ae60: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ae70: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
ae80: 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 3c 73   to convert a <s
ae90: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
aea0: 20 2f 3e 20 69 6e 74 6f 20 61 20 3c 73 65 65 20   /> into a <see 
aeb0: 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22 20 2f  cref="Boolean" /
aec0: 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  >...    /// </su
aed0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
aee0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
aef0: 72 63 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  rce">..    /// T
af00: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
af10: 72 69 6e 67 22 20 2f 3e 20 74 6f 20 63 6f 6e 76  ring" /> to conv
af20: 65 72 74 2c 20 63 61 6e 6e 6f 74 20 62 65 20 6e  ert, cannot be n
af30: 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ull...    /// </
af40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
af50: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
af60: 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74 65 64  // The converted
af70: 20 3c 73 65 65 20 63 72 65 66 3d 22 42 6f 6f 6c   <see cref="Bool
af80: 65 61 6e 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ean" /> value...
af90: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
afa0: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  s>..    /// <rem
afb0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
afc0: 68 65 20 73 75 70 70 6f 72 74 65 64 20 73 74 72  he supported str
afd0: 69 6e 67 73 20 61 72 65 20 22 79 65 73 22 2c 20  ings are "yes", 
afe0: 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22 2c 20  "no", "y", "n", 
aff0: 22 6f 6e 22 2c 20 22 6f 66 66 22 2c 20 22 30 22  "on", "off", "0"
b000: 2c 20 22 31 22 2c 0d 0a 20 20 20 20 2f 2f 2f 20  , "1",..    /// 
b010: 61 73 20 77 65 6c 6c 20 61 73 20 61 6e 79 20 70  as well as any p
b020: 72 65 66 69 78 20 6f 66 20 74 68 65 20 73 74 72  refix of the str
b030: 69 6e 67 73 20 3c 73 65 65 20 63 72 65 66 3d 22  ings <see cref="
b040: 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53 74 72  Boolean.FalseStr
b050: 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ing" />..    ///
b060: 20 61 6e 64 20 3c 73 65 65 20 63 72 65 66 3d 22   and <see cref="
b070: 42 6f 6f 6c 65 61 6e 2e 54 72 75 65 53 74 72 69  Boolean.TrueStri
b080: 6e 67 22 20 2f 3e 2e 20 20 41 6c 6c 20 73 74 72  ng" />.  All str
b090: 69 6e 67 73 20 61 72 65 20 74 72 65 61 74 65 64  ings are treated
b0a0: 20 69 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63   in a..    /// c
b0b0: 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20  ase-insensitive 
b0c0: 6d 61 6e 6e 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  manner...    ///
b0d0: 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20   </remarks>..   
b0e0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
b0f0: 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74  ool ToBoolean(st
b100: 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20 20  ring source)..  
b110: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
b120: 28 73 6f 75 72 63 65 20 3d 3d 20 6e 75 6c 6c 29  (source == null)
b130: 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
b140: 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
b150: 28 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20  ("source");..   
b160: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
b170: 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65 2c 20  Compare(source, 
b180: 30 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74 72 69  0, bool.TrueStri
b190: 6e 67 2c 20 30 2c 20 73 6f 75 72 63 65 2e 4c 65  ng, 0, source.Le
b1a0: 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f 6d 70  ngth, StringComp
b1b0: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
b1c0: 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20  noreCase) == 0) 
b1d0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
b1e0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53        else if (S
b1f0: 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f  tring.Compare(so
b200: 75 72 63 65 2c 20 30 2c 20 62 6f 6f 6c 2e 46 61  urce, 0, bool.Fa
b210: 6c 73 65 53 74 72 69 6e 67 2c 20 30 2c 20 73 6f  lseString, 0, so
b220: 75 72 63 65 2e 4c 65 6e 67 74 68 2c 20 53 74 72  urce.Length, Str
b230: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
b240: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
b250: 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 66 61   == 0) return fa
b260: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
b270: 73 77 69 74 63 68 20 28 73 6f 75 72 63 65 2e 54  switch (source.T
b280: 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65 49 6e  oLower(CultureIn
b290: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
b2a0: 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  ure))..        {
b2b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
b2c0: 73 65 20 22 79 22 3a 0d 0a 20 20 20 20 20 20 20  se "y":..       
b2d0: 20 20 20 20 20 63 61 73 65 20 22 79 65 73 22 3a       case "yes":
b2e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
b2f0: 73 65 20 22 6f 6e 22 3a 0d 0a 20 20 20 20 20 20  se "on":..      
b300: 20 20 20 20 20 20 63 61 73 65 20 22 31 22 3a 0d        case "1":.
b310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b320: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
b330: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
b340: 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "n":..          
b350: 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a 20 20    case "no":..  
b360: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
b370: 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  off":..         
b380: 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a 20 20     case "0":..  
b390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
b3a0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
b3b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b3c0: 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
b3d0: 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 73  mentException("s
b3e0: 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 7d 0d  ource");..    }.
b3f0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 54  ...    #region T
b400: 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e 73 0d  ype Conversions.
b410: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
b420: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
b430: 65 72 74 73 20 61 20 53 51 4c 69 74 65 54 79 70  erts a SQLiteTyp
b440: 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79 70 65  e to a .NET Type
b450: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f   object..    ///
b460: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b470: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
b480: 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74 65 54  ="t">The SQLiteT
b490: 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f  ype to convert</
b4a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
b4b0: 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e 73  <returns>Returns
b4c0: 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a   a .NET Type obj
b4d0: 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ect</returns>.. 
b4e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b4f0: 69 63 20 54 79 70 65 20 53 51 4c 69 74 65 54 79  ic Type SQLiteTy
b500: 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74 65 54  peToType(SQLiteT
b510: 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d 0a 20  ype t)..    {.. 
b520: 20 20 20 20 20 69 66 20 28 74 2e 54 79 70 65 20       if (t.Type 
b530: 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74  == DbType.Object
b540: 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  )..        retur
b550: 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70  n _affinitytotyp
b560: 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e 69 74  e[(int)t.Affinit
b570: 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d  y];..      else.
b580: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
b590: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 44 62  SQLiteConvert.Db
b5a0: 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54 79 70  TypeToType(t.Typ
b5b0: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
b5c0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
b5d0: 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e 69 74   Type[] _affinit
b5e0: 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20 20 20  ytotype = {..   
b5f0: 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74     typeof(object
b600: 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74 69 61  ),   // Uninitia
b610: 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20 20 20  lized (0)..     
b620: 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29 2c 20   typeof(Int64), 
b630: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 29 0d     // Int64 (1).
b640: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 6f  .      typeof(Do
b650: 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f 75 62  uble),   // Doub
b660: 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74 79  le (2)..      ty
b670: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
b680: 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20 20 20  // Text (3)..   
b690: 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d     typeof(byte[]
b6a0: 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28 34 29  ),   // Blob (4)
b6b0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f  ..      typeof(o
b6c0: 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e 75 6c  bject),   // Nul
b6d0: 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 74 79 70  l (5)..      typ
b6e0: 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20 2f  eof(DateTime), /
b6f0: 2f 20 44 61 74 65 54 69 6d 65 20 28 31 30 29 0d  / DateTime (10).
b700: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62  .      typeof(ob
b710: 6a 65 63 74 29 20 20 20 20 2f 2f 20 4e 6f 6e 65  ject)    // None
b720: 20 28 31 31 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d   (11)..    };...
b730: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
b740: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20  y>..    /// For 
b750: 61 20 67 69 76 65 6e 20 69 6e 74 72 69 6e 73 69  a given intrinsi
b760: 63 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 61  c type, return a
b770: 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f 2f 2f   DbType..    ///
b780: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b790: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
b7a0: 3d 22 74 79 70 22 3e 54 68 65 20 6e 61 74 69 76  ="typ">The nativ
b7b0: 65 20 74 79 70 65 20 74 6f 20 63 6f 6e 76 65 72  e type to conver
b7c0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
b7d0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
b7e0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 28 63  corresponding (c
b7f0: 6c 6f 73 65 73 74 20 6d 61 74 63 68 29 20 44 62  losest match) Db
b800: 54 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  Type</returns>..
b810: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
b820: 74 69 63 20 44 62 54 79 70 65 20 54 79 70 65 54  tic DbType TypeT
b830: 6f 44 62 54 79 70 65 28 54 79 70 65 20 74 79 70  oDbType(Type typ
b840: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
b850: 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54 79  TypeCode tc = Ty
b860: 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28 74  pe.GetTypeCode(t
b870: 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 28  yp);..      if (
b880: 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e 4f  tc == TypeCode.O
b890: 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b 0d  bject)..      {.
b8a0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
b8b0: 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 5b   == typeof(byte[
b8c0: 5d 29 29 20 72 65 74 75 72 6e 20 44 62 54 79 70  ])) return DbTyp
b8d0: 65 2e 42 69 6e 61 72 79 3b 0d 0a 20 20 20 20 20  e.Binary;..     
b8e0: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
b8f0: 70 65 6f 66 28 47 75 69 64 29 29 20 72 65 74 75  peof(Guid)) retu
b900: 72 6e 20 44 62 54 79 70 65 2e 47 75 69 64 3b 0d  rn DbType.Guid;.
b910: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
b920: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3b 0d 0a  DbType.String;..
b930: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72        }..      r
b940: 65 74 75 72 6e 20 5f 74 79 70 65 74 6f 64 62 74  eturn _typetodbt
b950: 79 70 65 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a 20  ype[(int)tc];.. 
b960: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
b970: 61 74 65 20 73 74 61 74 69 63 20 44 62 54 79 70  ate static DbTyp
b980: 65 5b 5d 20 5f 74 79 70 65 74 6f 64 62 74 79 70  e[] _typetodbtyp
b990: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 62 54  e = {..      DbT
b9a0: 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f  ype.Object,   //
b9b0: 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20 20 20   Empty (0)..    
b9c0: 20 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c    DbType.Binary,
b9d0: 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 29     // Object (1)
b9e0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f  ..      DbType.O
b9f0: 62 6a 65 63 74 2c 20 20 20 2f 2f 20 44 42 4e 75  bject,   // DBNu
ba00: 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20 44 62  ll (2)..      Db
ba10: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 20 2f  Type.Boolean,  /
ba20: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
ba30: 20 20 20 20 20 44 62 54 79 70 65 2e 53 42 79 74       DbType.SByt
ba40: 65 2c 20 20 20 20 2f 2f 20 43 68 61 72 20 28 34  e,    // Char (4
ba50: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
ba60: 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 53 42 79  SByte,    // SBy
ba70: 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44 62  te (5)..      Db
ba80: 54 79 70 65 2e 42 79 74 65 2c 20 20 20 20 20 2f  Type.Byte,     /
ba90: 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20 20  / Byte (6)..    
baa0: 20 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20    DbType.Int16, 
bab0: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 29 0d     // Int16 (7).
bac0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55 49  .      DbType.UI
bad0: 6e 74 31 36 2c 20 20 20 2f 2f 20 55 49 6e 74 31  nt16,   // UInt1
bae0: 36 20 28 38 29 0d 0a 20 20 20 20 20 20 44 62 54  6 (8)..      DbT
baf0: 79 70 65 2e 49 6e 74 33 32 2c 20 20 20 20 2f 2f  ype.Int32,    //
bb00: 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20 20 20   Int32 (9)..    
bb10: 20 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c    DbType.UInt32,
bb20: 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 30     // UInt32 (10
bb30: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
bb40: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74  Int64,    // Int
bb50: 36 34 20 28 31 31 29 0d 0a 20 20 20 20 20 20 44  64 (11)..      D
bb60: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 20 20  bType.UInt64,   
bb70: 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29 0d 0a  // UInt64 (12)..
bb80: 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 69 6e        DbType.Sin
bb90: 67 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c 65  gle,   // Single
bba0: 20 28 31 33 29 0d 0a 20 20 20 20 20 20 44 62 54   (13)..      DbT
bbb0: 79 70 65 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f  ype.Double,   //
bbc0: 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20 20   Double (14)..  
bbd0: 20 20 20 20 44 62 54 79 70 65 2e 44 65 63 69 6d      DbType.Decim
bbe0: 61 6c 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20  al,  // Decimal 
bbf0: 28 31 35 29 0d 0a 20 20 20 20 20 20 44 62 54 79  (15)..      DbTy
bc00: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 2f 2f 20  pe.DateTime, // 
bc10: 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d 0a 20  DateTime (16).. 
bc20: 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a 65       DbType.Obje
bc30: 63 74 2c 20 20 20 2f 2f 20 3f 3f 20 28 31 37 29  ct,   // ?? (17)
bc40: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53  ..      DbType.S
bc50: 74 72 69 6e 67 20 20 20 20 2f 2f 20 53 74 72 69  tring    // Stri
bc60: 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d  ng (18)..    };.
bc70: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
bc80: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65  ary>..    /// Re
bc90: 74 75 72 6e 73 20 74 68 65 20 43 6f 6c 75 6d 6e  turns the Column
bca0: 53 69 7a 65 20 66 6f 72 20 74 68 65 20 67 69 76  Size for the giv
bcb0: 65 6e 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f  en DbType..    /
bcc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
bcd0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
bce0: 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62 54  me="typ">The DbT
bcf0: 79 70 65 20 74 6f 20 67 65 74 20 74 68 65 20 73  ype to get the s
bd00: 69 7a 65 20 6f 66 3c 2f 70 61 72 61 6d 3e 0d 0a  ize of</param>..
bd10: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
bd20: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
bd30: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
bd40: 20 69 6e 74 20 44 62 54 79 70 65 54 6f 43 6f 6c   int DbTypeToCol
bd50: 75 6d 6e 53 69 7a 65 28 44 62 54 79 70 65 20 74  umnSize(DbType t
bd60: 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  yp)..    {..    
bd70: 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65    return _dbtype
bd80: 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 5b 28 69 6e  tocolumnsize[(in
bd90: 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  t)typ];..    }..
bda0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
bdb0: 61 74 69 63 20 69 6e 74 5b 5d 20 5f 64 62 74 79  atic int[] _dbty
bdc0: 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 20 3d  petocolumnsize =
bdd0: 20 7b 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61   {..      int.Ma
bde0: 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53  xValue, // AnsiS
bdf0: 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20  tring (0)..     
be00: 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f   int.MaxValue, /
be10: 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20  / Binary (1)..  
be20: 20 20 20 20 31 2c 20 20 20 20 20 20 20 20 20 20      1,          
be30: 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20    // Byte (2).. 
be40: 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20 20       1,         
be50: 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33     // Boolean (3
be60: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
be70: 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72 65 6e         // Curren
be80: 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20 38 2c  cy (4)..      8,
be90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
bea0: 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 38  ate (5)..      8
beb0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
bec0: 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20  DateTime (6)..  
bed0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
bee0: 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29    // Decimal (7)
bef0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bf00: 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20        // Double 
bf10: 28 38 29 0d 0a 20 20 20 20 20 20 31 36 2c 20 20  (8)..      16,  
bf20: 20 20 20 20 20 20 20 20 20 2f 2f 20 47 75 69 64           // Guid
bf30: 20 28 39 29 0d 0a 20 20 20 20 20 20 32 2c 20 20   (9)..      2,  
bf40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
bf50: 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20 34  16 (10)..      4
bf60: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
bf70: 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20 20 20  Int32 (11)..    
bf80: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
bf90: 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20  // Int64 (12).. 
bfa0: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bfb0: 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33  e, // Object (13
bfc0: 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20 20  )..      1,     
bfd0: 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74 65 20         // SByte 
bfe0: 28 31 34 29 0d 0a 20 20 20 20 20 20 34 2c 20 20  (14)..      4,  
bff0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 69 6e            // Sin
c000: 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20 20 20  gle (15)..      
c010: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
c020: 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20   String (16)..  
c030: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
c040: 20 20 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a    // Time (17)..
c050: 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20        2,        
c060: 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31      // UInt16 (1
c070: 38 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20  8)..      4,    
c080: 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33          // UInt3
c090: 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20 38 2c  2 (19)..      8,
c0a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55              // U
c0b0: 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20  Int64 (20)..    
c0c0: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
c0d0: 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32  // VarNumeric (2
c0e0: 31 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  1)..      int.Ma
c0f0: 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53  xValue, // AnsiS
c100: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
c110: 20 28 32 32 29 0d 0a 20 20 20 20 20 20 69 6e 74   (22)..      int
c120: 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 53 74  .MaxValue, // St
c130: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20  ringFixedLength 
c140: 28 32 33 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e  (23)..      int.
c150: 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20  MaxValue, // ?? 
c160: 28 32 34 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e  (24)..      int.
c170: 4d 61 78 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c  MaxValue  // Xml
c180: 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d   (25)..    };...
c190: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
c1a0: 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62 54 79  atic object DbTy
c1b0: 70 65 54 6f 4e 75 6d 65 72 69 63 50 72 65 63 69  peToNumericPreci
c1c0: 73 69 6f 6e 28 44 62 54 79 70 65 20 74 79 70 29  sion(DbType typ)
c1d0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
c1e0: 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e  eturn _dbtypeton
c1f0: 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e 5b  umericprecision[
c200: 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20  (int)typ];..    
c210: 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  }....    private
c220: 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d   static object[]
c230: 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69   _dbtypetonumeri
c240: 63 70 72 65 63 69 73 69 6f 6e 20 3d 20 7b 0d 0a  cprecision = {..
c250: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c260: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
c270: 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42 4e  g (0)..      DBN
c280: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69  ull.Value, // Bi
c290: 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20  nary (1)..      
c2a0: 33 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  3,            //
c2b0: 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20   Byte (2)..     
c2c0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c2d0: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
c2e0: 20 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20       19,        
c2f0: 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28     // Currency (
c300: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
c310: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20  .Value, // Date 
c320: 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (5)..      DBNul
c330: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65  l.Value, // Date
c340: 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20  Time (6)..      
c350: 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  53,           //
c360: 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20   Decimal (7)..  
c370: 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20 20      53,         
c380: 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d    // Double (8).
c390: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c3a0: 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 29  lue, // Guid (9)
c3b0: 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20 20  ..      5,      
c3c0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28        // Int16 (
c3d0: 31 30 29 0d 0a 20 20 20 20 20 20 31 30 2c 20 20  10)..      10,  
c3e0: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33           // Int3
c3f0: 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 31 39  2 (11)..      19
c400: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49  ,           // I
c410: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
c420: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c430: 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20  / Object (13).. 
c440: 20 20 20 20 20 33 2c 20 20 20 20 20 20 20 20 20       3,         
c450: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29     // SByte (14)
c460: 0d 0a 20 20 20 20 20 20 32 34 2c 20 20 20 20 20  ..      24,     
c470: 20 20 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20        // Single 
c480: 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (15)..      DBNu
c490: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72  ll.Value, // Str
c4a0: 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20  ing (16)..      
c4b0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c4c0: 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20   Time (17)..    
c4d0: 20 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 20    5,            
c4e0: 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a  // UInt16 (18)..
c4f0: 20 20 20 20 20 20 31 30 2c 20 20 20 20 20 20 20        10,       
c500: 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31      // UInt32 (1
c510: 39 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20 20  9)..      19,   
c520: 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36          // UInt6
c530: 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 35 33  4 (20)..      53
c540: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56  ,           // V
c550: 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a  arNumeric (21)..
c560: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c570: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
c580: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32  gFixedLength (22
c590: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c5a0: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
c5b0: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29  FixedLength (23)
c5c0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c5d0: 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29  alue, // ?? (24)
c5e0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c5f0: 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35  alue  // Xml (25
c600: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
c610: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
c620: 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f   object DbTypeTo
c630: 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44 62 54  NumericScale(DbT
c640: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
c650: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64  .      return _d
c660: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63  btypetonumericsc
c670: 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a  ale[(int)typ];..
c680: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
c690: 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
c6a0: 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75  ct[] _dbtypetonu
c6b0: 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b 0d 0a  mericscale = {..
c6c0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c6d0: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
c6e0: 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42 4e  g (0)..      DBN
c6f0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69  ull.Value, // Bi
c700: 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20  nary (1)..      
c710: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
c720: 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20   Byte (2)..     
c730: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c740: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
c750: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
c760: 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28     // Currency (
c770: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
c780: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20  .Value, // Date 
c790: 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (5)..      DBNul
c7a0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65  l.Value, // Date
c7b0: 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20  Time (6)..      
c7c0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c7d0: 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20   Decimal (7)..  
c7e0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c7f0: 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d  , // Double (8).
c800: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c810: 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 29  lue, // Guid (9)
c820: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
c830: 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28        // Int16 (
c840: 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  10)..      0,   
c850: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33           // Int3
c860: 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 30 2c  2 (11)..      0,
c870: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
c880: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
c890: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c8a0: 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20  / Object (13).. 
c8b0: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
c8c0: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29     // SByte (14)
c8d0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c8e0: 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c 65 20  alue, // Single 
c8f0: 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (15)..      DBNu
c900: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72  ll.Value, // Str
c910: 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20  ing (16)..      
c920: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c930: 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20   Time (17)..    
c940: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
c950: 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a  // UInt16 (18)..
c960: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
c970: 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31      // UInt32 (1
c980: 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  9)..      0,    
c990: 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36          // UInt6
c9a0: 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 30 2c  4 (20)..      0,
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56              // V
c9c0: 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a  arNumeric (21)..
c9d0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c9e0: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
c9f0: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32  gFixedLength (22
ca00: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
ca10: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
ca20: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29  FixedLength (23)
ca30: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ca40: 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29  alue, // ?? (24)
ca50: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ca60: 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35  alue  // Xml (25
ca70: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
ca80: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
ca90: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
caa0: 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 64  es the default d
cab0: 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
cac0: 65 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65  e to be used whe
cad0: 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70 65 72  n a..    /// per
cae0: 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c 75  -connection valu
caf0: 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  e is not availab
cb00: 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  le...    /// </s
cb10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
cb20: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f   <param name="co
cb30: 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  nnection">..    
cb40: 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
cb50: 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 74  on context for t
cb60: 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66  ype mappings, if
cb70: 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c   any...    /// <
cb80: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
cb90: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
cba0: 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
cbb0: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
cbc0: 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20  me to use...    
cbd0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
cbe0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
cbf0: 69 63 20 73 74 72 69 6e 67 20 47 65 74 44 65 66  ic string GetDef
cc00: 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 0d 0a 20  aultTypeName(.. 
cc10: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
cc20: 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
cc30: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  on..        ).. 
cc40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53 51     {..        SQ
cc50: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
cc60: 61 67 73 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e  ags flags = (con
cc70: 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
cc80: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
cc90: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73  connection.Flags
cca0: 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   : SQLiteConnect
ccb0: 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a  ionFlags.None;..
ccc0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66  ..        if ((f
ccd0: 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
cce0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43  nectionFlags.NoC
ccf0: 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d  onvertSettings).
cd00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cd10: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
cd20: 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76  tionFlags.NoConv
cd30: 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a 20 20  ertSettings)..  
cd40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
cd50: 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 6c       return Fall
cd60: 62 61 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e  backDefaultTypeN
cd70: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ame;..        }.
cd80: 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ...        strin
cd90: 67 20 6e 61 6d 65 20 3d 20 22 55 73 65 5f 53 51  g name = "Use_SQ
cda0: 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44 65 66 61  LiteConvert_Defa
cdb0: 75 6c 74 54 79 70 65 4e 61 6d 65 22 3b 0d 0a 20  ultTypeName";.. 
cdc0: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
cdd0: 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  lue = null;..   
cde0: 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66       string @def
cdf0: 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  ault = null;....
ce00: 20 20 20 20 20 20 20 20 69 66 20 28 28 63 6f 6e          if ((con
ce10: 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29  nection == null)
ce20: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
ce30: 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79   !connection.Try
ce40: 47 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67  GetCachedSetting
ce50: 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c  (name, @default,
ce60: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
ce70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
ce80: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
ce90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
cea0: 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
ceb0: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
cec0: 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56  hods.GetSettingV
ced0: 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65 66 61  alue(name, @defa
cee0: 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ult);....       
cef0: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
cf00: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
cf10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf20: 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63   value = Fallbac
cf30: 6b 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65  kDefaultTypeName
cf40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
cf50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
cf60: 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
cf70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cf80: 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
cf90: 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tion != null).. 
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfb0: 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65     connection.Se
cfc0: 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e  tCachedSetting(n
cfd0: 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
cfe0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
cff0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d000: 20 20 72 65 74 75 72 6e 20 53 65 74 74 69 6e 67    return Setting
d010: 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 76 61  ValueToString(va
d020: 6c 75 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lue);..    }....
d030: 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54  #if !NET_COMPACT
d040: 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52  _20 && TRACE_WAR
d050: 4e 49 4e 47 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  NING..    /// <s
d060: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d070: 20 49 66 20 61 70 70 6c 69 63 61 62 6c 65 2c 20   If applicable, 
d080: 69 73 73 75 65 73 20 61 20 74 72 61 63 65 20 6c  issues a trace l
d090: 6f 67 20 6d 65 73 73 61 67 65 20 77 61 72 6e 69  og message warni
d0a0: 6e 67 20 61 62 6f 75 74 20 66 61 6c 6c 69 6e 67  ng about falling
d0b0: 20 62 61 63 6b 20 74 6f 0d 0a 20 20 20 20 2f 2f   back to..    //
d0c0: 2f 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61  / the default da
d0d0: 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65  tabase type name
d0e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
d0f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
d100: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79  param name="dbTy
d110: 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  pe">..    /// Th
d120: 65 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65  e database value
d130: 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
d140: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
d150: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
d160: 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  lags">..    /// 
d170: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
d180: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
d190: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
d1a0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
d1b0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
d1c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
d1d0: 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20 20 20 20  typeName">..    
d1e0: 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20  /// The textual 
d1f0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61  name of the data
d200: 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20 20 20  base type...    
d210: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
d220: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
d230: 20 76 6f 69 64 20 44 65 66 61 75 6c 74 54 79 70   void DefaultTyp
d240: 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 0d 0a 20  eNameWarning(.. 
d250: 20 20 20 20 20 20 20 44 62 54 79 70 65 20 64 62         DbType db
d260: 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 53  Type,..        S
d270: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d280: 6c 61 67 73 20 66 6c 61 67 73 2c 0d 0a 20 20 20  lags flags,..   
d290: 20 20 20 20 20 73 74 72 69 6e 67 20 74 79 70 65       string type
d2a0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d  Name..        ).
d2b0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
d2c0: 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
d2d0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d2e0: 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
d2f0: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
d300: 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57  tionFlags.TraceW
d310: 61 72 6e 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  arning)..       
d320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d330: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
d340: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
d350: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
d360: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
d370: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
d380: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
d390: 20 20 20 20 20 20 20 20 20 20 22 57 41 52 4e 49            "WARNI
d3a0: 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e 67  NG: Type mapping
d3b0: 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e 69   failed, returni
d3c0: 6e 67 20 64 65 66 61 75 6c 74 20 6e 61 6d 65 20  ng default name 
d3d0: 5c 22 7b 30 7d 5c 22 20 66 6f 72 20 74 79 70 65  \"{0}\" for type
d3e0: 20 7b 31 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20   {1}.",..       
d3f0: 20 20 20 20 20 20 20 20 20 74 79 70 65 4e 61 6d           typeNam
d400: 65 2c 20 64 62 54 79 70 65 29 29 3b 0d 0a 20 20  e, dbType));..  
d410: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
d420: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
d430: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  ry>..    /// If 
d440: 61 70 70 6c 69 63 61 62 6c 65 2c 20 69 73 73 75  applicable, issu
d450: 65 73 20 61 20 74 72 61 63 65 20 6c 6f 67 20 6d  es a trace log m
d460: 65 73 73 61 67 65 20 77 61 72 6e 69 6e 67 20 61  essage warning a
d470: 62 6f 75 74 20 66 61 6c 6c 69 6e 67 20 62 61 63  bout falling bac
d480: 6b 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  k to..    /// th
d490: 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  e default databa
d4a0: 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a  se value type...
d4b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d4c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
d4d0: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d  am name="typeNam
d4e0: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
d4f0: 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66   textual name of
d500: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
d510: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  pe...    /// </p
d520: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d530: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
d540: 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  s">..    /// The
d550: 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65   flags associate
d560: 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e  d with the paren
d570: 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a  t connection obj
d580: 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
d590: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
d5a0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54  <param name="dbT
d5b0: 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ype">..    /// T
d5c0: 68 65 20 64 61 74 61 62 61 73 65 20 76 61 6c 75  he database valu
d5d0: 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e type...    ///
d5e0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70   </param>..    p
d5f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
d600: 69 64 20 44 65 66 61 75 6c 74 44 62 54 79 70 65  id DefaultDbType
d610: 57 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20  Warning(..      
d620: 20 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d    string typeNam
d630: 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  e,..        SQLi
d640: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
d650: 73 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20  s flags,..      
d660: 20 20 44 62 54 79 70 65 3f 20 64 62 54 79 70 65    DbType? dbType
d670: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
d680: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
d690: 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
d6a0: 45 6d 70 74 79 28 74 79 70 65 4e 61 6d 65 29 20  Empty(typeName) 
d6b0: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
d6c0: 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
d6d0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d6e0: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 20 3d 3d  TraceWarning) ==
d6f0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d700: 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e  nFlags.TraceWarn
d710: 69 6e 67 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  ing))..        {
d720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72  ..            Tr
d730: 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 48 65  ace.WriteLine(He
d740: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
d750: 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ngFormat(..     
d760: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
d770: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
d780: 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20  lture,..        
d790: 20 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47          "WARNING
d7a0: 3a 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20 66  : Type mapping f
d7b0: 61 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e 67  ailed, returning
d7c0: 20 64 65 66 61 75 6c 74 20 74 79 70 65 20 7b 30   default type {0
d7d0: 7d 20 66 6f 72 20 6e 61 6d 65 20 5c 22 7b 31 7d  } for name \"{1}
d7e0: 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  \".",..         
d7f0: 20 20 20 20 20 20 20 64 62 54 79 70 65 2c 20 74         dbType, t
d800: 79 70 65 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20  ypeName));..    
d810: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65      }..    }..#e
d820: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ndif....    /// 
d830: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
d840: 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 64  // For a given d
d850: 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79  atabase value ty
d860: 70 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20 22  pe, return the "
d870: 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 22 20 74  closest-match" t
d880: 65 78 74 75 61 6c 20 64 61 74 61 62 61 73 65 20  extual database 
d890: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
d8a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d8b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
d8c0: 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
d8d0: 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  >The connection 
d8e0: 63 6f 6e 74 65 78 74 20 66 6f 72 20 63 75 73 74  context for cust
d8f0: 6f 6d 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73  om type mappings
d900: 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d  , if any.</param
d910: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
d920: 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e  m name="dbType">
d930: 54 68 65 20 64 61 74 61 62 61 73 65 20 76 61 6c  The database val
d940: 75 65 20 74 79 70 65 2e 3c 2f 70 61 72 61 6d 3e  ue type.</param>
d950: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
d960: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68   name="flags">Th
d970: 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
d980: 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
d990: 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
d9a0: 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ject.</param>.. 
d9b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
d9c0: 54 68 65 20 74 79 70 65 20 6e 61 6d 65 20 6f 72  The type name or
d9d0: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
d9e0: 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65   if it cannot be
d9f0: 20 64 65 74 65 72 6d 69 6e 65 64 2e 3c 2f 72 65   determined.</re
da00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
da10: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
da20: 6e 67 20 44 62 54 79 70 65 54 6f 54 79 70 65 4e  ng DbTypeToTypeN
da30: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ame(..        SQ
da40: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
da50: 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20  onnection,..    
da60: 20 20 20 20 44 62 54 79 70 65 20 64 62 54 79 70      DbType dbTyp
da70: 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  e,..        SQLi
da80: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
da90: 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20  s flags..       
daa0: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
dab0: 20 20 20 73 74 72 69 6e 67 20 64 65 66 61 75 6c     string defaul
dac0: 74 54 79 70 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c  tTypeName = null
dad0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
dae0: 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e  (connection != n
daf0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ull)..        {.
db00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 61  .            fla
db10: 67 73 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  gs |= connection
db20: 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20  .Flags;....     
db30: 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
db40: 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
db50: 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e  tionFlags.UseCon
db60: 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d  nectionTypes) ==
db70: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
db80: 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63  nFlags.UseConnec
db90: 74 69 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20 20  tionTypes)..    
dba0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
dbb0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
dbc0: 65 44 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65  eDbTypeMap conne
dbd0: 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d  ctionTypeNames =
dbe0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70   connection._typ
dbf0: 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20  eNames;....     
dc00: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
dc10: 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
dc20: 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc50: 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65      SQLiteDbType
dc60: 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a  Mapping value;..
dc70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dc80: 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
dc90: 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72  tionTypeNames.Tr
dca0: 79 47 65 74 56 61 6c 75 65 28 64 62 54 79 70 65  yGetValue(dbType
dcb0: 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcd0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
dce0: 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20  lue.typeName;.. 
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
dd00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
dd10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
dd20: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
dd30: 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20  / NOTE: Use the 
dd40: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
dd50: 20 74 79 70 65 20 6e 61 6d 65 20 66 6f 72 20 74   type name for t
dd60: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
dd70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
dd90: 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 63 6f  ultTypeName = co
dda0: 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74  nnection.Default
ddb0: 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  TypeName;..     
ddc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
ddd0: 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
dde0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
ddf0: 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73  gs.NoGlobalTypes
de00: 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ) == SQLiteConne
de10: 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f  ctionFlags.NoGlo
de20: 62 61 6c 54 79 70 65 73 29 0d 0a 20 20 20 20 20  balTypes)..     
de30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
de40: 20 20 69 66 20 28 64 65 66 61 75 6c 74 54 79 70    if (defaultTyp
de50: 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eName != null)..
de60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de70: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79  return defaultTy
de80: 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  peName;....     
de90: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79         defaultTy
dea0: 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61  peName = GetDefa
deb0: 75 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e 6e  ultTypeName(conn
dec0: 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20  ection);....#if 
ded0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
dee0: 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47  && TRACE_WARNING
def0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65  ..            De
df00: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61 72  faultTypeNameWar
df10: 6e 69 6e 67 28 64 62 54 79 70 65 2c 20 66 6c 61  ning(dbType, fla
df20: 67 73 2c 20 64 65 66 61 75 6c 74 54 79 70 65 4e  gs, defaultTypeN
df30: 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  ame);..#endif...
df40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
df50: 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e  urn defaultTypeN
df60: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ame;..        }.
df70: 0a 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20  ...        lock 
df80: 28 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20  (_syncRoot)..   
df90: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
dfa0: 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d      if (_typeNam
dfb0: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79               _ty
dfd0: 70 65 4e 61 6d 65 73 20 3d 20 47 65 74 53 51 4c  peNames = GetSQL
dfe0: 69 74 65 44 62 54 79 70 65 4d 61 70 28 29 3b 0d  iteDbTypeMap();.
dff0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
e000: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
e010: 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ng value;....   
e020: 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79           if (_ty
e030: 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61  peNames.TryGetVa
e040: 6c 75 65 28 64 62 54 79 70 65 2c 20 6f 75 74 20  lue(dbType, out 
e050: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
e060: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e070: 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b 0d  value.typeName;.
e080: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
e090: 20 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c        if (defaul
e0a0: 74 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c  tTypeName != nul
e0b0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
e0c0: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79  return defaultTy
e0d0: 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  peName;....     
e0e0: 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61     defaultTypeNa
e0f0: 6d 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 54  me = GetDefaultT
e100: 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65 63 74 69  ypeName(connecti
e110: 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54  on);....#if !NET
e120: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54  _COMPACT_20 && T
e130: 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20  RACE_WARNING..  
e140: 20 20 20 20 20 20 44 65 66 61 75 6c 74 54 79 70        DefaultTyp
e150: 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 64 62 54  eNameWarning(dbT
e160: 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61  ype, flags, defa
e170: 75 6c 74 54 79 70 65 4e 61 6d 65 29 3b 0d 0a 23  ultTypeName);..#
e180: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
e190: 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54   return defaultT
e1a0: 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d  ypeName;..    }.
e1b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
e1c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
e1d0: 6e 76 65 72 74 20 61 20 44 62 54 79 70 65 20 74  nvert a DbType t
e1e0: 6f 20 61 20 54 79 70 65 0d 0a 20 20 20 20 2f 2f  o a Type..    //
e1f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e200: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
e210: 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62 54 79  e="typ">The DbTy
e220: 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 66 72  pe to convert fr
e230: 6f 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  om</param>..    
e240: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
e250: 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20 2e   closest-match .
e260: 4e 45 54 20 74 79 70 65 3c 2f 72 65 74 75 72 6e  NET type</return
e270: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
e280: 20 73 74 61 74 69 63 20 54 79 70 65 20 44 62 54   static Type DbT
e290: 79 70 65 54 6f 54 79 70 65 28 44 62 54 79 70 65  ypeToType(DbType
e2a0: 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20   typ)..    {..  
e2b0: 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79      return _dbty
e2c0: 70 65 54 6f 54 79 70 65 5b 28 69 6e 74 29 74 79  peToType[(int)ty
e2d0: 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  p];..    }....  
e2e0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
e2f0: 20 54 79 70 65 5b 5d 20 5f 64 62 74 79 70 65 54   Type[] _dbtypeT
e300: 6f 54 79 70 65 20 3d 20 7b 0d 0a 20 20 20 20 20  oType = {..     
e310: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c   typeof(string),
e320: 20 20 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67     // AnsiString
e330: 20 28 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (0)..      type
e340: 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f  of(byte[]),   //
e350: 20 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20   Binary (1)..   
e360: 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 29 2c     typeof(byte),
e370: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29       // Byte (2)
e380: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
e390: 6f 6f 6c 29 2c 20 20 20 20 20 2f 2f 20 42 6f 6f  ool),     // Boo
e3a0: 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20  lean (3)..      
e3b0: 74 79 70 65 6f 66 28 64 65 63 69 6d 61 6c 29 2c  typeof(decimal),
e3c0: 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34    // Currency (4
e3d0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e3e0: 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61  DateTime), // Da
e3f0: 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 74 79  te (5)..      ty
e400: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20  peof(DateTime), 
e410: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d  // DateTime (6).
e420: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 65  .      typeof(de
e430: 63 69 6d 61 6c 29 2c 20 20 2f 2f 20 44 65 63 69  cimal),  // Deci
e440: 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 74  mal (7)..      t
e450: 79 70 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20  ypeof(double),  
e460: 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a   // Double (8)..
e470: 20 20 20 20 20 20 74 79 70 65 6f 66 28 47 75 69        typeof(Gui
e480: 64 29 2c 20 20 20 20 20 2f 2f 20 47 75 69 64 20  d),     // Guid 
e490: 28 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (9)..      typeo
e4a0: 66 28 49 6e 74 31 36 29 2c 20 20 20 20 2f 2f 20  f(Int16),    // 
e4b0: 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20  Int16 (10)..    
e4c0: 20 20 74 79 70 65 6f 66 28 49 6e 74 33 32 29 2c    typeof(Int32),
e4d0: 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31      // Int32 (11
e4e0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e4f0: 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 6e  Int64),    // In
e500: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
e510: 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20  typeof(object), 
e520: 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29    // Object (13)
e530: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
e540: 62 79 74 65 29 2c 20 20 20 20 2f 2f 20 53 42 79  byte),    // SBy
e550: 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 74  te (14)..      t
e560: 79 70 65 6f 66 28 66 6c 6f 61 74 29 2c 20 20 20  ypeof(float),   
e570: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d   // Single (15).
e580: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
e590: 72 69 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72 69  ring),   // Stri
e5a0: 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 74  ng (16)..      t
e5b0: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c  ypeof(DateTime),
e5c0: 20 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20   // Time (17).. 
e5d0: 20 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74       typeof(UInt
e5e0: 31 36 29 2c 20 20 20 2f 2f 20 55 49 6e 74 31 36  16),   // UInt16
e5f0: 20 28 31 38 29 0d 0a 20 20 20 20 20 20 74 79 70   (18)..      typ
e600: 65 6f 66 28 55 49 6e 74 33 32 29 2c 20 20 20 2f  eof(UInt32),   /
e610: 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20  / UInt32 (19).. 
e620: 20 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74       typeof(UInt
e630: 36 34 29 2c 20 20 20 2f 2f 20 55 49 6e 74 36 34  64),   // UInt64
e640: 20 28 32 30 29 0d 0a 20 20 20 20 20 20 74 79 70   (20)..      typ
e650: 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f  eof(double),   /
e660: 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31  / VarNumeric (21
e670: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e680: 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 41 6e  string),   // An
e690: 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  siStringFixedLen
e6a0: 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20  gth (22)..      
e6b0: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
e6c0: 20 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64    // StringFixed
e6d0: 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20  Length (23)..   
e6e0: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
e6f0: 29 2c 20 20 20 2f 2f 20 3f 3f 20 28 32 34 29 0d  ),   // ?? (24).
e700: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
e710: 72 69 6e 67 29 2c 20 20 20 2f 2f 20 58 6d 6c 20  ring),   // Xml 
e720: 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a  (25)..    };....
e730: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e740: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61  >..    /// For a
e750: 20 67 69 76 65 6e 20 74 79 70 65 2c 20 72 65 74   given type, ret
e760: 75 72 6e 20 74 68 65 20 63 6c 6f 73 65 73 74 2d  urn the closest-
e770: 6d 61 74 63 68 20 53 51 4c 69 74 65 20 54 79 70  match SQLite Typ
e780: 65 41 66 66 69 6e 69 74 79 2c 20 77 68 69 63 68  eAffinity, which
e790: 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64   only understand
e7a0: 73 20 61 20 76 65 72 79 20 6c 69 6d 69 74 65 64  s a very limited
e7b0: 20 73 75 62 73 65 74 20 6f 66 20 74 79 70 65 73   subset of types
e7c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
e7d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
e7e0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
e7f0: 3e 54 68 65 20 74 79 70 65 20 74 6f 20 65 76 61  >The type to eva
e800: 6c 75 61 74 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20  luate</param>.. 
e810: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
e820: 54 68 65 20 53 51 4c 69 74 65 20 74 79 70 65 20  The SQLite type 
e830: 61 66 66 69 6e 69 74 79 20 66 6f 72 20 74 68 61  affinity for tha
e840: 74 20 74 79 70 65 2e 3c 2f 72 65 74 75 72 6e 73  t type.</returns
e850: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
e860: 73 74 61 74 69 63 20 54 79 70 65 41 66 66 69 6e  static TypeAffin
e870: 69 74 79 20 54 79 70 65 54 6f 41 66 66 69 6e 69  ity TypeToAffini
e880: 74 79 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20  ty(Type typ)..  
e890: 20 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43    {..      TypeC
e8a0: 6f 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65  ode tc = Type.Ge
e8b0: 74 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d  tTypeCode(typ);.
e8c0: 0a 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d  .      if (tc ==
e8d0: 20 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74   TypeCode.Object
e8e0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
e8f0: 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74      if (typ == t
e900: 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 20 7c 7c  ypeof(byte[]) ||
e910: 20 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47   typ == typeof(G
e920: 75 69 64 29 29 0d 0a 20 20 20 20 20 20 20 20 20  uid))..         
e930: 20 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69   return TypeAffi
e940: 6e 69 74 79 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20  nity.Blob;..    
e950: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
e960: 20 20 20 20 72 65 74 75 72 6e 20 54 79 70 65 41      return TypeA
e970: 66 66 69 6e 69 74 79 2e 54 65 78 74 3b 0d 0a 20  ffinity.Text;.. 
e980: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65       }..      re
e990: 74 75 72 6e 20 5f 74 79 70 65 63 6f 64 65 41 66  turn _typecodeAf
e9a0: 66 69 6e 69 74 69 65 73 5b 28 69 6e 74 29 74 63  finities[(int)tc
e9b0: 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ];..    }....   
e9c0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
e9d0: 54 79 70 65 41 66 66 69 6e 69 74 79 5b 5d 20 5f  TypeAffinity[] _
e9e0: 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74 69  typecodeAffiniti
e9f0: 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 54 79  es = {..      Ty
ea00: 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c  peAffinity.Null,
ea10: 20 20 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30       // Empty (0
ea20: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
ea30: 69 6e 69 74 79 2e 42 6c 6f 62 2c 20 20 20 20 20  inity.Blob,     
ea40: 2f 2f 20 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20  // Object (1).. 
ea50: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
ea60: 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 44  y.Null,     // D
ea70: 42 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20  BNull (2)..     
ea80: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
ea90: 74 36 34 2c 20 20 20 20 2f 2f 20 42 6f 6f 6c 65  t64,    // Boole
eaa0: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 54 79  an (3)..      Ty
eab0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
eac0: 2c 20 20 20 20 2f 2f 20 43 68 61 72 20 28 34 29  ,    // Char (4)
ead0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
eae0: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
eaf0: 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20 20  / SByte (5)..   
eb00: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
eb10: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42 79 74  Int64,    // Byt
eb20: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 54 79 70  e (6)..      Typ
eb30: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
eb40: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 29      // Int16 (7)
eb50: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
eb60: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
eb70: 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20  / UInt16 (8)..  
eb80: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
eb90: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e  .Int64,    // In
eba0: 74 33 32 20 28 39 29 0d 0a 20 20 20 20 20 20 54  t32 (9)..      T
ebb0: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
ebc0: 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20  4,    // UInt32 
ebd0: 28 31 30 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (10)..      Type
ebe0: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
ebf0: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29     // Int64 (11)
ec00: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
ec10: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
ec20: 2f 20 55 49 6e 74 36 34 20 28 31 32 29 0d 0a 20  / UInt64 (12).. 
ec30: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
ec40: 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 53  y.Double,   // S
ec50: 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20 20  ingle (13)..    
ec60: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44    TypeAffinity.D
ec70: 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62  ouble,   // Doub
ec80: 6c 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 54  le (14)..      T
ec90: 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62  ypeAffinity.Doub
eca0: 6c 65 2c 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c  le,   // Decimal
ecb0: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 54 79 70   (15)..      Typ
ecc0: 65 41 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69  eAffinity.DateTi
ecd0: 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20  me, // DateTime 
ece0: 28 31 36 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (16)..      Type
ecf0: 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20  Affinity.Null,  
ed00: 20 20 20 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20     // ?? (17).. 
ed10: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
ed20: 79 2e 54 65 78 74 20 20 20 20 20 20 2f 2f 20 53  y.Text      // S
ed30: 74 72 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20  tring (18)..    
ed40: 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  };....    /// <s
ed50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ed60: 20 42 75 69 6c 64 73 20 61 6e 64 20 72 65 74 75   Builds and retu
ed70: 72 6e 73 20 61 20 6d 61 70 20 63 6f 6e 74 61 69  rns a map contai
ed80: 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ning the databas
ed90: 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 0d 0a  e column types..
eda0: 20 20 20 20 2f 2f 2f 20 72 65 63 6f 67 6e 69 7a      /// recogniz
edb0: 65 64 20 62 79 20 74 68 69 73 20 70 72 6f 76 69  ed by this provi
edc0: 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  der...    /// </
edd0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
ede0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
edf0: 20 2f 2f 2f 20 41 20 6d 61 70 20 63 6f 6e 74 61   /// A map conta
ee00: 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ining the databa
ee10: 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 20  se column types 
ee20: 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68  recognized by th
ee30: 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f 76  is..    /// prov
ee40: 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ider...    /// <
ee50: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
ee60: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51  rivate static SQ
ee70: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 47 65  LiteDbTypeMap Ge
ee80: 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70  tSQLiteDbTypeMap
ee90: 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
eea0: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51     return new SQ
eeb0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 6e 65  LiteDbTypeMap(ne
eec0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
eed0: 70 70 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20  pping[] {..     
eee0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
eef0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ef00: 42 49 47 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  BIGINT", DbType.
ef10: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
ef30: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ef40: 69 6e 67 28 22 42 49 47 55 49 4e 54 22 2c 20 44  ing("BIGUINT", D
ef50: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61  bType.UInt64, fa
ef60: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ef70: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ef80: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 4e 41  ypeMapping("BINA
ef90: 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  RY", DbType.Bina
efa0: 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
efb0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
efc0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
efd0: 28 22 42 49 54 22 2c 20 44 62 54 79 70 65 2e 42  ("BIT", DbType.B
efe0: 6f 6f 6c 65 61 6e 2c 20 74 72 75 65 29 2c 0d 0a  oolean, true),..
eff0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f000: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f010: 69 6e 67 28 22 42 4c 4f 42 22 2c 20 44 62 54 79  ing("BLOB", DbTy
f020: 70 65 2e 42 69 6e 61 72 79 2c 20 74 72 75 65 29  pe.Binary, true)
f030: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f040: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f050: 61 70 70 69 6e 67 28 22 42 4f 4f 4c 22 2c 20 44  apping("BOOL", D
f060: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66  bType.Boolean, f
f070: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f080: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f090: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f  TypeMapping("BOO
f0a0: 4c 45 41 4e 22 2c 20 44 62 54 79 70 65 2e 42 6f  LEAN", DbType.Bo
f0b0: 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a  olean, false),..
f0c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f0d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f0e0: 69 6e 67 28 22 43 48 41 52 22 2c 20 44 62 54 79  ing("CHAR", DbTy
f0f0: 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69 78  pe.AnsiStringFix
f100: 65 64 4c 65 6e 67 74 68 2c 20 74 72 75 65 29 2c  edLength, true),
f110: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f120: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f130: 70 70 69 6e 67 28 22 43 4c 4f 42 22 2c 20 44 62  pping("CLOB", Db
f140: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
f150: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f160: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f170: 70 65 4d 61 70 70 69 6e 67 28 22 43 4f 55 4e 54  peMapping("COUNT
f180: 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  ER", DbType.Int6
f190: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
f1a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f1b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f1c0: 22 43 55 52 52 45 4e 43 59 22 2c 20 44 62 54 79  "CURRENCY", DbTy
f1d0: 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73  pe.Decimal, fals
f1e0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f1f0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f200: 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45 22 2c  eMapping("DATE",
f210: 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65   DbType.DateTime
f220: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f230: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f240: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f250: 44 41 54 45 54 49 4d 45 22 2c 20 44 62 54 79 70  DATETIME", DbTyp
f260: 65 2e 44 61 74 65 54 69 6d 65 2c 20 74 72 75 65  e.DateTime, true
f270: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f280: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f290: 4d 61 70 70 69 6e 67 28 22 44 45 43 49 4d 41 4c  Mapping("DECIMAL
f2a0: 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61  ", DbType.Decima
f2b0: 6c 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  l, true),..     
f2c0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f2d0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f2e0: 44 4f 55 42 4c 45 22 2c 20 44 62 54 79 70 65 2e  DOUBLE", DbType.
f2f0: 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d  Double, false),.
f300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f310: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f320: 70 69 6e 67 28 22 46 4c 4f 41 54 22 2c 20 44 62  ping("FLOAT", Db
f330: 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c  Type.Double, fal
f340: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f350: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f360: 70 65 4d 61 70 70 69 6e 67 28 22 47 45 4e 45 52  peMapping("GENER
f370: 41 4c 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  AL", DbType.Bina
f380: 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
f390: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
f3a0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
f3b0: 28 22 47 55 49 44 22 2c 20 44 62 54 79 70 65 2e  ("GUID", DbType.
f3c0: 47 75 69 64 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Guid, false),.. 
f3d0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f3e0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f3f0: 6e 67 28 22 49 44 45 4e 54 49 54 59 22 2c 20 44  ng("IDENTITY", D
f400: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
f410: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f420: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f430: 70 65 4d 61 70 70 69 6e 67 28 22 49 4d 41 47 45  peMapping("IMAGE
f440: 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
f450: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f460: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f470: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f480: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  INT", DbType.Int
f490: 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  32, true),..    
f4a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f4b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f4c0: 22 49 4e 54 38 22 2c 20 44 62 54 79 70 65 2e 53  "INT8", DbType.S
f4d0: 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Byte, false),.. 
f4e0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f4f0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f500: 6e 67 28 22 49 4e 54 31 36 22 2c 20 44 62 54 79  ng("INT16", DbTy
f510: 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65 29  pe.Int16, false)
f520: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f530: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f540: 61 70 70 69 6e 67 28 22 49 4e 54 33 32 22 2c 20  apping("INT32", 
f550: 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61  DbType.Int32, fa
f560: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f570: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f580: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 36  ypeMapping("INT6
f590: 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  4", DbType.Int64
f5a0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f5b0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f5c0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f5d0: 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70 65  INTEGER", DbType
f5e0: 2e 49 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a  .Int64, true),..
f5f0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f600: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f610: 69 6e 67 28 22 49 4e 54 45 47 45 52 38 22 2c 20  ing("INTEGER8", 
f620: 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 66 61  DbType.SByte, fa
f630: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f640: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f650: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
f660: 47 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e 49  GER16", DbType.I
f670: 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt16, false),.. 
f680: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f690: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f6a0: 6e 67 28 22 49 4e 54 45 47 45 52 33 32 22 2c 20  ng("INTEGER32", 
f6b0: 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61  DbType.Int32, fa
f6c0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f6d0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f6e0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
f6f0: 47 45 52 36 34 22 2c 20 44 62 54 79 70 65 2e 49  GER64", DbType.I
f700: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
f710: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f720: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f730: 6e 67 28 22 4c 4f 47 49 43 41 4c 22 2c 20 44 62  ng("LOGICAL", Db
f740: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61  Type.Boolean, fa
f750: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f760: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f770: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47  ypeMapping("LONG
f780: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
f790: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f7a0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f7b0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
f7c0: 4f 4e 47 43 48 41 52 22 2c 20 44 62 54 79 70 65  ONGCHAR", DbType
f7d0: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
f7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f7f0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f800: 70 70 69 6e 67 28 22 4c 4f 4e 47 54 45 58 54 22  pping("LONGTEXT"
f810: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f820: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f830: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f840: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
f850: 4f 4e 47 56 41 52 43 48 41 52 22 2c 20 44 62 54  ONGVARCHAR", DbT
f860: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
f870: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f880: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f890: 65 4d 61 70 70 69 6e 67 28 22 4d 45 4d 4f 22 2c  eMapping("MEMO",
f8a0: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
f8b0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f8c0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f8d0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4d 4f  bTypeMapping("MO
f8e0: 4e 45 59 22 2c 20 44 62 54 79 70 65 2e 44 65 63  NEY", DbType.Dec
f8f0: 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  imal, false),.. 
f900: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f910: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f920: 6e 67 28 22 4e 43 48 41 52 22 2c 20 44 62 54 79  ng("NCHAR", DbTy
f930: 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c 65  pe.StringFixedLe
f940: 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20  ngth, true),..  
f950: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f960: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f970: 67 28 22 4e 4f 54 45 22 2c 20 44 62 54 79 70 65  g("NOTE", DbType
f980: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
f990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f9a0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f9b0: 70 70 69 6e 67 28 22 4e 54 45 58 54 22 2c 20 44  pping("NTEXT", D
f9c0: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
f9d0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f9e0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f9f0: 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 42  ypeMapping("NUMB
fa00: 45 52 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  ER", DbType.Deci
fa10: 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  mal, false),..  
fa20: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fa30: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fa40: 67 28 22 4e 55 4d 45 52 49 43 22 2c 20 44 62 54  g("NUMERIC", DbT
fa50: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c  ype.Decimal, fal
fa60: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fa70: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fa80: 70 65 4d 61 70 70 69 6e 67 28 22 4e 56 41 52 43  peMapping("NVARC
fa90: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72  HAR", DbType.Str
faa0: 69 6e 67 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  ing, true),..   
fab0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fac0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fad0: 28 22 4f 4c 45 4f 42 4a 45 43 54 22 2c 20 44 62  ("OLEOBJECT", Db
fae0: 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c  Type.Binary, fal
faf0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fb00: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fb10: 70 65 4d 61 70 70 69 6e 67 28 22 52 41 57 22 2c  peMapping("RAW",
fb20: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
fb30: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fb40: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fb50: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 52 45  bTypeMapping("RE
fb60: 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62  AL", DbType.Doub
fb70: 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  le, true),..    
fb80: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fb90: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fba0: 22 53 49 4e 47 4c 45 22 2c 20 44 62 54 79 70 65  "SINGLE", DbType
fbb0: 2e 53 69 6e 67 6c 65 2c 20 74 72 75 65 29 2c 0d  .Single, true),.
fbc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fbd0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fbe0: 70 69 6e 67 28 22 53 4d 41 4c 4c 44 41 54 45 22  ping("SMALLDATE"
fbf0: 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d  , DbType.DateTim
fc00: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
fc10: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fc20: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fc30: 22 53 4d 41 4c 4c 49 4e 54 22 2c 20 44 62 54 79  "SMALLINT", DbTy
fc40: 70 65 2e 49 6e 74 31 36 2c 20 74 72 75 65 29 2c  pe.Int16, true),
fc50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fc60: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fc70: 70 70 69 6e 67 28 22 53 4d 41 4c 4c 55 49 4e 54  pping("SMALLUINT
fc80: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36  ", DbType.UInt16
fc90: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
fca0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fcb0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53  DbTypeMapping("S
fcc0: 54 52 49 4e 47 22 2c 20 44 62 54 79 70 65 2e 53  TRING", DbType.S
fcd0: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fcf0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fd00: 69 6e 67 28 22 54 45 58 54 22 2c 20 44 62 54 79  ing("TEXT", DbTy
fd10: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
fd20: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fd30: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fd40: 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 22 2c 20  Mapping("TIME", 
fd50: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
fd60: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fd70: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fd80: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54  DbTypeMapping("T
fd90: 49 4d 45 53 54 41 4d 50 22 2c 20 44 62 54 79 70  IMESTAMP", DbTyp
fda0: 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73  e.DateTime, fals
fdb0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fdc0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fdd0: 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 49 4e  eMapping("TINYIN
fde0: 54 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c  T", DbType.Byte,
fdf0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
fe00: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fe10: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49  bTypeMapping("TI
fe20: 4e 59 53 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  NYSINT", DbType.
fe30: 53 42 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20  SByte, true),.. 
fe40: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fe50: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fe60: 6e 67 28 22 55 49 4e 54 22 2c 20 44 62 54 79 70  ng("UINT", DbTyp
fe70: 65 2e 55 49 6e 74 33 32 2c 20 74 72 75 65 29 2c  e.UInt32, true),
fe80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fe90: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fea0: 70 70 69 6e 67 28 22 55 49 4e 54 38 22 2c 20 44  pping("UINT8", D
feb0: 62 54 79 70 65 2e 42 79 74 65 2c 20 66 61 6c 73  bType.Byte, fals
fec0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fed0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fee0: 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 31 36  eMapping("UINT16
fef0: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36  ", DbType.UInt16
ff00: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
ff10: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ff20: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ff30: 55 49 4e 54 33 32 22 2c 20 44 62 54 79 70 65 2e  UINT32", DbType.
ff40: 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d  UInt32, false),.
ff50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ff60: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ff70: 70 69 6e 67 28 22 55 49 4e 54 36 34 22 2c 20 44  ping("UINT64", D
ff80: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61  bType.UInt64, fa
ff90: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ffa0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ffb0: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4c 4f 4e  ypeMapping("ULON
ffc0: 47 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36  G", DbType.UInt6
ffd0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
ffe0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fff0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10000 22 55 4e 49 51 55 45 49 44 45 4e 54 49 46 49 45  "UNIQUEIDENTIFIE
10010 52 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c  R", DbType.Guid,
10020 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
10030 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10040 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e  bTypeMapping("UN
10050 53 49 47 4e 45 44 49 4e 54 45 47 45 52 22 2c 20  SIGNEDINTEGER", 
10060 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 74  DbType.UInt64, 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 55 4e 53 49  ypeMapping("UNSI
100a0 47 4e 45 44 49 4e 54 45 47 45 52 38 22 2c 20 44  GNEDINTEGER8", D
100b0 62 54 79 70 65 2e 42 79 74 65 2c 20 66 61 6c 73  bType.Byte, fals
100c0 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
100d0 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
100e0 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
100f0 45 44 49 4e 54 45 47 45 52 31 36 22 2c 20 44 62  EDINTEGER16", Db
10100 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c  Type.UInt16, fal
10110 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10120 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10130 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47  peMapping("UNSIG
10140 4e 45 44 49 4e 54 45 47 45 52 33 32 22 2c 20 44  NEDINTEGER32", D
10150 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 66 61  bType.UInt32, fa
10160 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10170 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10180 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49  ypeMapping("UNSI
10190 47 4e 45 44 49 4e 54 45 47 45 52 36 34 22 2c 20  GNEDINTEGER64", 
101a0 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66  DbType.UInt64, f
101b0 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
101c0 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
101d0 54 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52  TypeMapping("VAR
101e0 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65 2e  BINARY", DbType.
101f0 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
10200 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10210 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10220 70 69 6e 67 28 22 56 41 52 43 48 41 52 22 2c 20  ping("VARCHAR", 
10230 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
10240 67 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  g, true),..     
10250 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10260 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10270 56 41 52 43 48 41 52 32 22 2c 20 44 62 54 79 70  VARCHAR2", DbTyp
10280 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 66 61  e.AnsiString, fa
10290 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
102a0 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
102b0 79 70 65 4d 61 70 70 69 6e 67 28 22 59 45 53 4e  ypeMapping("YESN
102c0 4f 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  O", DbType.Boole
102d0 61 6e 2c 20 66 61 6c 73 65 29 0d 0a 20 20 20 20  an, false)..    
102e0 20 20 20 20 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a      });..    }..
102f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
10300 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
10310 65 72 6d 69 6e 65 73 20 69 66 20 61 20 64 61 74  ermines if a dat
10320 61 62 61 73 65 20 74 79 70 65 20 69 73 20 63 6f  abase type is co
10330 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 61  nsidered to be a
10340 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
10350 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10360 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
10370 65 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f  e="type">..    /
10380 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
10390 74 79 70 65 20 74 6f 20 63 68 65 63 6b 2e 0d 0a  type to check...
103a0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
103b0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
103c0 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e  ns>..    /// Non
103d0 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 64 61 74  -zero if the dat
103e0 61 62 61 73 65 20 74 79 70 65 20 69 73 20 63 6f  abase type is co
103f0 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 61  nsidered to be a
10400 20 73 74 72 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20   string, zero.. 
10410 20 20 20 2f 2f 2f 20 6f 74 68 65 72 77 69 73 65     /// otherwise
10420 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
10430 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
10440 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
10450 49 73 53 74 72 69 6e 67 44 62 54 79 70 65 28 0d  IsStringDbType(.
10460 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20  .        DbType 
10470 74 79 70 65 0d 0a 20 20 20 20 20 20 20 20 29 0d  type..        ).
10480 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
10490 73 77 69 74 63 68 20 28 74 79 70 65 29 0d 0a 20  switch (type).. 
104a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
104b0 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79 70        case DbTyp
104c0 65 2e 41 6e 73 69 53 74 72 69 6e 67 3a 0d 0a 20  e.AnsiString:.. 
104d0 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
104e0 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3a 0d 0a  DbType.String:..
104f0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
10500 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69   DbType.AnsiStri
10510 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 3a 0d 0a  ngFixedLength:..
10520 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
10530 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 46 69   DbType.StringFi
10540 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20  xedLength:..    
10550 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10560 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
10570 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
10580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10590 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
105a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
105b0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
105c0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
105d0 74 65 72 6d 69 6e 65 73 20 61 6e 64 20 72 65 74  termines and ret
105e0 75 72 6e 73 20 74 68 65 20 72 75 6e 74 69 6d 65  urns the runtime
105f0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
10600 65 74 74 69 6e 67 20 73 74 72 69 6e 67 20 74 68  etting string th
10610 61 74 0d 0a 20 20 20 20 2f 2f 2f 20 73 68 6f 75  at..    /// shou
10620 6c 64 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c  ld be used in pl
10630 61 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  ace of the speci
10640 66 69 65 64 20 6f 62 6a 65 63 74 20 76 61 6c 75  fied object valu
10650 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
10660 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10670 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
10680 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
10690 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 74  e object value t
106a0 6f 20 63 6f 6e 76 65 72 74 20 74 6f 20 61 20 73  o convert to a s
106b0 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tring...    /// 
106c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
106d0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
106e0 20 2f 2f 2f 20 45 69 74 68 65 72 20 74 68 65 20   /// Either the 
106f0 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 69 6e  string to use in
10700 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f 62   place of the ob
10710 6a 65 63 74 20 76 61 6c 75 65 20 2d 4f 52 2d 20  ject value -OR- 
10720 6e 75 6c 6c 20 69 66 20 69 74 0d 0a 20 20 20 20  null if it..    
10730 2f 2f 2f 20 63 61 6e 6e 6f 74 20 62 65 20 64 65  /// cannot be de
10740 74 65 72 6d 69 6e 65 64 2e 0d 0a 20 20 20 20 2f  termined...    /
10750 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
10760 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10770 63 20 73 74 72 69 6e 67 20 53 65 74 74 69 6e 67  c string Setting
10780 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 0d 0a  ValueToString(..
10790 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
107a0 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 29 0d  alue..        ).
107b0 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
107c0 69 66 20 28 76 61 6c 75 65 20 69 73 20 73 74 72  if (value is str
107d0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
107e0 20 20 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67    return (string
107f0 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  )value;....     
10800 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
10810 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
10820 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
10830 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20  ToString();.... 
10840 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
10850 6c 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ll;..    }....  
10860 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10870 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10880 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
10890 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70  <see cref="DbTyp
108a0 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62  e" /> value to b
108b0 65 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20  e used when a.. 
108c0 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65     /// per-conne
108d0 63 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e  ction value is n
108e0 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
108f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10900 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
10910 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
10920 6f 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  on">..    /// Th
10930 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  e connection con
10940 74 65 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61  text for type ma
10950 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d  ppings, if any..
10960 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
10970 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
10980 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
10990 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63  e default <see c
109a0 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
109b0 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
109c0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
109d0 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
109e0 74 61 74 69 63 20 44 62 54 79 70 65 20 47 65 74  tatic DbType Get
109f0 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 0d 0a  DefaultDbType(..
10a00 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
10a10 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
10a20 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ion..        )..
10a30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53      {..        S
10a40 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
10a50 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28 63 6f  lags flags = (co
10a60 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c  nnection != null
10a70 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
10a80 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67   connection.Flag
10a90 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s : SQLiteConnec
10aa0 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d  tionFlags.None;.
10ab0 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
10ac0 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f  flags & SQLiteCo
10ad0 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
10ae0 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29  ConvertSettings)
10af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10b00 20 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65    == SQLiteConne
10b10 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e  ctionFlags.NoCon
10b20 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a 20  vertSettings).. 
10b30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10b40 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c        return Fal
10b50 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79  lbackDefaultDbTy
10b60 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  pe;..        }..
10b70 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 66  ..        bool f
10b80 6f 75 6e 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20  ound = false;.. 
10b90 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
10ba0 6d 65 20 3d 20 22 55 73 65 5f 53 51 4c 69 74 65  me = "Use_SQLite
10bb0 43 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c 74 44  Convert_DefaultD
10bc0 62 54 79 70 65 22 3b 0d 0a 20 20 20 20 20 20 20  bType";..       
10bd0 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20   object value = 
10be0 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 73  null;..        s
10bf0 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 3d  tring @default =
10c00 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
10c10 20 20 69 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f    if ((connectio
10c20 6e 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20  n == null) ||.. 
10c30 20 20 20 20 20 20 20 20 20 20 20 21 63 6f 6e 6e             !conn
10c40 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 43 61 63  ection.TryGetCac
10c50 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c  hedSetting(name,
10c60 20 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76   @default, out v
10c70 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
10c80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76  {..            v
10c90 61 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74  alue = UnsafeNat
10ca0 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65  iveMethods.GetSe
10cb0 74 74 69 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c  ttingValue(name,
10cc0 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20   @default);.... 
10cd0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
10ce0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
10cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
10d00 61 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44  alue = FallbackD
10d10 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20  efaultDbType;.. 
10d20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10d30 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
10d40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  {..            f
10d50 6f 75 6e 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  ound = true;..  
10d60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10d70 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
10d80 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
10d90 66 20 28 21 28 76 61 6c 75 65 20 69 73 20 44 62  f (!(value is Db
10da0 54 79 70 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Type))..        
10db0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10dc0 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 53         value = S
10dd0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e  QLiteConnection.
10de0 54 72 79 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20  TryParseEnum(.. 
10df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e00 20 20 20 74 79 70 65 6f 66 28 44 62 54 79 70 65     typeof(DbType
10e10 29 2c 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54  ), SettingValueT
10e20 6f 53 74 72 69 6e 67 28 76 61 6c 75 65 29 2c 20  oString(value), 
10e30 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
10e40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 28            if (!(
10e50 76 61 6c 75 65 20 69 73 20 44 62 54 79 70 65 29  value is DbType)
10e60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10e70 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46         value = F
10e80 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62  allbackDefaultDb
10e90 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
10ea0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
10eb0 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79      return (DbTy
10ec0 70 65 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  pe)value;..     
10ed0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69     }..        fi
10ee0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 7b  nally..        {
10ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
10f00 20 28 21 66 6f 75 6e 64 20 26 26 20 28 63 6f 6e   (!found && (con
10f10 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
10f20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
10f30 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65     connection.Se
10f40 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e  tCachedSetting(n
10f50 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
10f60 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
10f70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
10f80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
10f90 76 65 72 74 73 20 74 68 65 20 6f 62 6a 65 63 74  verts the object
10fa0 20 76 61 6c 75 65 2c 20 77 68 69 63 68 20 69 73   value, which is
10fb0 20 61 73 73 75 6d 65 64 20 74 6f 20 68 61 76 65   assumed to have
10fc0 20 6f 72 69 67 69 6e 61 74 65 64 0d 0a 20 20 20   originated..   
10fd0 20 2f 2f 2f 20 66 72 6f 6d 20 61 20 3c 73 65 65   /// from a <see
10fe0 20 63 72 65 66 3d 22 44 61 74 61 52 6f 77 22 20   cref="DataRow" 
10ff0 2f 3e 2c 20 74 6f 20 61 20 73 74 72 69 6e 67 20  />, to a string 
11000 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
11010 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11020 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
11030 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  "value">..    //
11040 2f 20 54 68 65 20 76 61 6c 75 65 20 74 6f 20 62  / The value to b
11050 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61  e converted to a
11060 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
11070 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11080 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
11090 20 20 20 2f 2f 2f 20 41 20 6e 75 6c 6c 20 76 61     /// A null va
110a0 6c 75 65 20 77 69 6c 6c 20 62 65 20 72 65 74 75  lue will be retu
110b0 72 6e 65 64 20 69 66 20 74 68 65 20 6f 72 69 67  rned if the orig
110c0 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 6e 75  inal value is nu
110d0 6c 6c 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f  ll -OR-..    ///
110e0 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 61   the original va
110f0 6c 75 65 20 69 73 20 3c 73 65 65 20 63 72 65 66  lue is <see cref
11100 3d 22 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 22 20  ="DBNull.Value" 
11110 2f 3e 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 0d  />.  Otherwise,.
11120 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 72 69  .    /// the ori
11130 67 69 6e 61 6c 20 76 61 6c 75 65 20 77 69 6c 6c  ginal value will
11140 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f   be converted to
11150 20 61 20 73 74 72 69 6e 67 2c 20 75 73 69 6e 67   a string, using
11160 20 69 74 73 0d 0a 20 20 20 20 2f 2f 2f 20 28 70   its..    /// (p
11170 6f 73 73 69 62 6c 79 20 6f 76 65 72 72 69 64 64  ossibly overridd
11180 65 6e 29 20 3c 73 65 65 20 63 72 65 66 3d 22 4f  en) <see cref="O
11190 62 6a 65 63 74 2e 54 6f 53 74 72 69 6e 67 22 20  bject.ToString" 
111a0 2f 3e 20 6d 65 74 68 6f 64 20 61 6e 64 0d 0a 20  /> method and.. 
111b0 20 20 20 2f 2f 2f 20 74 68 65 6e 20 72 65 74 75     /// then retu
111c0 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rned...    /// <
111d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
111e0 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
111f0 69 6e 67 20 47 65 74 53 74 72 69 6e 67 4f 72 4e  ing GetStringOrN
11200 75 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 6f 62  ull(..        ob
11210 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20 20  ject value..    
11220 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
11230 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
11240 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
11250 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
11260 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
11270 20 28 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e   (value is strin
11280 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
11290 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29 76  return (string)v
112a0 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
112b0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 44 42   if (value == DB
112c0 4e 75 6c 6c 2e 56 61 6c 75 65 29 0d 0a 20 20 20  Null.Value)..   
112d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
112e0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
112f0 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f   return value.To
11300 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 7d  String();..    }
11310 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
11320 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
11330 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
11340 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75   specified textu
11350 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73  al value appears
11360 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f   to be a..    //
11370 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e  / <see cref="DBN
11380 75 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ull" /> value...
11390 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
113a0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
113b0 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d  am name="text">.
113c0 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78  .    /// The tex
113d0 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e  tual value to in
113e0 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  spect...    /// 
113f0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
11400 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
11410 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
11420 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20   the text looks 
11430 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66  like a <see cref
11440 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20 76 61 6c  ="DBNull" /> val
11450 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72  ue,..    /// zer
11460 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
11470 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
11480 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
11490 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73  tatic bool Looks
114a0 4c 69 6b 65 4e 75 6c 6c 28 0d 0a 20 20 20 20 20  LikeNull(..     
114b0 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a     string text..
114c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
114d0 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
114e0 20 28 74 65 78 74 20 3d 3d 20 6e 75 6c 6c 29 3b   (text == null);
114f0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11500 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11510 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
11520 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
11530 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  d textual value 
11540 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 6e  appears to be an
11550 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
11560 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76  ref="Int64" /> v
11570 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
11580 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
11590 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
115a0 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  text">..    /// 
115b0 54 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75  The textual valu
115c0 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20  e to inspect... 
115d0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
115e0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
115f0 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  s>..    /// Non-
11600 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65 78 74  zero if the text
11610 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 6e 20 3c   looks like an <
11620 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
11630 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20   /> value,..    
11640 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  /// zero otherwi
11650 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
11660 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
11670 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
11680 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 49 6e 74 36 34  l LooksLikeInt64
11690 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
116a0 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20  g text..        
116b0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
116c0 20 20 6c 6f 6e 67 20 6c 6f 6e 67 56 61 6c 75 65    long longValue
116d0 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
116e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
116f0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ORK..        if 
11700 28 21 6c 6f 6e 67 2e 54 72 79 50 61 72 73 65 28  (!long.TryParse(
11710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11720 20 20 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74    text, NumberSt
11730 79 6c 65 73 2e 49 6e 74 65 67 65 72 2c 20 43 75  yles.Integer, Cu
11740 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
11750 61 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  antCulture,..   
11760 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74               out
11770 20 6c 6f 6e 67 56 61 6c 75 65 29 29 0d 0a 20 20   longValue))..  
11780 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11790 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
117a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
117b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74 72  else..        tr
117c0 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
117d0 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 56 61            longVa
117e0 6c 75 65 20 3d 20 6c 6f 6e 67 2e 50 61 72 73 65  lue = long.Parse
117f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
11800 20 20 20 74 65 78 74 2c 20 4e 75 6d 62 65 72 53     text, NumberS
11810 74 79 6c 65 73 2e 49 6e 74 65 67 65 72 2c 20 43  tyles.Integer, C
11820 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
11830 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20  iantCulture);.. 
11840 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11850 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
11860 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11870 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
11880 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
11890 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
118a0 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73  rn String.Equals
118b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  (..            l
118c0 6f 6e 67 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ongValue.ToStrin
118d0 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  g(CultureInfo.In
118e0 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c  variantCulture),
118f0 20 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20   text,..        
11900 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
11910 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 3b 0d 0a  ison.Ordinal);..
11920 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
11930 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11940 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
11950 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
11960 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61 70  textual value ap
11970 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d 0a 20  pears to be a.. 
11980 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
11990 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c  ="Double" /> val
119a0 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ue...    /// </s
119b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
119c0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65   <param name="te
119d0 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  xt">..    /// Th
119e0 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  e textual value 
119f0 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20  to inspect...   
11a00 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11a10 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
11a20 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
11a30 72 6f 20 69 66 20 74 68 65 20 74 65 78 74 20 6c  ro if the text l
11a40 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73 65 65  ooks like a <see
11a50 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
11a60 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f  > value,..    //
11a70 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65  / zero otherwise
11a80 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
11a90 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
11aa0 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
11ab0 4c 6f 6f 6b 73 4c 69 6b 65 44 6f 75 62 6c 65 28  LooksLikeDouble(
11ac0 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
11ad0 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29   text..        )
11ae0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
11af0 20 64 6f 75 62 6c 65 20 64 6f 75 62 6c 65 56 61   double doubleVa
11b00 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  lue;....#if !PLA
11b10 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
11b20 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
11b30 69 66 20 28 21 64 6f 75 62 6c 65 2e 54 72 79 50  if (!double.TryP
11b40 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  arse(..         
11b50 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e 75 6d         text, Num
11b60 62 65 72 53 74 79 6c 65 73 2e 46 6c 6f 61 74 20  berStyles.Float 
11b70 7c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 41  | NumberStyles.A
11b80 6c 6c 6f 77 54 68 6f 75 73 61 6e 64 73 2c 0d 0a  llowThousands,..
11b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ba0 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
11bb0 72 69 61 6e 74 43 75 6c 74 75 72 65 2c 20 6f 75  riantCulture, ou
11bc0 74 20 64 6f 75 62 6c 65 56 61 6c 75 65 29 29 0d  t doubleValue)).
11bd0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
11be0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
11bf0 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
11c00 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
11c10 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d   try..        {.
11c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75  .            dou
11c30 62 6c 65 56 61 6c 75 65 20 3d 20 64 6f 75 62 6c  bleValue = doubl
11c40 65 2e 50 61 72 73 65 28 74 65 78 74 2c 20 43 75  e.Parse(text, Cu
11c50 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
11c60 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20  antCulture);..  
11c70 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
11c80 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
11c90 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
11ca0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
11cb0 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
11cc0 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
11cd0 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  n String.Equals(
11ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f  ..            do
11cf0 75 62 6c 65 56 61 6c 75 65 2e 54 6f 53 74 72 69  ubleValue.ToStri
11d00 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
11d10 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
11d20 2c 20 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20  , text,..       
11d30 20 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61       StringCompa
11d40 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 3b 0d  rison.Ordinal);.
11d50 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
11d60 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11d70 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
11d80 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  if the specified
11d90 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61   textual value a
11da0 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d 0a  ppears to be a..
11db0 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
11dc0 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
11dd0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
11de0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11df0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
11e00 22 63 6f 6e 76 65 72 74 22 3e 0d 0a 20 20 20 20  "convert">..    
11e10 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
11e20 66 3d 22 53 51 4c 69 74 65 43 6f 6e 76 65 72 74  f="SQLiteConvert
11e30 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
11e40 61 6e 63 65 20 63 6f 6e 66 69 67 75 72 65 64 20  ance configured 
11e50 77 69 74 68 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  with..    /// th
11e60 65 20 63 68 6f 73 65 6e 20 3c 73 65 65 20 63 72  e chosen <see cr
11e70 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
11e80 20 66 6f 72 6d 61 74 2e 0d 0a 20 20 20 20 2f 2f   format...    //
11e90 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
11ea0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
11eb0 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  "text">..    ///
11ec0 20 54 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c   The textual val
11ed0 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a  ue to inspect...
11ee0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
11ef0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
11f00 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e  ns>..    /// Non
11f10 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65 78  -zero if the tex
11f20 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c  t looks like a <
11f30 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
11f40 6d 65 22 20 2f 3e 20 69 6e 20 74 68 65 0d 0a 20  me" /> in the.. 
11f50 20 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65     /// configure
11f60 64 20 66 6f 72 6d 61 74 2c 20 7a 65 72 6f 20 6f  d format, zero o
11f70 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f  therwise...    /
11f80 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
11f90 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
11fa0 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b  ic bool LooksLik
11fb0 65 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20  eDateTime(..    
11fc0 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 76 65 72      SQLiteConver
11fd0 74 20 63 6f 6e 76 65 72 74 2c 0d 0a 20 20 20 20  t convert,..    
11fe0 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d      string text.
11ff0 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
12000 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63  {..        if (c
12010 6f 6e 76 65 72 74 20 3d 3d 20 6e 75 6c 6c 29 0d  onvert == null).
12020 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
12030 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
12040 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
12050 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12060 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
12070 69 6d 65 56 61 6c 75 65 20 3d 20 63 6f 6e 76 65  imeValue = conve
12080 72 74 2e 54 6f 44 61 74 65 54 69 6d 65 28 74 65  rt.ToDateTime(te
12090 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
120a0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 45      if (String.E
120b0 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
120c0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 76              conv
120d0 65 72 74 2e 54 6f 53 74 72 69 6e 67 28 64 61 74  ert.ToString(dat
120e0 65 54 69 6d 65 56 61 6c 75 65 29 2c 0d 0a 20 20  eTimeValue),..  
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12100 20 20 74 65 78 74 2c 20 53 74 72 69 6e 67 43 6f    text, StringCo
12110 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
12120 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12130 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12140 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
12150 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
12160 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
12170 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
12180 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12190 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
121a0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
121b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
121c0 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  se;..    }....  
121d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
121e0 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67  .    /// For a g
121f0 69 76 65 6e 20 74 65 78 74 75 61 6c 20 64 61 74  iven textual dat
12200 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 2c  abase type name,
12210 20 72 65 74 75 72 6e 20 74 68 65 20 22 63 6c 6f   return the "clo
12220 73 65 73 74 2d 6d 61 74 63 68 22 20 64 61 74 61  sest-match" data
12230 62 61 73 65 20 74 79 70 65 2e 0d 0a 20 20 20 20  base type...    
12240 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20  /// This method 
12250 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67  is called during
12260 20 71 75 65 72 79 20 72 65 73 75 6c 74 20 70 72   query result pr
12270 6f 63 65 73 73 69 6e 67 3b 20 74 68 65 72 65 66  ocessing; theref
12280 6f 72 65 2c 20 69 74 73 20 70 65 72 66 6f 72 6d  ore, its perform
12290 61 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 73  ance..    /// is
122a0 20 63 72 69 74 69 63 61 6c 2e 0d 0a 20 20 20 20   critical...    
122b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
122c0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
122d0 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
122e0 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  >The connection 
122f0 63 6f 6e 74 65 78 74 20 66 6f 72 20 63 75 73 74  context for cust
12300 6f 6d 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73  om type mappings
12310 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d  , if any.</param
12320 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
12330 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65  m name="typeName
12340 22 3e 54 68 65 20 74 65 78 74 75 61 6c 20 6e 61  ">The textual na
12350 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  me of the databa
12360 73 65 20 74 79 70 65 20 74 6f 20 6d 61 74 63 68  se type to match
12370 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
12380 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
12390 66 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67 73  flags">The flags
123a0 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
123b0 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e   the parent conn
123c0 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f  ection object.</
123d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
123e0 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 2e 4e 45  <returns>The .NE
123f0 54 20 44 42 54 79 70 65 20 74 68 65 20 74 65 78  T DBType the tex
12400 74 20 65 76 61 6c 75 61 74 65 73 20 74 6f 2e 3c  t evaluates to.<
12410 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
12420 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44  nternal static D
12430 62 54 79 70 65 20 54 79 70 65 4e 61 6d 65 54 6f  bType TypeNameTo
12440 44 62 54 79 70 65 28 0d 0a 20 20 20 20 20 20 20  DbType(..       
12450 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
12460 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
12470 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79         string ty
12480 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  peName,..       
12490 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
124a0 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
124b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
124c0 20 20 20 20 20 20 20 20 44 62 54 79 70 65 3f 20          DbType? 
124d0 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  defaultDbType = 
124e0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
124f0 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20   if (connection 
12500 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
12510 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12520 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e 65 63   flags |= connec
12530 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20  tion.Flags;.... 
12540 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
12550 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f  flags & SQLiteCo
12560 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73  nnectionFlags.Us
12570 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73  eConnectionTypes
12580 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ) == SQLiteConne
12590 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f  ctionFlags.UseCo
125a0 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 0d 0a  nnectionTypes)..
125b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
125c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
125d0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 63  QLiteDbTypeMap c
125e0 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
125f0 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  es = connection.
12600 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20  _typeNames;.... 
12610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
12620 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  f (connectionTyp
12630 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d  eNames != null).
12640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12650 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12660 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
12670 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Name != null).. 
12680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12690 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
126a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
126b0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
126c0 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  g value;....    
126d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126e0 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
126f0 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47  onTypeNames.TryG
12700 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65  etValue(typeName
12710 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
12720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12730 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12750 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
12760 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20  ue.dataType;..  
12770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12780 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127a0 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
127c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
127e0 74 20 69 6e 64 65 78 20 3d 20 74 79 70 65 4e 61  t index = typeNa
127f0 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27 29 3b  me.IndexOf('(');
12800 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12820 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20  if ((index > 0) 
12830 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12850 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79      connectionTy
12860 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61  peNames.TryGetVa
12870 6c 75 65 28 74 79 70 65 4e 61 6d 65 2e 53 75 62  lue(typeName.Sub
12880 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29  string(0, index)
12890 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20  .TrimEnd(), out 
128a0 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
128b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
128d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
128e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
128f0 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a  alue.dataType;..
12900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12910 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
12920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12930 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
12940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12960 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12970 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
12980 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
12990 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68   // NOTE: Use th
129a0 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  e default databa
129b0 73 65 20 74 79 70 65 20 66 6f 72 20 74 68 65 20  se type for the 
129c0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
129d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
129e0 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
129f0 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e 65 63 74  DbType = connect
12a00 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54 79 70  ion.DefaultDbTyp
12a10 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
12a20 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c  .        if ((fl
12a30 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e  ags & SQLiteConn
12a40 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c  ectionFlags.NoGl
12a50 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d 20 53 51  obalTypes) == SQ
12a60 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
12a70 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65  ags.NoGlobalType
12a80 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  s)..        {.. 
12a90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
12aa0 65 66 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20  efaultDbType != 
12ab0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12ac0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44         return (D
12ad0 62 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54  bType)defaultDbT
12ae0 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ype;....        
12af0 20 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70      defaultDbTyp
12b00 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62  e = GetDefaultDb
12b10 54 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29  Type(connection)
12b20 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f  ;....#if !NET_CO
12b30 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43  MPACT_20 && TRAC
12b40 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20  E_WARNING..     
12b50 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 44 62         DefaultDb
12b60 54 79 70 65 57 61 72 6e 69 6e 67 28 74 79 70 65  TypeWarning(type
12b70 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20 64 65 66  Name, flags, def
12b80 61 75 6c 74 44 62 54 79 70 65 29 3b 0d 0a 23 65  aultDbType);..#e
12b90 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
12ba0 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79      return (DbTy
12bb0 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65  pe)defaultDbType
12bc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
12bd0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73          lock (_s
12be0 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20  yncRoot)..      
12bf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12c00 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 20   if (_typeNames 
12c10 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12c20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e            _typeN
12c30 61 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65  ames = GetSQLite
12c40 44 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a  DbTypeMap();....
12c50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12c60 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  typeName != null
12c70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
12c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c90 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61    SQLiteDbTypeMa
12ca0 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a  pping value;....
12cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cc0 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54  if (_typeNames.T
12cd0 72 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e  ryGetValue(typeN
12ce0 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29  ame, out value))
12cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12d10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12d20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d  value.dataType;.
12d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12d40 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12d50 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
12d60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d80 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 74 79 70   int index = typ
12d90 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28  eName.IndexOf('(
12da0 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
12db0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
12dc0 69 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20  index > 0) &&.. 
12dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12de0 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65         _typeName
12df0 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
12e00 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e 67  peName.Substring
12e10 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d 45  (0, index).TrimE
12e20 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75 65 29  nd(), out value)
12e30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12e40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e60 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64    return value.d
12e70 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
12e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
12e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12ea0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12eb0 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
12ec0 20 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61          if (defa
12ed0 75 6c 74 44 62 54 79 70 65 20 21 3d 20 6e 75 6c  ultDbType != nul
12ee0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
12ef0 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29 64  return (DbType)d
12f00 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d  efaultDbType;...
12f10 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74  .        default
12f20 44 62 54 79 70 65 20 3d 20 47 65 74 44 65 66 61  DbType = GetDefa
12f30 75 6c 74 44 62 54 79 70 65 28 63 6f 6e 6e 65 63  ultDbType(connec
12f40 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  tion);....#if !N
12f50 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
12f60 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
12f70 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 44          DefaultD
12f80 62 54 79 70 65 57 61 72 6e 69 6e 67 28 74 79 70  bTypeWarning(typ
12f90 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20 64 65  eName, flags, de
12fa0 66 61 75 6c 74 44 62 54 79 70 65 29 3b 0d 0a 23  faultDbType);..#
12fb0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
12fc0 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
12fd0 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  defaultDbType;..
12fe0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
12ff0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 70 72 69  egion....    pri
13000 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
13010 63 74 20 5f 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ct _syncRoot = n
13020 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 20 20  ew object();..  
13030 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
13040 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
13050 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 6e 75   _typeNames = nu
13060 6c 6c 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  ll;..  }....  //
13070 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
13080 2f 2f 20 53 51 4c 69 74 65 20 68 61 73 20 76 65  // SQLite has ve
13090 72 79 20 6c 69 6d 69 74 65 64 20 74 79 70 65 73  ry limited types
130a0 2c 20 61 6e 64 20 69 73 20 69 6e 68 65 72 65 6e  , and is inheren
130b0 74 6c 79 20 74 65 78 74 2d 62 61 73 65 64 2e 20  tly text-based. 
130c0 20 54 68 65 20 66 69 72 73 74 20 35 20 74 79 70   The first 5 typ
130d0 65 73 20 62 65 6c 6f 77 20 72 65 70 72 65 73 65  es below represe
130e0 6e 74 20 74 68 65 20 73 75 6d 20 6f 66 20 61 6c  nt the sum of al
130f0 6c 20 74 79 70 65 73 20 53 51 4c 69 74 65 0d 0a  l types SQLite..
13100 20 20 2f 2f 2f 20 75 6e 64 65 72 73 74 61 6e 64    /// understand
13110 73 2e 20 20 54 68 65 20 44 61 74 65 54 69 6d 65  s.  The DateTime
13120 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68   extension to th
13130 65 20 73 70 65 63 20 69 73 20 66 6f 72 20 69 6e  e spec is for in
13140 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2e  ternal use only.
13150 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
13160 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
13170 6d 20 54 79 70 65 41 66 66 69 6e 69 74 79 0d 0a  m TypeAffinity..
13180 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    {..    /// <su
13190 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
131a0 4e 6f 74 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f  Not used..    //
131b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
131c0 20 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20    Uninitialized 
131d0 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 0,..    /// <s
131e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
131f0 20 41 6c 6c 20 69 6e 74 65 67 65 72 73 20 69 6e   All integers in
13200 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20   SQLite default 
13210 74 6f 20 49 6e 74 36 34 0d 0a 20 20 20 20 2f 2f  to Int64..    //
13220 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13230 20 20 49 6e 74 36 34 20 3d 20 31 2c 0d 0a 20 20    Int64 = 1,..  
13240 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13250 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f  .    /// All flo
13260 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
13270 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65  ers in SQLite de
13280 66 61 75 6c 74 20 74 6f 20 64 6f 75 62 6c 65 0d  fault to double.
13290 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
132a0 72 79 3e 0d 0a 20 20 20 20 44 6f 75 62 6c 65 20  ry>..    Double 
132b0 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 2,..    /// <s
132c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
132d0 20 54 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   The default dat
132e0 61 20 74 79 70 65 20 6f 66 20 53 51 4c 69 74 65  a type of SQLite
132f0 20 69 73 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f   is text..    //
13300 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13310 20 20 54 65 78 74 20 3d 20 33 2c 0d 0a 20 20 20    Text = 3,..   
13320 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13330 20 20 20 20 2f 2f 2f 20 54 79 70 69 63 61 6c 6c      /// Typicall
13340 79 20 62 6c 6f 62 20 74 79 70 65 73 20 61 72 65  y blob types are
13350 20 6f 6e 6c 79 20 73 65 65 6e 20 77 68 65 6e 20   only seen when 
13360 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 61 20  returned from a 
13370 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  function..    //
13380 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13390 20 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a 20 20 20    Blob = 4,..   
133a0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
133b0 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70      /// Null typ
133c0 65 73 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e  es can be return
133d0 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e  ed from function
133e0 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  s..    /// </sum
133f0 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20  mary>..    Null 
13400 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 5,..    /// <s
13410 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
13420 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79   Used internally
13430 20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65   by this provide
13440 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  r..    /// </sum
13450 6d 61 72 79 3e 0d 0a 20 20 20 20 44 61 74 65 54  mary>..    DateT
13460 69 6d 65 20 3d 20 31 30 2c 0d 0a 20 20 20 20 2f  ime = 10,..    /
13470 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13480 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
13490 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72  nally by this pr
134a0 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20  ovider..    /// 
134b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
134c0 4e 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d  None = 11,..  }.
134d0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
134e0 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20  y>..  /// These 
134f0 61 72 65 20 74 68 65 20 65 76 65 6e 74 20 74 79  are the event ty
13500 70 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  pes associated w
13510 69 74 68 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c  ith the..  /// <
13520 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
13530 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 48  ConnectionEventH
13540 61 6e 64 6c 65 72 22 20 2f 3e 0d 0a 20 20 2f 2f  andler" />..  //
13550 2f 20 64 65 6c 65 67 61 74 65 20 28 61 6e 64 20  / delegate (and 
13560 69 74 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  its correspondin
13570 67 20 65 76 65 6e 74 29 20 61 6e 64 20 74 68 65  g event) and the
13580 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
13590 66 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  f="ConnectionEve
135a0 6e 74 41 72 67 73 22 20 2f 3e 20 63 6c 61 73 73  ntArgs" /> class
135b0 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
135c0 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
135d0 75 6d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  um SQLiteConnect
135e0 69 6f 6e 45 76 65 6e 74 54 79 70 65 0d 0a 20 20  ionEventType..  
135f0 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
13600 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13610 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20  / Not used...   
13620 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13630 3e 0d 0a 20 20 20 20 20 20 49 6e 76 61 6c 69 64  >..      Invalid
13640 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = -1,....      
13650 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13660 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65       /// Not use
13670 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
13680 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13690 55 6e 6b 6e 6f 77 6e 20 3d 20 30 2c 0d 0a 0d 0a  Unknown = 0,....
136a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
136b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
136c0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  he connection is
136d0 20 62 65 69 6e 67 20 6f 70 65 6e 65 64 2e 0d 0a   being opened...
136e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
136f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e  ary>..      Open
13700 69 6e 67 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20  ing = 1,....    
13710 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13720 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
13730 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67  onnection string
13740 20 68 61 73 20 62 65 65 6e 20 70 61 72 73 65 64   has been parsed
13750 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13760 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
13770 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20  onnectionString 
13780 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
13790 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
137a0 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
137b0 63 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64  ction was opened
137c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
137d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f  ummary>..      O
137e0 70 65 6e 65 64 20 3d 20 33 2c 0d 0a 0d 0a 20 20  pened = 3,....  
137f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13800 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13810 20 3c 73 65 65 20 63 72 65 66 3d 22 43 68 61 6e   <see cref="Chan
13820 67 65 44 61 74 61 62 61 73 65 22 20 2f 3e 20 6d  geDatabase" /> m
13830 65 74 68 6f 64 20 77 61 73 20 63 61 6c 6c 65 64  ethod was called
13840 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   on the..      /
13850 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  // connection...
13860 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13870 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 68 61 6e  ary>..      Chan
13880 67 65 44 61 74 61 62 61 73 65 20 3d 20 34 2c 0d  geDatabase = 4,.
13890 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
138a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
138b0 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  / A transaction 
138c0 77 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e  was created usin
138d0 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  g the connection
138e0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
138f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
13900 65 77 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20  ewTransaction = 
13910 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  5,....      /// 
13920 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13930 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
13940 69 6f 6e 20 77 61 73 20 65 6e 6c 69 73 74 65 64  ion was enlisted
13950 20 69 6e 74 6f 20 61 20 74 72 61 6e 73 61 63 74   into a transact
13960 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
13970 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13980 20 20 45 6e 6c 69 73 74 54 72 61 6e 73 61 63 74    EnlistTransact
13990 69 6f 6e 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20  ion = 6,....    
139a0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
139b0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d  .      /// A com
139c0 6d 61 6e 64 20 77 61 73 20 63 72 65 61 74 65 64  mand was created
139d0 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65   using the conne
139e0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
139f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13a00 20 20 20 20 4e 65 77 43 6f 6d 6d 61 6e 64 20 3d      NewCommand =
13a10 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   7,....      ///
13a20 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13a30 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61    /// A data rea
13a40 64 65 72 20 77 61 73 20 63 72 65 61 74 65 64 20  der was created 
13a50 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
13a60 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
13a70 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
13a80 20 20 20 4e 65 77 44 61 74 61 52 65 61 64 65 72     NewDataReader
13a90 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 8,....      /
13aa0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13ab0 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 73 74 61      /// An insta
13ac0 6e 63 65 20 6f 66 20 61 20 3c 73 65 65 20 63 72  nce of a <see cr
13ad0 65 66 3d 22 43 72 69 74 69 63 61 6c 48 61 6e 64  ef="CriticalHand
13ae0 6c 65 22 20 2f 3e 20 64 65 72 69 76 65 64 20 63  le" /> derived c
13af0 6c 61 73 73 20 68 61 73 0d 0a 20 20 20 20 20 20  lass has..      
13b00 2f 2f 2f 20 62 65 65 6e 20 63 72 65 61 74 65 64  /// been created
13b10 20 74 6f 20 77 72 61 70 20 61 20 6e 61 74 69 76   to wrap a nativ
13b20 65 20 72 65 73 6f 75 72 63 65 2e 0d 0a 20 20 20  e resource...   
13b30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13b40 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 72 69 74  >..      NewCrit
13b50 69 63 61 6c 48 61 6e 64 6c 65 20 3d 20 39 2c 0d  icalHandle = 9,.
13b60 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13b70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13b80 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
13b90 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64   is being closed
13ba0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13bb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
13bc0 6c 6f 73 69 6e 67 20 3d 20 31 30 2c 0d 0a 0d 0a  losing = 10,....
13bd0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13be0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
13bf0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61  he connection wa
13c00 73 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20  s closed...     
13c10 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13c20 0a 20 20 20 20 20 20 43 6c 6f 73 65 64 20 3d 20  .      Closed = 
13c30 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  11,....      ///
13c40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13c50 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20    /// A command 
13c60 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65  is being dispose
13c70 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
13c80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13c90 44 69 73 70 6f 73 69 6e 67 43 6f 6d 6d 61 6e 64  DisposingCommand
13ca0 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 12,....      
13cb0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13cc0 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20       /// A data 
13cd0 72 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20  reader is being 
13ce0 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
13cf0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13d00 0a 20 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67  .      Disposing
13d10 44 61 74 61 52 65 61 64 65 72 20 3d 20 31 33 2c  DataReader = 13,
13d20 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
13d30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
13d40 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72  // A data reader
13d50 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64   is being closed
13d60 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13d70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
13d80 6c 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72  losingDataReader
13d90 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 14,....      
13da0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13db0 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
13dc0 65 20 72 65 73 6f 75 72 63 65 20 77 61 73 20 6f  e resource was o
13dd0 70 65 6e 65 64 20 28 69 2e 65 2e 20 6f 62 74 61  pened (i.e. obta
13de0 69 6e 65 64 29 20 66 72 6f 6d 20 74 68 65 20 70  ined) from the p
13df0 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ool...      /// 
13e00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13e10 20 20 4f 70 65 6e 65 64 46 72 6f 6d 50 6f 6f 6c    OpenedFromPool
13e20 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 15,....      
13e30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13e40 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
13e50 65 20 72 65 73 6f 75 72 63 65 20 77 61 73 20 63  e resource was c
13e60 6c 6f 73 65 64 20 28 69 2e 65 2e 20 72 65 6c 65  losed (i.e. rele
13e70 61 73 65 64 29 20 74 6f 20 74 68 65 20 70 6f 6f  ased) to the poo
13e80 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
13e90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13ea0 43 6c 6f 73 65 64 54 6f 50 6f 6f 6c 20 3d 20 31  ClosedToPool = 1
13eb0 36 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  6..  }....  /// 
13ec0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
13ed0 20 54 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61   This implementa
13ee0 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 66  tion of SQLite f
13ef0 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61 6e 20 70  or ADO.NET can p
13f00 72 6f 63 65 73 73 20 64 61 74 65 2f 74 69 6d 65  rocess date/time
13f10 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20 20 2f 2f   fields in..  //
13f20 2f 20 64 61 74 61 62 61 73 65 73 20 69 6e 20 6f  / databases in o
13f30 6e 65 20 6f 66 20 73 69 78 20 66 6f 72 6d 61 74  ne of six format
13f40 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
13f50 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d  ary>..  /// <rem
13f60 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53 4f  arks>..  /// ISO
13f70 38 36 30 31 20 66 6f 72 6d 61 74 20 69 73 20 6d  8601 format is m
13f80 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 2c 20  ore compatible, 
13f90 72 65 61 64 61 62 6c 65 2c 20 66 75 6c 6c 79 2d  readable, fully-
13fa0 70 72 6f 63 65 73 73 61 62 6c 65 2c 20 62 75 74  processable, but
13fb0 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20 61 63 63   less..  /// acc
13fc0 75 72 61 74 65 20 61 73 20 69 74 20 64 6f 65 73  urate as it does
13fd0 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 74 69 6d   not provide tim
13fe0 65 20 64 6f 77 6e 20 74 6f 20 66 72 61 63 74 69  e down to fracti
13ff0 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f 6e 64 2e  ons of a second.
14000 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44 61  ..  /// JulianDa
14010 79 20 69 73 20 74 68 65 20 6e 75 6d 65 72 69 63  y is the numeric
14020 20 66 6f 72 6d 61 74 20 74 68 65 20 53 51 4c 69   format the SQLi
14030 74 65 20 75 73 65 73 20 69 6e 74 65 72 6e 61 6c  te uses internal
14040 6c 79 20 61 6e 64 20 69 73 20 61 72 67 75 61 62  ly and is arguab
14050 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65 20 6d 6f  ly..  /// the mo
14060 73 74 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69  st compatible wi
14070 74 68 20 33 72 64 20 70 61 72 74 79 20 74 6f 6f  th 3rd party too
14080 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f 74 20 72  ls.  It is not r
14090 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d  eadable as text.
140a0 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70  .  /// without p
140b0 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20  ost-processing. 
140c0 20 54 69 63 6b 73 20 6c 65 73 73 20 63 6f 6d 70   Ticks less comp
140d0 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 20  atible with 3rd 
140e0 70 61 72 74 79 20 74 6f 6f 6c 73 20 74 68 61 74  party tools that
140f0 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79 20 74 68  ..  /// query th
14100 65 20 64 61 74 61 62 61 73 65 2c 20 61 6e 64 20  e database, and 
14110 72 65 6e 64 65 72 73 20 74 68 65 20 44 61 74 65  renders the Date
14120 54 69 6d 65 20 66 69 65 6c 64 20 75 6e 72 65 61  Time field unrea
14130 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d 0a 20  dable as text.. 
14140 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70 6f 73   /// without pos
14150 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20 20 55  t-processing.  U
14160 6e 69 78 45 70 6f 63 68 20 69 73 20 6d 6f 72 65  nixEpoch is more
14170 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68   compatible with
14180 20 55 6e 69 78 20 73 79 73 74 65 6d 73 2e 0d 0a   Unix systems...
14190 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61 6e 74 43    /// InvariantC
141a0 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74 68  ulture allows th
141b0 65 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72  e configured for
141c0 6d 61 74 20 66 6f 72 20 74 68 65 20 69 6e 76 61  mat for the inva
141d0 72 69 61 6e 74 20 63 75 6c 74 75 72 65 0d 0a 20  riant culture.. 
141e0 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74 6f 20 62   /// format to b
141f0 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 68 75  e used and is hu
14200 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e 20 20 43  man readable.  C
14210 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 61 6c  urrentCulture al
14220 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f 2f 2f 20  lows the..  /// 
14230 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61  configured forma
14240 74 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  t for the curren
14250 74 20 63 75 6c 74 75 72 65 20 74 6f 20 62 65 20  t culture to be 
14260 75 73 65 64 20 61 6e 64 20 69 73 20 61 6c 73 6f  used and is also
14270 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f 20 72 65   human..  /// re
14280 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a  adable...  ///..
14290 20 20 2f 2f 2f 20 54 68 65 20 70 72 65 66 65 72    /// The prefer
142a0 72 65 64 20 6f 72 64 65 72 20 6f 66 20 63 68 6f  red order of cho
142b0 6f 73 69 6e 67 20 61 20 44 61 74 65 54 69 6d 65  osing a DateTime
142c0 20 66 6f 72 6d 61 74 20 69 73 20 4a 75 6c 69 61   format is Julia
142d0 6e 44 61 79 2c 20 49 53 4f 38 36 30 31 2c 0d 0a  nDay, ISO8601,..
142e0 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 6e 20 54    /// and then T
142f0 69 63 6b 73 2e 20 20 54 69 63 6b 73 20 69 73 20  icks.  Ticks is 
14300 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e 74 20 66  mainly present f
14310 6f 72 20 6c 65 67 61 63 79 20 63 6f 64 65 20 73  or legacy code s
14320 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f 2f 20 3c  upport...  /// <
14330 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62  /remarks>..  pub
14340 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 44  lic enum SQLiteD
14350 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20 20 7b 0d  ateFormats..  {.
14360 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14370 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20  y>..    /// Use 
14380 74 68 65 20 76 61 6c 75 65 20 6f 66 20 44 61 74  the value of Dat
14390 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20 20 54 68  eTime.Ticks.  Th
143a0 69 73 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20  is value is not 
143b0 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61 6e 64 20  recommended and 
143c0 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73 75 70 70  is not well supp
143d0 6f 72 74 65 64 20 77 69 74 68 20 4c 49 4e 51 2e  orted with LINQ.
143e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
143f0 61 72 79 3e 0d 0a 20 20 20 20 54 69 63 6b 73 20  ary>..    Ticks 
14400 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 0,..    /// <s
14410 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14420 20 55 73 65 20 74 68 65 20 49 53 4f 2d 38 36 30   Use the ISO-860
14430 31 20 66 6f 72 6d 61 74 2e 20 20 55 73 65 73 20  1 format.  Uses 
14440 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20  the "yyyy-MM-dd 
14450 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
14460 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 55 54  K" format for UT
14470 43 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  C DateTime value
14480 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 22  s and..    /// "
14490 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
144a0 3a 73 73 2e 46 46 46 46 46 46 46 22 20 66 6f 72  :ss.FFFFFFF" for
144b0 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c 20 44 61  mat for local Da
144c0 74 65 54 69 6d 65 20 76 61 6c 75 65 73 29 2e 0d  teTime values)..
144d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
144e0 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38 36 30 31  ry>..    ISO8601
144f0 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 1,..    /// <
14500 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14510 2f 20 54 68 65 20 69 6e 74 65 72 76 61 6c 20 6f  / The interval o
14520 66 20 74 69 6d 65 20 69 6e 20 64 61 79 73 20 61  f time in days a
14530 6e 64 20 66 72 61 63 74 69 6f 6e 73 20 6f 66 20  nd fractions of 
14540 61 20 64 61 79 20 73 69 6e 63 65 20 4a 61 6e 75  a day since Janu
14550 61 72 79 20 31 2c 20 34 37 31 33 20 42 43 2e 0d  ary 1, 4713 BC..
14560 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14570 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69 61 6e 44  ry>..    JulianD
14580 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f  ay = 2,..    ///
14590 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
145a0 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65 20 6e 75  /// The whole nu
145b0 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20  mber of seconds 
145c0 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
145d0 70 6f 63 68 20 28 4a 61 6e 75 61 72 79 20 31 2c  poch (January 1,
145e0 20 31 39 37 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f   1970)...    ///
145f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14600 20 55 6e 69 78 45 70 6f 63 68 20 3d 20 33 2c 0d   UnixEpoch = 3,.
14610 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14620 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20  y>..    /// Any 
14630 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64  culture-independ
14640 65 6e 74 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ent string value
14650 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46   that the .NET F
14660 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74  ramework can int
14670 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c 69  erpret as a vali
14680 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20  d DateTime...   
14690 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
146a0 0a 20 20 20 20 49 6e 76 61 72 69 61 6e 74 43 75  .    InvariantCu
146b0 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20 20 20 20  lture = 4,..    
146c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
146d0 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74 72 69 6e     /// Any strin
146e0 67 20 76 61 6c 75 65 20 74 68 61 74 20 74 68 65  g value that the
146f0 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
14700 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73  can interpret as
14710 20 61 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d   a valid DateTim
14720 65 20 75 73 69 6e 67 20 74 68 65 20 63 75 72 72  e using the curr
14730 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d 0a 20 20  ent culture...  
14740 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14750 0d 0a 20 20 20 20 43 75 72 72 65 6e 74 43 75 6c  ..    CurrentCul
14760 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20 20 20 2f  ture = 5,..    /
14770 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14780 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
14790 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  t format for thi
147a0 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20  s provider...   
147b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
147c0 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 49  .    Default = I
147d0 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a 0d 0a 20  SO8601..  }.... 
147e0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
147f0 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d 20    /// This enum 
14800 64 65 74 65 72 6d 69 6e 65 73 20 68 6f 77 20 53  determines how S
14810 51 4c 69 74 65 20 74 72 65 61 74 73 20 69 74 73  QLite treats its
14820 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0d 0a   journal file...
14830 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14840 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73  ..  /// <remarks
14850 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64 65 66 61  >..  /// By defa
14860 75 6c 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  ult SQLite will 
14870 63 72 65 61 74 65 20 61 6e 64 20 64 65 6c 65 74  create and delet
14880 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  e the journal fi
14890 6c 65 20 77 68 65 6e 20 6e 65 65 64 65 64 20 64  le when needed d
148a0 75 72 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74  uring a transact
148b0 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48 6f 77 65  ion...  /// Howe
148c0 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65 20 63 6f  ver, for some co
148d0 6d 70 75 74 65 72 73 20 72 75 6e 6e 69 6e 67 20  mputers running 
148e0 63 65 72 74 61 69 6e 20 66 69 6c 65 73 79 73 74  certain filesyst
148f0 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67 20 74 6f  em monitoring to
14900 6f 6c 73 2c 20 74 68 65 20 72 61 70 69 64 0d 0a  ols, the rapid..
14910 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f 6e 20 61    /// creation a
14920 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f 66 20 74  nd deletion of t
14930 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
14940 63 61 6e 20 63 61 75 73 65 20 74 68 6f 73 65 20  can cause those 
14950 70 72 6f 67 72 61 6d 73 20 74 6f 20 66 61 69 6c  programs to fail
14960 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72 66 65 72  , or to interfer
14970 65 20 77 69 74 68 20 53 51 4c 69 74 65 2e 0d 0a  e with SQLite...
14980 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 49 66 20    ///..  /// If 
14990 61 20 70 72 6f 67 72 61 6d 20 6f 72 20 76 69 72  a program or vir
149a0 75 73 20 73 63 61 6e 6e 65 72 20 69 73 20 69 6e  us scanner is in
149b0 74 65 72 66 65 72 69 6e 67 20 77 69 74 68 20 53  terfering with S
149c0 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e 61 6c 20  QLite's journal 
149d0 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79 20 72 65  file, you may re
149e0 63 65 69 76 65 20 65 72 72 6f 72 73 20 6c 69 6b  ceive errors lik
149f0 65 20 22 75 6e 61 62 6c 65 20 74 6f 20 6f 70 65  e "unable to ope
14a00 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 22  n database file"
14a10 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20 73 74 61  ..  /// when sta
14a20 72 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74  rting a transact
14a30 69 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 69 73  ion.  If this is
14a40 20 68 61 70 70 65 6e 69 6e 67 2c 20 79 6f 75 20   happening, you 
14a50 6d 61 79 20 77 61 6e 74 20 74 6f 20 63 68 61 6e  may want to chan
14a60 67 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6a  ge the default j
14a70 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74 6f 20 50  ournal mode to P
14a80 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f 2f 20 3c  ersist...  /// <
14a90 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62  /remarks>..  pub
14aa0 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 4a  lic enum SQLiteJ
14ab0 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 0d 0a  ournalModeEnum..
14ac0 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    {..    /// <su
14ad0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
14ae0 54 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65  The default mode
14af0 2c 20 74 68 69 73 20 63 61 75 73 65 73 20 53 51  , this causes SQ
14b00 4c 69 74 65 20 74 6f 20 75 73 65 20 74 68 65 20  Lite to use the 
14b10 65 78 69 73 74 69 6e 67 20 6a 6f 75 72 6e 61 6c  existing journal
14b20 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20 74 68 65  ing mode for the
14b30 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
14b40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14b50 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 2d 31      Default = -1
14b60 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
14b70 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
14b80 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65  Lite will create
14b90 20 61 6e 64 20 64 65 73 74 72 6f 79 20 74 68 65   and destroy the
14ba0 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61 73   journal file as
14bb0 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f  -needed...    //
14bc0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14bd0 20 20 44 65 6c 65 74 65 20 3d 20 30 2c 0d 0a 20    Delete = 0,.. 
14be0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14bf0 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74  ..    /// When t
14c00 68 69 73 20 69 73 20 73 65 74 2c 20 53 51 4c 69  his is set, SQLi
14c10 74 65 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65  te will keep the
14c20 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 65 76   journal file ev
14c30 65 6e 20 61 66 74 65 72 20 61 20 74 72 61 6e 73  en after a trans
14c40 61 63 74 69 6f 6e 20 68 61 73 20 63 6f 6d 70 6c  action has compl
14c50 65 74 65 64 2e 20 20 49 74 27 73 20 63 6f 6e 74  eted.  It's cont
14c60 65 6e 74 73 20 77 69 6c 6c 20 62 65 20 65 72 61  ents will be era
14c70 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  sed,..    /// an
14c80 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 72 65  d the journal re
14c90 2d 75 73 65 64 20 61 73 20 6f 66 74 65 6e 20 61  -used as often a
14ca0 73 20 6e 65 65 64 65 64 2e 20 20 49 66 20 69 74  s needed.  If it
14cb0 20 69 73 20 64 65 6c 65 74 65 64 2c 20 69 74 20   is deleted, it 
14cc0 77 69 6c 6c 20 62 65 20 72 65 63 72 65 61 74 65  will be recreate
14cd0 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d 65 20  d the next time 
14ce0 69 74 20 69 73 20 6e 65 65 64 65 64 2e 0d 0a 20  it is needed... 
14cf0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14d00 3e 0d 0a 20 20 20 20 50 65 72 73 69 73 74 20 3d  >..    Persist =
14d10 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   1,..    /// <su
14d20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
14d30 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
14d40 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c 62 61 63  bles the rollbac
14d50 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74 69 72 65  k journal entire
14d60 6c 79 2e 20 20 49 6e 74 65 72 72 75 70 74 65 64  ly.  Interrupted
14d70 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 72   transactions or
14d80 20 61 20 70 72 6f 67 72 61 6d 20 63 72 61 73 68   a program crash
14d90 20 63 61 6e 20 63 61 75 73 65 20 64 61 74 61 62   can cause datab
14da0 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 72  ase..    /// cor
14db0 72 75 70 74 69 6f 6e 20 69 6e 20 74 68 69 73 20  ruption in this 
14dc0 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mode!..    /// <
14dd0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4f  /summary>..    O
14de0 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f  ff = 2,..    ///
14df0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14e00 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  /// SQLite will 
14e10 74 72 75 6e 63 61 74 65 20 74 68 65 20 6a 6f 75  truncate the jou
14e20 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20 7a 65 72  rnal file to zer
14e30 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74 65 61 64  o-length instead
14e40 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 69 74 2e   of deleting it.
14e50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14e60 61 72 79 3e 0d 0a 20 20 20 20 54 72 75 6e 63 61  ary>..    Trunca
14e70 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f  te = 3,..    ///
14e80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14e90 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  /// SQLite will 
14ea0 73 74 6f 72 65 20 74 68 65 20 6a 6f 75 72 6e 61  store the journa
14eb0 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65 20 52 41  l in volatile RA
14ec0 4d 2e 20 20 54 68 69 73 20 73 61 76 65 73 20 64  M.  This saves d
14ed0 69 73 6b 20 49 2f 4f 20 62 75 74 20 61 74 20 74  isk I/O but at t
14ee0 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20 64 61  he expense of da
14ef0 74 61 62 61 73 65 20 73 61 66 65 74 79 20 61 6e  tabase safety an
14f00 64 20 69 6e 74 65 67 72 69 74 79 2e 0d 0a 20 20  d integrity...  
14f10 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 61 70 70    /// If the app
14f20 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 53  lication using S
14f30 51 4c 69 74 65 20 63 72 61 73 68 65 73 20 69 6e  QLite crashes in
14f40 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61   the middle of a
14f50 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 68 65   transaction whe
14f60 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20 6a 6f 75  n the MEMORY jou
14f70 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20  rnaling mode is 
14f80 73 65 74 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20  set, then the.. 
14f90 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20     /// database 
14fa0 66 69 6c 65 20 77 69 6c 6c 20 76 65 72 79 20 6c  file will very l
14fb0 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72 75 70 74  ikely go corrupt
14fc0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14fd0 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65 6d 6f 72  mary>..    Memor
14fe0 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20  y = 4,..    /// 
14ff0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
15000 2f 2f 20 53 51 4c 69 74 65 20 75 73 65 73 20 61  // SQLite uses a
15010 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67   write-ahead log
15020 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 72 6f   instead of a ro
15030 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 74  llback journal t
15040 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 72 61 6e  o implement tran
15050 73 61 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 57  sactions.  The W
15060 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  AL journaling mo
15070 64 65 20 69 73 20 70 65 72 73 69 73 74 65 6e 74  de is persistent
15080 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66 74 65 72  ;..    /// after
15090 20 62 65 69 6e 67 20 73 65 74 20 69 74 20 73 74   being set it st
150a0 61 79 73 20 69 6e 20 65 66 66 65 63 74 20 61 63  ays in effect ac
150b0 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65 20 64 61  ross multiple da
150c0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
150d0 6e 73 20 61 6e 64 20 61 66 74 65 72 20 63 6c 6f  ns and after clo
150e0 73 69 6e 67 20 61 6e 64 20 72 65 6f 70 65 6e 69  sing and reopeni
150f0 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ng the database.
15100 20 41 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20   A database..   
15110 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a 6f 75 72   /// in WAL jour
15120 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63 61 6e 20  naling mode can 
15130 6f 6e 6c 79 20 62 65 20 61 63 63 65 73 73 65 64  only be accessed
15140 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73 69   by SQLite versi
15150 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c 61 74 65  on 3.7.0 or late
15160 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  r...    /// </su
15170 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57 61 6c 20  mmary>..    Wal 
15180 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 5..  }....  //
15190 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
151a0 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75  // Possible valu
151b0 65 73 20 66 6f 72 20 74 68 65 20 22 73 79 6e 63  es for the "sync
151c0 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61 73  hronous" databas
151d0 65 20 73 65 74 74 69 6e 67 2e 20 20 54 68 69 73  e setting.  This
151e0 20 73 65 74 74 69 6e 67 20 64 65 74 65 72 6d 69   setting determi
151f0 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f 77 20 6f  nes..  /// how o
15200 66 74 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  ften the databas
15210 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c 73 20 74  e engine calls t
15220 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20  he xSync method 
15230 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a 20 20 2f  of the VFS...  /
15240 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15250 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 53   internal enum S
15260 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e 6f 75 73  QLiteSynchronous
15270 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Enum..  {..     
15280 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15290 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68        /// Use th
152a0 65 20 64 65 66 61 75 6c 74 20 22 73 79 6e 63 68  e default "synch
152b0 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61 73 65  ronous" database
152c0 20 73 65 74 74 69 6e 67 2e 20 20 43 75 72 72 65   setting.  Curre
152d0 6e 74 6c 79 2c 20 74 68 69 73 20 73 68 6f 75 6c  ntly, this shoul
152e0 64 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d be..      /// 
152f0 74 68 65 20 73 61 6d 65 20 61 73 20 75 73 69 6e  the same as usin
15300 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f 64 65 2e  g the FULL mode.
15310 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15320 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65  mmary>..      De
15330 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 0d 0a 20  fault = -1,.... 
15340 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15350 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15360 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
15370 65 20 63 6f 6e 74 69 6e 75 65 73 20 77 69 74 68  e continues with
15380 6f 75 74 20 73 79 6e 63 69 6e 67 20 61 73 20 73  out syncing as s
15390 6f 6f 6e 20 61 73 20 69 74 20 68 61 73 20 68 61  oon as it has ha
153a0 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nded..      /// 
153b0 64 61 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20  data off to the 
153c0 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
153d0 2e 20 20 49 66 20 74 68 65 20 61 70 70 6c 69 63  .  If the applic
153e0 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51  ation running SQ
153f0 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Lite..      /// 
15400 63 72 61 73 68 65 73 2c 20 74 68 65 20 64 61 74  crashes, the dat
15410 61 20 77 69 6c 6c 20 62 65 20 73 61 66 65 2c 20  a will be safe, 
15420 62 75 74 20 74 68 65 20 64 61 74 61 62 61 73 65  but the database
15430 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 63 6f   might become co
15440 72 72 75 70 74 65 64 0d 0a 20 20 20 20 20 20 2f  rrupted..      /
15450 2f 2f 20 69 66 20 74 68 65 20 6f 70 65 72 61 74  // if the operat
15460 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73 68  ing system crash
15470 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74  es or the comput
15480 65 72 20 6c 6f 73 65 73 20 70 6f 77 65 72 20 62  er loses power b
15490 65 66 6f 72 65 20 74 68 61 74 0d 0a 20 20 20 20  efore that..    
154a0 20 20 2f 2f 2f 20 64 61 74 61 20 68 61 73 20 62    /// data has b
154b0 65 65 6e 20 77 72 69 74 74 65 6e 20 74 6f 20 74  een written to t
154c0 68 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 2e  he disk surface.
154d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
154e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 66  mmary>..      Of
154f0 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  f = 0,....      
15500 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15510 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74       /// The dat
15520 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c  abase engine wil
15530 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20 61 74 20  l still sync at 
15540 74 68 65 20 6d 6f 73 74 20 63 72 69 74 69 63 61  the most critica
15550 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75 74 0d 0a  l moments, but..
15560 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 6f        /// less o
15570 66 74 65 6e 20 74 68 61 6e 20 69 6e 20 46 55 4c  ften than in FUL
15580 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72 65 20 69  L mode.  There i
15590 73 20 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 28  s a very small (
155a0 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29  though non-zero)
155b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e  ..      /// chan
155c0 63 65 20 74 68 61 74 20 61 20 70 6f 77 65 72 20  ce that a power 
155d0 66 61 69 6c 75 72 65 20 61 74 20 6a 75 73 74 20  failure at just 
155e0 74 68 65 20 77 72 6f 6e 67 20 74 69 6d 65 20 63  the wrong time c
155f0 6f 75 6c 64 20 63 6f 72 72 75 70 74 20 74 68 65  ould corrupt the
15600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
15610 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41 4c 20 6d  base in NORMAL m
15620 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ode...      /// 
15630 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15640 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c 0d 0a 0d    Normal = 1,...
15650 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15660 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15670 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  The database eng
15680 69 6e 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65  ine will use the
15690 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66   xSync method of
156a0 20 74 68 65 20 56 46 53 20 74 6f 20 65 6e 73 75   the VFS to ensu
156b0 72 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20 2f  re that..      /
156c0 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e 74 20 69  // all content i
156d0 73 20 73 61 66 65 6c 79 20 77 72 69 74 74 65 6e  s safely written
156e0 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72   to the disk sur
156f0 66 61 63 65 20 70 72 69 6f 72 20 74 6f 20 63 6f  face prior to co
15700 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20 20 20 20  ntinuing...     
15710 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73 75 72 65   /// This ensure
15720 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74  s that an operat
15730 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73 68  ing system crash
15740 20 6f 72 20 70 6f 77 65 72 20 66 61 69 6c 75 72   or power failur
15750 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20 20 20 20  e will not..    
15760 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 20 74 68    /// corrupt th
15770 65 20 64 61 74 61 62 61 73 65 2e 20 20 46 55 4c  e database.  FUL
15780 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  L synchronous is
15790 20 76 65 72 79 20 73 61 66 65 2c 20 62 75 74 20   very safe, but 
157a0 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20 20 20 20  it is also..    
157b0 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e 0d 0a 20    /// slower... 
157c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
157d0 72 79 3e 0d 0a 20 20 20 20 20 20 46 75 6c 6c 20  ry>..      Full 
157e0 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 2..  }....  //
157f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
15800 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
15810 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74 69   command executi
15820 6f 6e 20 74 79 70 65 2e 20 20 54 68 69 73 20 63  on type.  This c
15830 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20 6d 65  ontrols which me
15840 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a 20 20 2f  thod of the..  /
15850 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
15860 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e 20  LiteCommand" /> 
15870 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62 65 20 63  object will be c
15880 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  alled...  /// </
15890 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
158a0 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 45 78  ic enum SQLiteEx
158b0 65 63 75 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a  ecuteType..  {..
158c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
158d0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
158e0 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e 6f 20 6d  o nothing.  No m
158f0 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63 61  ethod will be ca
15900 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lled...      ///
15910 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15920 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 0d 0a     None = 0,....
15930 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15940 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
15950 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  he command is no
15960 74 20 65 78 70 65 63 74 65 64 20 74 6f 20 72 65  t expected to re
15970 74 75 72 6e 20 61 20 72 65 73 75 6c 74 20 2d 4f  turn a result -O
15980 52 2d 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  R- the result is
15990 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
159a0 6e 65 65 64 65 64 2e 20 20 54 68 65 20 3c 73 65  needed.  The <se
159b0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
159c0 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e  mmand.ExecuteNon
159d0 51 75 65 72 79 28 29 22 20 2f 3e 20 6f 72 0d 0a  Query()" /> or..
159e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
159f0 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
15a00 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  nd.ExecuteNonQue
15a10 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69  ry(CommandBehavi
15a20 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68 6f 64 0d  or)" />  method.
15a30 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20  .      /// will 
15a40 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
15a50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15a60 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75 65 72 79  ..      NonQuery
15a70 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
15a80 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
15a90 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d      /// The comm
15aa0 61 6e 64 20 69 73 20 65 78 70 65 63 74 65 64 20  and is expected 
15ab0 74 6f 20 72 65 74 75 72 6e 20 61 20 73 63 61 6c  to return a scal
15ac0 61 72 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74  ar result -OR- t
15ad0 68 65 20 72 65 73 75 6c 74 20 73 68 6f 75 6c 64  he result should
15ae0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6c  ..      /// be l
15af0 69 6d 69 74 65 64 20 74 6f 20 61 20 73 63 61 6c  imited to a scal
15b00 61 72 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20  ar result.  The 
15b10 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
15b20 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
15b30 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d 0a 20 20  Scalar()" />..  
15b40 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20      /// or <see 
15b50 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
15b60 61 6e 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61  and.ExecuteScala
15b70 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  r(CommandBehavio
15b80 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  r)" /> method wi
15b90 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
15ba0 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
15bb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15bc0 20 20 20 20 20 20 53 63 61 6c 61 72 20 3d 20 32        Scalar = 2
15bd0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
15be0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15bf0 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20  /// The command 
15c00 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 72  is expected to r
15c10 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65 66 3d  eturn <see cref=
15c20 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
15c30 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e 0d 0a 20  r" /> result... 
15c40 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
15c50 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
15c60 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61  mmand.ExecuteRea
15c70 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d 0a 20 20  der()" /> or..  
15c80 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
15c90 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  f="SQLiteCommand
15ca0 2e 45 78 65 63 75 74 65 52 65 61 64 65 72 28 43  .ExecuteReader(C
15cb0 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22  ommandBehavior)"
15cc0 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d   /> method will.
15cd0 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 63 61  .      /// be ca
15ce0 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lled...      ///
15cf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15d00 20 20 20 52 65 61 64 65 72 20 3d 20 33 2c 0d 0a     Reader = 3,..
15d10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
15d20 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
15d30 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   Use the default
15d40 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74 69   command executi
15d50 6f 6e 20 74 79 70 65 2e 20 20 55 73 69 6e 67 20  on type.  Using 
15d60 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 74 68  this value is th
15d70 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f  e same..      //
15d80 2f 20 61 73 20 75 73 69 6e 67 20 74 68 65 20 3c  / as using the <
15d90 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
15da0 45 78 65 63 75 74 65 54 79 70 65 2e 4e 6f 6e 51  ExecuteType.NonQ
15db0 75 65 72 79 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  uery" /> value..
15dc0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
15dd0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66  mary>..      Def
15de0 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65 72 79 20  ault = NonQuery 
15df0 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 64 65  /* TODO: Good de
15e00 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20 7d 0d 0a  fault? */..  }..
15e10 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
15e20 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 61 63 74  >..  /// The act
15e30 69 6f 6e 20 63 6f 64 65 20 72 65 73 70 6f 6e 73  ion code respons
15e40 69 62 6c 65 20 66 6f 72 20 74 68 65 20 63 75 72  ible for the cur
15e50 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74  rent call into t
15e60 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a  he authorizer...
15e70 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15e80 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
15e90 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72  SQLiteAuthorizer
15ea0 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20 20 7b 0d  ActionCode..  {.
15eb0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15ec0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15ed0 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20 62 65 69  No action is bei
15ee0 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e 20 20 54  ng performed.  T
15ef0 68 69 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64  his value should
15f00 20 6e 6f 74 20 62 65 20 75 73 65 64 20 66 72 6f   not be used fro
15f10 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74  m..      /// ext
15f20 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a 20 20 20  ernal code...   
15f30 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
15f40 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  >..      None = 
15f50 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  -1,....      ///
15f60 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15f70 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67 65 72 20    /// No longer 
15f80 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  used...      ///
15f90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15fa0 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d 0a 0d 0a     Copy = 0,....
15fb0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15fc0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
15fd0 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20  n index will be 
15fe0 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
15ff0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16000 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d  guments are the.
16010 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78  .      /// index
16020 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
16030 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
16040 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   ///..      /// 
16050 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16060 20 20 43 72 65 61 74 65 49 6e 64 65 78 20 3d 20    CreateIndex = 
16070 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
16080 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16090 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c   /// A table wil
160a0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
160b0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
160c0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
160d0 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
160e0 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61  table name and a
160f0 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
16100 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16110 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
16120 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d 0a 20 20  Table = 2,....  
16130 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16140 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16150 65 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77  emporary index w
16160 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16170 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16180 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16190 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
161a0 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64  e index name and
161b0 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
161c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
161d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
161e0 65 61 74 65 54 65 6d 70 49 6e 64 65 78 20 3d 20  eateTempIndex = 
161f0 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  3,....      /// 
16200 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16210 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
16220 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63   table will be c
16230 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
16240 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16250 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
16260 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  / are the table 
16270 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16280 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16290 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
162a0 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 54 61      CreateTempTa
162b0 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20  ble = 4,....    
162c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
162d0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
162e0 70 6f 72 61 72 79 20 74 72 69 67 67 65 72 20 77  porary trigger w
162f0 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16300 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16310 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16320 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16330 65 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61  e trigger name a
16340 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
16350 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16360 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16370 43 72 65 61 74 65 54 65 6d 70 54 72 69 67 67 65  CreateTempTrigge
16380 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20 20  r = 5,....      
16390 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
163a0 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
163b0 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c 20 62  rary view will b
163c0 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
163d0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
163e0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20  arguments are.. 
163f0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 65       /// the vie
16400 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  w name and a nul
16410 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
16420 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16430 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70        CreateTemp
16440 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20  View = 6,....   
16450 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16460 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72  ..      /// A tr
16470 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72  igger will be cr
16480 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
16490 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
164a0 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
164b0 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65 72       /// trigger
164c0 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
164d0 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
164e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
164f0 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 72 69  .      CreateTri
16500 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20  gger = 7,....   
16510 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16520 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69  ..      /// A vi
16530 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74  ew will be creat
16540 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16550 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16560 74 73 20 61 72 65 20 74 68 65 20 76 69 65 77 0d  ts are the view.
16570 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20  .      /// name 
16580 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
16590 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
165a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
165b0 72 65 61 74 65 56 69 65 77 20 3d 20 38 2c 0d 0a  reateView = 8,..
165c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
165d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
165e0 20 41 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d   A DELETE statem
165f0 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
16600 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
16610 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16620 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
16630 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
16640 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16650 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16660 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16670 20 20 44 65 6c 65 74 65 20 3d 20 39 2c 0d 0a 0d    Delete = 9,...
16680 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16690 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
166a0 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  An index will be
166b0 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
166c0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
166d0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
166e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65  ..      /// inde
166f0 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
16700 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
16710 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16720 0d 0a 20 20 20 20 20 20 44 72 6f 70 49 6e 64 65  ..      DropInde
16730 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20  x = 10,....     
16740 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16750 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
16760 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  e will be droppe
16770 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
16780 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16790 73 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 73  s are the tables
167a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65  ..      /// name
167b0 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
167c0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
167d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
167e0 44 72 6f 70 54 61 62 6c 65 20 3d 20 31 31 2c 0d  DropTable = 11,.
167f0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16800 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16810 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e  / A temporary in
16820 64 65 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  dex will be drop
16830 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
16840 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16850 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
16860 2f 2f 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d  // the index nam
16870 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
16880 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
16890 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
168a0 20 20 20 44 72 6f 70 54 65 6d 70 49 6e 64 65 78     DropTempIndex
168b0 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 12,....      
168c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
168d0 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
168e0 72 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20  rary table will 
168f0 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
16900 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16910 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a   arguments are..
16920 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61        /// the ta
16930 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ble name and a n
16940 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
16950 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16960 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
16970 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a 0d 0a 20  Table = 13,.... 
16980 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16990 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
169a0 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65  temporary trigge
169b0 72 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  r will be droppe
169c0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
169d0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
169e0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
169f0 20 74 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d   the trigger nam
16a00 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
16a10 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
16a20 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
16a30 20 20 20 44 72 6f 70 54 65 6d 70 54 72 69 67 67     DropTempTrigg
16a40 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20  er = 14,....    
16a50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16a60 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
16a70 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c  porary view will
16a80 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
16a90 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16aa0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d  c arguments are.
16ab0 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76  .      /// the v
16ac0 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  iew name and a n
16ad0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
16ae0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16af0 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
16b00 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20  View = 15,....  
16b10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16b20 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16b30 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64  rigger will be d
16b40 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
16b50 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16b60 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
16b70 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65        /// trigge
16b80 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  r name and the t
16b90 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
16ba0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16bb0 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 72 69 67  ..      DropTrig
16bc0 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20  ger = 16,....   
16bd0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16be0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69  ..      /// A vi
16bf0 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  ew will be dropp
16c00 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16c10 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16c20 74 73 20 61 72 65 20 74 68 65 20 76 69 65 77 0d  ts are the view.
16c30 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20  .      /// name 
16c40 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
16c50 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16c60 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
16c70 72 6f 70 56 69 65 77 20 3d 20 31 37 2c 0d 0a 0d  ropView = 17,...
16c80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16ca0 41 6e 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  An INSERT statem
16cb0 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
16cc0 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
16cd0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16ce0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
16cf0 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
16d00 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16d10 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16d20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16d30 20 20 49 6e 73 65 72 74 20 3d 20 31 38 2c 0d 0a    Insert = 18,..
16d40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16d50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16d60 20 41 20 50 52 41 47 4d 41 20 73 74 61 74 65 6d   A PRAGMA statem
16d70 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
16d80 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
16d90 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16da0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
16db0 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  are the name of 
16dc0 74 68 65 20 50 52 41 47 4d 41 20 61 6e 64 20 74  the PRAGMA and t
16dd0 68 65 20 6e 65 77 20 76 61 6c 75 65 20 6f 72 20  he new value or 
16de0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16df0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16e00 72 79 3e 0d 0a 20 20 20 20 20 20 50 72 61 67 6d  ry>..      Pragm
16e10 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20 20 20 20  a = 19,....     
16e20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16e30 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
16e40 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20 62 65  e column will be
16e50 20 72 65 61 64 2e 20 20 54 68 65 20 61 63 74 69   read.  The acti
16e60 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16e70 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
16e80 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e       /// table n
16e90 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75  ame and the colu
16ea0 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  mn name...      
16eb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16ec0 20 20 20 20 20 20 52 65 61 64 20 3d 20 32 30 2c        Read = 20,
16ed0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
16ee0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16ef0 2f 2f 20 41 20 53 45 4c 45 43 54 20 73 74 61 74  // A SELECT stat
16f00 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78  ement will be ex
16f10 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74  ecuted.  The act
16f20 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16f30 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
16f40 2f 20 61 72 65 20 62 6f 74 68 20 6e 75 6c 6c 20  / are both null 
16f50 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
16f60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16f70 20 20 20 20 20 53 65 6c 65 63 74 20 3d 20 32 31       Select = 21
16f80 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16f90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16fa0 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f  /// A transactio
16fb0 6e 20 77 69 6c 6c 20 62 65 20 73 74 61 72 74 65  n will be starte
16fc0 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c 20 6f 72  d, committed, or
16fd0 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54   rolled back.  T
16fe0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63  he..      /// ac
16ff0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
17000 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
17010 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72  name of the oper
17020 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20  ation (BEGIN,.. 
17030 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d 49 54 2c       /// COMMIT,
17040 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e   or ROLLBACK) an
17050 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
17060 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17070 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 54 72 61  mary>..      Tra
17080 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32 2c 0d 0a  nsaction = 22,..
17090 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
170a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
170b0 20 41 6e 20 55 50 44 41 54 45 20 73 74 61 74 65   An UPDATE state
170c0 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65  ment will be exe
170d0 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  cuted.  The acti
170e0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
170f0 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
17100 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e   are the table n
17110 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75  ame and the colu
17120 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  mn name...      
17130 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17140 20 20 20 20 20 20 55 70 64 61 74 65 20 3d 20 32        Update = 2
17150 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  3,....      /// 
17160 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17170 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73 65 20   /// A database 
17180 77 69 6c 6c 20 62 65 20 61 74 74 61 63 68 65 64  will be attached
17190 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   to the connecti
171a0 6f 6e 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  on.  The action-
171b0 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20  specific..      
171c0 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72  /// arguments ar
171d0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  e the database f
171e0 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ile name and a n
171f0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
17200 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17210 0d 0a 20 20 20 20 20 20 41 74 74 61 63 68 20 3d  ..      Attach =
17220 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   24,....      //
17230 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17240 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73     /// A databas
17250 65 20 77 69 6c 6c 20 62 65 20 64 65 74 61 63 68  e will be detach
17260 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e  ed from the conn
17270 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74  ection.  The act
17280 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20  ion-specific..  
17290 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
172a0 73 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61  s are the databa
172b0 73 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  se name and a nu
172c0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
172d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
172e0 0a 20 20 20 20 20 20 44 65 74 61 63 68 20 3d 20  .      Detach = 
172f0 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  25,....      ///
17300 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17310 20 20 2f 2f 2f 20 54 68 65 20 73 63 68 65 6d 61    /// The schema
17320 20 6f 66 20 61 20 74 61 62 6c 65 20 77 69 6c 6c   of a table will
17330 20 62 65 20 61 6c 74 65 72 65 64 2e 20 20 54 68   be altered.  Th
17340 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17350 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
17360 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 64     /// are the d
17370 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64  atabase name and
17380 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
17390 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
173a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 6c  mmary>..      Al
173b0 74 65 72 54 61 62 6c 65 20 3d 20 32 36 2c 0d 0a  terTable = 26,..
173c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
173d0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
173e0 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62   An index will b
173f0 65 20 64 65 6c 65 74 65 64 20 61 6e 64 20 74 68  e deleted and th
17400 65 6e 20 72 65 63 72 65 61 74 65 64 2e 20 20 54  en recreated.  T
17410 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
17420 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ic..      /// ar
17430 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
17440 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 61  index name and a
17450 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
17460 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17470 79 3e 0d 0a 20 20 20 20 20 20 52 65 69 6e 64 65  y>..      Reinde
17480 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20 20 20 20  x = 27,....     
17490 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
174a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
174b0 65 20 77 69 6c 6c 20 62 65 20 61 6e 61 6c 79 7a  e will be analyz
174c0 65 64 20 74 6f 20 67 61 74 68 65 72 73 20 73 74  ed to gathers st
174d0 61 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 69  atistics about i
174e0 74 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f  t.  The..      /
174f0 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  // action-specif
17500 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
17510 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
17520 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
17530 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17540 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
17550 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d 0a 0d 0a  nalyze = 28,....
17560 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17570 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17580 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77   virtual table w
17590 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
175a0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
175b0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
175c0 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
175d0 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
175e0 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65   the module name
175f0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17600 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
17610 72 65 61 74 65 56 74 61 62 6c 65 20 3d 20 32 39  reateVtable = 29
17620 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17630 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17640 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61  /// A virtual ta
17650 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  ble will be drop
17660 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
17670 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
17680 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
17690 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  // the table nam
176a0 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65  e and the module
176b0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
176c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
176d0 20 20 20 20 44 72 6f 70 56 74 61 62 6c 65 20 3d      DropVtable =
176e0 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   30,....      //
176f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17700 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20 66 75 6e     /// A SQL fun
17710 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61  ction will be ca
17720 6c 6c 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  lled.  The actio
17730 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
17740 65 6e 74 73 20 61 72 65 20 61 0d 0a 20 20 20 20  ents are a..    
17750 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61 6c 75 65    /// null value
17760 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f   and the functio
17770 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  n name...      /
17780 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17790 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 20 3d 20       Function = 
177a0 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  31,....      ///
177b0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
177c0 20 20 2f 2f 2f 20 41 20 73 61 76 65 70 6f 69 6e    /// A savepoin
177d0 74 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  t will be create
177e0 64 2c 20 72 65 6c 65 61 73 65 64 2c 20 6f 72 20  d, released, or 
177f0 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54 68  rolled back.  Th
17800 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74  e..      /// act
17810 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17820 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 6e  uments are the n
17830 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61  ame of the opera
17840 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20 20  tion (BEGIN,..  
17850 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41 53 45 2c      /// RELEASE,
17860 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e   or ROLLBACK) an
17870 64 20 74 68 65 20 73 61 76 65 70 6f 69 6e 74 20  d the savepoint 
17880 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
17890 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
178a0 20 20 20 53 61 76 65 70 6f 69 6e 74 20 3d 20 33     Savepoint = 3
178b0 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  2,....      /// 
178c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
178d0 20 2f 2f 2f 20 41 20 72 65 63 75 72 73 69 76 65   /// A recursive
178e0 20 71 75 65 72 79 20 77 69 6c 6c 20 62 65 20 65   query will be e
178f0 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
17900 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
17910 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
17920 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75 6c 6c 20  // are two null 
17930 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
17940 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17950 20 20 20 20 20 52 65 63 75 72 73 69 76 65 20 3d       Recursive =
17960 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f   33..  }....  //
17970 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
17980 2f 2f 20 54 68 65 20 70 6f 73 73 69 62 6c 65 20  // The possible 
17990 72 65 74 75 72 6e 20 63 6f 64 65 73 20 66 6f 72  return codes for
179a0 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 63 61   the progress ca
179b0 6c 6c 62 61 63 6b 2e 0d 0a 20 20 2f 2f 2f 20 3c  llback...  /// <
179c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
179d0 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 50  lic enum SQLiteP
179e0 72 6f 67 72 65 73 73 52 65 74 75 72 6e 43 6f 64  rogressReturnCod
179f0 65 20 2f 2a 20 69 6e 74 20 2a 2f 0d 0a 20 20 7b  e /* int */..  {
17a00 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17a10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17a20 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73   The operation s
17a30 68 6f 75 6c 64 20 63 6f 6e 74 69 6e 75 65 2e 0d  hould continue..
17a40 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17a50 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e  mary>..      Con
17a60 74 69 6e 75 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20  tinue = 0,....  
17a70 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17a80 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
17a90 20 6f 70 65 72 61 74 69 6f 6e 20 73 68 6f 75 6c   operation shoul
17aa0 64 20 62 65 20 69 6e 74 65 72 72 75 70 74 65 64  d be interrupted
17ab0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17ac0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49  ummary>..      I
17ad0 6e 74 65 72 72 75 70 74 20 3d 20 31 0d 0a 20 20  nterrupt = 1..  
17ae0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
17af0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
17b00 72 65 74 75 72 6e 20 63 6f 64 65 20 66 6f 72 20  return code for 
17b10 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c 6c  the current call
17b20 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68 6f 72   into the author
17b30 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  izer...  /// </s
17b40 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
17b50 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41 75 74  c enum SQLiteAut
17b60 68 6f 72 69 7a 65 72 52 65 74 75 72 6e 43 6f 64  horizerReturnCod
17b70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
17b80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17b90 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 69 6f     /// The actio
17ba0 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c 6f 77 65  n will be allowe
17bb0 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
17bc0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17bd0 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20  Ok = 0,....     
17be0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17bf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 76        /// The ov
17c00 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20 77 69 6c  erall action wil
17c10 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 20  l be disallowed 
17c20 61 6e 64 20 61 6e 20 65 72 72 6f 72 20 6d 65 73  and an error mes
17c30 73 61 67 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20  sage will be..  
17c40 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 65 64      /// returned
17c50 20 66 72 6f 6d 20 74 68 65 20 71 75 65 72 79 20   from the query 
17c60 70 72 65 70 61 72 61 74 69 6f 6e 20 6d 65 74 68  preparation meth
17c70 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
17c80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
17c90 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20   Deny = 1,....  
17ca0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17cb0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
17cc0 20 73 70 65 63 69 66 69 63 20 61 63 74 69 6f 6e   specific action
17cd0 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f   will be disallo
17ce0 77 65 64 3b 20 68 6f 77 65 76 65 72 2c 20 74 68  wed; however, th
17cf0 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e  e overall action
17d00 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c  ..      /// will
17d10 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54 68 65 20   continue.  The 
17d20 65 78 61 63 74 20 65 66 66 65 63 74 73 20 6f 66  exact effects of
17d30 20 74 68 69 73 20 72 65 74 75 72 6e 20 63 6f 64   this return cod
17d40 65 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67  e vary depending
17d50 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 20 74  ..      /// on t
17d60 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74 69  he specific acti
17d70 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65 72  on, please refer
17d80 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
17d90 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  ore library..   
17da0 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65 6e 74 61     /// documenta
17db0 74 69 6f 6e 20 66 6f 72 20 66 75 74 68 65 72 20  tion for futher 
17dc0 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  details...      
17dd0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17de0 20 20 20 20 20 20 49 67 6e 6f 72 65 20 3d 20 32        Ignore = 2
17df0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
17e00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
17e10 43 6c 61 73 73 20 75 73 65 64 20 69 6e 74 65 72  Class used inter
17e20 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65 72 6d 69  nally to determi
17e30 6e 65 20 74 68 65 20 64 61 74 61 74 79 70 65 20  ne the datatype 
17e40 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 61  of a column in a
17e50 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20 2f 2f   resultset..  //
17e60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17e70 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
17e80 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79 70 65  class SQLiteType
17e90 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ..  {..    /// <
17ea0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
17eb0 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f 66 20  / The DbType of 
17ec0 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20 44  the column, or D
17ed0 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69 66 20  bType.Object if 
17ee0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
17ef0 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f  ermined..    ///
17f00 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17f10 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65   internal DbType
17f20 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f 2f 20   Type;..    /// 
17f30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
17f40 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74 79 20  // The affinity 
17f50 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75 73 65  of a column, use
17f60 64 20 66 6f 72 20 65 78 70 72 65 73 73 69 6f 6e  d for expression
17f70 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65 20 69  s or when Type i
17f80 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 0d  s DbType.Object.
17f90 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
17fa0 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
17fb0 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 41  l TypeAffinity A
17fc0 66 66 69 6e 69 74 79 3b 0d 0a 0d 0a 20 20 20 20  ffinity;....    
17fd0 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
18020 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18030 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72  ..    /// Constr
18040 75 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69  ucts a default i
18050 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
18060 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  type...    /// <
18070 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
18080 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65  ublic SQLiteType
18090 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
180a0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
180b0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
180c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18120 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
18130 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
18140 66 20 74 68 69 73 20 74 79 70 65 20 77 69 74 68  f this type with
18150 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
18160 69 65 6c 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  ield values...  
18170 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18180 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
18190 20 6e 61 6d 65 3d 22 61 66 66 69 6e 69 74 79 22   name="affinity"
181a0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
181b0 79 70 65 20 61 66 66 69 6e 69 74 79 20 74 6f 20  ype affinity to 
181c0 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77 20  use for the new 
181d0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
181e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
181f0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
18200 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="type">..    //
18210 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 74  / The database t
18220 79 70 65 20 74 6f 20 75 73 65 20 66 6f 72 20 74  ype to use for t
18230 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e  he new instance.
18240 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
18250 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53  m>..    public S
18260 51 4c 69 74 65 54 79 70 65 28 0d 0a 20 20 20 20  QLiteType(..    
18270 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 61    TypeAffinity a
18280 66 66 69 6e 69 74 79 2c 0d 0a 20 20 20 20 20 20  ffinity,..      
18290 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20 20 20  DbType type..   
182a0 20 20 20 29 0d 0a 20 20 20 20 20 20 3a 20 74 68     )..      : th
182b0 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  is()..    {..   
182c0 20 20 20 74 68 69 73 2e 41 66 66 69 6e 69 74 79     this.Affinity
182d0 20 3d 20 61 66 66 69 6e 69 74 79 3b 0d 0a 20 20   = affinity;..  
182e0 20 20 20 20 74 68 69 73 2e 54 79 70 65 20 3d 20      this.Type = 
182f0 74 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  type;..    }..  
18300 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e  ////....  intern
18360 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
18370 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 0d  SQLiteDbTypeMap.
18380 0a 20 20 20 20 20 20 3a 20 44 69 63 74 69 6f 6e  .      : Diction
18390 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69  ary<string, SQLi
183a0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e  teDbTypeMapping>
183b0 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65  ..  {..      #re
183c0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
183d0 61 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  a..      private
183e0 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79   Dictionary<DbTy
183f0 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65  pe, SQLiteDbType
18400 4d 61 70 70 69 6e 67 3e 20 72 65 76 65 72 73 65  Mapping> reverse
18410 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
18420 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
18430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18480 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
18490 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
184a0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
184b0 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20 20  DbTypeMap()..   
184c0 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e 65         : base(ne
184d0 77 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67  w TypeNameString
184e0 43 6f 6d 70 61 72 65 72 28 29 29 0d 0a 20 20 20  Comparer())..   
184f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18500 72 65 76 65 72 73 65 20 3d 20 6e 65 77 20 44 69  reverse = new Di
18510 63 74 69 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c  ctionary<DbType,
18520 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
18530 70 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20  ping>();..      
18540 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
18550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18590 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
185a0 62 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70  blic SQLiteDbTyp
185b0 65 4d 61 70 28 0d 0a 20 20 20 20 20 20 20 20 20  eMap(..         
185c0 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c   IEnumerable<SQL
185d0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
185e0 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20  > collection..  
185f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
18600 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
18610 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18620 20 20 41 64 64 28 63 6f 6c 6c 65 63 74 69 6f 6e    Add(collection
18630 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
18640 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18650 0a 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
186b0 6e 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74  n System.Collect
186c0 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 44 69 63  ions.Generic.Dic
186d0 74 69 6f 6e 61 72 79 20 22 4f 76 65 72 72 69 64  tionary "Overrid
186e0 65 73 22 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  es"..      publi
186f0 63 20 6e 65 77 20 69 6e 74 20 43 6c 65 61 72 28  c new int Clear(
18700 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
18710 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74        int result
18720 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
18730 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20 21     if (reverse !
18740 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
18750 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18760 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20 72 65      result += re
18770 76 65 72 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20 20  verse.Count;..  
18780 20 20 20 20 20 20 20 20 20 20 20 20 72 65 76 65              reve
18790 72 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20  rse.Clear();..  
187a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
187b0 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d         result +=
187c0 20 62 61 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20 20   base.Count;..  
187d0 20 20 20 20 20 20 20 20 62 61 73 65 2e 43 6c 65          base.Cle
187e0 61 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ar();....       
187f0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
18800 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
18810 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
18820 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18870 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
18880 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
18890 70 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ping Helper Meth
188a0 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ods..      publi
188b0 63 20 76 6f 69 64 20 41 64 64 28 0d 0a 20 20 20  c void Add(..   
188c0 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62         IEnumerab
188d0 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d  le<SQLiteDbTypeM
188e0 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69  apping> collecti
188f0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  on..          ).
18900 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
18910 20 20 20 20 69 66 20 28 63 6f 6c 6c 65 63 74 69      if (collecti
18920 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
18930 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
18940 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
18950 6c 45 78 63 65 70 74 69 6f 6e 28 22 63 6f 6c 6c  lException("coll
18960 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a 20 20 20  ection");....   
18970 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
18980 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
18990 69 6e 67 20 69 74 65 6d 20 69 6e 20 63 6f 6c 6c  ing item in coll
189a0 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20  ection)..       
189b0 20 20 20 20 20 20 20 41 64 64 28 69 74 65 6d 29         Add(item)
189c0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
189d0 20 20 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 0d 0a 0d  /////////////...
18a20 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f  .      public vo
18a30 69 64 20 41 64 64 28 53 51 4c 69 74 65 44 62 54  id Add(SQLiteDbT
18a40 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 29  ypeMapping item)
18a50 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18a60 20 20 20 20 20 69 66 20 28 69 74 65 6d 20 3d 3d       if (item ==
18a70 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
18a80 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
18a90 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
18aa0 70 74 69 6f 6e 28 22 69 74 65 6d 22 29 3b 0d 0a  ption("item");..
18ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
18ac0 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 20 3d 3d  item.typeName ==
18ad0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
18ae0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
18af0 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f  ArgumentExceptio
18b00 6e 28 22 69 74 65 6d 20 74 79 70 65 20 6e 61 6d  n("item type nam
18b10 65 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c  e cannot be null
18b20 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
18b30 20 62 61 73 65 2e 41 64 64 28 69 74 65 6d 2e 74   base.Add(item.t
18b40 79 70 65 4e 61 6d 65 2c 20 69 74 65 6d 29 3b 0d  ypeName, item);.
18b50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
18b60 28 69 74 65 6d 2e 70 72 69 6d 61 72 79 29 0d 0a  (item.primary)..
18b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18b80 76 65 72 73 65 2e 41 64 64 28 69 74 65 6d 2e 64  verse.Add(item.d
18b90 61 74 61 54 79 70 65 2c 20 69 74 65 6d 29 3b 0d  ataType, item);.
18ba0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
18bb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
18bc0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18c10 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44  .      #region D
18c20 62 54 79 70 65 20 48 65 6c 70 65 72 20 4d 65 74  bType Helper Met
18c30 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c  hods..      publ
18c40 69 63 20 62 6f 6f 6c 20 43 6f 6e 74 61 69 6e 73  ic bool Contains
18c50 4b 65 79 28 44 62 54 79 70 65 20 6b 65 79 29 0d  Key(DbType key).
18c60 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
18c70 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
18c80 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
18c90 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
18ca0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
18cb0 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73     return revers
18cc0 65 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28 6b 65  e.ContainsKey(ke
18cd0 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  y);..      }....
18ce0 20 20 20 20 20 20 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 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
18d30 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  ...      public 
18d40 62 6f 6f 6c 20 54 72 79 47 65 74 56 61 6c 75 65  bool TryGetValue
18d50 28 44 62 54 79 70 65 20 6b 65 79 2c 20 6f 75 74  (DbType key, out
18d60 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
18d70 70 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ping value)..   
18d80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18d90 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e  if (reverse == n
18da0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
18db0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18dc0 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
18dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18de0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
18df0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
18e00 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 76        return rev
18e10 65 72 73 65 2e 54 72 79 47 65 74 56 61 6c 75 65  erse.TryGetValue
18e20 28 6b 65 79 2c 20 6f 75 74 20 76 61 6c 75 65 29  (key, out value)
18e30 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
18e40 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18e90 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f  .      public bo
18ea0 6f 6c 20 52 65 6d 6f 76 65 28 44 62 54 79 70 65  ol Remove(DbType
18eb0 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a   key)..      {..
18ec0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
18ed0 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
18ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18ef0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
18f00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
18f10 72 65 76 65 72 73 65 2e 52 65 6d 6f 76 65 28 6b  reverse.Remove(k
18f20 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ey);..      }.. 
18f30 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
18f40 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  .  }....  //////
18f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74  ///////....  int
18fa0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
18fb0 73 73 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ss SQLiteDbTypeM
18fc0 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a 20 20 20  apping..  {..   
18fd0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
18fe0 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 0d 0a  DbTypeMapping(..
18ff0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
19000 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20  ewTypeName,..   
19010 20 20 20 20 20 44 62 54 79 70 65 20 6e 65 77 44       DbType newD
19020 61 74 61 54 79 70 65 2c 0d 0a 20 20 20 20 20 20  ataType,..      
19030 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69 6d 61 72    bool newPrimar
19040 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  y..        )..  
19050 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 4e    {..      typeN
19060 61 6d 65 20 3d 20 6e 65 77 54 79 70 65 4e 61 6d  ame = newTypeNam
19070 65 3b 0d 0a 20 20 20 20 20 20 64 61 74 61 54 79  e;..      dataTy
19080 70 65 20 3d 20 6e 65 77 44 61 74 61 54 79 70 65  pe = newDataType
19090 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d 61 72 79  ;..      primary
190a0 20 3d 20 6e 65 77 50 72 69 6d 61 72 79 3b 0d 0a   = newPrimary;..
190b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
190c0 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 74 79 70  ernal string typ
190d0 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69 6e 74 65  eName;..    inte
190e0 72 6e 61 6c 20 44 62 54 79 70 65 20 64 61 74 61  rnal DbType data
190f0 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e 74 65 72  Type;..    inter
19100 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d 61 72 79  nal bool primary
19110 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 6e 74 65  ;..  }....  inte
19120 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
19130 73 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67  s TypeNameString
19140 43 6f 6d 70 61 72 65 72 20 3a 20 49 45 71 75 61  Comparer : IEqua
19150 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72  lityComparer<str
19160 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 23  ing>..  {..    #
19170 72 65 67 69 6f 6e 20 49 45 71 75 61 6c 69 74 79  region IEquality
19180 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e  Comparer<string>
19190 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70 75   Members..    pu
191a0 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  blic bool Equals
191b0 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20  (..      string 
191c0 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20 73 74 72  left,..      str
191d0 69 6e 67 20 72 69 67 68 74 0d 0a 20 20 20 20 20  ing right..     
191e0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
191f0 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
19200 71 75 61 6c 73 28 6c 65 66 74 2c 20 72 69 67 68  quals(left, righ
19210 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69  t, StringCompari
19220 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
19230 65 43 61 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  eCase);..    }..
19240 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
19250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19290 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  /....    public 
192a0 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28  int GetHashCode(
192b0 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 76  ..      string v
192c0 61 6c 75 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20  alue..      ).. 
192d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a     {..      //..
192e0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
192f0 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67 20 74 68  he only thing th
19300 61 74 20 77 65 20 6d 75 73 74 20 67 75 61 72 61  at we must guara
19310 6e 74 65 65 20 68 65 72 65 2c 20 61 63 63 6f 72  ntee here, accor
19320 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ding..      //  
19330 20 20 20 20 20 74 6f 20 74 68 65 20 4d 53 44 4e       to the MSDN
19340 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
19350 6f 72 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70  or IEqualityComp
19360 61 72 65 72 2c 20 69 73 0d 0a 20 20 20 20 20 20  arer, is..      
19370 2f 2f 20 20 20 20 20 20 20 74 68 61 74 20 66 6f  //       that fo
19380 72 20 74 77 6f 20 67 69 76 65 6e 20 73 74 72 69  r two given stri
19390 6e 67 73 2c 20 69 66 20 45 71 75 61 6c 73 20 72  ngs, if Equals r
193a0 65 74 75 72 6e 20 74 72 75 65 20 74 68 65 6e 0d  eturn true then.
193b0 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
193c0 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20  the two strings 
193d0 6d 75 73 74 20 68 61 73 68 20 74 6f 20 74 68 65  must hash to the
193e0 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d 0a 20 20   same value...  
193f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 66      //..      if
19400 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
19410 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
19420 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
19430 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
19440 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 49 6e   value.ToLowerIn
19450 76 61 72 69 61 6e 74 28 29 2e 47 65 74 48 61 73  variant().GetHas
19460 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6c 73 65 0d  hCode();..#else.
19470 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
19480 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 28 29 2e  value.ToLower().
19490 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a  GetHashCode();..
194a0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 65 6c  #endif..      el
194b0 73 65 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f  se..        thro
194c0 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
194d0 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c  llException("val
194e0 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  ue");..    }..  
194f0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
19500 7d 0d 0a 7d 0d 0a                                }..}..