System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0616c7c743d7fcb244ad6b6c35c755fb147b6754:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
0380: 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63 6b   DbType Fallback
0390: 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  DefaultDbType = 
03a0: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d 0a  DbType.Object;..
03b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
03c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
03d0: 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c   fallback defaul
03e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
03f0: 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63 61  name when one ca
0400: 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64  nnot be obtained
0410: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 61   from..    /// a
0420: 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
0430: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ction instance..
0440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0450: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0470: 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61 63 6b   string Fallback
0480: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  DefaultTypeName 
0490: 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
04a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
04b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
04c0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
04d0: 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e  Unix epoch (e.g.
04e0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30   January 1, 1970
04f0: 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e   at midnight, in
0500: 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   UTC)...    /// 
0510: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0520: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
0530: 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69   readonly DateTi
0540: 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a  me UnixEpoch =..
0550: 20 20 20 20 20 20 20 20 6e 65 77 20 44 61 74 65          new Date
0560: 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c  Time(1970, 1, 1,
0570: 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69   0, 0, 0, DateTi
0580: 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a  meKind.Utc);....
0590: 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e      #pragma warn
05a0: 69 6e 67 20 64 69 73 61 62 6c 65 20 34 31 34 0d  ing disable 414.
05b0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
05d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c 45  value of the OLE
05e0: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63   Automation epoc
05f0: 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  h represented as
0600: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 20 20   a Julian day.  
0610: 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 66 69  This..    /// fi
0620: 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  eld cannot be re
0630: 6d 6f 76 65 64 20 61 73 20 74 68 65 20 74 65 73  moved as the tes
0640: 74 20 73 75 69 74 65 20 72 65 6c 69 65 73 20 75  t suite relies u
0650: 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  pon it...    ///
0660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0670: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0680: 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
0690: 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f  OleAutomationEpo
06a0: 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20  chAsJulianDay = 
06b0: 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20 20 20 20  2415018.5;..    
06c0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20  #pragma warning 
06d0: 72 65 73 74 6f 72 65 20 34 31 34 0d 0a 0d 0a 20  restore 414.... 
06e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
06f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
0700: 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20  rmat string for 
0710: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
0720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 49  when using the I
0730: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
0740: 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72  or CurrentCultur
0750: 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20 20  e formats...    
0760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0770: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0780: 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f 72  t string FullFor
0790: 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  mat = "yyyy-MM-d
07a0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66 66  dTHH:mm:ss.fffff
07b0: 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ffK";....    ///
07c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
07e0: 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61 6e 20 44  minimum Julian D
07f0: 61 79 20 76 61 6c 75 65 20 73 75 70 70 6f 72 74  ay value support
0800: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
0810: 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28 31 34 38  ry..    /// (148
0820: 37 33 31 31 36 33 32 30 30 30 30 30 29 2e 0d 0a  731163200000)...
0830: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0840: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
0850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
0860: 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a 64 20 3d  long MinimumJd =
0870: 20 63 6f 6d 70 75 74 65 4a 44 28 44 61 74 65 54   computeJD(DateT
0880: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29 3b 0d 0a  ime.MinValue);..
0890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
08b0: 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  s is the maximum
08c0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
08d0: 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  e supported by t
08e0: 68 69 73 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  his library..   
08f0: 20 2f 2f 2f 20 28 34 36 34 32 36 39 30 36 30 37   /// (4642690607
0900: 39 39 30 30 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f  99000)...    ///
0910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0920: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0930: 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67 20 4d 61  readonly long Ma
0940: 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d 70 75 74  ximumJd = comput
0950: 65 4a 44 28 44 61 74 65 54 69 6d 65 2e 4d 61 78  eJD(DateTime.Max
0960: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  Value);....    /
0970: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0980: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
0990: 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54  f ISO-8601 DateT
09a0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74  ime formats that
09b0: 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73   we support pars
09c0: 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
09e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
09f0: 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46  ing[] _datetimeF
0a00: 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72  ormats = new str
0a10: 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22  ing[] {..      "
0a20: 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  THHmmssK",..    
0a30: 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20    "THHmmK",..   
0a40: 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46     "HH:mm:ss.FFF
0a50: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
0a60: 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20  HH:mm:ssK",..   
0a70: 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20     "HH:mmK",..  
0a80: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a90: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0aa0: 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43  K", /* NOTE: UTC
0ab0: 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f   default (5). */
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
0ad0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d  -dd HH:mm:ssK",.
0ae0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0af0: 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20  dd HH:mmK",..   
0b00: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
0b10: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0b20: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0b30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-ddTHH:mmK",..
0b40: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0b50: 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20  dTHH:mm:ssK",.. 
0b60: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
0b70: 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22  mmssK",..      "
0b80: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d  yyyyMMddHHmmK",.
0b90: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ba0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22  THHmmssFFFFFFFK"
0bb0: 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73  ,..      "THHmms
0bc0: 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d  s",..      "THHm
0bd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  m",..      "HH:m
0be0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a  m:ss.FFFFFFF",..
0bf0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22        "HH:mm:ss"
0c00: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22  ,..      "HH:mm"
0c10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0c20: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0c30: 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a  FFFFF", /* NOTE:
0c40: 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74   Non-UTC default
0c50: 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20   (19). */..     
0c60: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
0c70: 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22  mm:ss",..      "
0c80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0c90: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ca0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
0cb0: 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20  FFFFFF",..      
0cc0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0cd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0ce0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22  -MM-ddTHH:mm:ss"
0cf0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d00: 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20  ddHHmmss",..    
0d10: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22    "yyyyMMddHHmm"
0d20: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d30: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
0d40: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0d50: 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22  MM-dd",..      "
0d60: 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20  yyyyMMdd",..    
0d70: 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20    "yy-MM-dd"..  
0d80: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
0d90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0da0: 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  // The internal 
0db0: 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66  default format f
0dc0: 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
0dd0: 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76  values when conv
0de0: 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20  erting..    /// 
0df0: 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  to a string...  
0e00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
0e20: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0e30: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
0e40: 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74  rmatUtc = _datet
0e50: 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a  imeFormats[5];..
0e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e80: 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c   internal defaul
0e90: 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  t format for loc
0ea0: 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
0eb0: 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  es when converti
0ec0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61  ng..    /// to a
0ed0: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
0ee0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0ef0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f00: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0f10: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f20: 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d  Local = _datetim
0f30: 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d  eFormats[19];...
0f40: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55  y>..    /// An U
0f60: 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e  TF-8 Encoding in
0f70: 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61  stance, so we ca
0f80: 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67  n convert string
0f90: 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54  s to and from UT
0fa0: 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  F-8..    /// </s
0fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
0fc0: 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f  vate static Enco
0fd0: 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77  ding _utf8 = new
0fe0: 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b   UTF8Encoding();
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1000: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1010: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
1020: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  e format for thi
1030: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1050: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
1060: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
1070: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b  _datetimeFormat;
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1090: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
10a0: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
10b0: 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69  eKind for this i
10c0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54    internal DateT
10f0: 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d  imeKind _datetim
1100: 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20  eKind;..    /// 
1110: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1120: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44  // The default D
1130: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1140: 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69  tring for this i
1150: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
1160: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
1180: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
1190: 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d  tString = null;.
11a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74  y>..    /// Init
11c0: 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76  ializes the conv
11d0: 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20  ersion class..  
11e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1200: 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20   name="fmt">The 
1210: 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d  default date/tim
1220: 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20  e format to use 
1230: 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
1240: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1260: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
1270: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
1280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1290: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74  <param name="fmt
12a0: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
12b0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
12c0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
12d0: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
12e0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d   SQLiteConvert(.
12f0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44  .        SQLiteD
1300: 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d  ateFormats fmt,.
1310: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
1320: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
1330: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53       string fmtS
1340: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
1350: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
1360: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d  datetimeFormat =
1370: 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61   fmt;..      _da
1380: 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e  tetimeKind = kin
1390: 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74  d;..      _datet
13a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
13b0: 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20  = fmtString;..  
13c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69    }....    #regi
13d0: 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73  on UTF-8 Convers
13e0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
13f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1400: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1410: 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61  ts a string to a
1420: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62   UTF-8 encoded b
1430: 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20  yte array sized 
1440: 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c  to include a nul
1450: 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68  l-terminating ch
1460: 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f  aracter...    //
1470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1480: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1490: 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54  e="sourceText">T
14a0: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  he string to con
14b0: 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70  vert to UTF-8</p
14c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14d0: 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61  returns>A byte a
14e0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  rray containing 
14f0: 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74  the converted st
1500: 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74  ring plus an ext
1510: 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67  ra 0 terminating
1520: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1530: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1550: 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
1560: 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67  [] ToUTF8(string
1570: 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20   sourceText)..  
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 73    {..      if (s
1590: 6f 75 72 63 65 54 65 78 74 20 3d 3d 20 6e 75 6c  ourceText == nul
15a0: 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d  l) return null;.
15b0: 0a 20 20 20 20 20 20 42 79 74 65 5b 5d 20 62 79  .      Byte[] by
15c0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 20 20  teArray;..      
15d0: 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38  int nlen = _utf8
15e0: 2e 47 65 74 42 79 74 65 43 6f 75 6e 74 28 73 6f  .GetByteCount(so
15f0: 75 72 63 65 54 65 78 74 29 20 2b 20 31 3b 0d 0a  urceText) + 1;..
1600: 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72 61  ..      byteArra
1610: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 6c 65  y = new byte[nle
1620: 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c 65 6e 20  n];..      nlen 
1630: 3d 20 5f 75 74 66 38 2e 47 65 74 42 79 74 65 73  = _utf8.GetBytes
1640: 28 73 6f 75 72 63 65 54 65 78 74 2c 20 30 2c 20  (sourceText, 0, 
1650: 73 6f 75 72 63 65 54 65 78 74 2e 4c 65 6e 67 74  sourceText.Lengt
1660: 68 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 29  h, byteArray, 0)
1670: 3b 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72  ;..      byteArr
1680: 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b 0d 0a 0d  ay[nlen] = 0;...
1690: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79  .      return by
16a0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 7d 0d  teArray;..    }.
16b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
16c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
16d0: 6e 76 65 72 74 20 61 20 44 61 74 65 54 69 6d 65  nvert a DateTime
16e0: 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f   to a UTF-8 enco
16f0: 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  ded, zero-termin
1700: 61 74 65 64 20 62 79 74 65 20 61 72 72 61 79 2e  ated byte array.
1710: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1720: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
1730: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1740: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
1750: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
1760: 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20  function, which 
1770: 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74  first calls ToSt
1780: 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 44 61  ring() on the Da
1790: 74 65 54 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e  teTime, and then
17a0: 20 63 61 6c 6c 73 20 54 6f 55 54 46 38 28 29 20   calls ToUTF8() 
17b0: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f  with the..    //
17c0: 2f 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 2e  / string result.
17d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61  ..    /// </rema
17e0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  rks>..    /// <p
17f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
1800: 69 6d 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61  imeValue">The Da
1810: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
1820: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
1830: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
1840: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73   UTF-8 encoded s
1850: 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  tring, including
1860: 20 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67   a 0 terminating
1870: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1880: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
18a0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 54 6f 55 54  blic byte[] ToUT
18b0: 46 38 28 44 61 74 65 54 69 6d 65 20 64 61 74 65  F8(DateTime date
18c0: 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  TimeValue)..    
18d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
18e0: 54 6f 55 54 46 38 28 54 6f 53 74 72 69 6e 67 28  ToUTF8(ToString(
18f0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 29 3b  dateTimeValue));
1900: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1920: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1930: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49   UTF-8 encoded I
1940: 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73 70 65  ntPtr of the spe
1950: 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e  cified length in
1960: 74 6f 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67  to a .NET string
1970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1980: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1990: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
19a0: 65 73 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69  estring">The poi
19b0: 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
19c0: 72 79 20 77 68 65 72 65 20 74 68 65 20 55 54 46  ry where the UTF
19d0: 2d 38 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63  -8 string is enc
19e0: 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  oded</param>..  
19f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a00: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  e="nativestringl
1a10: 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  en">The number o
1a20: 66 20 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64  f bytes to decod
1a30: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1a40: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74  // <returns>A st
1a50: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
1a60: 74 68 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63  the translated c
1a70: 68 61 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74  haracter(s)</ret
1a80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
1a90: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
1aa0: 20 54 6f 53 74 72 69 6e 67 28 49 6e 74 50 74 72   ToString(IntPtr
1ab0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20 69   nativestring, i
1ac0: 6e 74 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  nt nativestringl
1ad0: 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  en)..    {..    
1ae0: 20 20 72 65 74 75 72 6e 20 55 54 46 38 54 6f 53    return UTF8ToS
1af0: 74 72 69 6e 67 28 6e 61 74 69 76 65 73 74 72 69  tring(nativestri
1b00: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1b10: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  len);..    }....
1b20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
1b40: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f  rts a UTF-8 enco
1b50: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68  ded IntPtr of th
1b60: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1b70: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73  th into a .NET s
1b80: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tring..    /// <
1b90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ba0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1bb0: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68  nativestring">Th
1bc0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1bd0: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68   memory where th
1be0: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69  e UTF-8 string i
1bf0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d  s encoded</param
1c00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1c10: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74  m name="nativest
1c20: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d  ringlen">The num
1c30: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1c40: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a  decode</param>..
1c50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c60: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  >A string contai
1c70: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61  ning the transla
1c80: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29  ted character(s)
1c90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1ca0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1cb0: 72 69 6e 67 20 55 54 46 38 54 6f 53 74 72 69 6e  ring UTF8ToStrin
1cc0: 67 28 49 6e 74 50 74 72 20 6e 61 74 69 76 65 73  g(IntPtr natives
1cd0: 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76  tring, int nativ
1ce0: 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20  estringlen)..   
1cf0: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61   {..      if (na
1d00: 74 69 76 65 73 74 72 69 6e 67 20 3d 3d 20 49 6e  tivestring == In
1d10: 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20 6e 61 74  tPtr.Zero || nat
1d20: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20  ivestringlen == 
1d30: 30 29 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67  0) return String
1d40: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 69  .Empty;..      i
1d50: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  f (nativestringl
1d60: 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 7b  en < 0)..      {
1d70: 0d 0a 20 20 20 20 20 20 20 20 6e 61 74 69 76 65  ..        native
1d80: 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30 3b 0d 0a  stringlen = 0;..
1d90: 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
1da0: 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
1db0: 65 28 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20  e(nativestring, 
1dc0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29  nativestringlen)
1dd0: 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
1de0: 20 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65    nativestringle
1df0: 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n++;....        
1e00: 69 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67  if (nativestring
1e10: 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  len == 0) return
1e20: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
1e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e40: 20 62 79 74 65 5b 5d 20 62 79 74 65 41 72 72 61   byte[] byteArra
1e50: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 61 74  y = new byte[nat
1e60: 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d 3b 0d 0a  ivestringlen];..
1e70: 0d 0a 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e  ..      Marshal.
1e80: 43 6f 70 79 28 6e 61 74 69 76 65 73 74 72 69 6e  Copy(nativestrin
1e90: 67 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 2c  g, byteArray, 0,
1ea0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1eb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
1ec0: 72 6e 20 5f 75 74 66 38 2e 47 65 74 53 74 72 69  rn _utf8.GetStri
1ed0: 6e 67 28 62 79 74 65 41 72 72 61 79 2c 20 30 2c  ng(byteArray, 0,
1ee0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1ef0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
1f00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f10: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f60: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 61 74 65      #region Date
1f70: 54 69 6d 65 20 43 6f 6e 76 65 72 73 69 6f 6e 20  Time Conversion 
1f80: 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 23  Functions..    #
1f90: 72 65 67 69 6f 6e 20 4e 65 77 20 4a 75 6c 69 61  region New Julia
1fa0: 6e 20 44 61 79 20 43 6f 6e 76 65 72 73 69 6f 6e  n Day Conversion
1fb0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 2f 2f   Methods..    //
1fc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1fd0: 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20 74   /// Checks if t
1fe0: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
1ff0: 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
2000: 3e 20 69 73 20 77 69 74 68 69 6e 20 74 68 65 0d  > is within the.
2010: 0a 20 20 20 20 2f 2f 2f 20 73 75 70 70 6f 72 74  .    /// support
2020: 65 64 20 72 61 6e 67 65 20 66 6f 72 20 61 20 4a  ed range for a J
2030: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e  ulian Day value.
2040: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2050: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2060: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d  aram name="jd">.
2070: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c  .    /// The Jul
2080: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2090: 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f   check...    ///
20a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
20b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20c0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
20d0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
20e0: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
20f0: 20 69 73 20 69 6e 20 74 68 65 20 73 75 70 70 6f   is in the suppo
2100: 72 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72 61  rted..    /// ra
2110: 6e 67 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  nge; otherwise, 
2120: 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  zero...    /// <
2130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2140: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
2150: 6f 6c 20 69 73 56 61 6c 69 64 4a 64 28 0d 0a 20  ol isValidJd(.. 
2160: 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a         long jd..
2170: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
2180: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2190: 20 28 28 6a 64 20 3e 3d 20 4d 69 6e 69 6d 75 6d   ((jd >= Minimum
21a0: 4a 64 29 20 26 26 20 28 6a 64 20 3c 3d 20 4d 61  Jd) && (jd <= Ma
21b0: 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a 20 20 20 20  ximumJd));..    
21c0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
2220: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2230: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75  // Converts a Ju
2240: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66  lian Day value f
2250: 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d  rom a <see cref=
2260: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 61  "Double" /> to a
2270: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  n..    /// <see 
2280: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 2e  cref="Int64" />.
2290: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
22a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
22b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61  aram name="julia
22c0: 6e 44 61 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nDay">..    /// 
22d0: 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c  The Julian Day <
22e0: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
22f0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2300: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2310: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2320: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2330: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2340: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2350: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
2360: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
2370: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2390: 63 20 6c 6f 6e 67 20 44 6f 75 62 6c 65 54 6f 4a  c long DoubleToJ
23a0: 64 28 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62  d(..        doub
23b0: 6c 65 20 6a 75 6c 69 61 6e 44 61 79 0d 0a 20 20  le julianDay..  
23c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
23d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
23e0: 6c 6f 6e 67 29 4d 61 74 68 2e 52 6f 75 6e 64 28  long)Math.Round(
23f0: 6a 75 6c 69 61 6e 44 61 79 20 2a 20 38 36 34 30  julianDay * 8640
2400: 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20 20 7d 0d  0000.0);..    }.
2410: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2460: 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
2470: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2480: 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c 69   Converts a Juli
2490: 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66 72 6f  an Day value fro
24a0: 6d 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  m an <see cref="
24b0: 49 6e 74 36 34 22 20 2f 3e 20 74 6f 20 61 0d 0a  Int64" /> to a..
24c0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
24d0: 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 2e 0d 0a  f="Double" />...
24e0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
24f0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2500: 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20  am name="jd">.. 
2510: 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61     /// The Julia
2520: 6e 20 44 61 79 20 3c 73 65 65 20 63 72 65 66 3d  n Day <see cref=
2530: 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
2540: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20   to convert...  
2550: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
2560: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2570: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
2580: 65 73 75 6c 74 69 6e 67 20 4a 75 6c 69 61 6e 20  esulting Julian 
2590: 44 61 79 20 3c 73 65 65 20 63 72 65 66 3d 22 44  Day <see cref="D
25a0: 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e  ouble" /> value.
25b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
25c0: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
25d0: 65 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20  e static double 
25e0: 4a 64 54 6f 44 6f 75 62 6c 65 28 0d 0a 20 20 20  JdToDouble(..   
25f0: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a 20 20       long jd..  
2600: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
2610: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2620: 64 6f 75 62 6c 65 29 28 6a 64 20 2f 20 38 36 34  double)(jd / 864
2630: 30 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20 20 7d  00000.0);..    }
2640: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
26a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
26b0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75 6c  / Converts a Jul
26c0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
26d0: 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
26e0: 74 65 54 69 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20  teTime" />...   
26f0: 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
2700: 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20   was translated 
2710: 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74  from the "comput
2720: 65 59 4d 44 22 20 66 75 6e 63 74 69 6f 6e 20 69  eYMD" function i
2730: 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 22  n the..    /// "
2740: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
2750: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
2760: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
2770: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
2780: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2790: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22  <param name="jd"
27a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a  >..    /// The J
27b0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
27c0: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
27d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
27e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27f0: 6d 65 3d 22 62 61 64 56 61 6c 75 65 22 3e 0d 0a  me="badValue">..
2800: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2810: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
2820: 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 72 65 74   /> value to ret
2830: 75 72 6e 20 69 6e 20 74 68 65 20 65 76 65 6e 74  urn in the event
2840: 20 74 68 61 74 20 74 68 65 0d 0a 20 20 20 20 2f   that the..    /
2850: 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 69 73  // Julian Day is
2860: 20 6f 75 74 20 6f 66 20 74 68 65 20 73 75 70 70   out of the supp
2870: 6f 72 74 65 64 20 72 61 6e 67 65 2e 20 20 49 66  orted range.  If
2880: 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e   this value is n
2890: 75 6c 6c 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ull,..    /// an
28a0: 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20   exception will 
28b0: 62 65 20 74 68 72 6f 77 6e 20 69 6e 73 74 65 61  be thrown instea
28c0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
28d0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
28e0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
28f0: 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   A <see cref="Da
2900: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
2910: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74   that contains t
2920: 68 65 20 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20  he year, month, 
2930: 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 79  and..    /// day
2940: 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72 65   values that are
2950: 20 63 6c 6f 73 65 73 74 20 74 6f 20 74 68 65 20   closest to the 
2960: 73 70 65 63 69 66 69 65 64 20 4a 75 6c 69 61 6e  specified Julian
2970: 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20   Day value...   
2980: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
2990: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
29a0: 74 69 63 20 44 61 74 65 54 69 6d 65 20 63 6f 6d  tic DateTime com
29b0: 70 75 74 65 59 4d 44 28 0d 0a 20 20 20 20 20 20  puteYMD(..      
29c0: 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20    long jd,..    
29d0: 20 20 20 20 44 61 74 65 54 69 6d 65 3f 20 62 61      DateTime? ba
29e0: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  dValue..        
29f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
2a00: 20 20 69 66 20 28 21 69 73 56 61 6c 69 64 4a 64    if (!isValidJd
2a10: 28 6a 64 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  (jd))..        {
2a20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2a30: 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75   (badValue == nu
2a40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a60: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
2a70: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
2a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a90: 20 20 20 20 20 20 22 4e 6f 74 20 61 20 73 75 70        "Not a sup
2aa0: 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e 20 44 61  ported Julian Da
2ab0: 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20  y value.");..   
2ac0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2ad0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ae0: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
2af0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
2b00: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 5a  ...        int Z
2b10: 2c 20 41 2c 20 42 2c 20 43 2c 20 44 2c 20 45 2c  , A, B, C, D, E,
2b20: 20 58 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20   X1;....        
2b30: 5a 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b 20  Z = (int)((jd + 
2b40: 34 33 32 30 30 30 30 30 29 20 2f 20 38 36 34 30  43200000) / 8640
2b50: 30 30 30 30 29 3b 0d 0a 20 20 20 20 20 20 20 20  0000);..        
2b60: 41 20 3d 20 28 69 6e 74 29 28 28 5a 20 2d 20 31  A = (int)((Z - 1
2b70: 38 36 37 32 31 36 2e 32 35 29 20 2f 20 33 36 35  867216.25) / 365
2b80: 32 34 2e 32 35 29 3b 0d 0a 20 20 20 20 20 20 20  24.25);..       
2b90: 20 41 20 3d 20 5a 20 2b 20 31 20 2b 20 41 20 2d   A = Z + 1 + A -
2ba0: 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20   (A / 4);..     
2bb0: 20 20 20 42 20 3d 20 41 20 2b 20 31 35 32 34 3b     B = A + 1524;
2bc0: 0d 0a 20 20 20 20 20 20 20 20 43 20 3d 20 28 69  ..        C = (i
2bd0: 6e 74 29 28 28 42 20 2d 20 31 32 32 2e 31 29 20  nt)((B - 122.1) 
2be0: 2f 20 33 36 35 2e 32 35 29 3b 0d 0a 20 20 20 20  / 365.25);..    
2bf0: 20 20 20 20 44 20 3d 20 28 33 36 35 32 35 20 2a      D = (36525 *
2c00: 20 43 29 20 2f 20 31 30 30 3b 0d 0a 20 20 20 20   C) / 100;..    
2c10: 20 20 20 20 45 20 3d 20 28 69 6e 74 29 28 28 42      E = (int)((B
2c20: 20 2d 20 44 29 20 2f 20 33 30 2e 36 30 30 31 29   - D) / 30.6001)
2c30: 3b 0d 0a 20 20 20 20 20 20 20 20 58 31 20 3d 20  ;..        X1 = 
2c40: 28 69 6e 74 29 28 33 30 2e 36 30 30 31 20 2a 20  (int)(30.6001 * 
2c50: 45 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  E);....        i
2c60: 6e 74 20 64 61 79 2c 20 6d 6f 6e 74 68 2c 20 79  nt day, month, y
2c70: 65 61 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ear;....        
2c80: 64 61 79 20 3d 20 42 20 2d 20 44 20 2d 20 58 31  day = B - D - X1
2c90: 3b 0d 0a 20 20 20 20 20 20 20 20 6d 6f 6e 74 68  ;..        month
2ca0: 20 3d 20 45 20 3c 20 31 34 20 3f 20 45 20 2d 20   = E < 14 ? E - 
2cb0: 31 20 3a 20 45 20 2d 20 31 33 3b 0d 0a 20 20 20  1 : E - 13;..   
2cc0: 20 20 20 20 20 79 65 61 72 20 3d 20 6d 6f 6e 74       year = mont
2cd0: 68 20 3e 20 32 20 3f 20 43 20 2d 20 34 37 31 36  h > 2 ? C - 4716
2ce0: 20 3a 20 43 20 2d 20 34 37 31 35 3b 0d 0a 0d 0a   : C - 4715;....
2cf0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
2d00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d10: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44      return new D
2d20: 61 74 65 54 69 6d 65 28 79 65 61 72 2c 20 6d 6f  ateTime(year, mo
2d30: 6e 74 68 2c 20 64 61 79 29 3b 0d 0a 20 20 20 20  nth, day);..    
2d40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63      }..        c
2d50: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d  atch..        {.
2d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2d70: 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c  (badValue == nul
2d80: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2d90: 20 20 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a 20 20      throw;....  
2da0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2db0: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
2dc0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
2dd0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2e40: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
2e50: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
2e60: 6c 75 65 20 74 6f 20 61 20 3c 73 65 65 20 63 72  lue to a <see cr
2e70: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
2e80: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
2e90: 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73  method was trans
2ea0: 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22  lated from the "
2eb0: 63 6f 6d 70 75 74 65 48 4d 53 22 20 66 75 6e 63  computeHMS" func
2ec0: 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20  tion in the..   
2ed0: 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22 20 66 69   /// "date.c" fi
2ee0: 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20  le belonging to 
2ef0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2f00: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
2f10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2f20: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2f30: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
2f40: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
2f50: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
2f60: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2f70: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
2f80: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c  ram name="badVal
2f90: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
2fa0: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  e <see cref="Dat
2fb0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
2fc0: 74 6f 20 72 65 74 75 72 6e 20 69 6e 20 74 68 65  to return in the
2fd0: 20 65 76 65 6e 74 20 74 68 61 74 20 74 68 65 0d   event that the.
2fe0: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
2ff0: 44 61 79 20 76 61 6c 75 65 20 69 73 20 6f 75 74  Day value is out
3000: 20 6f 66 20 74 68 65 20 73 75 70 70 6f 72 74 65   of the supporte
3010: 64 20 72 61 6e 67 65 2e 20 20 49 66 20 74 68 69  d range.  If thi
3020: 73 20 76 61 6c 75 65 20 69 73 0d 0a 20 20 20 20  s value is..    
3030: 2f 2f 2f 20 6e 75 6c 6c 2c 20 61 6e 20 65 78 63  /// null, an exc
3040: 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 74  eption will be t
3050: 68 72 6f 77 6e 20 69 6e 73 74 65 61 64 2e 0d 0a  hrown instead...
3060: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3070: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
3080: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 3c  ns>..    /// A <
3090: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
30a0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 68 61  me" /> value tha
30b0: 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 68  t contains the h
30c0: 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 61 6e 64  our, minute, and
30d0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 63 6f 6e 64  ..    /// second
30e0: 2c 20 61 6e 64 20 6d 69 6c 6c 69 73 65 63 6f 6e  , and millisecon
30f0: 64 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72  d values that ar
3100: 65 20 63 6c 6f 73 65 73 74 20 74 6f 20 74 68 65  e closest to the
3110: 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20   specified..    
3120: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  /// Julian Day v
3130: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
3140: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
3150: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 44 61  rivate static Da
3160: 74 65 54 69 6d 65 20 63 6f 6d 70 75 74 65 48 4d  teTime computeHM
3170: 53 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67  S(..        long
3180: 20 6a 64 2c 0d 0a 20 20 20 20 20 20 20 20 44 61   jd,..        Da
3190: 74 65 54 69 6d 65 3f 20 62 61 64 56 61 6c 75 65  teTime? badValue
31a0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
31b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
31c0: 21 69 73 56 61 6c 69 64 4a 64 28 6a 64 29 29 0d  !isValidJd(jd)).
31d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
31e0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
31f0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
3200: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
3220: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
3230: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
3240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3250: 22 4e 6f 74 20 61 20 73 75 70 70 6f 72 74 65 64  "Not a supported
3260: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
3270: 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  e.");..         
3280: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3290: 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74 65      return (Date
32a0: 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a  Time)badValue;..
32b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
32c0: 20 20 20 20 20 69 6e 74 20 73 69 3b 0d 0a 0d 0a       int si;....
32d0: 20 20 20 20 20 20 20 20 73 69 20 3d 20 28 69 6e          si = (in
32e0: 74 29 28 28 6a 64 20 2b 20 34 33 32 30 30 30 30  t)((jd + 4320000
32f0: 30 29 20 25 20 38 36 34 30 30 30 30 30 29 3b 0d  0) % 86400000);.
3300: 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 63 69 6d  ...        decim
3310: 61 6c 20 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20  al sd;....      
3320: 20 20 73 64 20 3d 20 73 69 20 2f 20 31 30 30 30    sd = si / 1000
3330: 2e 30 4d 3b 0d 0a 20 20 20 20 20 20 20 20 73 69  .0M;..        si
3340: 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a 0d 0a 20   = (int)sd;.... 
3350: 20 20 20 20 20 20 20 69 6e 74 20 6d 69 6c 6c 69         int milli
3360: 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29 28 28  second = (int)((
3370: 73 64 20 2d 20 73 69 29 20 2a 20 31 30 30 30 2e  sd - si) * 1000.
3380: 30 4d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  0M);....        
3390: 73 64 20 2d 3d 20 73 69 3b 0d 0a 0d 0a 20 20 20  sd -= si;....   
33a0: 20 20 20 20 20 69 6e 74 20 68 6f 75 72 3b 0d 0a       int hour;..
33b0: 0d 0a 20 20 20 20 20 20 20 20 68 6f 75 72 20 3d  ..        hour =
33c0: 20 73 69 20 2f 20 33 36 30 30 3b 0d 0a 20 20 20   si / 3600;..   
33d0: 20 20 20 20 20 73 69 20 2d 3d 20 68 6f 75 72 20       si -= hour 
33e0: 2a 20 33 36 30 30 3b 0d 0a 0d 0a 20 20 20 20 20  * 3600;....     
33f0: 20 20 20 69 6e 74 20 6d 69 6e 75 74 65 3b 0d 0a     int minute;..
3400: 0d 0a 20 20 20 20 20 20 20 20 6d 69 6e 75 74 65  ..        minute
3410: 20 3d 20 73 69 20 2f 20 36 30 3b 0d 0a 20 20 20   = si / 60;..   
3420: 20 20 20 20 20 73 64 20 2b 3d 20 73 69 20 2d 20       sd += si - 
3430: 6d 69 6e 75 74 65 20 2a 20 36 30 3b 0d 0a 0d 0a  minute * 60;....
3440: 20 20 20 20 20 20 20 20 69 6e 74 20 73 65 63 6f          int seco
3450: 6e 64 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a 0d  nd = (int)sd;...
3460: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
3470: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3480: 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 6d 69       DateTime mi
3490: 6e 56 61 6c 75 65 20 3d 20 44 61 74 65 54 69 6d  nValue = DateTim
34a0: 65 2e 4d 69 6e 56 61 6c 75 65 3b 0d 0a 0d 0a 20  e.MinValue;.... 
34b0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
34c0: 6e 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 0d  n new DateTime(.
34d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34e0: 20 6d 69 6e 56 61 6c 75 65 2e 59 65 61 72 2c 20   minValue.Year, 
34f0: 6d 69 6e 56 61 6c 75 65 2e 4d 6f 6e 74 68 2c 20  minValue.Month, 
3500: 6d 69 6e 56 61 6c 75 65 2e 44 61 79 2c 0d 0a 20  minValue.Day,.. 
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68                 h
3520: 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 73 65 63  our, minute, sec
3530: 6f 6e 64 2c 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  ond, millisecond
3540: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
3550: 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
3560: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3570: 20 20 20 20 20 69 66 20 28 62 61 64 56 61 6c 75       if (badValu
3580: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
3590: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
35a0: 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  w;....          
35b0: 20 20 72 65 74 75 72 6e 20 28 44 61 74 65 54 69    return (DateTi
35c0: 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20  me)badValue;..  
35d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
35e0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3630: 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  /....    /// <su
3640: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
3650: 43 6f 6e 76 65 72 74 73 20 61 20 3c 73 65 65 20  Converts a <see 
3660: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
3670: 2f 3e 20 74 6f 20 61 20 4a 75 6c 69 61 6e 20 44  /> to a Julian D
3680: 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  ay value...    /
3690: 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 77  // This method w
36a0: 61 73 20 74 72 61 6e 73 6c 61 74 65 64 20 66 72  as translated fr
36b0: 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75 74 65 4a  om the "computeJ
36c0: 44 22 20 66 75 6e 63 74 69 6f 6e 20 69 6e 0d 0a  D" function in..
36d0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 22 64 61 74      /// the "dat
36e0: 65 2e 63 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67  e.c" file belong
36f0: 69 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 69 74  ing to the SQLit
3700: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  e core library..
3710: 0a 20 20 20 20 2f 2f 2f 20 53 69 6e 63 65 20 74  .    /// Since t
3720: 68 65 20 72 61 6e 67 65 20 6f 66 20 4a 75 6c 69  he range of Juli
3730: 61 6e 20 44 61 79 20 76 61 6c 75 65 73 20 73 75  an Day values su
3740: 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73 20  pported by this 
3750: 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f 2f 2f 20  method..    /// 
3760: 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20 70 6f 73  includes all pos
3770: 73 69 62 6c 65 20 28 76 61 6c 69 64 29 20 76 61  sible (valid) va
3780: 6c 75 65 73 20 6f 66 20 61 20 3c 73 65 65 20 63  lues of a <see c
3790: 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f  ref="DateTime" /
37a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65  >..    /// value
37b0: 2c 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 65  , it should be e
37c0: 78 74 72 65 6d 65 6c 79 20 64 69 66 66 69 63 75  xtremely difficu
37d0: 6c 74 20 66 6f 72 20 74 68 69 73 20 6d 65 74 68  lt for this meth
37e0: 6f 64 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 72  od to..    /// r
37f0: 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f  aise an exceptio
3800: 6e 20 6f 72 20 72 65 74 75 72 6e 20 61 6e 20 75  n or return an u
3810: 6e 64 65 66 69 6e 65 64 20 72 65 73 75 6c 74 2e  ndefined result.
3820: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
3830: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
3840: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
3850: 69 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ime">..    /// T
3860: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61  he <see cref="Da
3870: 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65  teTime" /> value
3880: 20 74 6f 20 63 6f 6e 76 65 72 74 2e 20 20 54 68   to convert.  Th
3890: 69 73 20 76 61 6c 75 65 0d 0a 20 20 20 20 2f 2f  is value..    //
38a0: 2f 20 77 69 6c 6c 20 62 65 20 77 69 74 68 69 6e  / will be within
38b0: 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 3c 73   the range of <s
38c0: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
38d0: 65 2e 4d 69 6e 56 61 6c 75 65 22 20 2f 3e 0d 0a  e.MinValue" />..
38e0: 20 20 20 20 2f 2f 2f 20 28 30 30 3a 30 30 3a 30      /// (00:00:0
38f0: 30 2e 30 30 30 30 30 30 30 2c 20 4a 61 6e 75 61  0.0000000, Janua
3900: 72 79 20 31 2c 20 30 30 30 31 29 20 74 6f 0d 0a  ry 1, 0001) to..
3910: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
3920: 66 3d 22 44 61 74 65 54 69 6d 65 2e 4d 61 78 56  f="DateTime.MaxV
3930: 61 6c 75 65 22 20 2f 3e 20 28 32 33 3a 35 39 3a  alue" /> (23:59:
3940: 35 39 2e 39 39 39 39 39 39 39 2c 20 44 65 63 65  59.9999999, Dece
3950: 6d 62 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 33 31  mber..    /// 31
3960: 2c 20 39 39 39 39 29 2e 0d 0a 20 20 20 20 2f 2f  , 9999)...    //
3970: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
3980: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3990: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 61 72 65     /// The neare
39a0: 73 74 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61  st Julian Day va
39b0: 6c 75 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  lue correspondin
39c0: 67 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69  g to the specifi
39d0: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65  ed..    /// <see
39e0: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
39f0: 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
3a00: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
3a10: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
3a20: 69 63 20 6c 6f 6e 67 20 63 6f 6d 70 75 74 65 4a  ic long computeJ
3a30: 44 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  D(..        Date
3a40: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 0d 0a 20  Time dateTime.. 
3a50: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
3a60: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 59 2c 20  .        int Y, 
3a70: 4d 2c 20 44 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  M, D;....       
3a80: 20 59 20 3d 20 64 61 74 65 54 69 6d 65 2e 59 65   Y = dateTime.Ye
3a90: 61 72 3b 0d 0a 20 20 20 20 20 20 20 20 4d 20 3d  ar;..        M =
3aa0: 20 64 61 74 65 54 69 6d 65 2e 4d 6f 6e 74 68 3b   dateTime.Month;
3ab0: 0d 0a 20 20 20 20 20 20 20 20 44 20 3d 20 64 61  ..        D = da
3ac0: 74 65 54 69 6d 65 2e 44 61 79 3b 0d 0a 0d 0a 20  teTime.Day;.... 
3ad0: 20 20 20 20 20 20 20 69 66 20 28 4d 20 3c 3d 20         if (M <= 
3ae0: 32 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  2)..        {.. 
3af0: 20 20 20 20 20 20 20 20 20 20 20 59 2d 2d 3b 0d             Y--;.
3b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 20 2b  .            M +
3b10: 3d 20 31 32 3b 0d 0a 20 20 20 20 20 20 20 20 7d  = 12;..        }
3b20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
3b30: 41 2c 20 42 2c 20 58 31 2c 20 58 32 3b 0d 0a 0d  A, B, X1, X2;...
3b40: 0a 20 20 20 20 20 20 20 20 41 20 3d 20 59 20 2f  .        A = Y /
3b50: 20 31 30 30 3b 0d 0a 20 20 20 20 20 20 20 20 42   100;..        B
3b60: 20 3d 20 32 20 2d 20 41 20 2b 20 28 41 20 2f 20   = 2 - A + (A / 
3b70: 34 29 3b 0d 0a 20 20 20 20 20 20 20 20 58 31 20  4);..        X1 
3b80: 3d 20 33 36 35 32 35 20 2a 20 28 59 20 2b 20 34  = 36525 * (Y + 4
3b90: 37 31 36 29 20 2f 20 31 30 30 3b 0d 0a 20 20 20  716) / 100;..   
3ba0: 20 20 20 20 20 58 32 20 3d 20 33 30 36 30 30 31       X2 = 306001
3bb0: 20 2a 20 28 4d 20 2b 20 31 29 20 2f 20 31 30 30   * (M + 1) / 100
3bc0: 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c  00;....        l
3bd0: 6f 6e 67 20 6a 64 3b 0d 0a 0d 0a 20 20 20 20 20  ong jd;....     
3be0: 20 20 20 6a 64 20 3d 20 28 6c 6f 6e 67 29 28 28     jd = (long)((
3bf0: 58 31 20 2b 20 58 32 20 2b 20 44 20 2b 20 42 20  X1 + X2 + D + B 
3c00: 2d 20 31 35 32 34 2e 35 29 20 2a 20 38 36 34 30  - 1524.5) * 8640
3c10: 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  0000);....      
3c20: 20 20 6a 64 20 2b 3d 20 28 64 61 74 65 54 69 6d    jd += (dateTim
3c30: 65 2e 48 6f 75 72 20 2a 20 33 36 30 30 30 30 30  e.Hour * 3600000
3c40: 29 20 2b 20 28 64 61 74 65 54 69 6d 65 2e 4d 69  ) + (dateTime.Mi
3c50: 6e 75 74 65 20 2a 20 36 30 30 30 30 29 20 2b 0d  nute * 60000) +.
3c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61  .            (da
3c70: 74 65 54 69 6d 65 2e 53 65 63 6f 6e 64 20 2a 20  teTime.Second * 
3c80: 31 30 30 30 29 20 2b 20 64 61 74 65 54 69 6d 65  1000) + dateTime
3c90: 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 3b 0d 0a 0d  .Millisecond;...
3ca0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
3cb0: 6a 64 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  jd;..    }..    
3cc0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3cd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3d20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
3d30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
3d40: 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e  erts a string in
3d50: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75  to a DateTime, u
3d60: 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d  sing the DateTim
3d70: 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d  eFormat, DateTim
3d80: 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20  eKind,..    /// 
3d90: 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  and DateTimeForm
3da0: 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69  atString specifi
3db0: 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  ed for the conne
3dc0: 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61  ction when it wa
3dd0: 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f  s opened...    /
3de0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3df0: 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e     /// <remarks>
3e00: 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74  ..    /// Accept
3e10: 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74  able ISO8601 Dat
3e20: 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72  eTime formats ar
3e30: 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73  e:..    /// <lis
3e40: 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e  t type="bullet">
3e50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3e60: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
3e70: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  mmssK</descripti
3e80: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
3e90: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
3ea0: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64  iption>THHmmK</d
3eb0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
3ec0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
3ed0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
3ee0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
3ef0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
3f00: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
3f10: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
3f20: 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  n>HH:mm:ssK</des
3f30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
3f40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3f50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
3f60: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
3f70: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3f80: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3f90: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
3fa0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
3fb0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
3fc0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
3fd0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3fe0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
3ff0: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
4000: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4010: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4020: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4030: 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  -dd HH:mmK</desc
4040: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4050: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4060: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4070: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e  -MM-ddTHH:mm:ss.
4080: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
4090: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
40a0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
40b0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
40c0: 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-ddTHH:mmK</des
40d0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
40e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
40f0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4100: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4110: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4120: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4130: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4140: 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73  on>yyyyMMddHHmms
4150: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4160: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4170: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4180: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
4190: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
41a0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
41b0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
41c0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d  on>yyyyMMddTHHmm
41d0: 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  ssFFFFFFFK</desc
41e0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
41f0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4200: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
4210: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mss</description
4220: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4230: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4240: 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63  tion>THHmm</desc
4250: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4260: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4270: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
4280: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
4290: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
42a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
42b0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
42c0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
42d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
42e0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
42f0: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64  ription>HH:mm</d
4300: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4310: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4320: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4330: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
4340: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63  ss.FFFFFFF</desc
4350: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4360: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4370: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4380: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c  -MM-dd HH:mm:ss<
4390: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
43a0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
43b0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
43c0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
43d0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
43e0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
43f0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4400: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4410: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
4420: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4430: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4440: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4450: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
4460: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4470: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4480: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4490: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
44a0: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
44b0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
44c0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
44d0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
44e0: 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69  Hmmss</descripti
44f0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
4500: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
4510: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
4520: 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  Hmm</description
4530: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4540: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4550: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48  tion>yyyyMMddTHH
4560: 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73  mmssFFFFFFF</des
4570: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4580: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4590: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
45a0: 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70  y-MM-dd</descrip
45b0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
45c0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
45d0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
45e0: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
45f0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4600: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4610: 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73  on>yy-MM-dd</des
4620: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4630: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74  ..    /// </list
4640: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  >..    /// If th
4650: 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20  e string cannot 
4660: 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e  be matched to on
4670: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66  e of the above f
4680: 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20  ormats -OR-..   
4690: 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d   /// the DateTim
46a0: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66  eFormatString if
46b0: 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65   one was provide
46c0: 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20  d, an exception 
46d0: 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  will..    /// be
46e0: 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f   thrown...    //
46f0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
4700: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4710: 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 65  e="dateText">The
4720: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
4730: 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67  ng either a long
4740: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
4750: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
4760: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20  d units since.. 
4770: 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61     /// System.Da
4780: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
4790: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f   a Julian day do
47a0: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
47b0: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
47c0: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
47d0: 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20  x epoch, a..    
47e0: 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  /// culture-inde
47f0: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
4800: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  d date and time 
4810: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
4820: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
4830: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
4840: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f  current..    ///
4850: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
4860: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73  ISO8601-format s
4870: 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  tring.</param>..
4880: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4890: 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  >A DateTime valu
48a0: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
48b0: 20 70 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65   public DateTime
48c0: 20 54 6f 44 61 74 65 54 69 6d 65 28 73 74 72 69   ToDateTime(stri
48d0: 6e 67 20 64 61 74 65 54 65 78 74 29 0d 0a 20 20  ng dateText)..  
48e0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
48f0: 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 64 61 74  n ToDateTime(dat
4900: 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65  eText, _datetime
4910: 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d  Format, _datetim
4920: 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65  eKind, _datetime
4930: 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a  FormatString);..
4940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
4950: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
4960: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73  /// Converts a s
4970: 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74  tring into a Dat
4980: 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65  eTime, using the
4990: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54   specified DateT
49a0: 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  imeFormat,..    
49b0: 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  /// DateTimeKind
49c0: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72   and DateTimeFor
49d0: 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20 20 20 20  matString...    
49e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
49f0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
4a00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70  >..    /// Accep
4a10: 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61  table ISO8601 Da
4a20: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61  teTime formats a
4a30: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
4a40: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
4a50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4a60: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4a70: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  HmmssK</descript
4a80: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4a90: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4aa0: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f  ription>THHmmK</
4ab0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4ac0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4ad0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4ae0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4af0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4b00: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4b10: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4b20: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65  on>HH:mm:ssK</de
4b30: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4b40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4b50: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
4b60: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :mmK</descriptio
4b70: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4b80: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4b90: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4ba0: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
4bb0: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FK</description>
4bc0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4bd0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4be0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
4bf0: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
4c00: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4c10: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4c20: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4c30: 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-dd HH:mmK</des
4c40: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4c50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4c60: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4c70: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
4c80: 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72  .FFFFFFFK</descr
4c90: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4ca0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4cb0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
4cc0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65  MM-ddTHH:mmK</de
4cd0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4ce0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4cf0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
4d00: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
4d10: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4d20: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4d30: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4d40: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
4d50: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
4d60: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4d70: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4d80: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
4d90: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
4da0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4db0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4dc0: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d  ion>yyyyMMddTHHm
4dd0: 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  mssFFFFFFFK</des
4de0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4df0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4e00: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
4e10: 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  mmss</descriptio
4e20: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4e30: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4e40: 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73  ption>THHmm</des
4e50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4e70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
4e80: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
4e90: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ea0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4eb0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4ec0: 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70  H:mm:ss</descrip
4ed0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4ee0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4ef0: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f  cription>HH:mm</
4f00: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4f10: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4f20: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4f30: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
4f40: 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73  :ss.FFFFFFF</des
4f50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4f60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4f70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4f80: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
4f90: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4fa0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4fb0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4fc0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4fd0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
4fe0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4ff0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5000: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
5010: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
5020: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
5030: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
5040: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
5050: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
5060: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
5070: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5080: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
5090: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
50a0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
50b0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
50c0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
50d0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
50e0: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74  HHmmss</descript
50f0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
5100: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
5110: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
5120: 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  HHmm</descriptio
5130: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
5140: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
5150: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48  ption>yyyyMMddTH
5160: 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65  HmmssFFFFFFF</de
5170: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5180: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5190: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
51a0: 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69  yy-MM-dd</descri
51b0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
51c0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
51d0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
51e0: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
51f0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5200: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5210: 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65  ion>yy-MM-dd</de
5220: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5230: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73  >..    /// </lis
5240: 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74  t>..    /// If t
5250: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74  he string cannot
5260: 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f   be matched to o
5270: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
5280: 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20  formats -OR-..  
5290: 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69    /// the DateTi
52a0: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69  meFormatString i
52b0: 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64  f one was provid
52c0: 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ed, an exception
52d0: 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62   will..    /// b
52e0: 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f  e thrown...    /
52f0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
5300: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5310: 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68  me="dateText">Th
5320: 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
5330: 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e  ing either a lon
5340: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
5350: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
5360: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a  nd units since..
5370: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44      /// System.D
5380: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
5390: 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  , a Julian day d
53a0: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
53b0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
53c0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
53d0: 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20  ix epoch, a..   
53e0: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64   /// culture-ind
53f0: 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74  ependent formatt
5400: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ed date and time
5410: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
5420: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
5430: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
5440: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f   current..    //
5450: 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e  / culture, or an
5460: 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20   ISO8601-format 
5470: 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d  string.</param>.
5480: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5490: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68  name="format">Th
54a0: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
54b0: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ats to use.</par
54c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
54d0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
54e0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
54f0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
5500: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5510: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72   name="formatStr
5520: 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d  ing">The DateTim
5530: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
5540: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
5550: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
5560: 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c  s>A DateTime val
5570: 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  ue</returns>..  
5580: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
5590: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
55a0: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ime(..        st
55b0: 72 69 6e 67 20 64 61 74 65 54 65 78 74 2c 0d 0a  ring dateText,..
55c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
55d0: 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74  teFormats format
55e0: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  ,..        DateT
55f0: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20  imeKind kind,.. 
5600: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f         string fo
5610: 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20  rmatString..    
5620: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
5630: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 66 6f        switch (fo
5640: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  rmat)..        {
5650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
5660: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
5670: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20  mats.Ticks:..   
5680: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56a0: 20 20 20 20 72 65 74 75 72 6e 20 54 69 63 6b 73      return Ticks
56b0: 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65  ToDateTime(Conve
56c0: 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20 20  rt.ToInt64(..   
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56e0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 43       dateText, C
56f0: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
5700: 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69  iantCulture), ki
5710: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
5720: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5730: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
5740: 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69  DateFormats.Juli
5750: 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20 20  anDay:..        
5760: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5780: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65  eturn ToDateTime
5790: 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62 6c  (Convert.ToDoubl
57a0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
57c0: 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66  Text, CultureInf
57d0: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
57e0: 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  re), kind);..   
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5800: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5810: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
5820: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5850: 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 69        return Uni
5860: 78 45 70 6f 63 68 54 6f 44 61 74 65 54 69 6d 65  xEpochToDateTime
5870: 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 36 34  (Convert.ToInt64
5880: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5890: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
58a0: 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
58b0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
58c0: 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20  e), kind);..    
58d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
58e0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
58f0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
5900: 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  s.InvariantCultu
5910: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re:..           
5920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5930: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5940: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20  formatString != 
5950: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5970: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
5980: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
5990: 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d  ime.ParseExact(.
59a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
59b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
59c0: 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72  eText, formatStr
59d0: 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
59e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59f0: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
5a00: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e  Info.InvariantIn
5a10: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
5a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a30: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
5a40: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5a70: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
5a80: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
5a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ab0: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5ac0: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ae0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5b20: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
5b30: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
5b40: 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20  me.Parse(..     
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
5b70: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
5b80: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
5b90: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
5ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bb0: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
5bc0: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5bf0: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
5c00: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c30: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
5c40: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c60: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
5c70: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5c80: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
5c90: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
5ca0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3a  .CurrentCulture:
5cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5cc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5cd0: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72           if (for
5ce0: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
5cf0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
5d00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5d10: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
5d20: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
5d30: 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20  .ParseExact(..  
5d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d50: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
5d60: 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  xt, formatString
5d70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
5d90: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
5da0: 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a  o.CurrentInfo,..
5db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5dc0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
5dd0: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
5de0: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e00: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5e10: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
5e20: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
5e50: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
5e60: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
5e80: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5e90: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
5ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5eb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5ec0: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
5ed0: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
5ee0: 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rse(..          
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f00: 20 20 64 61 74 65 54 65 78 74 2c 20 44 61 74 65    dateText, Date
5f10: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 43  TimeFormatInfo.C
5f20: 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  urrentInfo,..   
5f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f40: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
5f50: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
5f60: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f80: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5f90: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
5fa0: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
5fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fc0: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5fd0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
6000: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
6010: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
6020: 20 20 20 64 65 66 61 75 6c 74 3a 20 2f 2a 20 49     default: /* I
6030: 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a 20 20 20 20  SO-8601 */..    
6040: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6060: 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72     if (formatStr
6070: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing != null)..  
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6090: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
60a0: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
60b0: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
60c0: 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20  Exact(..        
60d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60e0: 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f      dateText, fo
60f0: 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20  rmatString,..   
6100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6110: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
6120: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
6130: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6150: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
6160: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
6170: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
61a0: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
61b0: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
61e0: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
6210: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6220: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
6230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6240: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
6250: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
6260: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
6270: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6290: 20 20 20 64 61 74 65 54 65 78 74 2c 20 5f 64 61     dateText, _da
62a0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 2c 0d 0a  tetimeFormats,..
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
62d0: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49  TimeFormatInfo.I
62e0: 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20  nvariantInfo,.. 
62f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6300: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
6310: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
6320: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6340: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
6350: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
6360: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
6390: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
63a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
63c0: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
63d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
63e0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
63f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6400: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
6410: 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c   a julianday val
6420: 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69  ue into a DateTi
6430: 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  me..    /// </su
6440: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6450: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c  <param name="jul
6460: 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75  ianDay">The valu
6470: 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61  e to convert</pa
6480: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
6490: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
64a0: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
64b0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61 74  ..    public Dat
64c0: 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65  eTime ToDateTime
64d0: 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61  (double julianDa
64e0: 79 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  y)..    {..     
64f0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
6500: 6d 65 28 6a 75 6c 69 61 6e 44 61 79 2c 20 5f 64  me(julianDay, _d
6510: 61 74 65 74 69 6d 65 4b 69 6e 64 29 3b 0d 0a 20  atetimeKind);.. 
6520: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
6530: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6540: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6a 75  // Converts a ju
6550: 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 20 69 6e  lianday value in
6560: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 0d 0a 20  to a DateTime.. 
6570: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6580: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6590: 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61  m name="julianDa
65a0: 79 22 3e 54 68 65 20 76 61 6c 75 65 20 74 6f 20  y">The value to 
65b0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
65c0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
65d0: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20  name="kind">The 
65e0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20  DateTimeKind to 
65f0: 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  use.</param>..  
6600: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
6610: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
6620: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
6630: 62 6c 69 63 20 73 74 61 74 69 63 20 44 61 74 65  blic static Date
6640: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
6650: 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65  ..        double
6660: 20 6a 75 6c 69 61 6e 44 61 79 2c 0d 0a 20 20 20   julianDay,..   
6670: 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e       DateTimeKin
6680: 64 20 6b 69 6e 64 0d 0a 20 20 20 20 20 20 20 20  d kind..        
6690: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
66a0: 20 20 6c 6f 6e 67 20 6a 64 20 3d 20 44 6f 75 62    long jd = Doub
66b0: 6c 65 54 6f 4a 64 28 6a 75 6c 69 61 6e 44 61 79  leToJd(julianDay
66c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  );..        Date
66d0: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 59 4d 44  Time dateTimeYMD
66e0: 20 3d 20 63 6f 6d 70 75 74 65 59 4d 44 28 6a 64   = computeYMD(jd
66f0: 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
6700: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
6710: 69 6d 65 48 4d 53 20 3d 20 63 6f 6d 70 75 74 65  imeHMS = compute
6720: 48 4d 53 28 6a 64 2c 20 6e 75 6c 6c 29 3b 0d 0a  HMS(jd, null);..
6730: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
6740: 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 0d 0a   new DateTime(..
6750: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
6760: 54 69 6d 65 59 4d 44 2e 59 65 61 72 2c 20 64 61  TimeYMD.Year, da
6770: 74 65 54 69 6d 65 59 4d 44 2e 4d 6f 6e 74 68 2c  teTimeYMD.Month,
6780: 20 64 61 74 65 54 69 6d 65 59 4d 44 2e 44 61 79   dateTimeYMD.Day
6790: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  ,..            d
67a0: 61 74 65 54 69 6d 65 48 4d 53 2e 48 6f 75 72 2c  ateTimeHMS.Hour,
67b0: 20 64 61 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6e   dateTimeHMS.Min
67c0: 75 74 65 2c 20 64 61 74 65 54 69 6d 65 48 4d 53  ute, dateTimeHMS
67d0: 2e 53 65 63 6f 6e 64 2c 0d 0a 20 20 20 20 20 20  .Second,..      
67e0: 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 48 4d        dateTimeHM
67f0: 53 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 2c 20 6b  S.Millisecond, k
6800: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6810: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6820: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6830: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
6840: 64 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  d number of seco
6850: 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 55 6e 69  nds from the Uni
6860: 78 20 65 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a  x epoch into a..
6870: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
6880: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
6890: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
68a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
68b0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
68c0: 22 73 65 63 6f 6e 64 73 22 3e 0d 0a 20 20 20 20  "seconds">..    
68d0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
68e0: 66 20 77 68 6f 6c 65 20 73 65 63 6f 6e 64 73 20  f whole seconds 
68f0: 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
6900: 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  poch...    /// <
6910: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6920: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
6930: 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69  nd">..    /// Ei
6940: 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61  ther Utc or Loca
6950: 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  l time...    ///
6960: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
6970: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
6980: 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
6990: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
69a0: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
69b0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
69c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
69d0: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 55  tatic DateTime U
69e0: 6e 69 78 45 70 6f 63 68 54 6f 44 61 74 65 54 69  nixEpochToDateTi
69f0: 6d 65 28 6c 6f 6e 67 20 73 65 63 6f 6e 64 73 2c  me(long seconds,
6a00: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
6a10: 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  nd)..    {..    
6a20: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
6a30: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
6a40: 55 6e 69 78 45 70 6f 63 68 2e 41 64 64 53 65 63  UnixEpoch.AddSec
6a50: 6f 6e 64 73 28 73 65 63 6f 6e 64 73 29 2c 20 6b  onds(seconds), k
6a60: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6a70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6a90: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
6aa0: 64 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b  d number of tick
6ab0: 73 20 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63  s since the epoc
6ac0: 68 20 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f  h into a..    //
6ad0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
6ae0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
6af0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6b00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
6b10: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b 73  aram name="ticks
6b20: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
6b30: 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20  number of whole 
6b40: 74 69 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20  ticks since the 
6b50: 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20  epoch...    /// 
6b60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6b70: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b  / <param name="k
6b80: 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45  ind">..    /// E
6b90: 69 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63  ither Utc or Loc
6ba0: 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f  al time...    //
6bb0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6bc0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6bd0: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c     /// The new <
6be0: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
6bf0: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
6c00: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
6c10: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6c20: 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20  static DateTime 
6c30: 54 69 63 6b 73 54 6f 44 61 74 65 54 69 6d 65 28  TicksToDateTime(
6c40: 6c 6f 6e 67 20 74 69 63 6b 73 2c 20 44 61 74 65  long ticks, Date
6c50: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a  TimeKind kind)..
6c60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
6c70: 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69  eturn new DateTi
6c80: 6d 65 28 74 69 63 6b 73 2c 20 6b 69 6e 64 29 3b  me(ticks, kind);
6c90: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
6ca0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6cb0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
6cc0: 20 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74   DateTime struct
6cd0: 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44 61 79 20   to a JulianDay 
6ce0: 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20  double..    /// 
6cf0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6d00: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6d10: 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65  "value">The Date
6d20: 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  Time to convert<
6d30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6d40: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 4a 75   <returns>The Ju
6d50: 6c 69 61 6e 44 61 79 20 76 61 6c 75 65 20 74 68  lianDay value th
6d60: 65 20 44 61 74 65 74 69 6d 65 20 72 65 70 72 65  e Datetime repre
6d70: 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73 3e 0d  sents</returns>.
6d80: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
6d90: 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a 75 6c 69  ic double ToJuli
6da0: 61 6e 44 61 79 28 44 61 74 65 54 69 6d 65 20 76  anDay(DateTime v
6db0: 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  alue)..    {..  
6dc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 4a 64 54        return JdT
6dd0: 6f 44 6f 75 62 6c 65 28 63 6f 6d 70 75 74 65 4a  oDouble(computeJ
6de0: 44 28 76 61 6c 75 65 29 29 3b 0d 0a 20 20 20 20  D(value));..    
6df0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
6e00: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
6e10: 43 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54  Converts a DateT
6e20: 69 6d 65 20 73 74 72 75 63 74 20 74 6f 20 74 68  ime struct to th
6e30: 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f  e whole number o
6e40: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
6e50: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 55 6e 69  the..    /// Uni
6e60: 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f  x epoch...    //
6e70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6e80: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
6e90: 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61  e="value">The Da
6ea0: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
6eb0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
6ec0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
6ed0: 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20  whole number of 
6ee0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
6ef0: 65 20 55 6e 69 78 20 65 70 6f 63 68 3c 2f 72 65  e Unix epoch</re
6f00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
6f10: 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 54  ic static long T
6f20: 6f 55 6e 69 78 45 70 6f 63 68 28 44 61 74 65 54  oUnixEpoch(DateT
6f30: 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  ime value)..    
6f40: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
6f50: 6e 20 28 76 61 6c 75 65 2e 53 75 62 74 72 61 63  n (value.Subtrac
6f60: 74 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63  t(UnixEpoch).Tic
6f70: 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69  ks / TimeSpan.Ti
6f80: 63 6b 73 50 65 72 53 65 63 6f 6e 64 29 3b 0d 0a  cksPerSecond);..
6f90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
6fa0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
6fb0: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
6fc0: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20  DateTime format 
6fd0: 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f  string to use fo
6fe0: 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  r the specified 
6ff0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20  DateTimeKind... 
7000: 20 20 20 2f 2f 2f 20 49 66 20 3c 70 61 72 61 6d     /// If <param
7010: 72 65 66 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ref name="format
7020: 53 74 72 69 6e 67 22 20 2f 3e 20 69 73 20 6e 6f  String" /> is no
7030: 74 20 6e 75 6c 6c 2c 20 69 74 20 77 69 6c 6c 20  t null, it will 
7040: 62 65 20 72 65 74 75 72 6e 65 64 20 76 65 72 62  be returned verb
7050: 61 74 69 6d 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  atim...    /// <
7060: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
7070: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7080: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
7090: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
70a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
70b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
70c0: 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  matString">The D
70d0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
70e0: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
70f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
7100: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
7110: 2f 20 54 68 65 20 44 61 74 65 54 69 6d 65 20 66  / The DateTime f
7120: 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20  ormat string to 
7130: 75 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63  use for the spec
7140: 69 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69  ified DateTimeKi
7150: 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  nd...    /// </r
7160: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
7170: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
7180: 6e 67 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69  ng GetDateTimeKi
7190: 6e 64 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  ndFormat(..     
71a0: 20 20 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20     DateTimeKind 
71b0: 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73  kind,..        s
71c0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69  tring formatStri
71d0: 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  ng..        ).. 
71e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
71f0: 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21   (formatString !
7200: 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 66  = null) return f
7210: 6f 72 6d 61 74 53 74 72 69 6e 67 3b 0d 0a 20 20  ormatString;..  
7220: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6b 69        return (ki
7230: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
7240: 6e 64 2e 55 74 63 29 20 3f 20 5f 64 61 74 65 74  nd.Utc) ? _datet
7250: 69 6d 65 46 6f 72 6d 61 74 55 74 63 20 3a 20 5f  imeFormatUtc : _
7260: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 4c 6f  datetimeFormatLo
7270: 63 61 6c 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  cal;..    }.... 
7280: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
7290: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
72a0: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
72b0: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
72c0: 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65 46  ng the DateTimeF
72d0: 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65 4b  ormat, DateTimeK
72e0: 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ind,..    /// an
72f0: 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  d DateTimeFormat
7300: 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65 64  String specified
7310: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
7320: 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20  ion when it was 
7330: 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  opened...    ///
7340: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7350: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7360: 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68 65  ="dateValue">The
7370: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 20   DateTime value 
7380: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
7390: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
73a0: 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73 74  urns>Either a st
73b0: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
73c0: 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72  the long integer
73d0: 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e   number of 100-n
73e0: 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20  anosecond units 
73f0: 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61 74  since System.Dat
7400: 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20  eTime.MinValue, 
7410: 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61  a..    /// Julia
7420: 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e  n day double, an
7430: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
7440: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
7450: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c   the Unix epoch,
7460: 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70   a culture-indep
7470: 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64  endent formatted
7480: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d 0a   date and time..
7490: 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c 20      /// string, 
74a0: 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  a formatted date
74b0: 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67   and time string
74c0: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
74d0: 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49  culture, or an I
74e0: 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64 61  SO8601-format da
74f0: 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e 3c  te/time string.<
7500: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
7510: 75 62 6c 69 63 20 73 74 72 69 6e 67 20 54 6f 53  ublic string ToS
7520: 74 72 69 6e 67 28 44 61 74 65 54 69 6d 65 20 64  tring(DateTime d
7530: 61 74 65 56 61 6c 75 65 29 0d 0a 20 20 20 20 7b  ateValue)..    {
7540: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
7550: 20 54 6f 53 74 72 69 6e 67 28 64 61 74 65 56 61   ToString(dateVa
7560: 6c 75 65 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  lue, _datetimeFo
7570: 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d 65 4b  rmat, _datetimeK
7580: 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ind, _datetimeFo
7590: 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a 20 20  rmatString);..  
75a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
75b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
75c0: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
75d0: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
75e0: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44  ime, using the D
75f0: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44  ateTimeFormat, D
7600: 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20  ateTimeKind,..  
7610: 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69    /// and DateTi
7620: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73  meFormatString s
7630: 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65  pecified for the
7640: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e   connection when
7650: 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d   it was opened..
7660: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
7670: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
7680: 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56 61  ram name="dateVa
7690: 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d  lue">The DateTim
76a0: 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65  e value to conve
76b0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
76c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
76d0: 22 66 6f 72 6d 61 74 22 3e 54 68 65 20 53 51 4c  "format">The SQL
76e0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 74  iteDateFormats t
76f0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
7700: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7710: 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44  ame="kind">The D
7720: 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75  ateTimeKind to u
7730: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
7740: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
7750: 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e  ="formatString">
7760: 54 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72  The DateTime for
7770: 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73  mat string to us
7780: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
7790: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69 74  /// <returns>Eit
77a0: 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f 6e  her a string con
77b0: 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e 67  taining the long
77c0: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
77d0: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
77e0: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53 79  d units since Sy
77f0: 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69  stem.DateTime.Mi
7800: 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20 2f  nValue, a..    /
7810: 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f  // Julian day do
7820: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
7830: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
7840: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
7850: 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74 75  x epoch, a cultu
7860: 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66  re-independent f
7870: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
7880: 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20  d time..    /// 
7890: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
78a0: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
78b0: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
78c0: 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2c  current culture,
78d0: 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66   or an ISO8601-f
78e0: 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65 20  ormat date/time 
78f0: 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e 73  string.</returns
7900: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
7910: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 53 74  atic string ToSt
7920: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 44  ring(..        D
7930: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
7940: 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  e,..        SQLi
7950: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6f  teDateFormats fo
7960: 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 44  rmat,..        D
7970: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
7980: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
7990: 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a  g formatString..
79a0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
79b0: 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  ..        switch
79c0: 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20   (format)..     
79d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
79e0: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
79f0: 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d  eFormats.Ticks:.
7a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7a10: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
7a20: 65 2e 54 69 63 6b 73 2e 54 6f 53 74 72 69 6e 67  e.Ticks.ToString
7a30: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
7a40: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7a50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7a60: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
7a70: 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a  ats.JulianDay:..
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7a90: 72 65 74 75 72 6e 20 54 6f 4a 75 6c 69 61 6e 44  return ToJulianD
7aa0: 61 79 28 64 61 74 65 56 61 6c 75 65 29 2e 54 6f  ay(dateValue).To
7ab0: 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e  String(CultureIn
7ac0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
7ad0: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ure);..         
7ae0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
7af0: 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70  teFormats.UnixEp
7b00: 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  och:..          
7b10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c        return ((l
7b20: 6f 6e 67 29 28 64 61 74 65 56 61 6c 75 65 2e 53  ong)(dateValue.S
7b30: 75 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63  ubtract(UnixEpoc
7b40: 68 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53  h).Ticks / TimeS
7b50: 70 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f  pan.TicksPerSeco
7b60: 6e 64 29 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b  nd)).ToString();
7b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
7b80: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
7b90: 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e 74 43 75  mats.InvariantCu
7ba0: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
7bb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
7bc0: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
7bd0: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
7be0: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
7bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c00: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
7c10: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
7c20: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
7c30: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
7c40: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
7c50: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75  teDateFormats.Cu
7c60: 72 72 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20  rrentCulture:.. 
7c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7c80: 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e  eturn dateValue.
7c90: 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d 61 74  ToString((format
7ca0: 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20  String != null) 
7cb0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
7cc0: 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53 74 72         formatStr
7cd0: 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74  ing : FullFormat
7ce0: 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75  , CultureInfo.Cu
7cf0: 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  rrentCulture);..
7d00: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
7d10: 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
7d20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 61        return (da
7d30: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d 3d 20  teValue.Kind == 
7d40: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e 73  DateTimeKind.Uns
7d50: 70 65 63 69 66 69 65 64 29 20 3f 0d 0a 20 20 20  pecified) ?..   
7d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d70: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
7d80: 79 4b 69 6e 64 28 64 61 74 65 56 61 6c 75 65 2c  yKind(dateValue,
7d90: 20 6b 69 6e 64 29 2e 54 6f 53 74 72 69 6e 67 28   kind).ToString(
7da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7db0: 20 20 20 20 20 20 20 20 20 20 47 65 74 44 61 74            GetDat
7dc0: 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28  eTimeKindFormat(
7dd0: 6b 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74 72 69  kind, formatStri
7de0: 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ng),..          
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e00: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e    CultureInfo.In
7e10: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 20  variantCulture) 
7e20: 3a 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74  : dateValue.ToSt
7e30: 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20  ring(..         
7e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
7e50: 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f  etDateTimeKindFo
7e60: 72 6d 61 74 28 64 61 74 65 56 61 6c 75 65 2e 4b  rmat(dateValue.K
7e70: 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e  ind, formatStrin
7e80: 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g),..           
7e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ea0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
7eb0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
7ec0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
7ed0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
7ee0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7ef0: 49 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f  Internal functio
7f00: 6e 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 55  n to convert a U
7f10: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49 6e 74  TF-8 encoded Int
7f20: 50 74 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  Ptr of the speci
7f30: 66 69 65 64 20 6c 65 6e 67 74 68 20 74 6f 20 61  fied length to a
7f40: 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20   DateTime...    
7f50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7f60: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
7f70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  >..    /// This 
7f80: 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65  is a convenience
7f90: 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68   function, which
7fa0: 20 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53   first calls ToS
7fb0: 74 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 49  tring() on the I
7fc0: 6e 74 50 74 72 20 74 6f 20 63 6f 6e 76 65 72 74  ntPtr to convert
7fd0: 20 69 74 20 74 6f 20 61 20 73 74 72 69 6e 67 2c   it to a string,
7fe0: 20 74 68 65 6e 20 63 61 6c 6c 73 0d 0a 20 20 20   then calls..   
7ff0: 20 2f 2f 2f 20 54 6f 44 61 74 65 54 69 6d 65 28   /// ToDateTime(
8000: 29 20 6f 6e 20 74 68 65 20 73 74 72 69 6e 67 20  ) on the string 
8010: 74 6f 20 72 65 74 75 72 6e 20 61 20 44 61 74 65  to return a Date
8020: 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Time...    /// <
8030: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  /remarks>..    /
8040: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
8050: 70 74 72 22 3e 41 20 70 6f 69 6e 74 65 72 20 74  ptr">A pointer t
8060: 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  o the UTF-8 enco
8070: 64 65 64 20 73 74 72 69 6e 67 3c 2f 70 61 72 61  ded string</para
8080: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
8090: 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 22 3e 54 68  am name="len">Th
80a0: 65 20 6c 65 6e 67 74 68 20 69 6e 20 62 79 74 65  e length in byte
80b0: 73 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 3c  s of the string<
80c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
80d0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 70 61   <returns>The pa
80e0: 72 73 65 64 20 44 61 74 65 54 69 6d 65 20 76 61  rsed DateTime va
80f0: 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  lue</returns>.. 
8100: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65     internal Date
8110: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
8120: 49 6e 74 50 74 72 20 70 74 72 2c 20 69 6e 74 20  IntPtr ptr, int 
8130: 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  len)..    {..   
8140: 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65     return ToDate
8150: 54 69 6d 65 28 54 6f 53 74 72 69 6e 67 28 70 74  Time(ToString(pt
8160: 72 2c 20 6c 65 6e 29 29 3b 0d 0a 20 20 20 20 7d  r, len));..    }
8170: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
8180: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
8190: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  mary>..    /// S
81a0: 6d 61 72 74 20 6d 65 74 68 6f 64 20 6f 66 20 73  mart method of s
81b0: 70 6c 69 74 74 69 6e 67 20 61 20 73 74 72 69 6e  plitting a strin
81c0: 67 2e 20 20 53 6b 69 70 73 20 71 75 6f 74 65 64  g.  Skips quoted
81d0: 20 65 6c 65 6d 65 6e 74 73 2c 20 72 65 6d 6f 76   elements, remov
81e0: 65 73 20 74 68 65 20 71 75 6f 74 65 73 2e 0d 0a  es the quotes...
81f0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8200: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
8210: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
8220: 68 69 73 20 73 70 6c 69 74 20 66 75 6e 63 74 69  his split functi
8230: 6f 6e 20 77 6f 72 6b 73 20 73 6f 6d 65 77 68 61  on works somewha
8240: 74 20 6c 69 6b 65 20 74 68 65 20 53 74 72 69 6e  t like the Strin
8250: 67 2e 53 70 6c 69 74 28 29 20 66 75 6e 63 74 69  g.Split() functi
8260: 6f 6e 20 69 6e 20 74 68 61 74 20 69 74 20 62 72  on in that it br
8270: 65 61 6b 73 20 61 70 61 72 74 20 61 20 73 74 72  eaks apart a str
8280: 69 6e 67 20 69 6e 74 6f 0d 0a 20 20 20 20 2f 2f  ing into..    //
8290: 2f 20 70 69 65 63 65 73 20 61 6e 64 20 72 65 74  / pieces and ret
82a0: 75 72 6e 73 20 74 68 65 20 70 69 65 63 65 73 20  urns the pieces 
82b0: 61 73 20 61 6e 20 61 72 72 61 79 2e 20 20 54 68  as an array.  Th
82c0: 65 20 70 72 69 6d 61 72 79 20 64 69 66 66 65 72  e primary differ
82d0: 65 6e 63 65 73 20 61 72 65 3a 0d 0a 20 20 20 20  ences are:..    
82e0: 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22  /// <list type="
82f0: 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f  bullet">..    //
8300: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
8310: 74 69 6f 6e 3e 4f 6e 6c 79 20 6f 6e 65 20 63 68  tion>Only one ch
8320: 61 72 61 63 74 65 72 20 63 61 6e 20 62 65 20 70  aracter can be p
8330: 72 6f 76 69 64 65 64 20 61 73 20 61 20 73 65 70  rovided as a sep
8340: 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72  arator character
8350: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
8360: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
8370: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
8380: 6e 3e 51 75 6f 74 65 64 20 74 65 78 74 20 69 6e  n>Quoted text in
8390: 73 69 64 65 20 74 68 65 20 73 74 72 69 6e 67 20  side the string 
83a0: 69 73 20 73 6b 69 70 70 65 64 20 6f 76 65 72 20  is skipped over 
83b0: 77 68 65 6e 20 73 65 61 72 63 68 69 6e 67 20 66  when searching f
83c0: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
83d0: 2c 20 61 6e 64 20 74 68 65 20 71 75 6f 74 65 73  , and the quotes
83e0: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 64   are removed.</d
83f0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
8400: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69  m>..    /// </li
8410: 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 75  st>..    /// Thu
8420: 73 2c 20 69 66 20 73 70 6c 69 74 74 69 6e 67 20  s, if splitting 
8430: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74  the following st
8440: 72 69 6e 67 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72  ring looking for
8450: 20 61 20 63 6f 6d 6d 61 3a 3c 62 72 2f 3e 0d 0a   a comma:<br/>..
8460: 20 20 20 20 2f 2f 2f 20 4f 6e 65 2c 54 77 6f 2c      /// One,Two,
8470: 20 22 54 68 72 65 65 2c 20 46 6f 75 72 22 2c 20   "Three, Four", 
8480: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
8490: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
84a0: 2f 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20  / The resulting 
84b0: 61 72 72 61 79 20 77 6f 75 6c 64 20 63 6f 6e 74  array would cont
84c0: 61 69 6e 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  ain<br/>..    //
84d0: 2f 20 5b 30 5d 20 4f 6e 65 3c 62 72 2f 3e 0d 0a  / [0] One<br/>..
84e0: 20 20 20 20 2f 2f 2f 20 5b 31 5d 20 54 77 6f 3c      /// [1] Two<
84f0: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 32  br/>..    /// [2
8500: 5d 20 54 68 72 65 65 2c 20 46 6f 75 72 3c 62 72  ] Three, Four<br
8510: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 33 5d 20  />..    /// [3] 
8520: 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f  Five<br/>..    /
8530: 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  // <br/>..    //
8540: 2f 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  / Note that the 
8550: 6c 65 61 64 69 6e 67 20 61 6e 64 20 74 72 61 69  leading and trai
8560: 6c 69 6e 67 20 73 70 61 63 65 73 20 77 65 72 65  ling spaces were
8570: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 65 61   removed from ea
8580: 63 68 20 69 74 65 6d 20 64 75 72 69 6e 67 20 74  ch item during t
8590: 68 65 20 73 70 6c 69 74 2e 0d 0a 20 20 20 20 2f  he split...    /
85a0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
85b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
85c0: 6d 65 3d 22 73 6f 75 72 63 65 22 3e 53 6f 75 72  me="source">Sour
85d0: 63 65 20 73 74 72 69 6e 67 20 74 6f 20 73 70 6c  ce string to spl
85e0: 69 74 20 61 70 61 72 74 3c 2f 70 61 72 61 6d 3e  it apart</param>
85f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8600: 20 6e 61 6d 65 3d 22 73 65 70 61 72 61 74 6f 72   name="separator
8610: 22 3e 53 65 70 61 72 61 74 6f 72 20 63 68 61 72  ">Separator char
8620: 61 63 74 65 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20  acter</param>.. 
8630: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8640: 41 20 73 74 72 69 6e 67 20 61 72 72 61 79 20 6f  A string array o
8650: 66 20 74 68 65 20 73 70 6c 69 74 20 75 70 20 65  f the split up e
8660: 6c 65 6d 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73  lements</returns
8670: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
8680: 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 53 70  atic string[] Sp
8690: 6c 69 74 28 73 74 72 69 6e 67 20 73 6f 75 72 63  lit(string sourc
86a0: 65 2c 20 63 68 61 72 20 73 65 70 61 72 61 74 6f  e, char separato
86b0: 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  r)..    {..     
86c0: 20 63 68 61 72 5b 5d 20 74 6f 6b 73 20 3d 20 6e   char[] toks = n
86d0: 65 77 20 63 68 61 72 5b 32 5d 20 7b 20 27 5c 22  ew char[2] { '\"
86e0: 27 2c 20 73 65 70 61 72 61 74 6f 72 20 7d 3b 0d  ', separator };.
86f0: 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 71 75  .      char[] qu
8700: 6f 74 20 3d 20 6e 65 77 20 63 68 61 72 5b 31 5d  ot = new char[1]
8710: 20 7b 20 27 5c 22 27 20 7d 3b 0d 0a 20 20 20 20   { '\"' };..    
8720: 20 20 69 6e 74 20 6e 20 3d 20 30 3b 0d 0a 20 20    int n = 0;..  
8730: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
8740: 20 6c 73 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73   ls = new List<s
8750: 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20  tring>();..     
8760: 20 73 74 72 69 6e 67 20 73 3b 0d 0a 0d 0a 20 20   string s;....  
8770: 20 20 20 20 77 68 69 6c 65 20 28 73 6f 75 72 63      while (sourc
8780: 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  e.Length > 0).. 
8790: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
87a0: 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65 78  n = source.Index
87b0: 4f 66 41 6e 79 28 74 6f 6b 73 2c 20 6e 29 3b 0d  OfAny(toks, n);.
87c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d  .        if (n =
87d0: 3d 20 2d 31 29 20 62 72 65 61 6b 3b 0d 0a 20 20  = -1) break;..  
87e0: 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65        if (source
87f0: 5b 6e 5d 20 3d 3d 20 74 6f 6b 73 5b 30 5d 29 0d  [n] == toks[0]).
8800: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8810: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
8820: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
8830: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , 1);..         
8840: 20 6e 20 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65   n = source.Inde
8850: 78 4f 66 41 6e 79 28 71 75 6f 74 2c 20 6e 20 2b  xOfAny(quot, n +
8860: 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   1);..          
8870: 69 66 20 28 6e 20 3d 3d 20 2d 31 29 0d 0a 20 20  if (n == -1)..  
8880: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8890: 20 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20         //source 
88a0: 3d 20 22 5c 22 22 20 2b 20 73 6f 75 72 63 65 3b  = "\"" + source;
88b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ..            br
88c0: 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  eak;..          
88d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 2b 2b  }..          n++
88e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73  ;..          //s
88f0: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52  ource = source.R
8900: 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20  emove(n, 1);..  
8910: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8920: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 7b   else..        {
8930: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20  ..          s = 
8940: 73 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67  source.Substring
8950: 28 30 2c 20 6e 29 2e 54 72 69 6d 28 29 3b 0d 0a  (0, n).Trim();..
8960: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
8970: 4c 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b  Length > 1 && s[
8980: 30 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26  0] == quot[0] &&
8990: 20 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d   s[s.Length - 1]
89a0: 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20   == s[0])..     
89b0: 20 20 20 20 20 20 20 73 20 3d 20 73 2e 53 75 62         s = s.Sub
89c0: 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67  string(1, s.Leng
89d0: 74 68 20 2d 20 32 29 3b 0d 0a 0d 0a 20 20 20 20  th - 2);....    
89e0: 20 20 20 20 20 20 73 6f 75 72 63 65 20 3d 20 73        source = s
89f0: 6f 75 72 63 65 2e 53 75 62 73 74 72 69 6e 67 28  ource.Substring(
8a00: 6e 20 2b 20 31 29 2e 54 72 69 6d 28 29 3b 0d 0a  n + 1).Trim();..
8a10: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
8a20: 4c 65 6e 67 74 68 20 3e 20 30 29 20 6c 73 2e 41  Length > 0) ls.A
8a30: 64 64 28 73 29 3b 0d 0a 20 20 20 20 20 20 20 20  dd(s);..        
8a40: 20 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20    n = 0;..      
8a50: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
8a60: 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 2e 4c      if (source.L
8a70: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
8a80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 20 3d    {..        s =
8a90: 20 73 6f 75 72 63 65 2e 54 72 69 6d 28 29 3b 0d   source.Trim();.
8aa0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 2e 4c  .        if (s.L
8ab0: 65 6e 67 74 68 20 3e 20 31 20 26 26 20 73 5b 30  ength > 1 && s[0
8ac0: 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20  ] == quot[0] && 
8ad0: 73 5b 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20  s[s.Length - 1] 
8ae0: 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  == s[0])..      
8af0: 20 20 20 20 73 20 3d 20 73 2e 53 75 62 73 74 72      s = s.Substr
8b00: 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20  ing(1, s.Length 
8b10: 2d 20 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 6c  - 2);..        l
8b20: 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20 20 20 20  s.Add(s);..     
8b30: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73 74 72 69   }....      stri
8b40: 6e 67 5b 5d 20 61 72 20 3d 20 6e 65 77 20 73 74  ng[] ar = new st
8b50: 72 69 6e 67 5b 6c 73 2e 43 6f 75 6e 74 5d 3b 0d  ring[ls.Count];.
8b60: 0a 20 20 20 20 20 20 6c 73 2e 43 6f 70 79 54 6f  .      ls.CopyTo
8b70: 28 61 72 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20  (ar, 0);....    
8b80: 20 20 72 65 74 75 72 6e 20 61 72 3b 0d 0a 20 20    return ar;..  
8b90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
8ba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
8bb0: 2f 20 53 70 6c 69 74 73 20 74 68 65 20 73 70 65  / Splits the spe
8bc0: 63 69 66 69 65 64 20 73 74 72 69 6e 67 20 69 6e  cified string in
8bd0: 74 6f 20 6d 75 6c 74 69 70 6c 65 20 73 74 72 69  to multiple stri
8be0: 6e 67 73 20 62 61 73 65 64 20 6f 6e 20 61 20 73  ngs based on a s
8bf0: 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 2f 2f  eparator..    //
8c00: 2f 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  / and returns th
8c10: 65 20 72 65 73 75 6c 74 20 61 73 20 61 6e 20 61  e result as an a
8c20: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 2e  rray of strings.
8c30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8c40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
8c50: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
8c60: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
8c70: 73 74 72 69 6e 67 20 74 6f 20 73 70 6c 69 74 20  string to split 
8c80: 69 6e 74 6f 20 70 69 65 63 65 73 20 62 61 73 65  into pieces base
8c90: 64 20 6f 6e 20 74 68 65 20 73 65 70 61 72 61 74  d on the separat
8ca0: 6f 72 20 63 68 61 72 61 63 74 65 72 2e 20 20 49  or character.  I
8cb0: 66 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 69 73 20  f..    /// this 
8cc0: 73 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 2c 20  string is null, 
8cd0: 6e 75 6c 6c 20 77 69 6c 6c 20 61 6c 77 61 79 73  null will always
8ce0: 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20 49   be returned.  I
8cf0: 66 20 74 68 69 73 20 73 74 72 69 6e 67 20 69 73  f this string is
8d00: 0d 0a 20 20 20 20 2f 2f 2f 20 65 6d 70 74 79 2c  ..    /// empty,
8d10: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 7a 65 72   an array of zer
8d20: 6f 20 73 74 72 69 6e 67 73 20 77 69 6c 6c 20 61  o strings will a
8d30: 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 6e 65  lways be returne
8d40: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8d50: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8d60: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70 61 72  aram name="separ
8d70: 61 74 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  ator">..    /// 
8d80: 54 68 65 20 63 68 61 72 61 63 74 65 72 20 75 73  The character us
8d90: 65 64 20 74 6f 20 64 69 76 69 64 65 20 74 68 65  ed to divide the
8da0: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
8db0: 20 69 6e 74 6f 20 73 75 62 2d 73 74 72 69 6e 67   into sub-string
8dc0: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  s...    /// This
8dd0: 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f   character canno
8de0: 74 20 62 65 20 61 20 62 61 63 6b 73 6c 61 73 68  t be a backslash
8df0: 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f   or a double-quo
8e00: 74 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 6e  te; otherwise, n
8e10: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 77 6f 72 6b 20  o..    /// work 
8e20: 77 69 6c 6c 20 62 65 20 70 65 72 66 6f 72 6d 65  will be performe
8e30: 64 20 61 6e 64 20 6e 75 6c 6c 20 77 69 6c 6c 20  d and null will 
8e40: 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
8e50: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
8e60: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
8e70: 61 6d 65 3d 22 6b 65 65 70 51 75 6f 74 65 22 3e  ame="keepQuote">
8e80: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 69  ..    /// If thi
8e90: 73 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 6e  s parameter is n
8ea0: 6f 6e 2d 7a 65 72 6f 2c 20 61 6c 6c 20 64 6f 75  on-zero, all dou
8eb0: 62 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63  ble-quote charac
8ec0: 74 65 72 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20  ters will be..  
8ed0: 20 20 2f 2f 2f 20 72 65 74 61 69 6e 65 64 20 69    /// retained i
8ee0: 6e 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 6c  n the returned l
8ef0: 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 3b 20  ist of strings; 
8f00: 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 79 20  otherwise, they 
8f10: 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f  will be..    ///
8f20: 20 64 72 6f 70 70 65 64 2e 0d 0a 20 20 20 20 2f   dropped...    /
8f30: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
8f40: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8f50: 3d 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f  ="error">..    /
8f60: 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
8f70: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
8f80: 77 69 6c 6c 20 62 65 20 6d 6f 64 69 66 69 65 64  will be modified
8f90: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61   to contain an a
8fa0: 70 70 72 6f 70 72 69 61 74 65 0d 0a 20 20 20 20  ppropriate..    
8fb0: 2f 2f 2f 20 65 72 72 6f 72 20 6d 65 73 73 61 67  /// error messag
8fc0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
8fd0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
8fe0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
8ff0: 20 54 68 65 20 6e 65 77 20 61 72 72 61 79 20 6f   The new array o
9000: 66 20 73 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c  f strings or nul
9010: 6c 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 73  l if the input s
9020: 74 72 69 6e 67 20 69 73 20 6e 75 6c 6c 20 2d 4f  tring is null -O
9030: 52 2d 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  R- the..    /// 
9040: 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63  separator charac
9050: 74 65 72 20 69 73 20 61 20 62 61 63 6b 73 6c 61  ter is a backsla
9060: 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71  sh or a double-q
9070: 75 6f 74 65 20 2d 4f 52 2d 20 74 68 65 20 73 74  uote -OR- the st
9080: 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f  ring..    /// co
9090: 6e 74 61 69 6e 73 20 61 6e 20 75 6e 62 61 6c 61  ntains an unbala
90a0: 6e 63 65 64 20 62 61 63 6b 73 6c 61 73 68 20 6f  nced backslash o
90b0: 72 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63  r double-quote c
90c0: 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f  haracter...    /
90d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
90e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
90f0: 69 63 20 73 74 72 69 6e 67 5b 5d 20 4e 65 77 53  ic string[] NewS
9100: 70 6c 69 74 28 0d 0a 20 20 20 20 20 20 20 20 73  plit(..        s
9110: 74 72 69 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20  tring value,..  
9120: 20 20 20 20 20 20 63 68 61 72 20 73 65 70 61 72        char separ
9130: 61 74 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 62  ator,..        b
9140: 6f 6f 6c 20 6b 65 65 70 51 75 6f 74 65 2c 0d 0a  ool keepQuote,..
9150: 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
9160: 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
9170: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
9180: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 45      const char E
9190: 73 63 61 70 65 43 68 61 72 20 3d 20 27 5c 5c 27  scapeChar = '\\'
91a0: 3b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74  ;..        const
91b0: 20 63 68 61 72 20 51 75 6f 74 65 43 68 61 72 20   char QuoteChar 
91c0: 3d 20 27 5c 22 27 3b 0d 0a 0d 0a 20 20 20 20 20  = '\"';....     
91d0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f     //..        /
91e0: 2f 20 4e 4f 54 45 3a 20 49 74 20 69 73 20 69 6c  / NOTE: It is il
91f0: 6c 65 67 61 6c 20 66 6f 72 20 74 68 65 20 73 65  legal for the se
9200: 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65  parator characte
9210: 72 20 74 6f 20 62 65 20 65 69 74 68 65 72 20 61  r to be either a
9220: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20  ..        //    
9230: 20 20 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20     backslash or 
9240: 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 62  a double-quote b
9250: 65 63 61 75 73 65 20 62 6f 74 68 20 6f 66 20 74  ecause both of t
9260: 68 6f 73 65 20 63 68 61 72 61 63 74 65 72 73 0d  hose characters.
9270: 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20  .        //     
9280: 20 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 65    are used for e
9290: 73 63 61 70 69 6e 67 20 6f 74 68 65 72 20 63 68  scaping other ch
92a0: 61 72 61 63 74 65 72 73 20 28 65 2e 67 2e 20 74  aracters (e.g. t
92b0: 68 65 20 73 65 70 61 72 61 74 6f 72 0d 0a 20 20  he separator..  
92c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63        //       c
92d0: 68 61 72 61 63 74 65 72 29 2e 0d 0a 20 20 20 20  haracter)...    
92e0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
92f0: 69 66 20 28 28 73 65 70 61 72 61 74 6f 72 20 3d  if ((separator =
9300: 3d 20 45 73 63 61 70 65 43 68 61 72 29 20 7c 7c  = EscapeChar) ||
9310: 20 28 73 65 70 61 72 61 74 6f 72 20 3d 3d 20 51   (separator == Q
9320: 75 6f 74 65 43 68 61 72 29 29 0d 0a 20 20 20 20  uoteChar))..    
9330: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9340: 20 20 20 65 72 72 6f 72 20 3d 20 22 73 65 70 61     error = "sepa
9350: 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 20  rator character 
9360: 63 61 6e 6e 6f 74 20 62 65 20 74 68 65 20 65 73  cannot be the es
9370: 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68  cape or quote ch
9380: 61 72 61 63 74 65 72 73 22 3b 0d 0a 20 20 20 20  aracters";..    
9390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
93a0: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
93b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76  ...        if (v
93c0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
93d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
93e0: 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 73        error = "s
93f0: 74 72 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 73  tring value to s
9400: 70 6c 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 6e  plit cannot be n
9410: 75 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ull";..         
9420: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
9430: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9440: 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
9450: 20 3d 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b   = value.Length;
9460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
9470: 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  length == 0)..  
9480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9490: 20 6e 65 77 20 73 74 72 69 6e 67 5b 30 5d 3b 0d   new string[0];.
94a0: 0a 0d 0a 20 20 20 20 20 20 20 20 4c 69 73 74 3c  ...        List<
94b0: 73 74 72 69 6e 67 3e 20 6c 69 73 74 20 3d 20 6e  string> list = n
94c0: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
94d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 53 74 72 69  );..        Stri
94e0: 6e 67 42 75 69 6c 64 65 72 20 65 6c 65 6d 65 6e  ngBuilder elemen
94f0: 74 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  t = new StringBu
9500: 69 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ilder();..      
9510: 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b    int index = 0;
9520: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65  ..        bool e
9530: 73 63 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a  scape = false;..
9540: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 71 75 6f          bool quo
9550: 74 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  te = false;.... 
9560: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 6e         while (in
9570: 64 65 78 20 3c 20 6c 65 6e 67 74 68 29 0d 0a 20  dex < length).. 
9580: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9590: 20 20 20 20 20 20 63 68 61 72 20 63 68 61 72 61        char chara
95a0: 63 74 65 72 20 3d 20 76 61 6c 75 65 5b 69 6e 64  cter = value[ind
95b0: 65 78 2b 2b 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ex++];....      
95c0: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
95d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
95e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
95f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9600: 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f        // HACK: O
9610: 6e 6c 79 20 63 6f 6e 73 69 64 65 72 20 74 68 65  nly consider the
9620: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
9630: 72 20 74 6f 20 62 65 20 61 6e 20 61 63 74 75 61  r to be an actua
9640: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  l..             
9650: 20 20 20 2f 2f 20 20 20 20 20 20 20 22 65 73 63     //       "esc
9660: 61 70 65 22 20 69 66 20 69 74 20 69 73 20 66 6f  ape" if it is fo
9670: 6c 6c 6f 77 65 64 20 62 79 20 61 20 72 65 73 65  llowed by a rese
9680: 72 76 65 64 20 63 68 61 72 61 63 74 65 72 3b 0d  rved character;.
9690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
96a0: 20 2f 2f 20 20 20 20 20 20 20 6f 74 68 65 72 77   //       otherw
96b0: 69 73 65 2c 20 65 6d 69 74 20 74 68 65 20 6f 72  ise, emit the or
96c0: 69 67 69 6e 61 6c 20 65 73 63 61 70 65 20 63 68  iginal escape ch
96d0: 61 72 61 63 74 65 72 20 61 6e 64 0d 0a 20 20 20  aracter and..   
96e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
96f0: 20 20 20 20 20 20 74 68 65 20 63 75 72 72 65 6e        the curren
9700: 74 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 61  t character in a
9710: 6e 20 65 66 66 6f 72 74 20 74 6f 20 68 65 6c 70  n effort to help
9720: 20 70 72 65 73 65 72 76 65 0d 0a 20 20 20 20 20   preserve..     
9730: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
9740: 20 20 20 20 74 68 65 20 6f 72 69 67 69 6e 61 6c      the original
9750: 20 73 74 72 69 6e 67 20 63 6f 6e 74 65 6e 74 2e   string content.
9760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9770: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
9780: 20 20 20 20 20 20 69 66 20 28 28 63 68 61 72 61        if ((chara
9790: 63 74 65 72 20 21 3d 20 45 73 63 61 70 65 43 68  cter != EscapeCh
97a0: 61 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ar) &&..        
97b0: 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61              (cha
97c0: 72 61 63 74 65 72 20 21 3d 20 51 75 6f 74 65 43  racter != QuoteC
97d0: 68 61 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20  har) &&..       
97e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 68               (ch
97f0: 61 72 61 63 74 65 72 20 21 3d 20 73 65 70 61 72  aracter != separ
9800: 61 74 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  ator))..        
9810: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
9830: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 45 73  lement.Append(Es
9840: 63 61 70 65 43 68 61 72 29 3b 0d 0a 20 20 20 20  capeChar);..    
9850: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
9860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9870: 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28   element.Append(
9880: 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20  character);..   
9890: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 73 63               esc
98a0: 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  ape = false;..  
98b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
98c0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
98d0: 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d 20 45   (character == E
98e0: 73 63 61 70 65 43 68 61 72 29 0d 0a 20 20 20 20  scapeChar)..    
98f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9900: 20 20 20 20 20 20 20 20 20 20 20 65 73 63 61 70             escap
9910: 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  e = true;..     
9920: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9930: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63        else if (c
9940: 68 61 72 61 63 74 65 72 20 3d 3d 20 51 75 6f 74  haracter == Quot
9950: 65 43 68 61 72 29 0d 0a 20 20 20 20 20 20 20 20  eChar)..        
9960: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9970: 20 20 20 20 20 20 20 69 66 20 28 6b 65 65 70 51         if (keepQ
9980: 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20  uote)..         
9990: 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65             eleme
99a0: 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63  nt.Append(charac
99b0: 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
99c0: 20 20 20 20 20 20 20 20 20 71 75 6f 74 65 20 3d           quote =
99d0: 20 21 71 75 6f 74 65 3b 0d 0a 20 20 20 20 20 20   !quote;..      
99e0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
99f0: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 68       else if (ch
9a00: 61 72 61 63 74 65 72 20 3d 3d 20 73 65 70 61 72  aracter == separ
9a10: 61 74 6f 72 29 0d 0a 20 20 20 20 20 20 20 20 20  ator)..         
9a20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9a30: 20 20 20 20 20 20 69 66 20 28 71 75 6f 74 65 29        if (quote)
9a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9a60: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
9a70: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
9a80: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9a90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9aa0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9ad0: 20 20 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c       list.Add(el
9ae0: 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ement.ToString()
9af0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
9b00: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
9b10: 4c 65 6e 67 74 68 20 3d 20 30 3b 0d 0a 20 20 20  Length = 0;..   
9b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9b40: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
9b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b70: 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63  element.Append(c
9b80: 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20  haracter);..    
9b90: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9ba0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9bb0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e  //..        // N
9bc0: 4f 54 45 3a 20 41 6e 20 75 6e 62 61 6c 61 6e 63  OTE: An unbalanc
9bd0: 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f  ed escape or quo
9be0: 74 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20  te character in 
9bf0: 74 68 65 20 73 74 72 69 6e 67 20 69 73 0d 0a 20  the string is.. 
9c00: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
9c10: 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65  considered to be
9c20: 20 61 20 66 61 74 61 6c 20 65 72 72 6f 72 3b 20   a fatal error; 
9c30: 74 68 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72  therefore, retur
9c40: 6e 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20  n null...       
9c50: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 69 66 20   //..        if 
9c60: 28 65 73 63 61 70 65 20 7c 7c 20 71 75 6f 74 65  (escape || quote
9c70: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
9c80: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
9c90: 3d 20 22 75 6e 62 61 6c 61 6e 63 65 64 20 65 73  = "unbalanced es
9ca0: 63 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68  cape or quote ch
9cb0: 61 72 61 63 74 65 72 20 66 6f 75 6e 64 22 3b 0d  aracter found";.
9cc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
9cd0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
9ce0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9cf0: 69 66 20 28 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67  if (element.Leng
9d00: 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
9d10: 20 20 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c       list.Add(el
9d20: 65 6d 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ement.ToString()
9d30: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  );....        re
9d40: 74 75 72 6e 20 6c 69 73 74 2e 54 6f 41 72 72 61  turn list.ToArra
9d50: 79 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  y();..    }.... 
9d60: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
9d70: 0d 0a 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65  ..    /// Querie
9d80: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
9d90: 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65  e string represe
9da0: 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 6f  ntation for an o
9db0: 62 6a 65 63 74 2c 20 75 73 69 6e 67 20 74 68 65  bject, using the
9dc0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66  ..    /// specif
9dd0: 69 65 64 20 28 6f 72 20 63 75 72 72 65 6e 74 29  ied (or current)
9de0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9df0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
9e00: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
9e10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22  param name="obj"
9e20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f  >..    /// The o
9e30: 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74  bject instance t
9e40: 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72  o return the str
9e50: 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
9e60: 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20 2f 2f 2f  on for...    ///
9e70: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
9e80: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
9e90: 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20  provider">..    
9ea0: 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 70  /// The format p
9eb0: 72 6f 76 69 64 65 72 20 74 6f 20 75 73 65 20 2d  rovider to use -
9ec0: 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68 65 20  OR- null if the 
9ed0: 63 75 72 72 65 6e 74 20 66 6f 72 6d 61 74 20 70  current format p
9ee0: 72 6f 76 69 64 65 72 20 66 6f 72 0d 0a 20 20 20  rovider for..   
9ef0: 20 2f 2f 2f 20 74 68 65 20 74 68 72 65 61 64 20   /// the thread 
9f00: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69  should be used i
9f10: 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f  nstead...    ///
9f20: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
9f30: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
9f40: 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67    /// The string
9f50: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
9f60: 66 6f 72 20 74 68 65 20 6f 62 6a 65 63 74 20 69  for the object i
9f70: 6e 73 74 61 6e 63 65 20 2d 4f 52 2d 20 6e 75 6c  nstance -OR- nul
9f80: 6c 20 69 66 20 74 68 65 0d 0a 20 20 20 20 2f 2f  l if the..    //
9f90: 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  / object instanc
9fa0: 65 20 69 73 20 61 6c 73 6f 20 6e 75 6c 6c 2e 0d  e is also null..
9fb0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
9fc0: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
9fd0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f  static string To
9fe0: 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76 69 64  StringWithProvid
9ff0: 65 72 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  er(..        obj
a000: 65 63 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20  ect obj,..      
a010: 20 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65    IFormatProvide
a020: 72 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20  r provider..    
a030: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
a040: 20 20 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d        if (obj ==
a050: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
a060: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
a070: 20 2f 2a 20 6e 75 6c 6c 20 2d 2d 3e 20 6e 75 6c   /* null --> nul
a080: 6c 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  l */....        
a090: 69 66 20 28 6f 62 6a 20 69 73 20 73 74 72 69 6e  if (obj is strin
a0a0: 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
a0b0: 72 65 74 75 72 6e 20 28 73 74 72 69 6e 67 29 6f  return (string)o
a0c0: 62 6a 3b 20 2f 2a 20 69 64 65 6e 74 69 74 79 20  bj; /* identity 
a0d0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 49 43  */....        IC
a0e0: 6f 6e 76 65 72 74 69 62 6c 65 20 63 6f 6e 76 65  onvertible conve
a0f0: 72 74 69 62 6c 65 20 3d 20 6f 62 6a 20 61 73 20  rtible = obj as 
a100: 49 43 6f 6e 76 65 72 74 69 62 6c 65 3b 0d 0a 0d  IConvertible;...
a110: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
a120: 76 65 72 74 69 62 6c 65 20 21 3d 20 6e 75 6c 6c  vertible != null
a130: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
a140: 65 74 75 72 6e 20 63 6f 6e 76 65 72 74 69 62 6c  eturn convertibl
a150: 65 2e 54 6f 53 74 72 69 6e 67 28 70 72 6f 76 69  e.ToString(provi
a160: 64 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  der);....       
a170: 20 72 65 74 75 72 6e 20 6f 62 6a 2e 54 6f 53 74   return obj.ToSt
a180: 72 69 6e 67 28 29 3b 20 2f 2a 20 6e 6f 74 20 49  ring(); /* not I
a190: 43 6f 6e 76 65 72 74 69 62 6c 65 20 2a 2f 0d 0a  Convertible */..
a1a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
a1b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a1c0: 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20  /// Attempts to 
a1d0: 63 6f 6e 76 65 72 74 20 61 6e 20 61 72 62 69 74  convert an arbit
a1e0: 72 61 72 79 20 6f 62 6a 65 63 74 20 74 6f 20 74  rary object to t
a1f0: 68 65 20 42 6f 6f 6c 65 61 6e 20 64 61 74 61 20  he Boolean data 
a200: 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  type...    /// N
a210: 75 6c 6c 20 6f 62 6a 65 63 74 20 76 61 6c 75 65  ull object value
a220: 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20  s are converted 
a230: 74 6f 20 66 61 6c 73 65 2e 20 20 54 68 72 6f 77  to false.  Throw
a240: 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 0d 0a  s an exception..
a250: 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69      /// upon fai
a260: 6c 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  lure...    /// <
a270: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
a280: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
a290: 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  obj">..    /// T
a2a0: 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20  he object value 
a2b0: 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20  to convert...   
a2c0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
a2d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a2e0: 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a  me="provider">..
a2f0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d      /// The form
a300: 61 74 20 70 72 6f 76 69 64 65 72 20 74 6f 20 75  at provider to u
a310: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  se...    /// </p
a320: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
a330: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46  param name="viaF
a340: 72 61 6d 65 77 6f 72 6b 22 3e 0d 0a 20 20 20 20  ramework">..    
a350: 2f 2f 2f 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c  /// If non-zero,
a360: 20 61 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20   a string value 
a370: 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65  will be converte
a380: 64 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  d using the..   
a390: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
a3a0: 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61  Convert.ToBoolea
a3b0: 6e 28 4f 62 6a 65 63 74 2c 20 49 46 6f 72 6d 61  n(Object, IForma
a3c0: 74 50 72 6f 76 69 64 65 72 29 22 20 2f 3e 0d 0a  tProvider)" />..
a3d0: 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20      /// method; 
a3e0: 6f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c  otherwise, the <
a3f0: 73 65 65 20 63 72 65 66 3d 22 54 6f 42 6f 6f 6c  see cref="ToBool
a400: 65 61 6e 28 53 74 72 69 6e 67 29 22 20 2f 3e 0d  ean(String)" />.
a410: 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20  .    /// method 
a420: 77 69 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a 20  will be used... 
a430: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
a440: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
a450: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
a460: 63 6f 6e 76 65 72 74 65 64 20 62 6f 6f 6c 65 61  converted boolea
a470: 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  n value...    //
a480: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
a490: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
a4a0: 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e  c bool ToBoolean
a4b0: 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  (..        objec
a4c0: 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20 20 20  t obj,..        
a4d0: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20  IFormatProvider 
a4e0: 70 72 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20  provider,..     
a4f0: 20 20 20 62 6f 6f 6c 20 76 69 61 46 72 61 6d 65     bool viaFrame
a500: 77 6f 72 6b 0d 0a 20 20 20 20 20 20 20 20 29 0d  work..        ).
a510: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
a520: 69 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29  if (obj == null)
a530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
a540: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
a550: 20 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20         TypeCode 
a560: 74 79 70 65 43 6f 64 65 20 3d 20 54 79 70 65 2e  typeCode = Type.
a570: 47 65 74 54 79 70 65 43 6f 64 65 28 6f 62 6a 2e  GetTypeCode(obj.
a580: 47 65 74 54 79 70 65 28 29 29 3b 0d 0a 0d 0a 20  GetType());.... 
a590: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74         switch (t
a5a0: 79 70 65 43 6f 64 65 29 0d 0a 20 20 20 20 20 20  ypeCode)..      
a5b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a5c0: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 45   case TypeCode.E
a5d0: 6d 70 74 79 3a 0d 0a 20 20 20 20 20 20 20 20 20  mpty:..         
a5e0: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a5f0: 2e 44 42 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20  .DBNull:..      
a600: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a610: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a620: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a630: 64 65 2e 42 6f 6f 6c 65 61 6e 3a 0d 0a 20 20 20  de.Boolean:..   
a640: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a650: 75 72 6e 20 28 62 6f 6f 6c 29 6f 62 6a 3b 0d 0a  urn (bool)obj;..
a660: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a670: 20 54 79 70 65 43 6f 64 65 2e 43 68 61 72 3a 0d   TypeCode.Char:.
a680: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a690: 20 72 65 74 75 72 6e 20 28 28 63 68 61 72 29 6f   return ((char)o
a6a0: 62 6a 29 20 21 3d 20 28 63 68 61 72 29 30 20 3f  bj) != (char)0 ?
a6b0: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a6d0: 20 54 79 70 65 43 6f 64 65 2e 53 42 79 74 65 3a   TypeCode.SByte:
a6e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a6f0: 20 20 72 65 74 75 72 6e 20 28 28 73 62 79 74 65    return ((sbyte
a700: 29 6f 62 6a 29 20 21 3d 20 28 73 62 79 74 65 29  )obj) != (sbyte)
a710: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a720: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a730: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 42 79 74  ase TypeCode.Byt
a740: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
a750: 20 20 20 20 72 65 74 75 72 6e 20 28 28 62 79 74      return ((byt
a760: 65 29 6f 62 6a 29 20 21 3d 20 28 62 79 74 65 29  e)obj) != (byte)
a770: 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65  0 ? true : false
a780: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
a790: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74  ase TypeCode.Int
a7a0: 31 36 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  16:..           
a7b0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 73 68       return ((sh
a7c0: 6f 72 74 29 6f 62 6a 29 20 21 3d 20 28 73 68 6f  ort)obj) != (sho
a7d0: 72 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  rt)0 ? true : fa
a7e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a7f0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a800: 55 49 6e 74 31 36 3a 0d 0a 20 20 20 20 20 20 20  UInt16:..       
a810: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a820: 28 28 75 73 68 6f 72 74 29 6f 62 6a 29 20 21 3d  ((ushort)obj) !=
a830: 20 28 75 73 68 6f 72 74 29 30 20 3f 20 74 72 75   (ushort)0 ? tru
a840: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a850: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a860: 65 43 6f 64 65 2e 49 6e 74 33 32 3a 0d 0a 20 20  eCode.Int32:..  
a870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a880: 74 75 72 6e 20 28 28 69 6e 74 29 6f 62 6a 29 20  turn ((int)obj) 
a890: 21 3d 20 28 69 6e 74 29 30 20 3f 20 74 72 75 65  != (int)0 ? true
a8a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a8b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a8c0: 43 6f 64 65 2e 55 49 6e 74 33 32 3a 0d 0a 20 20  Code.UInt32:..  
a8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a8e0: 74 75 72 6e 20 28 28 75 69 6e 74 29 6f 62 6a 29  turn ((uint)obj)
a8f0: 20 21 3d 20 28 75 69 6e 74 29 30 20 3f 20 74 72   != (uint)0 ? tr
a900: 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ue : false;..   
a910: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
a920: 70 65 43 6f 64 65 2e 49 6e 74 36 34 3a 0d 0a 20  peCode.Int64:.. 
a930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a940: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 6f 62 6a  eturn ((long)obj
a950: 29 20 21 3d 20 28 6c 6f 6e 67 29 30 20 3f 20 74  ) != (long)0 ? t
a960: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
a970: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a980: 79 70 65 43 6f 64 65 2e 55 49 6e 74 36 34 3a 0d  ypeCode.UInt64:.
a990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a9a0: 20 72 65 74 75 72 6e 20 28 28 75 6c 6f 6e 67 29   return ((ulong)
a9b0: 6f 62 6a 29 20 21 3d 20 28 75 6c 6f 6e 67 29 30  obj) != (ulong)0
a9c0: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
a9d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a9e0: 73 65 20 54 79 70 65 43 6f 64 65 2e 53 69 6e 67  se TypeCode.Sing
a9f0: 6c 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le:..           
aa00: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 66 6c       return ((fl
aa10: 6f 61 74 29 6f 62 6a 29 20 21 3d 20 28 66 6c 6f  oat)obj) != (flo
aa20: 61 74 29 30 2e 30 20 3f 20 74 72 75 65 20 3a 20  at)0.0 ? true : 
aa30: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
aa40: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
aa50: 65 2e 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20  e.Double:..     
aa60: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
aa70: 6e 20 28 28 64 6f 75 62 6c 65 29 6f 62 6a 29 20  n ((double)obj) 
aa80: 21 3d 20 28 64 6f 75 62 6c 65 29 30 2e 30 20 3f  != (double)0.0 ?
aa90: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
aab0: 20 54 79 70 65 43 6f 64 65 2e 44 65 63 69 6d 61   TypeCode.Decima
aac0: 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l:..            
aad0: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 65 63      return ((dec
aae0: 69 6d 61 6c 29 6f 62 6a 29 20 21 3d 20 44 65 63  imal)obj) != Dec
aaf0: 69 6d 61 6c 2e 5a 65 72 6f 20 3f 20 74 72 75 65  imal.Zero ? true
ab00: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
ab10: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
ab20: 43 6f 64 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20  Code.String:..  
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ab40: 74 75 72 6e 20 76 69 61 46 72 61 6d 65 77 6f 72  turn viaFramewor
ab50: 6b 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  k ?..           
ab60: 20 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74           Convert
ab70: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 2c 20  .ToBoolean(obj, 
ab80: 70 72 6f 76 69 64 65 72 29 20 3a 0d 0a 20 20 20  provider) :..   
ab90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aba0: 20 54 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74 72   ToBoolean(ToStr
abb0: 69 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72 28  ingWithProvider(
abc0: 6f 62 6a 2c 20 70 72 6f 76 69 64 65 72 29 29 3b  obj, provider));
abd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
abe0: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
abf0: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
ac00: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
ac10: 6e 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e  n(HelperMethods.
ac20: 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20  StringFormat(.. 
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac40: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
ac50: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac70: 20 20 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76      "Cannot conv
ac80: 65 72 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20  ert type {0} to 
ac90: 62 6f 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20  boolean",..     
aca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
acb0: 79 70 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20  ypeCode));..    
acc0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
acd0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ace0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
acf0: 72 74 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72  rt a value to tr
ad00: 75 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20  ue or false...  
ad10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ad20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
ad30: 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41   name="source">A
ad40: 20 73 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65   string or numbe
ad50: 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74  r representing t
ad60: 72 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61  rue or false</pa
ad70: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
ad80: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
ad90: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
ada0: 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c  atic bool ToBool
adb0: 65 61 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63  ean(object sourc
adc0: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
add0: 20 69 66 20 28 73 6f 75 72 63 65 20 69 73 20 62   if (source is b
ade0: 6f 6f 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f  ool) return (boo
adf0: 6c 29 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20  l)source;....   
ae00: 20 20 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c     return ToBool
ae10: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
ae20: 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20  Provider(..     
ae30: 20 20 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c       source, Cul
ae40: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
ae50: 6e 74 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20  ntCulture));..  
ae60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
aec0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
aed0: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e   /// Converts an
aee0: 20 69 6e 74 65 67 65 72 20 74 6f 20 61 20 73 74   integer to a st
aef0: 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65  ring that can be
af00: 20 72 6f 75 6e 64 2d 74 72 69 70 70 65 64 20 75   round-tripped u
af10: 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f  sing the..    //
af20: 2f 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74  / invariant cult
af30: 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ure...    /// </
af40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
af50: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
af60: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
af70: 54 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  The integer valu
af80: 65 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20  e to return the 
af90: 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
afa0: 61 74 69 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20  ation for...    
afb0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
afc0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
afd0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72  .    /// The str
afe0: 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
aff0: 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  on of the specif
b000: 69 65 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75  ied integer valu
b010: 65 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20  e, using the..  
b020: 20 20 2f 2f 2f 20 69 6e 76 61 72 69 61 6e 74 20    /// invariant 
b030: 63 75 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f  culture...    //
b040: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
b050: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b060: 63 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  c string ToStrin
b070: 67 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20  g(int value)..  
b080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
b090: 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  urn value.ToStri
b0a0: 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
b0b0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
b0c0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b120: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
b130: 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70  ..    /// Attemp
b140: 74 73 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20  ts to convert a 
b150: 3c 73 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e  <see cref="Strin
b160: 67 22 20 2f 3e 20 69 6e 74 6f 20 61 20 3c 73 65  g" /> into a <se
b170: 65 20 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22  e cref="Boolean"
b180: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
b190: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
b1a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
b1b0: 6f 75 72 63 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ource">..    ///
b1c0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
b1d0: 53 74 72 69 6e 67 22 20 2f 3e 20 74 6f 20 63 6f  String" /> to co
b1e0: 6e 76 65 72 74 2c 20 63 61 6e 6e 6f 74 20 62 65  nvert, cannot be
b1f0: 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20   null...    /// 
b200: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b210: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
b220: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
b230: 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 42 6f  ed <see cref="Bo
b240: 6f 6c 65 61 6e 22 20 2f 3e 20 76 61 6c 75 65 2e  olean" /> value.
b250: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
b260: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  rns>..    /// <r
b270: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
b280: 20 54 68 65 20 73 75 70 70 6f 72 74 65 64 20 73   The supported s
b290: 74 72 69 6e 67 73 20 61 72 65 20 22 79 65 73 22  trings are "yes"
b2a0: 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22  , "no", "y", "n"
b2b0: 2c 20 22 6f 6e 22 2c 20 22 6f 66 66 22 2c 20 22  , "on", "off", "
b2c0: 30 22 2c 20 22 31 22 2c 0d 0a 20 20 20 20 2f 2f  0", "1",..    //
b2d0: 2f 20 61 73 20 77 65 6c 6c 20 61 73 20 61 6e 79  / as well as any
b2e0: 20 70 72 65 66 69 78 20 6f 66 20 74 68 65 20 73   prefix of the s
b2f0: 74 72 69 6e 67 73 20 3c 73 65 65 20 63 72 65 66  trings <see cref
b300: 3d 22 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53  ="Boolean.FalseS
b310: 74 72 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 2f  tring" />..    /
b320: 2f 2f 20 61 6e 64 20 3c 73 65 65 20 63 72 65 66  // and <see cref
b330: 3d 22 42 6f 6f 6c 65 61 6e 2e 54 72 75 65 53 74  ="Boolean.TrueSt
b340: 72 69 6e 67 22 20 2f 3e 2e 20 20 41 6c 6c 20 73  ring" />.  All s
b350: 74 72 69 6e 67 73 20 61 72 65 20 74 72 65 61 74  trings are treat
b360: 65 64 20 69 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f  ed in a..    ///
b370: 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76   case-insensitiv
b380: 65 20 6d 61 6e 6e 65 72 2e 0d 0a 20 20 20 20 2f  e manner...    /
b390: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
b3a0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
b3b0: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28   bool ToBoolean(
b3c0: 73 74 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a  string source)..
b3d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
b3e0: 66 20 28 73 6f 75 72 63 65 20 3d 3d 20 6e 75 6c  f (source == nul
b3f0: 6c 29 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67  l) throw new Arg
b400: 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
b410: 6f 6e 28 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20  on("source");.. 
b420: 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
b430: 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65  g.Compare(source
b440: 2c 20 30 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74  , 0, bool.TrueSt
b450: 72 69 6e 67 2c 20 30 2c 20 73 6f 75 72 63 65 2e  ring, 0, source.
b460: 4c 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f  Length, StringCo
b470: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
b480: 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30  IgnoreCase) == 0
b490: 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
b4a0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
b4b0: 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28  (String.Compare(
b4c0: 73 6f 75 72 63 65 2c 20 30 2c 20 62 6f 6f 6c 2e  source, 0, bool.
b4d0: 46 61 6c 73 65 53 74 72 69 6e 67 2c 20 30 2c 20  FalseString, 0, 
b4e0: 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 2c 20 53  source.Length, S
b4f0: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
b500: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
b510: 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20  e) == 0) return 
b520: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
b530: 20 20 73 77 69 74 63 68 20 28 73 6f 75 72 63 65    switch (source
b540: 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65  .ToLower(Culture
b550: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
b560: 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20  lture))..       
b570: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b580: 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20 20 20  case "y":..     
b590: 20 20 20 20 20 20 20 63 61 73 65 20 22 79 65 73         case "yes
b5a0: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ":..            
b5b0: 63 61 73 65 20 22 6f 6e 22 3a 0d 0a 20 20 20 20  case "on":..    
b5c0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22          case "1"
b5d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
b5e0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
b5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
b600: 65 20 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "n":..        
b610: 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a      case "no":..
b620: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
b630: 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20 20   "off":..       
b640: 20 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a       case "0":..
b650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b660: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
b670: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
b680: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
b690: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
b6a0: 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20  "source");..    
b6b0: 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  }....    #region
b6c0: 20 54 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e   Type Conversion
b6d0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  s..    /// <summ
b6e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
b6f0: 6e 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54  nverts a SQLiteT
b700: 79 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79  ype to a .NET Ty
b710: 70 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe object..    /
b720: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
b730: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
b740: 6d 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74  me="t">The SQLit
b750: 65 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74  eType to convert
b760: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b770: 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72  / <returns>Retur
b780: 6e 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f  ns a .NET Type o
b790: 62 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d  bject</returns>.
b7a0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
b7b0: 61 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65  atic Type SQLite
b7c0: 54 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74  TypeToType(SQLit
b7d0: 65 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d  eType t)..    {.
b7e0: 0a 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70  .      if (t.Typ
b7f0: 65 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65  e == DbType.Obje
b800: 63 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ct)..        ret
b810: 75 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74  urn _affinitytot
b820: 79 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e  ype[(int)t.Affin
b830: 69 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73  ity];..      els
b840: 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  e..        retur
b850: 6e 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e  n SQLiteConvert.
b860: 44 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54  DbTypeToType(t.T
b870: 79 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ype);..    }....
b880: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
b890: 69 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e  ic Type[] _affin
b8a0: 69 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20  itytotype = {.. 
b8b0: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
b8c0: 63 74 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74  ct),   // Uninit
b8d0: 69 61 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20  ialized (0)..   
b8e0: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29     typeof(Int64)
b8f0: 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31  ,    // Int64 (1
b900: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b910: 44 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f  Double),   // Do
b920: 75 62 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20  uble (2)..      
b930: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
b940: 20 20 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20    // Text (3).. 
b950: 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65       typeof(byte
b960: 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28  []),   // Blob (
b970: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  4)..      typeof
b980: 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e  (object),   // N
b990: 75 6c 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 6e  ull (5)..      n
b9a0: 75 6c 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20  ull,            
b9b0: 20 2f 2f 20 55 6e 64 65 66 69 6e 65 64 20 28 36   // Undefined (6
b9c0: 29 0d 0a 20 20 20 20 20 20 6e 75 6c 6c 2c 20 20  )..      null,  
b9d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 6e             // Un
b9e0: 64 65 66 69 6e 65 64 20 28 37 29 0d 0a 20 20 20  defined (7)..   
b9f0: 20 20 20 6e 75 6c 6c 2c 20 20 20 20 20 20 20 20     null,        
ba00: 20 20 20 20 20 2f 2f 20 55 6e 64 65 66 69 6e 65       // Undefine
ba10: 64 20 28 38 29 0d 0a 20 20 20 20 20 20 6e 75 6c  d (8)..      nul
ba20: 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  l,             /
ba30: 2f 20 55 6e 64 65 66 69 6e 65 64 20 28 39 29 0d  / Undefined (9).
ba40: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
ba50: 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65  teTime), // Date
ba60: 54 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20  Time (10)..     
ba70: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20   typeof(object) 
ba80: 20 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d     // None (11).
ba90: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
baa0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
bab0: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
bac0: 6e 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65  n intrinsic type
bad0: 2c 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70  , return a DbTyp
bae0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
baf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
bb00: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
bb10: 3e 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65  >The native type
bb20: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
bb30: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
bb40: 74 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73  turns>The corres
bb50: 70 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74  ponding (closest
bb60: 20 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f   match) DbType</
bb70: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
bb80: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62  ternal static Db
bb90: 54 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70  Type TypeToDbTyp
bba0: 65 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  e(Type typ)..   
bbb0: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f   {..      TypeCo
bbc0: 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74  de tc = Type.Get
bbd0: 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a  TypeCode(typ);..
bbe0: 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20        if (tc == 
bbf0: 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29  TypeCode.Object)
bc00: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
bc10: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
bc20: 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65  peof(byte[])) re
bc30: 74 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61  turn DbType.Bina
bc40: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ry;..        if 
bc50: 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47  (typ == typeof(G
bc60: 75 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54  uid)) return DbT
bc70: 79 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20  ype.Guid;..     
bc80: 20 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65     return DbType
bc90: 2e 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  .String;..      
bca0: 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
bcb0: 5f 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69  _typetodbtype[(i
bcc0: 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  nt)tc];..    }..
bcd0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
bce0: 61 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74  atic DbType[] _t
bcf0: 79 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d  ypetodbtype = {.
bd00: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62  .      DbType.Ob
bd10: 6a 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79  ject,   // Empty
bd20: 20 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (0)..      DbTy
bd30: 70 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20  pe.Binary,   // 
bd40: 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20  Object (1)..    
bd50: 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c    DbType.Object,
bd60: 20 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29     // DBNull (2)
bd70: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
bd80: 6f 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c  oolean,  // Bool
bd90: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44  ean (3)..      D
bda0: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
bdb0: 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20  // Char (4)..   
bdc0: 20 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c     DbType.SByte,
bdd0: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29      // SByte (5)
bde0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
bdf0: 79 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65  yte,     // Byte
be00: 20 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (6)..      DbTy
be10: 70 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20  pe.Int16,    // 
be20: 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20  Int16 (7)..     
be30: 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20   DbType.UInt16, 
be40: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d    // UInt16 (8).
be50: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e  .      DbType.In
be60: 74 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32  t32,    // Int32
be70: 20 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (9)..      DbTy
be80: 70 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20  pe.UInt32,   // 
be90: 55 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20  UInt32 (10)..   
bea0: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c     DbType.Int64,
beb0: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31      // Int64 (11
bec0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
bed0: 55 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e  UInt64,   // UIn
bee0: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
bef0: 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20  DbType.Single,  
bf00: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d   // Single (13).
bf10: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f  .      DbType.Do
bf20: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c  uble,   // Doubl
bf30: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62  e (14)..      Db
bf40: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f  Type.Decimal,  /
bf50: 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a  / Decimal (15)..
bf60: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74        DbType.Dat
bf70: 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69  eTime, // DateTi
bf80: 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44  me (16)..      D
bf90: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
bfa0: 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20  // ?? (17)..    
bfb0: 20 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20    DbType.String 
bfc0: 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38     // String (18
bfd0: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
bfe0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
bff0: 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
c000: 74 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66  the ColumnSize f
c010: 6f 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54  or the given DbT
c020: 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ype..    /// </s
c030: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
c040: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
c050: 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f  p">The DbType to
c060: 20 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66   get the size of
c070: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
c080: 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  / <returns></ret
c090: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
c0a0: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44  nal static int D
c0b0: 62 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a  bTypeToColumnSiz
c0c0: 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  e(DbType typ).. 
c0d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
c0e0: 72 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75  rn _dbtypetocolu
c0f0: 6d 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d  mnsize[(int)typ]
c100: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
c110: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
c120: 6e 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f  nt[] _dbtypetoco
c130: 6c 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20  lumnsize = {..  
c140: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
c150: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20  , // AnsiString 
c160: 28 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  (0)..      int.M
c170: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61  axValue, // Bina
c180: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c  ry (1)..      1,
c190: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
c1a0: 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31  yte (2)..      1
c1b0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c1c0: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
c1d0: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20     8,           
c1e0: 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29   // Currency (4)
c1f0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
c200: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35        // Date (5
c210: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
c220: 20 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69         // DateTi
c230: 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c  me (6)..      8,
c240: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
c250: 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20  ecimal (7)..    
c260: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
c270: 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20  // Double (8).. 
c280: 20 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20       16,        
c290: 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a     // Guid (9)..
c2a0: 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20        2,        
c2b0: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30      // Int16 (10
c2c0: 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20  )..      4,     
c2d0: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20         // Int32 
c2e0: 28 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (11)..      8,  
c2f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
c300: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69  64 (12)..      i
c310: 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20  nt.MaxValue, // 
c320: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
c330: 20 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20     1,           
c340: 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a   // SByte (14)..
c350: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20        4,        
c360: 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31      // Single (1
c370: 35 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  5)..      int.Ma
c380: 78 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  xValue, // Strin
c390: 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c  g (16)..      8,
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
c3b0: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
c3c0: 32 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  2,            //
c3d0: 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20   UInt16 (18)..  
c3e0: 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20      4,          
c3f0: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29    // UInt32 (19)
c400: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
c410: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20        // UInt64 
c420: 28 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (20)..      8,  
c430: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72            // Var
c440: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
c450: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
c460: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46  , // AnsiStringF
c470: 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d  ixedLength (22).
c480: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
c490: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69  lue, // StringFi
c4a0: 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a  xedLength (23)..
c4b0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
c4c0: 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a  ue, // ?? (24)..
c4d0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
c4e0: 75 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ue, // Xml (25).
c4f0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
c500: 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65       // DateTime
c510: 32 20 28 32 36 29 0d 0a 20 20 20 20 20 20 31 30  2 (26)..      10
c520: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
c530: 61 74 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32  ateTimeOffset (2
c540: 37 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  7)..    };....  
c550: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
c560: 63 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54  c object DbTypeT
c570: 6f 4e 75 6d 65 72 69 63 50 72 65 63 69 73 69 6f  oNumericPrecisio
c580: 6e 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  n(DbType typ).. 
c590: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
c5a0: 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65  rn _dbtypetonume
c5b0: 72 69 63 70 72 65 63 69 73 69 6f 6e 5b 28 69 6e  ricprecision[(in
c5c0: 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  t)typ];..    }..
c5d0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
c5e0: 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64  atic object[] _d
c5f0: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72  btypetonumericpr
c600: 65 63 69 73 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20  ecision = {..   
c610: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c620: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28   // AnsiString (
c630: 30 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  0)..      DBNull
c640: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72  .Value, // Binar
c650: 79 20 28 31 29 0d 0a 20 20 20 20 20 20 33 2c 20  y (1)..      3, 
c660: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79             // By
c670: 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 44 42  te (2)..      DB
c680: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42  Null.Value, // B
c690: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
c6a0: 20 20 31 39 2c 20 20 20 20 20 20 20 20 20 20 20    19,           
c6b0: 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d  // Currency (4).
c6c0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
c6d0: 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20 28 35 29  lue, // Date (5)
c6e0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
c6f0: 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d  alue, // DateTim
c700: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 35 33 2c  e (6)..      53,
c710: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65             // De
c720: 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20  cimal (7)..     
c730: 20 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f   53,           /
c740: 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20  / Double (8)..  
c750: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c760: 2c 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20  , // Guid (9).. 
c770: 20 20 20 20 20 35 2c 20 20 20 20 20 20 20 20 20       5,         
c780: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29     // Int16 (10)
c790: 0d 0a 20 20 20 20 20 20 31 30 2c 20 20 20 20 20  ..      10,     
c7a0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28        // Int32 (
c7b0: 31 31 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20  11)..      19,  
c7c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36           // Int6
c7d0: 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44 42  4 (12)..      DB
c7e0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f  Null.Value, // O
c7f0: 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20  bject (13)..    
c800: 20 20 33 2c 20 20 20 20 20 20 20 20 20 20 20 20    3,            
c810: 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20  // SByte (14).. 
c820: 20 20 20 20 20 32 34 2c 20 20 20 20 20 20 20 20       24,        
c830: 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35     // Single (15
c840: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c850: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
c860: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 42 4e   (16)..      DBN
c870: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69  ull.Value, // Ti
c880: 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 35  me (17)..      5
c890: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c8a0: 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20  UInt16 (18)..   
c8b0: 20 20 20 31 30 2c 20 20 20 20 20 20 20 20 20 20     10,          
c8c0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d   // UInt32 (19).
c8d0: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c8e0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28       // UInt64 (
c8f0: 32 30 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20  20)..      53,  
c900: 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e           // VarN
c910: 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20  umeric (21)..   
c920: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c930: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
c940: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
c950: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c960: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78  ue, // StringFix
c970: 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20  edLength (23).. 
c980: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c990: 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20  e, // ?? (24).. 
c9a0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c9b0: 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a  e, // Xml (25)..
c9c0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c9d0: 75 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 32  ue, // DateTime2
c9e0: 20 28 32 36 29 0d 0a 20 20 20 20 20 20 44 42 4e   (26)..      DBN
c9f0: 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 44 61  ull.Value  // Da
ca00: 74 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32 37  teTimeOffset (27
ca10: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
ca20: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
ca30: 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f   object DbTypeTo
ca40: 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44 62 54  NumericScale(DbT
ca50: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
ca60: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64  .      return _d
ca70: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63  btypetonumericsc
ca80: 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a  ale[(int)typ];..
ca90: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
caa0: 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
cab0: 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75  ct[] _dbtypetonu
cac0: 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b 0d 0a  mericscale = {..
cad0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
cae0: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
caf0: 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42 4e  g (0)..      DBN
cb00: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69  ull.Value, // Bi
cb10: 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20  nary (1)..      
cb20: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
cb30: 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20   Byte (2)..     
cb40: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
cb50: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
cb60: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
cb70: 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28     // Currency (
cb80: 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  4)..      DBNull
cb90: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20  .Value, // Date 
cba0: 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (5)..      DBNul
cbb0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65  l.Value, // Date
cbc0: 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20  Time (6)..      
cbd0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
cbe0: 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20   Decimal (7)..  
cbf0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
cc00: 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d  , // Double (8).
cc10: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
cc20: 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 29  lue, // Guid (9)
cc30: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
cc40: 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28        // Int16 (
cc50: 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  10)..      0,   
cc60: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33           // Int3
cc70: 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 30 2c  2 (11)..      0,
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
cc90: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
cca0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
ccb0: 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20  / Object (13).. 
ccc0: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
ccd0: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29     // SByte (14)
cce0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ccf0: 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c 65 20  alue, // Single 
cd00: 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (15)..      DBNu
cd10: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72  ll.Value, // Str
cd20: 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20  ing (16)..      
cd30: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
cd40: 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20   Time (17)..    
cd50: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
cd60: 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a  // UInt16 (18)..
cd70: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
cd80: 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31      // UInt32 (1
cd90: 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  9)..      0,    
cda0: 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36          // UInt6
cdb0: 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 30 2c  4 (20)..      0,
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56              // V
cdd0: 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a  arNumeric (21)..
cde0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
cdf0: 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e  ue, // AnsiStrin
ce00: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32  gFixedLength (22
ce10: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
ce20: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
ce30: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29  FixedLength (23)
ce40: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ce50: 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29  alue, // ?? (24)
ce60: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
ce70: 61 6c 75 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35  alue, // Xml (25
ce80: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
ce90: 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 54 69  Value, // DateTi
cea0: 6d 65 32 20 28 32 36 29 0d 0a 20 20 20 20 20 20  me2 (26)..      
ceb0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f  DBNull.Value  //
cec0: 20 44 61 74 65 54 69 6d 65 4f 66 66 73 65 74 20   DateTimeOffset 
ced0: 28 32 37 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a  (27)..    };....
cee0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
cef0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
cf00: 6d 69 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c  mines the defaul
cf10: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
cf20: 6e 61 6d 65 20 74 6f 20 62 65 20 75 73 65 64 20  name to be used 
cf30: 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  when a..    /// 
cf40: 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76  per-connection v
cf50: 61 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69  alue is not avai
cf60: 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lable...    /// 
cf70: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
cf80: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
cf90: 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20  "connection">.. 
cfa0: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
cfb0: 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f  ction context fo
cfc0: 72 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c  r type mappings,
cfd0: 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f   if any...    //
cfe0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
cff0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
d000: 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75     /// The defau
d010: 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65  lt database type
d020: 20 6e 61 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20   name to use... 
d030: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d040: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
d050: 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74  tatic string Get
d060: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28  DefaultTypeName(
d070: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
d080: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
d090: 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29  ction..        )
d0a0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
d0b0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d0c0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28  nFlags flags = (
d0d0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75  connection != nu
d0e0: 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ll) ?..         
d0f0: 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c     connection.Fl
d100: 61 67 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e  ags : SQLiteConn
d110: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65  ectionFlags.None
d120: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
d130: 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
d140: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d150: 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
d160: 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
d170: 20 20 20 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e      == SQLiteCon
d180: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43  nectionFlags.NoC
d190: 6f 6e 76 65 72 74 53 65 74 74 69 6e 67 73 29 0d  onvertSettings).
d1a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
d1b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46          return F
d1c0: 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 54 79  allbackDefaultTy
d1d0: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
d1e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 74   }....        st
d1f0: 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65  ring name = "Use
d200: 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44  _SQLiteConvert_D
d210: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 22 3b  efaultTypeName";
d220: 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
d230: 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
d240: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 40          string @
d250: 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d  default = null;.
d260: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
d270: 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75  connection == nu
d280: 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  ll) ||..        
d290: 20 20 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e      !connection.
d2a0: 54 72 79 47 65 74 43 61 63 68 65 64 53 65 74 74  TryGetCachedSett
d2b0: 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75  ing(name, @defau
d2c0: 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  lt, out value)).
d2d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
d2e0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
d2f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d300: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
d310: 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  e = UnsafeNative
d320: 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69  Methods.GetSetti
d330: 6e 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64  ngValue(name, @d
d340: 65 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20  efault);....    
d350: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d360: 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
d370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d380: 20 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c      value = Fall
d390: 62 61 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e  backDefaultTypeN
d3a0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
d3b0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
d3c0: 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20   finally..      
d3d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d3e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
d3f0: 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
d400: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d410: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
d420: 2e 53 65 74 43 61 63 68 65 64 53 65 74 74 69 6e  .SetCachedSettin
d430: 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  g(name, value);.
d440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
d450: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d460: 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 74       return Sett
d470: 69 6e 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67  ingValueToString
d480: 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 7d 0d  (value);..    }.
d490: 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
d4a0: 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
d4b0: 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 2f 2f 2f  WARNING..    ///
d4c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d4d0: 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63 61 62 6c  /// If applicabl
d4e0: 65 2c 20 69 73 73 75 65 73 20 61 20 74 72 61 63  e, issues a trac
d4f0: 65 20 6c 6f 67 20 6d 65 73 73 61 67 65 20 77 61  e log message wa
d500: 72 6e 69 6e 67 20 61 62 6f 75 74 20 66 61 6c 6c  rning about fall
d510: 69 6e 67 20 62 61 63 6b 20 74 6f 0d 0a 20 20 20  ing back to..   
d520: 20 2f 2f 2f 20 74 68 65 20 64 65 66 61 75 6c 74   /// the default
d530: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
d540: 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ame...    /// </
d550: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
d560: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
d570: 62 54 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  bType">..    ///
d580: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 76 61   The database va
d590: 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f  lue type...    /
d5a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d5b0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
d5c0: 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f  ="flags">..    /
d5d0: 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 61 73 73  // The flags ass
d5e0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
d5f0: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
d600: 6f 6e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20  on object...    
d610: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
d620: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
d630: 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a 20  e="typeName">.. 
d640: 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
d650: 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64  al name of the d
d660: 61 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a 20  atabase type... 
d670: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
d680: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
d690: 74 69 63 20 76 6f 69 64 20 44 65 66 61 75 6c 74  tic void Default
d6a0: 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28  TypeNameWarning(
d6b0: 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65  ..        DbType
d6c0: 20 64 62 54 79 70 65 2c 0d 0a 20 20 20 20 20 20   dbType,..      
d6d0: 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69    SQLiteConnecti
d6e0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 0d 0a  onFlags flags,..
d6f0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
d700: 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ypeName..       
d710: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
d720: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
d730: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d740: 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69  Flags.TraceWarni
d750: 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  ng) == SQLiteCon
d760: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61  nectionFlags.Tra
d770: 63 65 57 61 72 6e 69 6e 67 29 0d 0a 20 20 20 20  ceWarning)..    
d780: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d790: 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69     Trace.WriteLi
d7a0: 6e 65 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  ne(HelperMethods
d7b0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7d0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
d7e0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
d7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57 41               "WA
d800: 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70  RNING: Type mapp
d810: 69 6e 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75  ing failed, retu
d820: 72 6e 69 6e 67 20 64 65 66 61 75 6c 74 20 6e 61  rning default na
d830: 6d 65 20 5c 22 7b 30 7d 5c 22 20 66 6f 72 20 74  me \"{0}\" for t
d840: 79 70 65 20 7b 31 7d 2e 22 2c 0d 0a 20 20 20 20  ype {1}.",..    
d850: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
d860: 4e 61 6d 65 2c 20 64 62 54 79 70 65 29 29 3b 0d  Name, dbType));.
d870: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
d880: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
d890: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
d8a0: 49 66 20 61 70 70 6c 69 63 61 62 6c 65 2c 20 69  If applicable, i
d8b0: 73 73 75 65 73 20 61 20 74 72 61 63 65 20 6c 6f  ssues a trace lo
d8c0: 67 20 6d 65 73 73 61 67 65 20 77 61 72 6e 69 6e  g message warnin
d8d0: 67 20 61 62 6f 75 74 20 66 61 6c 6c 69 6e 67 20  g about falling 
d8e0: 62 61 63 6b 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f  back to..    ///
d8f0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   the default dat
d900: 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65  abase value type
d910: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
d920: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
d930: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65  param name="type
d940: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  Name">..    /// 
d950: 54 68 65 20 74 65 78 74 75 61 6c 20 6e 61 6d 65  The textual name
d960: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
d970: 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
d980: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
d990: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
d9a0: 6c 61 67 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  lags">..    /// 
d9b0: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
d9c0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
d9d0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
d9e0: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
d9f0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
da00: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
da10: 64 62 54 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f  dbType">..    //
da20: 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 76  / The database v
da30: 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20  alue type...    
da40: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
da50: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
da60: 20 76 6f 69 64 20 44 65 66 61 75 6c 74 44 62 54   void DefaultDbT
da70: 79 70 65 57 61 72 6e 69 6e 67 28 0d 0a 20 20 20  ypeWarning(..   
da80: 20 20 20 20 20 73 74 72 69 6e 67 20 74 79 70 65       string type
da90: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 53  Name,..        S
daa0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
dab0: 6c 61 67 73 20 66 6c 61 67 73 2c 0d 0a 20 20 20  lags flags,..   
dac0: 20 20 20 20 20 44 62 54 79 70 65 3f 20 64 62 54       DbType? dbT
dad0: 79 70 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ype..        )..
dae0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
daf0: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
db00: 6c 4f 72 45 6d 70 74 79 28 74 79 70 65 4e 61 6d  lOrEmpty(typeNam
db10: 65 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  e) &&..         
db20: 20 20 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c     ((flags & SQL
db30: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
db40: 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
db50: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
db60: 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57  tionFlags.TraceW
db70: 61 72 6e 69 6e 67 29 29 0d 0a 20 20 20 20 20 20  arning))..      
db80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
db90: 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65   Trace.WriteLine
dba0: 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53  (HelperMethods.S
dbb0: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
dbd0: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
dbe0: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
dbf0: 20 20 20 20 20 20 20 20 20 20 20 22 57 41 52 4e             "WARN
dc00: 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e  ING: Type mappin
dc10: 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e  g failed, return
dc20: 69 6e 67 20 64 65 66 61 75 6c 74 20 74 79 70 65  ing default type
dc30: 20 7b 30 7d 20 66 6f 72 20 6e 61 6d 65 20 5c 22   {0} for name \"
dc40: 7b 31 7d 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20  {1}\".",..      
dc50: 20 20 20 20 20 20 20 20 20 20 64 62 54 79 70 65            dbType
dc60: 2c 20 74 79 70 65 4e 61 6d 65 29 29 3b 0d 0a 20  , typeName));.. 
dc70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
dc80: 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 2f  .#endif....    /
dc90: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
dca0: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
dcb0: 6e 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65  n database value
dcc0: 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 74 68   type, return th
dcd0: 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68  e "closest-match
dce0: 22 20 74 65 78 74 75 61 6c 20 64 61 74 61 62 61  " textual databa
dcf0: 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20  se type name... 
dd00: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
dd10: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
dd20: 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
dd30: 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63 74 69  on">The connecti
dd40: 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 63  on context for c
dd50: 75 73 74 6f 6d 20 74 79 70 65 20 6d 61 70 70 69  ustom type mappi
dd60: 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f 70 61  ngs, if any.</pa
dd70: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
dd80: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70  aram name="dbTyp
dd90: 65 22 3e 54 68 65 20 64 61 74 61 62 61 73 65 20  e">The database 
dda0: 76 61 6c 75 65 20 74 79 70 65 2e 3c 2f 70 61 72  value type.</par
ddb0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
ddc0: 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22  ram name="flags"
ddd0: 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63  >The flags assoc
dde0: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
ddf0: 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  arent connection
de00: 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e   object.</param>
de10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
de20: 6e 73 3e 54 68 65 20 74 79 70 65 20 6e 61 6d 65  ns>The type name
de30: 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72   or an empty str
de40: 69 6e 67 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  ing if it cannot
de50: 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 3c   be determined.<
de60: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
de70: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73  nternal static s
de80: 74 72 69 6e 67 20 44 62 54 79 70 65 54 6f 54 79  tring DbTypeToTy
de90: 70 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  peName(..       
dea0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
deb0: 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
dec0: 20 20 20 20 20 20 20 44 62 54 79 70 65 20 64 62         DbType db
ded0: 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 53  Type,..        S
dee0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
def0: 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20  lags flags..    
df00: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
df10: 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 66        string def
df20: 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 6e  aultTypeName = n
df30: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
df40: 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21  if (connection !
df50: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
df60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
df70: 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e 65 63 74  flags |= connect
df80: 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20  ion.Flags;....  
df90: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 66            if ((f
dfa0: 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
dfb0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65  nectionFlags.Use
dfc0: 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29  ConnectionTypes)
dfd0: 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63   == SQLiteConnec
dfe0: 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e  tionFlags.UseCon
dff0: 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 0d 0a 20  nectionTypes).. 
e000: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
e020: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 63 6f  LiteDbTypeMap co
e030: 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65  nnectionTypeName
e040: 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f  s = connection._
e050: 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20  typeNames;....  
e060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e070: 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65   (connectionType
e080: 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a  Names != null)..
e090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e0b0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
e0c0: 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65  ypeMapping value
e0d0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e0e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
e0f0: 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
e100: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 64 62 54  .TryGetValue(dbT
e110: 79 70 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29  ype, out value))
e120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e130: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e140: 20 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b   value.typeName;
e150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e160: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e170: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e180: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
e190: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74    // NOTE: Use t
e1a0: 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62  he default datab
e1b0: 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20 66 6f  ase type name fo
e1c0: 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
e1d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
e1e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  /..            d
e1f0: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
e200: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61   connection.Defa
e210: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  ultTypeName;..  
e220: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e230: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
e240: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
e250: 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
e260: 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  pes) == SQLiteCo
e270: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
e280: 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a 20 20  GlobalTypes)..  
e290: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e2a0: 20 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74       if (default
e2b0: 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  TypeName != null
e2c0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e2d0: 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c     return defaul
e2e0: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tTypeName;....  
e2f0: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
e300: 74 54 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 44  tTypeName = GetD
e310: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 63  efaultTypeName(c
e320: 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23  onnection);....#
e330: 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
e340: 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
e350: 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ING..           
e360: 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   DefaultTypeName
e370: 57 61 72 6e 69 6e 67 28 64 62 54 79 70 65 2c 20  Warning(dbType, 
e380: 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74 54 79  flags, defaultTy
e390: 70 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66  peName);..#endif
e3a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e3b0: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79  return defaultTy
e3c0: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
e3d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7b 0d   }....        {.
e3e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
e3f0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
e400: 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20   value;....     
e410: 20 20 20 20 20 20 20 69 66 20 28 28 5f 74 79 70         if ((_typ
e420: 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 20  eNames != null) 
e430: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
e440: 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54      _typeNames.T
e450: 72 79 47 65 74 56 61 6c 75 65 28 64 62 54 79 70  ryGetValue(dbTyp
e460: 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  e, out value))..
e470: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e490: 65 74 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65  eturn value.type
e4a0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
e4b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
e4c0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  ...        if (d
e4d0: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 21  efaultTypeName !
e4e0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
e4f0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
e500: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a  ultTypeName;....
e510: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54          defaultT
e520: 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66  ypeName = GetDef
e530: 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e  aultTypeName(con
e540: 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66  nection);....#if
e550: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
e560: 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e   && TRACE_WARNIN
e570: 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75  G..        Defau
e580: 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e  ltTypeNameWarnin
e590: 67 28 64 62 54 79 70 65 2c 20 66 6c 61 67 73 2c  g(dbType, flags,
e5a0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
e5b0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
e5c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66        return def
e5d0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
e5e0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
e5f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
e600: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 62 54  // Convert a DbT
e610: 79 70 65 20 74 6f 20 61 20 54 79 70 65 0d 0a 20  ype to a Type.. 
e620: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e630: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
e640: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
e650: 20 44 62 54 79 70 65 20 74 6f 20 63 6f 6e 76 65   DbType to conve
e660: 72 74 20 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d  rt from</param>.
e670: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
e680: 73 3e 54 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61  s>The closest-ma
e690: 74 63 68 20 2e 4e 45 54 20 74 79 70 65 3c 2f 72  tch .NET type</r
e6a0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
e6b0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70  ernal static Typ
e6c0: 65 20 44 62 54 79 70 65 54 6f 54 79 70 65 28 44  e DbTypeToType(D
e6d0: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
e6e0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
e6f0: 5f 64 62 74 79 70 65 54 6f 54 79 70 65 5b 28 69  _dbtypeToType[(i
e700: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d  nt)typ];..    }.
e710: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
e720: 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 64 62  tatic Type[] _db
e730: 74 79 70 65 54 6f 54 79 70 65 20 3d 20 7b 0d 0a  typeToType = {..
e740: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
e750: 69 6e 67 29 2c 20 20 20 20 20 20 20 20 2f 2f 20  ing),        // 
e760: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
e770: 20 20 20 20 20 20 74 79 70 65 6f 66 28 62 79 74        typeof(byt
e780: 65 5b 5d 29 2c 20 20 20 20 20 20 20 20 2f 2f 20  e[]),        // 
e790: 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20  Binary (1)..    
e7a0: 20 20 74 79 70 65 6f 66 28 62 79 74 65 29 2c 20    typeof(byte), 
e7b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65           // Byte
e7c0: 20 28 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (2)..      type
e7d0: 6f 66 28 62 6f 6f 6c 29 2c 20 20 20 20 20 20 20  of(bool),       
e7e0: 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33     // Boolean (3
e7f0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
e800: 64 65 63 69 6d 61 6c 29 2c 20 20 20 20 20 20 20  decimal),       
e810: 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d  // Currency (4).
e820: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
e830: 74 65 54 69 6d 65 29 2c 20 20 20 20 20 20 2f 2f  teTime),      //
e840: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
e850: 20 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65   typeof(DateTime
e860: 29 2c 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54  ),      // DateT
e870: 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 74  ime (6)..      t
e880: 79 70 65 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20  ypeof(decimal), 
e890: 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c        // Decimal
e8a0: 20 28 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (7)..      type
e8b0: 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 20 20  of(double),     
e8c0: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29     // Double (8)
e8d0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 47  ..      typeof(G
e8e0: 75 69 64 29 2c 20 20 20 20 20 20 20 20 20 20 2f  uid),          /
e8f0: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
e900: 20 20 74 79 70 65 6f 66 28 49 6e 74 31 36 29 2c    typeof(Int16),
e910: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31           // Int1
e920: 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79  6 (10)..      ty
e930: 70 65 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20  peof(Int32),    
e940: 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31       // Int32 (1
e950: 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  1)..      typeof
e960: 28 49 6e 74 36 34 29 2c 20 20 20 20 20 20 20 20  (Int64),        
e970: 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a   // Int64 (12)..
e980: 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a        typeof(obj
e990: 65 63 74 29 2c 20 20 20 20 20 20 20 20 2f 2f 20  ect),        // 
e9a0: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
e9b0: 20 20 20 74 79 70 65 6f 66 28 73 62 79 74 65 29     typeof(sbyte)
e9c0: 2c 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79  ,         // SBy
e9d0: 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 74  te (14)..      t
e9e0: 79 70 65 6f 66 28 66 6c 6f 61 74 29 2c 20 20 20  ypeof(float),   
e9f0: 20 20 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20        // Single 
ea00: 28 31 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (15)..      type
ea10: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 20 20  of(string),     
ea20: 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36     // String (16
ea30: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
ea40: 44 61 74 65 54 69 6d 65 29 2c 20 20 20 20 20 20  DateTime),      
ea50: 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20  // Time (17)..  
ea60: 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74 31      typeof(UInt1
ea70: 36 29 2c 20 20 20 20 20 20 20 20 2f 2f 20 55 49  6),        // UI
ea80: 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20  nt16 (18)..     
ea90: 20 74 79 70 65 6f 66 28 55 49 6e 74 33 32 29 2c   typeof(UInt32),
eaa0: 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 33          // UInt3
eab0: 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20 74 79  2 (19)..      ty
eac0: 70 65 6f 66 28 55 49 6e 74 36 34 29 2c 20 20 20  peof(UInt64),   
ead0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28       // UInt64 (
eae0: 32 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  20)..      typeo
eaf0: 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 20 20 20  f(double),      
eb00: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
eb10: 28 32 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (21)..      type
eb20: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 20 20  of(string),     
eb30: 20 20 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67     // AnsiString
eb40: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29  FixedLength (22)
eb50: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
eb60: 74 72 69 6e 67 29 2c 20 20 20 20 20 20 20 20 2f  tring),        /
eb70: 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  / StringFixedLen
eb80: 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20  gth (23)..      
eb90: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20  typeof(string), 
eba0: 20 20 20 20 20 20 20 2f 2f 20 3f 3f 20 28 32 34         // ?? (24
ebb0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
ebc0: 73 74 72 69 6e 67 29 2c 20 20 20 20 20 20 20 20  string),        
ebd0: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
ebe0: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
ebf0: 6d 65 29 2c 20 20 20 20 20 20 2f 2f 20 44 61 74  me),      // Dat
ec00: 65 54 69 6d 65 32 20 28 32 36 29 0d 0a 23 69 66  eTime2 (26)..#if
ec10: 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
ec20: 43 54 46 52 41 4d 45 57 4f 52 4b 20 26 26 20 28  CTFRAMEWORK && (
ec30: 4e 45 54 5f 33 35 20 7c 7c 20 4e 45 54 5f 34 30  NET_35 || NET_40
ec40: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
ec50: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
ec60: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
ec70: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
ec80: 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45   || NET_47 || NE
ec90: 54 5f 34 37 31 20 7c 7c 20 4e 45 54 5f 34 37 32  T_471 || NET_472
eca0: 29 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  )..      //..   
ecb0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73     // NOTE: This
ecc0: 20 74 79 70 65 20 69 73 20 6f 6e 6c 79 20 61 76   type is only av
ecd0: 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68 65 0d 0a  ailable on the..
ece0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 2e        //       .
ecf0: 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 32 2e  NET Framework 2.
ed00: 30 20 53 50 31 20 61 6e 64 20 6c 61 74 65 72 2e  0 SP1 and later.
ed10: 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20  ..      //..    
ed20: 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d    typeof(DateTim
ed30: 65 4f 66 66 73 65 74 29 20 2f 2f 20 44 61 74 65  eOffset) // Date
ed40: 54 69 6d 65 4f 66 66 73 65 74 20 28 32 37 29 0d  TimeOffset (27).
ed50: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 74 79  .#else..      ty
ed60: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 20 20  peof(DateTime)  
ed70: 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65       // DateTime
ed80: 4f 66 66 73 65 74 20 28 32 37 29 0d 0a 23 65 6e  Offset (27)..#en
ed90: 64 69 66 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20  dif..    };.... 
eda0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
edb0: 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20  ..    /// For a 
edc0: 67 69 76 65 6e 20 74 79 70 65 2c 20 72 65 74 75  given type, retu
edd0: 72 6e 20 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d  rn the closest-m
ede0: 61 74 63 68 20 53 51 4c 69 74 65 20 54 79 70 65  atch SQLite Type
edf0: 41 66 66 69 6e 69 74 79 2c 20 77 68 69 63 68 20  Affinity, which 
ee00: 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e 64 73  only understands
ee10: 20 61 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20   a very limited 
ee20: 73 75 62 73 65 74 20 6f 66 20 74 79 70 65 73 2e  subset of types.
ee30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ee40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
ee50: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
ee60: 54 68 65 20 74 79 70 65 20 74 6f 20 65 76 61 6c  The type to eval
ee70: 75 61 74 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  uate</param>..  
ee80: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ee90: 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c  e="flags">The fl
eea0: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
eeb0: 69 74 68 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ith the connecti
eec0: 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  on.</param>..   
eed0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
eee0: 65 20 53 51 4c 69 74 65 20 74 79 70 65 20 61 66  e SQLite type af
eef0: 66 69 6e 69 74 79 20 66 6f 72 20 74 68 61 74 20  finity for that 
ef00: 74 79 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d  type.</returns>.
ef10: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
ef20: 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  atic TypeAffinit
ef30: 79 20 54 79 70 65 54 6f 41 66 66 69 6e 69 74 79  y TypeToAffinity
ef40: 28 0d 0a 20 20 20 20 20 20 20 20 54 79 70 65 20  (..        Type 
ef50: 74 79 70 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  typ,..        SQ
ef60: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
ef70: 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20  ags flags..     
ef80: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
ef90: 20 20 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d     TypeCode tc =
efa0: 20 54 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64   Type.GetTypeCod
efb0: 65 28 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69  e(typ);..      i
efc0: 66 20 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64  f (tc == TypeCod
efd0: 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20  e.Object)..     
efe0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
eff0: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79  typ == typeof(by
f000: 74 65 5b 5d 29 20 7c 7c 20 74 79 70 20 3d 3d 20  te[]) || typ == 
f010: 74 79 70 65 6f 66 28 47 75 69 64 29 29 0d 0a 20  typeof(Guid)).. 
f020: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
f030: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f  TypeAffinity.Blo
f040: 62 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65  b;..        else
f050: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
f060: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  rn TypeAffinity.
f070: 54 65 78 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  Text;..      }..
f080: 20 20 20 20 20 20 69 66 20 28 28 74 63 20 3d 3d        if ((tc ==
f090: 20 54 79 70 65 43 6f 64 65 2e 44 65 63 69 6d 61   TypeCode.Decima
f0a0: 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  l) &&..         
f0b0: 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74   ((flags & SQLit
f0c0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
f0d0: 2e 47 65 74 44 65 63 69 6d 61 6c 41 73 54 65 78  .GetDecimalAsTex
f0e0: 74 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  t) == SQLiteConn
f0f0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 47 65 74 44  ectionFlags.GetD
f100: 65 63 69 6d 61 6c 41 73 54 65 78 74 29 29 0d 0a  ecimalAsText))..
f110: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f120: 20 20 20 72 65 74 75 72 6e 20 54 79 70 65 41 66     return TypeAf
f130: 66 69 6e 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20  finity.Text;..  
f140: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74      }..      ret
f150: 75 72 6e 20 5f 74 79 70 65 63 6f 64 65 41 66 66  urn _typecodeAff
f160: 69 6e 69 74 69 65 73 5b 28 69 6e 74 29 74 63 5d  inities[(int)tc]
f170: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
f180: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 54  private static T
f190: 79 70 65 41 66 66 69 6e 69 74 79 5b 5d 20 5f 74  ypeAffinity[] _t
f1a0: 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74 69 65  ypecodeAffinitie
f1b0: 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 54 79 70  s = {..      Typ
f1c0: 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20  eAffinity.Null, 
f1d0: 20 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30 29      // Empty (0)
f1e0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
f1f0: 6e 69 74 79 2e 42 6c 6f 62 2c 20 20 20 20 20 2f  nity.Blob,     /
f200: 2f 20 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20 20  / Object (1)..  
f210: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
f220: 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 44 42  .Null,     // DB
f230: 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20  Null (2)..      
f240: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
f250: 36 34 2c 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61  64,    // Boolea
f260: 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 54 79 70  n (3)..      Typ
f270: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
f280: 20 20 20 20 2f 2f 20 43 68 61 72 20 28 34 29 0d      // Char (4).
f290: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
f2a0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
f2b0: 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20 20 20   SByte (5)..    
f2c0: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
f2d0: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42 79 74 65  nt64,    // Byte
f2e0: 20 28 36 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (6)..      Type
f2f0: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
f300: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 29 0d     // Int16 (7).
f310: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
f320: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
f330: 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20 20   UInt16 (8)..   
f340: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
f350: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74  Int64,    // Int
f360: 33 32 20 28 39 29 0d 0a 20 20 20 20 20 20 54 79  32 (9)..      Ty
f370: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
f380: 2c 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28  ,    // UInt32 (
f390: 31 30 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  10)..      TypeA
f3a0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
f3b0: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d    // Int64 (11).
f3c0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
f3d0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
f3e0: 20 55 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20   UInt64 (12)..  
f3f0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
f400: 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 53 69  .Double,   // Si
f410: 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20 20 20  ngle (13)..     
f420: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f   TypeAffinity.Do
f430: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c  uble,   // Doubl
f440: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 54 79  e (14)..      Ty
f450: 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c  peAffinity.Doubl
f460: 65 2c 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20  e,   // Decimal 
f470: 28 31 35 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (15)..      Type
f480: 41 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69 6d  Affinity.DateTim
f490: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
f4a0: 31 36 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  16)..      TypeA
f4b0: 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20  ffinity.Null,   
f4c0: 20 20 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20    // ?? (17)..  
f4d0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
f4e0: 2e 54 65 78 74 20 20 20 20 20 20 2f 2f 20 53 74  .Text      // St
f4f0: 72 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d  ring (18)..    }
f500: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
f510: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
f520: 42 75 69 6c 64 73 20 61 6e 64 20 72 65 74 75 72  Builds and retur
f530: 6e 73 20 61 20 6d 61 70 20 63 6f 6e 74 61 69 6e  ns a map contain
f540: 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
f550: 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 0d 0a 20   column types.. 
f560: 20 20 20 2f 2f 2f 20 72 65 63 6f 67 6e 69 7a 65     /// recognize
f570: 64 20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64  d by this provid
f580: 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  er...    /// </s
f590: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
f5a0: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
f5b0: 2f 2f 2f 20 41 20 6d 61 70 20 63 6f 6e 74 61 69  /// A map contai
f5c0: 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ning the databas
f5d0: 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 20 72  e column types r
f5e0: 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69  ecognized by thi
f5f0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69  s..    /// provi
f600: 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  der...    /// </
f610: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
f620: 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
f630: 69 74 65 44 62 54 79 70 65 4d 61 70 20 47 65 74  iteDbTypeMap Get
f640: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28  SQLiteDbTypeMap(
f650: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
f660: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c    return new SQL
f670: 69 74 65 44 62 54 79 70 65 4d 61 70 28 6e 65 77  iteDbTypeMap(new
f680: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f690: 70 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20  ping[] {..      
f6a0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f6b0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42  DbTypeMapping("B
f6c0: 49 47 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  IGINT", DbType.I
f6d0: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
f6e0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f6f0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f700: 6e 67 28 22 42 49 47 55 49 4e 54 22 2c 20 44 62  ng("BIGUINT", Db
f710: 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c  Type.UInt64, fal
f720: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f730: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f740: 70 65 4d 61 70 70 69 6e 67 28 22 42 49 4e 41 52  peMapping("BINAR
f750: 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  Y", DbType.Binar
f760: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
f770: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f780: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f790: 22 42 49 54 22 2c 20 44 62 54 79 70 65 2e 42 6f  "BIT", DbType.Bo
f7a0: 6f 6c 65 61 6e 2c 20 74 72 75 65 29 2c 0d 0a 20  olean, true),.. 
f7b0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f7c0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f7d0: 6e 67 28 22 42 4c 4f 42 22 2c 20 44 62 54 79 70  ng("BLOB", DbTyp
f7e0: 65 2e 42 69 6e 61 72 79 2c 20 74 72 75 65 29 2c  e.Binary, true),
f7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f800: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f810: 70 70 69 6e 67 28 22 42 4f 4f 4c 22 2c 20 44 62  pping("BOOL", Db
f820: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61  Type.Boolean, fa
f830: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f840: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f850: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c  ypeMapping("BOOL
f860: 45 41 4e 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f  EAN", DbType.Boo
f870: 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  lean, false),.. 
f880: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f890: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f8a0: 6e 67 28 22 43 48 41 52 22 2c 20 44 62 54 79 70  ng("CHAR", DbTyp
f8b0: 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65  e.AnsiStringFixe
f8c0: 64 4c 65 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d  dLength, true),.
f8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f8e0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f8f0: 70 69 6e 67 28 22 43 4c 4f 42 22 2c 20 44 62 54  ping("CLOB", DbT
f900: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
f910: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f920: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f930: 65 4d 61 70 70 69 6e 67 28 22 43 4f 55 4e 54 45  eMapping("COUNTE
f940: 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  R", DbType.Int64
f950: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f960: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f970: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f980: 43 55 52 52 45 4e 43 59 22 2c 20 44 62 54 79 70  CURRENCY", DbTyp
f990: 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65  e.Decimal, false
f9a0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f9b0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f9c0: 4d 61 70 70 69 6e 67 28 22 44 41 54 45 22 2c 20  Mapping("DATE", 
f9d0: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
f9e0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f9f0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fa00: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
fa10: 41 54 45 54 49 4d 45 22 2c 20 44 62 54 79 70 65  ATETIME", DbType
fa20: 2e 44 61 74 65 54 69 6d 65 2c 20 74 72 75 65 29  .DateTime, true)
fa30: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fa40: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fa50: 61 70 70 69 6e 67 28 22 44 45 43 49 4d 41 4c 22  apping("DECIMAL"
fa60: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
fa70: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
fa80: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fa90: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
faa0: 45 43 49 4d 41 4c 54 45 58 54 22 2c 20 44 62 54  ECIMALTEXT", DbT
fab0: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c  ype.Decimal, fal
fac0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fad0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fae0: 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42 4c  peMapping("DOUBL
faf0: 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c  E", DbType.Doubl
fb00: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
fb10: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fb20: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fb30: 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65 2e  "FLOAT", DbType.
fb40: 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d  Double, false),.
fb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fb60: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fb70: 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c 20  ping("GENERAL", 
fb80: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
fb90: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
fba0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fbb0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55 49  TypeMapping("GUI
fbc0: 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c  D", DbType.Guid,
fbd0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fbe0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fbf0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
fc00: 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70 65  DENTITY", DbType
fc10: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
fc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fc30: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fc40: 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44 62  ping("IMAGE", Db
fc50: 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c  Type.Binary, fal
fc60: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fc70: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fc80: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22 2c  peMapping("INT",
fc90: 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 74   DbType.Int32, t
fca0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fcb0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fcc0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 38  ypeMapping("INT8
fcd0: 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c  ", DbType.SByte,
fce0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fcf0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fd00: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
fd10: 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49 6e  NT16", DbType.In
fd20: 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t16, false),..  
fd30: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fd40: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fd50: 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79 70  g("INT32", DbTyp
fd60: 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  e.Int32, false),
fd70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fd80: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fd90: 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20 44  pping("INT64", D
fda0: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
fdb0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fdc0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fdd0: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47  peMapping("INTEG
fde0: 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  ER", DbType.Int6
fdf0: 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  4, true),..     
fe00: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fe10: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fe20: 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
fe30: 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29 2c  e.SByte, false),
fe40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fe50: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fe60: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31 36  pping("INTEGER16
fe70: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c  ", DbType.Int16,
fe80: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fe90: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fea0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
feb0: 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
fec0: 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  e.Int32, false),
fed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fee0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fef0: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36 34  pping("INTEGER64
ff00: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
ff10: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ff20: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ff30: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
ff40: 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65 2e  OGICAL", DbType.
ff50: 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c  Boolean, false),
ff60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ff70: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ff80: 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44 62  pping("LONG", Db
ff90: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
ffa0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ffb0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ffc0: 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43 48  eMapping("LONGCH
ffd0: 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  AR", DbType.Stri
ffe0: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
fff0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10000 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10010 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62 54  ("LONGTEXT", DbT
10020 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
10030 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10040 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10050 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56 41  eMapping("LONGVA
10060 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  RCHAR", DbType.S
10070 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
10080 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10090 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
100a0 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54 79  ing("MEMO", DbTy
100b0 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
100c0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
100d0 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
100e0 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22 2c  Mapping("MONEY",
100f0 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
10100 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
10110 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10120 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
10130 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74  CHAR", DbType.St
10140 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c  ringFixedLength,
10150 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
10160 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10170 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 4f  bTypeMapping("NO
10180 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  TE", DbType.Stri
10190 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
101a0 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
101b0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
101c0 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70 65  ("NTEXT", DbType
101d0 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
101e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
101f0 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10200 70 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c 20  pping("NUMBER", 
10210 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20  DbType.Decimal, 
10220 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10230 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10240 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55  bTypeMapping("NU
10250 4d 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e 44  MERIC", DbType.D
10260 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
10270 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10280 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10290 70 69 6e 67 28 22 4e 55 4d 45 52 49 43 54 45 58  ping("NUMERICTEX
102a0 54 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d  T", DbType.Decim
102b0 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  al, false),..   
102c0 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
102d0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
102e0 28 22 4e 56 41 52 43 48 41 52 22 2c 20 44 62 54  ("NVARCHAR", DbT
102f0 79 70 65 2e 53 74 72 69 6e 67 2c 20 74 72 75 65  ype.String, true
10300 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
10310 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10320 4d 61 70 70 69 6e 67 28 22 4f 4c 45 4f 42 4a 45  Mapping("OLEOBJE
10330 43 54 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  CT", DbType.Bina
10340 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
10350 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10360 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10370 28 22 52 41 57 22 2c 20 44 62 54 79 70 65 2e 42  ("RAW", DbType.B
10380 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a  inary, false),..
10390 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
103a0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
103b0 69 6e 67 28 22 52 45 41 4c 22 2c 20 44 62 54 79  ing("REAL", DbTy
103c0 70 65 2e 44 6f 75 62 6c 65 2c 20 74 72 75 65 29  pe.Double, true)
103d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
103e0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
103f0 61 70 70 69 6e 67 28 22 53 49 4e 47 4c 45 22 2c  apping("SINGLE",
10400 20 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20   DbType.Single, 
10410 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
10420 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10430 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
10440 4c 4c 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e  LLDATE", DbType.
10450 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29  DateTime, false)
10460 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10470 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10480 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c 49 4e 54  apping("SMALLINT
10490 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c  ", DbType.Int16,
104a0 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
104b0 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
104c0 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d  bTypeMapping("SM
104d0 41 4c 4c 55 49 4e 54 22 2c 20 44 62 54 79 70 65  ALLUINT", DbType
104e0 2e 55 49 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d  .UInt16, true),.
104f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10500 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10510 70 69 6e 67 28 22 53 54 52 49 4e 47 22 2c 20 44  ping("STRING", D
10520 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
10530 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10540 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10550 79 70 65 4d 61 70 70 69 6e 67 28 22 54 45 58 54  ypeMapping("TEXT
10560 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
10570 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
10580 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10590 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
105a0 54 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61  TIME", DbType.Da
105b0 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
105c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
105d0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
105e0 70 69 6e 67 28 22 54 49 4d 45 53 54 41 4d 50 22  ping("TIMESTAMP"
105f0 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d  , DbType.DateTim
10600 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
10610 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10620 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10630 22 54 49 4e 59 49 4e 54 22 2c 20 44 62 54 79 70  "TINYINT", DbTyp
10640 65 2e 42 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a  e.Byte, true),..
10650 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10660 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10670 69 6e 67 28 22 54 49 4e 59 53 49 4e 54 22 2c 20  ing("TINYSINT", 
10680 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 74 72  DbType.SByte, tr
10690 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
106a0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
106b0 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 22  peMapping("UINT"
106c0 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c  , DbType.UInt32,
106d0 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
106e0 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
106f0 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49  bTypeMapping("UI
10700 4e 54 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74  NT8", DbType.Byt
10710 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
10720 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10730 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10740 22 55 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65  "UINT16", DbType
10750 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  .UInt16, false),
10760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10770 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10780 70 70 69 6e 67 28 22 55 49 4e 54 33 32 22 2c 20  pping("UINT32", 
10790 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 66  DbType.UInt32, f
107a0 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
107b0 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
107c0 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e  TypeMapping("UIN
107d0 54 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  T64", DbType.UIn
107e0 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t64, false),..  
107f0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10800 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10810 67 28 22 55 4c 4f 4e 47 22 2c 20 44 62 54 79 70  g("ULONG", DbTyp
10820 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
10830 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10840 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10850 61 70 70 69 6e 67 28 22 55 4e 49 51 55 45 49 44  apping("UNIQUEID
10860 45 4e 54 49 46 49 45 52 22 2c 20 44 62 54 79 70  ENTIFIER", DbTyp
10870 65 2e 47 75 69 64 2c 20 74 72 75 65 29 2c 0d 0a  e.Guid, true),..
10880 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10890 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
108a0 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54  ing("UNSIGNEDINT
108b0 45 47 45 52 22 2c 20 44 62 54 79 70 65 2e 55 49  EGER", DbType.UI
108c0 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt64, true),..  
108d0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
108e0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
108f0 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47  g("UNSIGNEDINTEG
10900 45 52 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74  ER8", DbType.Byt
10910 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
10920 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10930 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10940 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52  "UNSIGNEDINTEGER
10950 31 36 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  16", DbType.UInt
10960 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  16, false),..   
10970 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10980 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10990 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45  ("UNSIGNEDINTEGE
109a0 52 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  R32", DbType.UIn
109b0 74 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t32, false),..  
109c0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
109d0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
109e0 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47  g("UNSIGNEDINTEG
109f0 45 52 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49  ER64", DbType.UI
10a00 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
10a10 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
10a20 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10a30 6e 67 28 22 56 41 52 42 49 4e 41 52 59 22 2c 20  ng("VARBINARY", 
10a40 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
10a50 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10a60 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10a70 54 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52  TypeMapping("VAR
10a80 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e  CHAR", DbType.An
10a90 73 69 53 74 72 69 6e 67 2c 20 74 72 75 65 29 2c  siString, true),
10aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10ab0 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10ac0 70 70 69 6e 67 28 22 56 41 52 43 48 41 52 32 22  pping("VARCHAR2"
10ad0 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72  , DbType.AnsiStr
10ae0 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
10af0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10b00 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10b10 67 28 22 59 45 53 4e 4f 22 2c 20 44 62 54 79 70  g("YESNO", DbTyp
10b20 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65  e.Boolean, false
10b30 29 0d 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a  )..        });..
10b40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
10b50 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10b60 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
10b70 66 20 61 20 64 61 74 61 62 61 73 65 20 74 79 70  f a database typ
10b80 65 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20  e is considered 
10b90 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0d  to be a string..
10ba0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
10bb0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
10bc0 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e  ram name="type">
10bd0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61  ..    /// The da
10be0 74 61 62 61 73 65 20 74 79 70 65 20 74 6f 20 63  tabase type to c
10bf0 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  heck...    /// <
10c00 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
10c10 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
10c20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
10c30 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  the database typ
10c40 65 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20  e is considered 
10c50 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20  to be a string, 
10c60 7a 65 72 6f 0d 0a 20 20 20 20 2f 2f 2f 20 6f 74  zero..    /// ot
10c70 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f  herwise...    //
10c80 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
10c90 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
10ca0 63 20 62 6f 6f 6c 20 49 73 53 74 72 69 6e 67 44  c bool IsStringD
10cb0 62 54 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20  bType(..        
10cc0 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20 20 20  DbType type..   
10cd0 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
10ce0 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74         switch (t
10cf0 79 70 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ype)..        {.
10d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
10d10 65 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72  e DbType.AnsiStr
10d20 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ing:..          
10d30 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 53 74    case DbType.St
10d40 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20  ring:..         
10d50 20 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 41     case DbType.A
10d60 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65  nsiStringFixedLe
10d70 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20 20  ngth:..         
10d80 20 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 53     case DbType.S
10d90 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
10da0 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
10db0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
10dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66  .            def
10dd0 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20  ault:..         
10de0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
10df0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
10e00 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
10e10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10e20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
10e30 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
10e40 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72  runtime configur
10e50 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20 73 74  ation setting st
10e60 72 69 6e 67 20 74 68 61 74 0d 0a 20 20 20 20 2f  ring that..    /
10e70 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  // should be use
10e80 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68  d in place of th
10e90 65 20 73 70 65 63 69 66 69 65 64 20 6f 62 6a 65  e specified obje
10ea0 63 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  ct value...    /
10eb0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10ec0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
10ed0 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
10ee0 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20   /// The object 
10ef0 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
10f00 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   to a string... 
10f10 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
10f20 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
10f30 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74 68  s>..    /// Eith
10f40 65 72 20 74 68 65 20 73 74 72 69 6e 67 20 74 6f  er the string to
10f50 20 75 73 65 20 69 6e 20 70 6c 61 63 65 20 6f 66   use in place of
10f60 20 74 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75   the object valu
10f70 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69  e -OR- null if i
10f80 74 0d 0a 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f  t..    /// canno
10f90 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e  t be determined.
10fa0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
10fb0 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
10fc0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
10fd0 53 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74  SettingValueToSt
10fe0 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 6f  ring(..        o
10ff0 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20  bject value..   
11000 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
11010 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
11020 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
11030 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11040 28 73 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d 0a  (string)value;..
11050 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61  ..        if (va
11060 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue != null)..  
11070 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11080 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28   value.ToString(
11090 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  );....        re
110a0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
110b0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
110c0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
110d0 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64  Determines the d
110e0 65 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66  efault <see cref
110f0 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c  ="DbType" /> val
11100 75 65 20 74 6f 20 62 65 20 75 73 65 64 20 77 68  ue to be used wh
11110 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70 65  en a..    /// pe
11120 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c  r-connection val
11130 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  ue is not availa
11140 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ble...    /// </
11150 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
11160 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
11170 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20  onnection">..   
11180 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
11190 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20  ion context for 
111a0 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69  type mappings, i
111b0 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  f any...    /// 
111c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
111d0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
111e0 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
111f0 20 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54 79   <see cref="DbTy
11200 70 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  pe" /> value to 
11210 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  use...    /// </
11220 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72  returns>..    pr
11230 69 76 61 74 65 20 73 74 61 74 69 63 20 44 62 54  ivate static DbT
11240 79 70 65 20 47 65 74 44 65 66 61 75 6c 74 44 62  ype GetDefaultDb
11250 54 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20 53  Type(..        S
11260 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20  QLiteConnection 
11270 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20  connection..    
11280 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
11290 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
112a0 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
112b0 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20  s = (connection 
112c0 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
112d0 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69          connecti
112e0 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69 74  on.Flags : SQLit
112f0 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
11300 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  .None;....      
11310 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53    if ((flags & S
11320 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
11330 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65  lags.NoConvertSe
11340 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20  ttings)..       
11350 20 20 20 20 20 20 20 20 20 3d 3d 20 53 51 4c 69           == SQLi
11360 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
11370 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69  s.NoConvertSetti
11380 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ngs)..        {.
11390 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
113a0 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61  urn FallbackDefa
113b0 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
113c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
113d0 20 62 6f 6f 6c 20 66 6f 75 6e 64 20 3d 20 66 61   bool found = fa
113e0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 73 74  lse;..        st
113f0 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65  ring name = "Use
11400 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44  _SQLiteConvert_D
11410 65 66 61 75 6c 74 44 62 54 79 70 65 22 3b 0d 0a  efaultDbType";..
11420 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
11430 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  alue = null;..  
11440 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65        string @de
11450 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  fault = null;...
11460 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63 6f  .        if ((co
11470 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  nnection == null
11480 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
11490 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72    !connection.Tr
114a0 79 47 65 74 43 61 63 68 65 64 53 65 74 74 69 6e  yGetCachedSettin
114b0 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74  g(name, @default
114c0 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
114d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
114e0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 55 6e        value = Un
114f0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
11500 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  s.GetSettingValu
11510 65 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74  e(name, @default
11520 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11530 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
11540 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
11550 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46 61        value = Fa
11560 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54  llbackDefaultDbT
11570 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ype;..        }.
11580 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
11590 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
115a0 20 20 20 20 20 20 66 6f 75 6e 64 20 3d 20 74 72        found = tr
115b0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
115c0 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
115d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
115e0 20 20 20 20 20 20 69 66 20 28 21 28 76 61 6c 75        if (!(valu
115f0 65 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20  e is DbType)).. 
11600 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
11620 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  lue = SQLiteConn
11630 65 63 74 69 6f 6e 2e 54 72 79 50 61 72 73 65 45  ection.TryParseE
11640 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20  num(..          
11650 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
11660 28 44 62 54 79 70 65 29 2c 20 53 65 74 74 69 6e  (DbType), Settin
11670 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 76  gValueToString(v
11680 61 6c 75 65 29 2c 20 74 72 75 65 29 3b 0d 0a 0d  alue), true);...
11690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
116a0 20 69 66 20 28 21 28 76 61 6c 75 65 20 69 73 20   if (!(value is 
116b0 44 62 54 79 70 65 29 29 0d 0a 20 20 20 20 20 20  DbType))..      
116c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
116d0 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65  lue = FallbackDe
116e0 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
116f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11700 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11710 6e 20 28 44 62 54 79 70 65 29 76 61 6c 75 65 3b  n (DbType)value;
11720 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
11730 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
11740 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11750 20 20 20 20 20 69 66 20 28 21 66 6f 75 6e 64 20       if (!found 
11760 26 26 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21  && (connection !
11770 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
11780 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
11790 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64 53 65  tion.SetCachedSe
117a0 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75  tting(name, valu
117b0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
117c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
117d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
117e0 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
117f0 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c 20 77   object value, w
11800 68 69 63 68 20 69 73 20 61 73 73 75 6d 65 64 20  hich is assumed 
11810 74 6f 20 68 61 76 65 20 6f 72 69 67 69 6e 61 74  to have originat
11820 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d  ed..    /// from
11830 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
11840 74 61 52 6f 77 22 20 2f 3e 2c 20 74 6f 20 61 20  taRow" />, to a 
11850 73 74 72 69 6e 67 20 76 61 6c 75 65 2e 0d 0a 20  string value... 
11860 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11870 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
11880 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
11890 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c  .    /// The val
118a0 75 65 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74  ue to be convert
118b0 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d  ed to a string..
118c0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
118d0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
118e0 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20  rns>..    /// A 
118f0 6e 75 6c 6c 20 76 61 6c 75 65 20 77 69 6c 6c 20  null value will 
11900 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
11910 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75  he original valu
11920 65 20 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d 0d 0a  e is null -OR-..
11930 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 72 69 67      /// the orig
11940 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 3c 73  inal value is <s
11950 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 2e  ee cref="DBNull.
11960 56 61 6c 75 65 22 20 2f 3e 2e 20 20 4f 74 68 65  Value" />.  Othe
11970 72 77 69 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20  rwise,..    /// 
11980 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c  the original val
11990 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65  ue will be conve
119a0 72 74 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67  rted to a string
119b0 2c 20 75 73 69 6e 67 20 69 74 73 0d 0a 20 20 20  , using its..   
119c0 20 2f 2f 2f 20 28 70 6f 73 73 69 62 6c 79 20 6f   /// (possibly o
119d0 76 65 72 72 69 64 64 65 6e 29 20 3c 73 65 65 20  verridden) <see 
119e0 63 72 65 66 3d 22 4f 62 6a 65 63 74 2e 54 6f 53  cref="Object.ToS
119f0 74 72 69 6e 67 22 20 2f 3e 20 6d 65 74 68 6f 64  tring" /> method
11a00 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 74 68   and..    /// th
11a10 65 6e 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  en returned...  
11a20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
11a30 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
11a40 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74  tic string GetSt
11a50 72 69 6e 67 4f 72 4e 75 6c 6c 28 0d 0a 20 20 20  ringOrNull(..   
11a60 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
11a70 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  e..        )..  
11a80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
11a90 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
11aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
11ab0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
11ac0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69       if (value i
11ad0 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20  s string)..     
11ae0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73         return (s
11af0 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d 0a 0d 0a  tring)value;....
11b00 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
11b10 65 20 3d 3d 20 44 42 4e 75 6c 6c 2e 56 61 6c 75  e == DBNull.Valu
11b20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
11b30 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
11b40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
11b50 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
11b60 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
11b70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11b80 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
11b90 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
11ba0 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  d textual value 
11bb0 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d  appears to be a.
11bc0 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
11bd0 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20 76  ef="DBNull" /> v
11be0 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
11bf0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
11c00 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
11c10 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  text">..    /// 
11c20 54 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75  The textual valu
11c30 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20  e to inspect... 
11c40 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11c50 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
11c60 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  s>..    /// Non-
11c70 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65 78 74  zero if the text
11c80 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73   looks like a <s
11c90 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22  ee cref="DBNull"
11ca0 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20   /> value,..    
11cb0 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  /// zero otherwi
11cc0 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
11cd0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
11ce0 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
11cf0 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75 6c 6c 28  l LooksLikeNull(
11d00 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
11d10 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29   text..        )
11d20 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
11d30 20 72 65 74 75 72 6e 20 28 74 65 78 74 20 3d 3d   return (text ==
11d40 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a   null);..    }..
11d50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
11d60 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
11d70 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73  ermines if the s
11d80 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c  pecified textual
11d90 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74   value appears t
11da0 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f  o be an..    ///
11db0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
11dc0 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  4" /> value...  
11dd0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11de0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
11df0 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20   name="text">.. 
11e00 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
11e10 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70  al value to insp
11e20 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
11e30 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
11e40 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
11e50 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
11e60 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69  he text looks li
11e70 6b 65 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  ke an <see cref=
11e80 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
11e90 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20  ,..    /// zero 
11ea0 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
11eb0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
11ec0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
11ed0 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69  tic bool LooksLi
11ee0 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  keInt64(..      
11ef0 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20    string text.. 
11f00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
11f10 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6c 6f  .        long lo
11f20 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20  ngValue;....#if 
11f30 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
11f40 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
11f50 20 20 20 20 69 66 20 28 21 6c 6f 6e 67 2e 54 72      if (!long.Tr
11f60 79 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20  yParse(..       
11f70 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e           text, N
11f80 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74 65  umberStyles.Inte
11f90 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ger, CultureInfo
11fa0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
11fb0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
11fc0 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56 61 6c 75      out longValu
11fd0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e))..        {..
11fe0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11ff0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
12000 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20     }..#else..   
12010 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
12020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12030 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20 6c 6f 6e   longValue = lon
12040 67 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20  g.Parse(..      
12050 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20            text, 
12060 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74  NumberStyles.Int
12070 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66  eger, CultureInf
12080 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
12090 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  re);..        }.
120a0 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
120b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
120c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
120d0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
120e0 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
120f0 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
12100 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  .Equals(..      
12110 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 2e        longValue.
12120 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65  ToString(Culture
12130 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
12140 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20  lture), text,.. 
12150 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
12160 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
12170 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  nal);..    }....
12180 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12190 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
121a0 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65  mines if the spe
121b0 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76  cified textual v
121c0 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20  alue appears to 
121d0 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  be a..    /// <s
121e0 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
121f0 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
12200 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12210 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
12220 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20  ame="text">..   
12230 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c   /// The textual
12240 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63   value to inspec
12250 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
12260 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
12270 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
12280 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
12290 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65   text looks like
122a0 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f   a <see cref="Do
122b0 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2c 0d  uble" /> value,.
122c0 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74  .    /// zero ot
122d0 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f  herwise...    //
122e0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
122f0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
12300 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65  c bool LooksLike
12310 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  Double(..       
12320 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20   string text..  
12330 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
12340 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 64          double d
12350 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a 0d 0a 23  oubleValue;....#
12360 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12370 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12380 20 20 20 20 20 20 20 69 66 20 28 21 64 6f 75 62         if (!doub
12390 6c 65 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20  le.TryParse(..  
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65                te
123b0 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73  xt, NumberStyles
123c0 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62 65 72 53  .Float | NumberS
123d0 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68 6f 75 73  tyles.AllowThous
123e0 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ands,..         
123f0 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
12400 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
12410 75 72 65 2c 20 6f 75 74 20 64 6f 75 62 6c 65 56  ure, out doubleV
12420 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
12430 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
12440 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
12450 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
12460 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
12470 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12480 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65 20      doubleValue 
12490 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73 65 28 74  = double.Parse(t
124a0 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
124b0 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
124c0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
124d0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
124e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
124f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
12500 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
12510 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
12520 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
12530 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
12540 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65       doubleValue
12550 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
12560 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
12570 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a  ulture), text,..
12580 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
12590 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
125a0 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  inal);..    }...
125b0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
125c0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
125d0 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70  rmines if the sp
125e0 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20  ecified textual 
125f0 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f  value appears to
12600 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c   be a..    /// <
12610 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
12620 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
12630 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12640 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
12650 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72 74 22  m name="convert"
12660 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c  >..    /// The <
12670 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
12680 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f 62 6a 65  Convert" /> obje
12690 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 66  ct instance conf
126a0 69 67 75 72 65 64 20 77 69 74 68 0d 0a 20 20 20  igured with..   
126b0 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73 65 6e 20   /// the chosen 
126c0 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
126d0 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61 74 2e 0d  ime" /> format..
126e0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
126f0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
12700 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a  m name="text">..
12710 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74      /// The text
12720 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73  ual value to ins
12730 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  pect...    /// <
12740 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
12750 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
12760 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
12770 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c  the text looks l
12780 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ike a <see cref=
12790 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 69 6e  "DateTime" /> in
127a0 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f   the..    /// co
127b0 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61 74 2c  nfigured format,
127c0 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
127d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
127e0 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
127f0 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
12800 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54 69 6d 65  ooksLikeDateTime
12810 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  (..        SQLit
12820 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76 65 72 74  eConvert convert
12830 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
12840 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20  g text..        
12850 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
12860 20 20 69 66 20 28 63 6f 6e 76 65 72 74 20 3d 3d    if (convert ==
12870 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12880 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
12890 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
128a0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
128b0 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
128c0 65 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 20  e dateTimeValue 
128d0 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44 61 74 65  = convert.ToDate
128e0 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  Time(text);.... 
128f0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
12900 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20  tring.Equals(.. 
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f 53 74 72     convert.ToStr
12930 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75  ing(dateTimeValu
12940 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
12950 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 53           text, S
12960 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
12970 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20  Ordinal))..     
12980 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12990 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
129a0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
129b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
129c0 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
129d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
129e0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
129f0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
12a00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  }....        ret
12a10 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
12a20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
12a30 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
12a40 46 6f 72 20 61 20 67 69 76 65 6e 20 74 65 78 74  For a given text
12a50 75 61 6c 20 64 61 74 61 62 61 73 65 20 74 79 70  ual database typ
12a60 65 20 6e 61 6d 65 2c 20 72 65 74 75 72 6e 20 74  e name, return t
12a70 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74 63  he "closest-matc
12a80 68 22 20 64 61 74 61 62 61 73 65 20 74 79 70 65  h" database type
12a90 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
12aa0 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
12ab0 20 64 75 72 69 6e 67 20 71 75 65 72 79 20 72 65   during query re
12ac0 73 75 6c 74 20 70 72 6f 63 65 73 73 69 6e 67 3b  sult processing;
12ad0 20 74 68 65 72 65 66 6f 72 65 2c 20 69 74 73 20   therefore, its 
12ae0 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a 20 20 20  performance..   
12af0 20 2f 2f 2f 20 69 73 20 63 72 69 74 69 63 61 6c   /// is critical
12b00 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
12b10 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
12b20 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e  param name="conn
12b30 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e  ection">The conn
12b40 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66  ection context f
12b50 6f 72 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d  or custom type m
12b60 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e  appings, if any.
12b70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
12b80 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
12b90 79 70 65 4e 61 6d 65 22 3e 54 68 65 20 74 65 78  ypeName">The tex
12ba0 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65  tual name of the
12bb0 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74   database type t
12bc0 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e  o match.</param>
12bd0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
12be0 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68   name="flags">Th
12bf0 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
12c00 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
12c10 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
12c20 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ject.</param>.. 
12c30 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
12c40 54 68 65 20 2e 4e 45 54 20 44 42 54 79 70 65 20  The .NET DBType 
12c50 74 68 65 20 74 65 78 74 20 65 76 61 6c 75 61 74  the text evaluat
12c60 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72 6e 73 3e  es to.</returns>
12c70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
12c80 74 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70  tatic DbType Typ
12c90 65 4e 61 6d 65 54 6f 44 62 54 79 70 65 28 0d 0a  eNameToDbType(..
12ca0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
12cb0 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
12cc0 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ion,..        st
12cd0 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a  ring typeName,..
12ce0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
12cf0 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
12d00 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
12d10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44      {..        D
12d20 62 54 79 70 65 3f 20 64 65 66 61 75 6c 74 44 62  bType? defaultDb
12d30 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Type = null;....
12d40 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
12d50 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d  ection != null).
12d60 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
12d70 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d          flags |=
12d80 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67   connection.Flag
12d90 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
12da0 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53    if ((flags & S
12db0 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
12dc0 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69  lags.UseConnecti
12dd0 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69  onTypes) == SQLi
12de0 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
12df0 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54  s.UseConnectionT
12e00 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ypes)..         
12e10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12e20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79        SQLiteDbTy
12e30 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f 6e  peMap connection
12e40 54 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e  TypeNames = conn
12e50 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65  ection._typeName
12e60 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
12e70 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
12e80 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21 3d  tionTypeNames !=
12e90 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12ea0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
12ec0 66 20 28 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e  f (typeName != n
12ed0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12ee0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f00 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
12f10 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d  eMapping value;.
12f20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12f30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
12f40 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
12f50 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74  es.TryGetValue(t
12f60 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c  ypeName, out val
12f70 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
12f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
12f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12fb0 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79  urn value.dataTy
12fc0 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
12fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ff0 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
13000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13010 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13030 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d       int index =
13040 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f   typeName.IndexO
13050 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20  f('(');....     
13060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13070 20 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65         if ((inde
13080 78 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20  x > 0) &&..     
13090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130a0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65             conne
130b0 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54  ctionTypeNames.T
130c0 72 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e  ryGetValue(typeN
130d0 61 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c  ame.Substring(0,
130e0 20 69 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28   index).TrimEnd(
130f0 29 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  ), out value))..
13100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13110 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
13140 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61  eturn value.data
13150 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
13160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13170 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
131a0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
131b0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
131c0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
131d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
131e0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
131f0 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   Use the default
13200 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 66   database type f
13210 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  or the connectio
13220 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
13230 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
13240 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  defaultDbType = 
13250 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75  connection.Defau
13260 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20  ltDbType;..     
13270 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13280 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
13290 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
132a0 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73  gs.NoGlobalTypes
132b0 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ) == SQLiteConne
132c0 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f  ctionFlags.NoGlo
132d0 62 61 6c 54 79 70 65 73 29 0d 0a 20 20 20 20 20  balTypes)..     
132e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
132f0 20 20 69 66 20 28 64 65 66 61 75 6c 74 44 62 54    if (defaultDbT
13300 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ype != null)..  
13310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13320 74 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66  turn (DbType)def
13330 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d 0a 20  aultDbType;.... 
13340 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
13350 6c 74 44 62 54 79 70 65 20 3d 20 47 65 74 44 65  ltDbType = GetDe
13360 66 61 75 6c 74 44 62 54 79 70 65 28 63 6f 6e 6e  faultDbType(conn
13370 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20  ection);....#if 
13380 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
13390 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47  && TRACE_WARNING
133a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65  ..            De
133b0 66 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69  faultDbTypeWarni
133c0 6e 67 28 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61  ng(typeName, fla
133d0 67 73 2c 20 64 65 66 61 75 6c 74 44 62 54 79 70  gs, defaultDbTyp
133e0 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20  e);..#endif.... 
133f0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13400 6e 20 28 44 62 54 79 70 65 29 64 65 66 61 75 6c  n (DbType)defaul
13410 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  tDbType;..      
13420 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7b    }....        {
13430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
13440 20 28 28 5f 74 79 70 65 4e 61 6d 65 73 20 21 3d   ((_typeNames !=
13450 20 6e 75 6c 6c 29 20 26 26 20 28 74 79 70 65 4e   null) && (typeN
13460 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ame != null)).. 
13470 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
13490 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
134a0 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  g value;....    
134b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
134c0 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65  _typeNames.TryGe
134d0 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c  tValue(typeName,
134e0 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13510 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
13520 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  e.dataType;..   
13530 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13550 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
13560 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13570 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
13580 20 69 6e 64 65 78 20 3d 20 74 79 70 65 4e 61 6d   index = typeNam
13590 65 2e 49 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d  e.IndexOf('(');.
135a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
135b0 20 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65         if ((inde
135c0 78 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20  x > 0) &&..     
135d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135e0 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72     _typeNames.Tr
135f0 79 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61  yGetValue(typeNa
13600 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20  me.Substring(0, 
13610 69 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29  index).TrimEnd()
13620 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
13630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13640 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13660 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54  turn value.dataT
13670 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
13680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
13690 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
136a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
136b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
136c0 20 20 20 20 69 66 20 28 64 65 66 61 75 6c 74 44      if (defaultD
136d0 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  bType != null)..
136e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
136f0 72 6e 20 28 44 62 54 79 70 65 29 64 65 66 61 75  rn (DbType)defau
13700 6c 74 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20  ltDbType;....   
13710 20 20 20 20 20 64 65 66 61 75 6c 74 44 62 54 79       defaultDbTy
13720 70 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44  pe = GetDefaultD
13730 62 54 79 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e  bType(connection
13740 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  );....#if !NET_C
13750 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
13760 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20  CE_WARNING..    
13770 20 20 20 20 44 65 66 61 75 6c 74 44 62 54 79 70      DefaultDbTyp
13780 65 57 61 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d  eWarning(typeNam
13790 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c  e, flags, defaul
137a0 74 44 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69  tDbType);..#endi
137b0 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  f....        ret
137c0 75 72 6e 20 28 44 62 54 79 70 65 29 64 65 66 61  urn (DbType)defa
137d0 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
137e0 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
137f0 6e 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  n....    private
13800 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
13810 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
13820 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 47 65   _typeNames = Ge
13830 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70  tSQLiteDbTypeMap
13840 28 29 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  ();..  }....  //
13850 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
13860 2f 2f 20 53 51 4c 69 74 65 20 68 61 73 20 76 65  // SQLite has ve
13870 72 79 20 6c 69 6d 69 74 65 64 20 74 79 70 65 73  ry limited types
13880 2c 20 61 6e 64 20 69 73 20 69 6e 68 65 72 65 6e  , and is inheren
13890 74 6c 79 20 74 65 78 74 2d 62 61 73 65 64 2e 20  tly text-based. 
138a0 20 54 68 65 20 66 69 72 73 74 20 35 20 74 79 70   The first 5 typ
138b0 65 73 20 62 65 6c 6f 77 20 72 65 70 72 65 73 65  es below represe
138c0 6e 74 20 74 68 65 20 73 75 6d 20 6f 66 20 61 6c  nt the sum of al
138d0 6c 20 74 79 70 65 73 20 53 51 4c 69 74 65 0d 0a  l types SQLite..
138e0 20 20 2f 2f 2f 20 75 6e 64 65 72 73 74 61 6e 64    /// understand
138f0 73 2e 20 20 54 68 65 20 44 61 74 65 54 69 6d 65  s.  The DateTime
13900 20 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68   extension to th
13910 65 20 73 70 65 63 20 69 73 20 66 6f 72 20 69 6e  e spec is for in
13920 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2e  ternal use only.
13930 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
13940 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
13950 6d 20 54 79 70 65 41 66 66 69 6e 69 74 79 0d 0a  m TypeAffinity..
13960 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    {..    /// <su
13970 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
13980 4e 6f 74 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f  Not used..    //
13990 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
139a0 20 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20    Uninitialized 
139b0 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 0,..    /// <s
139c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
139d0 20 41 6c 6c 20 69 6e 74 65 67 65 72 73 20 69 6e   All integers in
139e0 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20   SQLite default 
139f0 74 6f 20 49 6e 74 36 34 0d 0a 20 20 20 20 2f 2f  to Int64..    //
13a00 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13a10 20 20 49 6e 74 36 34 20 3d 20 31 2c 0d 0a 20 20    Int64 = 1,..  
13a20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13a30 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f  .    /// All flo
13a40 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
13a50 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65  ers in SQLite de
13a60 66 61 75 6c 74 20 74 6f 20 64 6f 75 62 6c 65 0d  fault to double.
13a70 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
13a80 72 79 3e 0d 0a 20 20 20 20 44 6f 75 62 6c 65 20  ry>..    Double 
13a90 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 2,..    /// <s
13aa0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
13ab0 20 54 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   The default dat
13ac0 61 20 74 79 70 65 20 6f 66 20 53 51 4c 69 74 65  a type of SQLite
13ad0 20 69 73 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f   is text..    //
13ae0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13af0 20 20 54 65 78 74 20 3d 20 33 2c 0d 0a 20 20 20    Text = 3,..   
13b00 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13b10 20 20 20 20 2f 2f 2f 20 54 79 70 69 63 61 6c 6c      /// Typicall
13b20 79 20 62 6c 6f 62 20 74 79 70 65 73 20 61 72 65  y blob types are
13b30 20 6f 6e 6c 79 20 73 65 65 6e 20 77 68 65 6e 20   only seen when 
13b40 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 61 20  returned from a 
13b50 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  function..    //
13b60 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13b70 20 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a 20 20 20    Blob = 4,..   
13b80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13b90 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70      /// Null typ
13ba0 65 73 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e  es can be return
13bb0 65 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e  ed from function
13bc0 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  s..    /// </sum
13bd0 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20  mary>..    Null 
13be0 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 5,..    /// <s
13bf0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
13c00 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79   Used internally
13c10 20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65   by this provide
13c20 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  r..    /// </sum
13c30 6d 61 72 79 3e 0d 0a 20 20 20 20 44 61 74 65 54  mary>..    DateT
13c40 69 6d 65 20 3d 20 31 30 2c 0d 0a 20 20 20 20 2f  ime = 10,..    /
13c50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13c60 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
13c70 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72  nally by this pr
13c80 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20  ovider..    /// 
13c90 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13ca0 4e 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d  None = 11,..  }.
13cb0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
13cc0 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20  y>..  /// These 
13cd0 61 72 65 20 74 68 65 20 65 76 65 6e 74 20 74 79  are the event ty
13ce0 70 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  pes associated w
13cf0 69 74 68 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c  ith the..  /// <
13d00 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
13d10 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 48  ConnectionEventH
13d20 61 6e 64 6c 65 72 22 20 2f 3e 0d 0a 20 20 2f 2f  andler" />..  //
13d30 2f 20 64 65 6c 65 67 61 74 65 20 28 61 6e 64 20  / delegate (and 
13d40 69 74 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  its correspondin
13d50 67 20 65 76 65 6e 74 29 20 61 6e 64 20 74 68 65  g event) and the
13d60 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
13d70 66 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65  f="ConnectionEve
13d80 6e 74 41 72 67 73 22 20 2f 3e 20 63 6c 61 73 73  ntArgs" /> class
13d90 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
13da0 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
13db0 75 6d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  um SQLiteConnect
13dc0 69 6f 6e 45 76 65 6e 74 54 79 70 65 0d 0a 20 20  ionEventType..  
13dd0 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
13de0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13df0 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20  / Not used...   
13e00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13e10 3e 0d 0a 20 20 20 20 20 20 49 6e 76 61 6c 69 64  >..      Invalid
13e20 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = -1,....      
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 4e 6f 74 20 75 73 65       /// Not use
13e50 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
13e60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13e70 55 6e 6b 6e 6f 77 6e 20 3d 20 30 2c 0d 0a 0d 0a  Unknown = 0,....
13e80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13e90 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
13ea0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  he connection is
13eb0 20 62 65 69 6e 67 20 6f 70 65 6e 65 64 2e 0d 0a   being opened...
13ec0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13ed0 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e  ary>..      Open
13ee0 69 6e 67 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20  ing = 1,....    
13ef0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13f00 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
13f10 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67  onnection string
13f20 20 68 61 73 20 62 65 65 6e 20 70 61 72 73 65 64   has been parsed
13f30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13f40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
13f50 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20  onnectionString 
13f60 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
13f70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13f80 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
13f90 63 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64  ction was opened
13fa0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
13fb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f  ummary>..      O
13fc0 70 65 6e 65 64 20 3d 20 33 2c 0d 0a 0d 0a 20 20  pened = 3,....  
13fd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13fe0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
13ff0 20 3c 73 65 65 20 63 72 65 66 3d 22 43 68 61 6e   <see cref="Chan
14000 67 65 44 61 74 61 62 61 73 65 22 20 2f 3e 20 6d  geDatabase" /> m
14010 65 74 68 6f 64 20 77 61 73 20 63 61 6c 6c 65 64  ethod was called
14020 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   on the..      /
14030 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  // connection...
14040 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
14050 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 68 61 6e  ary>..      Chan
14060 67 65 44 61 74 61 62 61 73 65 20 3d 20 34 2c 0d  geDatabase = 4,.
14070 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
14080 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
14090 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  / A transaction 
140a0 77 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e  was created usin
140b0 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  g the connection
140c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
140d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
140e0 65 77 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20  ewTransaction = 
140f0 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  5,....      /// 
14100 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
14110 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
14120 69 6f 6e 20 77 61 73 20 65 6e 6c 69 73 74 65 64  ion was enlisted
14130 20 69 6e 74 6f 20 61 20 74 72 61 6e 73 61 63 74   into a transact
14140 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
14150 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14160 20 20 45 6e 6c 69 73 74 54 72 61 6e 73 61 63 74    EnlistTransact
14170 69 6f 6e 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20  ion = 6,....    
14180 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14190 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d  .      /// A com
141a0 6d 61 6e 64 20 77 61 73 20 63 72 65 61 74 65 64  mand was created
141b0 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65   using the conne
141c0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
141d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
141e0 20 20 20 20 4e 65 77 43 6f 6d 6d 61 6e 64 20 3d      NewCommand =
141f0 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   7,....      ///
14200 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14210 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61    /// A data rea
14220 64 65 72 20 77 61 73 20 63 72 65 61 74 65 64 20  der was created 
14230 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
14240 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
14250 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14260 20 20 20 4e 65 77 44 61 74 61 52 65 61 64 65 72     NewDataReader
14270 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 8,....      /
14280 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14290 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 73 74 61      /// An insta
142a0 6e 63 65 20 6f 66 20 61 20 3c 73 65 65 20 63 72  nce of a <see cr
142b0 65 66 3d 22 43 72 69 74 69 63 61 6c 48 61 6e 64  ef="CriticalHand
142c0 6c 65 22 20 2f 3e 20 64 65 72 69 76 65 64 20 63  le" /> derived c
142d0 6c 61 73 73 20 68 61 73 0d 0a 20 20 20 20 20 20  lass has..      
142e0 2f 2f 2f 20 62 65 65 6e 20 63 72 65 61 74 65 64  /// been created
142f0 20 74 6f 20 77 72 61 70 20 61 20 6e 61 74 69 76   to wrap a nativ
14300 65 20 72 65 73 6f 75 72 63 65 2e 0d 0a 20 20 20  e resource...   
14310 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14320 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 72 69 74  >..      NewCrit
14330 69 63 61 6c 48 61 6e 64 6c 65 20 3d 20 39 2c 0d  icalHandle = 9,.
14340 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
14350 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
14360 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
14370 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64   is being closed
14380 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
14390 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
143a0 6c 6f 73 69 6e 67 20 3d 20 31 30 2c 0d 0a 0d 0a  losing = 10,....
143b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
143c0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
143d0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61  he connection wa
143e0 73 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20  s closed...     
143f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14400 0a 20 20 20 20 20 20 43 6c 6f 73 65 64 20 3d 20  .      Closed = 
14410 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  11,....      ///
14420 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14430 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20    /// A command 
14440 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65  is being dispose
14450 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
14460 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14470 44 69 73 70 6f 73 69 6e 67 43 6f 6d 6d 61 6e 64  DisposingCommand
14480 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 12,....      
14490 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
144a0 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20       /// A data 
144b0 72 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20  reader is being 
144c0 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
144d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
144e0 0a 20 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67  .      Disposing
144f0 44 61 74 61 52 65 61 64 65 72 20 3d 20 31 33 2c  DataReader = 13,
14500 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
14510 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
14520 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72  // A data reader
14530 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64   is being closed
14540 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
14550 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
14560 6c 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72  losingDataReader
14570 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 14,....      
14580 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14590 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
145a0 65 20 72 65 73 6f 75 72 63 65 20 77 61 73 20 6f  e resource was o
145b0 70 65 6e 65 64 20 28 69 2e 65 2e 20 6f 62 74 61  pened (i.e. obta
145c0 69 6e 65 64 29 20 66 72 6f 6d 20 74 68 65 20 70  ined) from the p
145d0 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ool...      /// 
145e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
145f0 20 20 4f 70 65 6e 65 64 46 72 6f 6d 50 6f 6f 6c    OpenedFromPool
14600 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 15,....      
14610 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14620 20 20 20 20 20 2f 2f 2f 20 41 20 6e 61 74 69 76       /// A nativ
14630 65 20 72 65 73 6f 75 72 63 65 20 77 61 73 20 63  e resource was c
14640 6c 6f 73 65 64 20 28 69 2e 65 2e 20 72 65 6c 65  losed (i.e. rele
14650 61 73 65 64 29 20 74 6f 20 74 68 65 20 70 6f 6f  ased) to the poo
14660 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  l...      /// </
14670 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14680 43 6c 6f 73 65 64 54 6f 50 6f 6f 6c 20 3d 20 31  ClosedToPool = 1
14690 36 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  6..  }....  /// 
146a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
146b0 20 54 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61   This implementa
146c0 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 66  tion of SQLite f
146d0 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61 6e 20 70  or ADO.NET can p
146e0 72 6f 63 65 73 73 20 64 61 74 65 2f 74 69 6d 65  rocess date/time
146f0 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20 20 2f 2f   fields in..  //
14700 2f 20 64 61 74 61 62 61 73 65 73 20 69 6e 20 6f  / databases in o
14710 6e 65 20 6f 66 20 73 69 78 20 66 6f 72 6d 61 74  ne of six format
14720 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  s...  /// </summ
14730 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d  ary>..  /// <rem
14740 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53 4f  arks>..  /// ISO
14750 38 36 30 31 20 66 6f 72 6d 61 74 20 69 73 20 6d  8601 format is m
14760 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 2c 20  ore compatible, 
14770 72 65 61 64 61 62 6c 65 2c 20 66 75 6c 6c 79 2d  readable, fully-
14780 70 72 6f 63 65 73 73 61 62 6c 65 2c 20 62 75 74  processable, but
14790 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20 61 63 63   less..  /// acc
147a0 75 72 61 74 65 20 61 73 20 69 74 20 64 6f 65 73  urate as it does
147b0 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 74 69 6d   not provide tim
147c0 65 20 64 6f 77 6e 20 74 6f 20 66 72 61 63 74 69  e down to fracti
147d0 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f 6e 64 2e  ons of a second.
147e0 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44 61  ..  /// JulianDa
147f0 79 20 69 73 20 74 68 65 20 6e 75 6d 65 72 69 63  y is the numeric
14800 20 66 6f 72 6d 61 74 20 74 68 65 20 53 51 4c 69   format the SQLi
14810 74 65 20 75 73 65 73 20 69 6e 74 65 72 6e 61 6c  te uses internal
14820 6c 79 20 61 6e 64 20 69 73 20 61 72 67 75 61 62  ly and is arguab
14830 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65 20 6d 6f  ly..  /// the mo
14840 73 74 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69  st compatible wi
14850 74 68 20 33 72 64 20 70 61 72 74 79 20 74 6f 6f  th 3rd party too
14860 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f 74 20 72  ls.  It is not r
14870 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d  eadable as text.
14880 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70  .  /// without p
14890 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20  ost-processing. 
148a0 20 54 69 63 6b 73 20 6c 65 73 73 20 63 6f 6d 70   Ticks less comp
148b0 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 20  atible with 3rd 
148c0 70 61 72 74 79 20 74 6f 6f 6c 73 20 74 68 61 74  party tools that
148d0 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79 20 74 68  ..  /// query th
148e0 65 20 64 61 74 61 62 61 73 65 2c 20 61 6e 64 20  e database, and 
148f0 72 65 6e 64 65 72 73 20 74 68 65 20 44 61 74 65  renders the Date
14900 54 69 6d 65 20 66 69 65 6c 64 20 75 6e 72 65 61  Time field unrea
14910 64 61 62 6c 65 20 61 73 20 74 65 78 74 0d 0a 20  dable as text.. 
14920 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70 6f 73   /// without pos
14930 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20 20 55  t-processing.  U
14940 6e 69 78 45 70 6f 63 68 20 69 73 20 6d 6f 72 65  nixEpoch is more
14950 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68   compatible with
14960 20 55 6e 69 78 20 73 79 73 74 65 6d 73 2e 0d 0a   Unix systems...
14970 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61 6e 74 43    /// InvariantC
14980 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74 68  ulture allows th
14990 65 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72  e configured for
149a0 6d 61 74 20 66 6f 72 20 74 68 65 20 69 6e 76 61  mat for the inva
149b0 72 69 61 6e 74 20 63 75 6c 74 75 72 65 0d 0a 20  riant culture.. 
149c0 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74 6f 20 62   /// format to b
149d0 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 68 75  e used and is hu
149e0 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e 20 20 43  man readable.  C
149f0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 61 6c  urrentCulture al
14a00 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f 2f 2f 20  lows the..  /// 
14a10 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61  configured forma
14a20 74 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  t for the curren
14a30 74 20 63 75 6c 74 75 72 65 20 74 6f 20 62 65 20  t culture to be 
14a40 75 73 65 64 20 61 6e 64 20 69 73 20 61 6c 73 6f  used and is also
14a50 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f 20 72 65   human..  /// re
14a60 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a  adable...  ///..
14a70 20 20 2f 2f 2f 20 54 68 65 20 70 72 65 66 65 72    /// The prefer
14a80 72 65 64 20 6f 72 64 65 72 20 6f 66 20 63 68 6f  red order of cho
14a90 6f 73 69 6e 67 20 61 20 44 61 74 65 54 69 6d 65  osing a DateTime
14aa0 20 66 6f 72 6d 61 74 20 69 73 20 4a 75 6c 69 61   format is Julia
14ab0 6e 44 61 79 2c 20 49 53 4f 38 36 30 31 2c 0d 0a  nDay, ISO8601,..
14ac0 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 6e 20 54    /// and then T
14ad0 69 63 6b 73 2e 20 20 54 69 63 6b 73 20 69 73 20  icks.  Ticks is 
14ae0 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e 74 20 66  mainly present f
14af0 6f 72 20 6c 65 67 61 63 79 20 63 6f 64 65 20 73  or legacy code s
14b00 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f 2f 20 3c  upport...  /// <
14b10 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62  /remarks>..  pub
14b20 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 44  lic enum SQLiteD
14b30 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20 20 7b 0d  ateFormats..  {.
14b40 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14b50 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20  y>..    /// Use 
14b60 74 68 65 20 76 61 6c 75 65 20 6f 66 20 44 61 74  the value of Dat
14b70 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20 20 54 68  eTime.Ticks.  Th
14b80 69 73 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20  is value is not 
14b90 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61 6e 64 20  recommended and 
14ba0 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73 75 70 70  is not well supp
14bb0 6f 72 74 65 64 20 77 69 74 68 20 4c 49 4e 51 2e  orted with LINQ.
14bc0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14bd0 61 72 79 3e 0d 0a 20 20 20 20 54 69 63 6b 73 20  ary>..    Ticks 
14be0 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 0,..    /// <s
14bf0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14c00 20 55 73 65 20 74 68 65 20 49 53 4f 2d 38 36 30   Use the ISO-860
14c10 31 20 66 6f 72 6d 61 74 2e 20 20 55 73 65 73 20  1 format.  Uses 
14c20 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20  the "yyyy-MM-dd 
14c30 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
14c40 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 55 54  K" format for UT
14c50 43 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  C DateTime value
14c60 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 22  s and..    /// "
14c70 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
14c80 3a 73 73 2e 46 46 46 46 46 46 46 22 20 66 6f 72  :ss.FFFFFFF" for
14c90 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c 20 44 61  mat for local Da
14ca0 74 65 54 69 6d 65 20 76 61 6c 75 65 73 29 2e 0d  teTime values)..
14cb0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14cc0 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38 36 30 31  ry>..    ISO8601
14cd0 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c   = 1,..    /// <
14ce0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
14cf0 2f 20 54 68 65 20 69 6e 74 65 72 76 61 6c 20 6f  / The interval o
14d00 66 20 74 69 6d 65 20 69 6e 20 64 61 79 73 20 61  f time in days a
14d10 6e 64 20 66 72 61 63 74 69 6f 6e 73 20 6f 66 20  nd fractions of 
14d20 61 20 64 61 79 20 73 69 6e 63 65 20 4a 61 6e 75  a day since Janu
14d30 61 72 79 20 31 2c 20 34 37 31 33 20 42 43 2e 0d  ary 1, 4713 BC..
14d40 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14d50 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69 61 6e 44  ry>..    JulianD
14d60 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f  ay = 2,..    ///
14d70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14d80 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65 20 6e 75  /// The whole nu
14d90 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20  mber of seconds 
14da0 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
14db0 70 6f 63 68 20 28 4a 61 6e 75 61 72 79 20 31 2c  poch (January 1,
14dc0 20 31 39 37 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f   1970)...    ///
14dd0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14de0 20 55 6e 69 78 45 70 6f 63 68 20 3d 20 33 2c 0d   UnixEpoch = 3,.
14df0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14e00 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20  y>..    /// Any 
14e10 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64  culture-independ
14e20 65 6e 74 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ent string value
14e30 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46   that the .NET F
14e40 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74  ramework can int
14e50 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c 69  erpret as a vali
14e60 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20  d DateTime...   
14e70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14e80 0a 20 20 20 20 49 6e 76 61 72 69 61 6e 74 43 75  .    InvariantCu
14e90 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20 20 20 20  lture = 4,..    
14ea0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14eb0 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74 72 69 6e     /// Any strin
14ec0 67 20 76 61 6c 75 65 20 74 68 61 74 20 74 68 65  g value that the
14ed0 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
14ee0 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73  can interpret as
14ef0 20 61 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d   a valid DateTim
14f00 65 20 75 73 69 6e 67 20 74 68 65 20 63 75 72 72  e using the curr
14f10 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d 0a 20 20  ent culture...  
14f20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14f30 0d 0a 20 20 20 20 43 75 72 72 65 6e 74 43 75 6c  ..    CurrentCul
14f40 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20 20 20 2f  ture = 5,..    /
14f50 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14f60 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
14f70 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  t format for thi
14f80 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20  s provider...   
14f90 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14fa0 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 49  .    Default = I
14fb0 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a 0d 0a 20  SO8601..  }.... 
14fc0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14fd0 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 75 6d 20    /// This enum 
14fe0 64 65 74 65 72 6d 69 6e 65 73 20 68 6f 77 20 53  determines how S
14ff0 51 4c 69 74 65 20 74 72 65 61 74 73 20 69 74 73  QLite treats its
15000 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2e 0d 0a   journal file...
15010 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15020 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73  ..  /// <remarks
15030 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64 65 66 61  >..  /// By defa
15040 75 6c 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  ult SQLite will 
15050 63 72 65 61 74 65 20 61 6e 64 20 64 65 6c 65 74  create and delet
15060 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  e the journal fi
15070 6c 65 20 77 68 65 6e 20 6e 65 65 64 65 64 20 64  le when needed d
15080 75 72 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74  uring a transact
15090 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48 6f 77 65  ion...  /// Howe
150a0 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65 20 63 6f  ver, for some co
150b0 6d 70 75 74 65 72 73 20 72 75 6e 6e 69 6e 67 20  mputers running 
150c0 63 65 72 74 61 69 6e 20 66 69 6c 65 73 79 73 74  certain filesyst
150d0 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67 20 74 6f  em monitoring to
150e0 6f 6c 73 2c 20 74 68 65 20 72 61 70 69 64 0d 0a  ols, the rapid..
150f0 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f 6e 20 61    /// creation a
15100 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f 66 20 74  nd deletion of t
15110 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
15120 63 61 6e 20 63 61 75 73 65 20 74 68 6f 73 65 20  can cause those 
15130 70 72 6f 67 72 61 6d 73 20 74 6f 20 66 61 69 6c  programs to fail
15140 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72 66 65 72  , or to interfer
15150 65 20 77 69 74 68 20 53 51 4c 69 74 65 2e 0d 0a  e with SQLite...
15160 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 49 66 20    ///..  /// If 
15170 61 20 70 72 6f 67 72 61 6d 20 6f 72 20 76 69 72  a program or vir
15180 75 73 20 73 63 61 6e 6e 65 72 20 69 73 20 69 6e  us scanner is in
15190 74 65 72 66 65 72 69 6e 67 20 77 69 74 68 20 53  terfering with S
151a0 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e 61 6c 20  QLite's journal 
151b0 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79 20 72 65  file, you may re
151c0 63 65 69 76 65 20 65 72 72 6f 72 73 20 6c 69 6b  ceive errors lik
151d0 65 20 22 75 6e 61 62 6c 65 20 74 6f 20 6f 70 65  e "unable to ope
151e0 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 22  n database file"
151f0 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20 73 74 61  ..  /// when sta
15200 72 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74  rting a transact
15210 69 6f 6e 2e 20 20 49 66 20 74 68 69 73 20 69 73  ion.  If this is
15220 20 68 61 70 70 65 6e 69 6e 67 2c 20 79 6f 75 20   happening, you 
15230 6d 61 79 20 77 61 6e 74 20 74 6f 20 63 68 61 6e  may want to chan
15240 67 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6a  ge the default j
15250 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74 6f 20 50  ournal mode to P
15260 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f 2f 20 3c  ersist...  /// <
15270 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62  /remarks>..  pub
15280 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 4a  lic enum SQLiteJ
15290 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75 6d 0d 0a  ournalModeEnum..
152a0 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75    {..    /// <su
152b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
152c0 54 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65  The default mode
152d0 2c 20 74 68 69 73 20 63 61 75 73 65 73 20 53 51  , this causes SQ
152e0 4c 69 74 65 20 74 6f 20 75 73 65 20 74 68 65 20  Lite to use the 
152f0 65 78 69 73 74 69 6e 67 20 6a 6f 75 72 6e 61 6c  existing journal
15300 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20 74 68 65  ing mode for the
15310 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
15320 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
15330 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 2d 31      Default = -1
15340 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
15350 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51  ary>..    /// SQ
15360 4c 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65  Lite will create
15370 20 61 6e 64 20 64 65 73 74 72 6f 79 20 74 68 65   and destroy the
15380 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61 73   journal file as
15390 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f  -needed...    //
153a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
153b0 20 20 44 65 6c 65 74 65 20 3d 20 30 2c 0d 0a 20    Delete = 0,.. 
153c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
153d0 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74  ..    /// When t
153e0 68 69 73 20 69 73 20 73 65 74 2c 20 53 51 4c 69  his is set, SQLi
153f0 74 65 20 77 69 6c 6c 20 6b 65 65 70 20 74 68 65  te will keep the
15400 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 65 76   journal file ev
15410 65 6e 20 61 66 74 65 72 20 61 20 74 72 61 6e 73  en after a trans
15420 61 63 74 69 6f 6e 20 68 61 73 20 63 6f 6d 70 6c  action has compl
15430 65 74 65 64 2e 20 20 49 74 27 73 20 63 6f 6e 74  eted.  It's cont
15440 65 6e 74 73 20 77 69 6c 6c 20 62 65 20 65 72 61  ents will be era
15450 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  sed,..    /// an
15460 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 72 65  d the journal re
15470 2d 75 73 65 64 20 61 73 20 6f 66 74 65 6e 20 61  -used as often a
15480 73 20 6e 65 65 64 65 64 2e 20 20 49 66 20 69 74  s needed.  If it
15490 20 69 73 20 64 65 6c 65 74 65 64 2c 20 69 74 20   is deleted, it 
154a0 77 69 6c 6c 20 62 65 20 72 65 63 72 65 61 74 65  will be recreate
154b0 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d 65 20  d the next time 
154c0 69 74 20 69 73 20 6e 65 65 64 65 64 2e 0d 0a 20  it is needed... 
154d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
154e0 3e 0d 0a 20 20 20 20 50 65 72 73 69 73 74 20 3d  >..    Persist =
154f0 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   1,..    /// <su
15500 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
15510 54 68 69 73 20 6f 70 74 69 6f 6e 20 64 69 73 61  This option disa
15520 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c 62 61 63  bles the rollbac
15530 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74 69 72 65  k journal entire
15540 6c 79 2e 20 20 49 6e 74 65 72 72 75 70 74 65 64  ly.  Interrupted
15550 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6f 72   transactions or
15560 20 61 20 70 72 6f 67 72 61 6d 20 63 72 61 73 68   a program crash
15570 20 63 61 6e 20 63 61 75 73 65 20 64 61 74 61 62   can cause datab
15580 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 72  ase..    /// cor
15590 72 75 70 74 69 6f 6e 20 69 6e 20 74 68 69 73 20  ruption in this 
155a0 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mode!..    /// <
155b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4f  /summary>..    O
155c0 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f  ff = 2,..    ///
155d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
155e0 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  /// SQLite will 
155f0 74 72 75 6e 63 61 74 65 20 74 68 65 20 6a 6f 75  truncate the jou
15600 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20 7a 65 72  rnal file to zer
15610 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74 65 61 64  o-length instead
15620 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 69 74 2e   of deleting it.
15630 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
15640 61 72 79 3e 0d 0a 20 20 20 20 54 72 75 6e 63 61  ary>..    Trunca
15650 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f  te = 3,..    ///
15660 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15670 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  /// SQLite will 
15680 73 74 6f 72 65 20 74 68 65 20 6a 6f 75 72 6e 61  store the journa
15690 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65 20 52 41  l in volatile RA
156a0 4d 2e 20 20 54 68 69 73 20 73 61 76 65 73 20 64  M.  This saves d
156b0 69 73 6b 20 49 2f 4f 20 62 75 74 20 61 74 20 74  isk I/O but at t
156c0 68 65 20 65 78 70 65 6e 73 65 20 6f 66 20 64 61  he expense of da
156d0 74 61 62 61 73 65 20 73 61 66 65 74 79 20 61 6e  tabase safety an
156e0 64 20 69 6e 74 65 67 72 69 74 79 2e 0d 0a 20 20  d integrity...  
156f0 20 20 2f 2f 2f 20 49 66 20 74 68 65 20 61 70 70    /// If the app
15700 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 53  lication using S
15710 51 4c 69 74 65 20 63 72 61 73 68 65 73 20 69 6e  QLite crashes in
15720 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61   the middle of a
15730 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 68 65   transaction whe
15740 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20 6a 6f 75  n the MEMORY jou
15750 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20  rnaling mode is 
15760 73 65 74 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20  set, then the.. 
15770 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20     /// database 
15780 66 69 6c 65 20 77 69 6c 6c 20 76 65 72 79 20 6c  file will very l
15790 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72 75 70 74  ikely go corrupt
157a0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
157b0 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65 6d 6f 72  mary>..    Memor
157c0 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20  y = 4,..    /// 
157d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
157e0 2f 2f 20 53 51 4c 69 74 65 20 75 73 65 73 20 61  // SQLite uses a
157f0 20 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f 67   write-ahead log
15800 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 72 6f   instead of a ro
15810 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 74  llback journal t
15820 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 72 61 6e  o implement tran
15830 73 61 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 57  sactions.  The W
15840 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  AL journaling mo
15850 64 65 20 69 73 20 70 65 72 73 69 73 74 65 6e 74  de is persistent
15860 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66 74 65 72  ;..    /// after
15870 20 62 65 69 6e 67 20 73 65 74 20 69 74 20 73 74   being set it st
15880 61 79 73 20 69 6e 20 65 66 66 65 63 74 20 61 63  ays in effect ac
15890 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65 20 64 61  ross multiple da
158a0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
158b0 6e 73 20 61 6e 64 20 61 66 74 65 72 20 63 6c 6f  ns and after clo
158c0 73 69 6e 67 20 61 6e 64 20 72 65 6f 70 65 6e 69  sing and reopeni
158d0 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ng the database.
158e0 20 41 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20   A database..   
158f0 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a 6f 75 72   /// in WAL jour
15900 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63 61 6e 20  naling mode can 
15910 6f 6e 6c 79 20 62 65 20 61 63 63 65 73 73 65 64  only be accessed
15920 20 62 79 20 53 51 4c 69 74 65 20 76 65 72 73 69   by SQLite versi
15930 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c 61 74 65  on 3.7.0 or late
15940 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  r...    /// </su
15950 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57 61 6c 20  mmary>..    Wal 
15960 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 5..  }....  //
15970 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
15980 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75  // Possible valu
15990 65 73 20 66 6f 72 20 74 68 65 20 22 73 79 6e 63  es for the "sync
159a0 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61 73  hronous" databas
159b0 65 20 73 65 74 74 69 6e 67 2e 20 20 54 68 69 73  e setting.  This
159c0 20 73 65 74 74 69 6e 67 20 64 65 74 65 72 6d 69   setting determi
159d0 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f 77 20 6f  nes..  /// how o
159e0 66 74 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  ften the databas
159f0 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c 73 20 74  e engine calls t
15a00 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20  he xSync method 
15a10 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a 20 20 2f  of the VFS...  /
15a20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15a30 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d 20 53   internal enum S
15a40 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e 6f 75 73  QLiteSynchronous
15a50 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Enum..  {..     
15a60 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15a70 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68        /// Use th
15a80 65 20 64 65 66 61 75 6c 74 20 22 73 79 6e 63 68  e default "synch
15a90 72 6f 6e 6f 75 73 22 20 64 61 74 61 62 61 73 65  ronous" database
15aa0 20 73 65 74 74 69 6e 67 2e 20 20 43 75 72 72 65   setting.  Curre
15ab0 6e 74 6c 79 2c 20 74 68 69 73 20 73 68 6f 75 6c  ntly, this shoul
15ac0 64 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  d be..      /// 
15ad0 74 68 65 20 73 61 6d 65 20 61 73 20 75 73 69 6e  the same as usin
15ae0 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f 64 65 2e  g the FULL mode.
15af0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15b00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65  mmary>..      De
15b10 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 0d 0a 20  fault = -1,.... 
15b20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15b30 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15b40 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
15b50 65 20 63 6f 6e 74 69 6e 75 65 73 20 77 69 74 68  e continues with
15b60 6f 75 74 20 73 79 6e 63 69 6e 67 20 61 73 20 73  out syncing as s
15b70 6f 6f 6e 20 61 73 20 69 74 20 68 61 73 20 68 61  oon as it has ha
15b80 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nded..      /// 
15b90 64 61 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20  data off to the 
15ba0 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
15bb0 2e 20 20 49 66 20 74 68 65 20 61 70 70 6c 69 63  .  If the applic
15bc0 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51  ation running SQ
15bd0 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  Lite..      /// 
15be0 63 72 61 73 68 65 73 2c 20 74 68 65 20 64 61 74  crashes, the dat
15bf0 61 20 77 69 6c 6c 20 62 65 20 73 61 66 65 2c 20  a will be safe, 
15c00 62 75 74 20 74 68 65 20 64 61 74 61 62 61 73 65  but the database
15c10 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 63 6f   might become co
15c20 72 72 75 70 74 65 64 0d 0a 20 20 20 20 20 20 2f  rrupted..      /
15c30 2f 2f 20 69 66 20 74 68 65 20 6f 70 65 72 61 74  // if the operat
15c40 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73 68  ing system crash
15c50 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74  es or the comput
15c60 65 72 20 6c 6f 73 65 73 20 70 6f 77 65 72 20 62  er loses power b
15c70 65 66 6f 72 65 20 74 68 61 74 0d 0a 20 20 20 20  efore that..    
15c80 20 20 2f 2f 2f 20 64 61 74 61 20 68 61 73 20 62    /// data has b
15c90 65 65 6e 20 77 72 69 74 74 65 6e 20 74 6f 20 74  een written to t
15ca0 68 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 2e  he disk surface.
15cb0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15cc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 66  mmary>..      Of
15cd0 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  f = 0,....      
15ce0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15cf0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74       /// The dat
15d00 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c  abase engine wil
15d10 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20 61 74 20  l still sync at 
15d20 74 68 65 20 6d 6f 73 74 20 63 72 69 74 69 63 61  the most critica
15d30 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75 74 0d 0a  l moments, but..
15d40 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73 73 20 6f        /// less o
15d50 66 74 65 6e 20 74 68 61 6e 20 69 6e 20 46 55 4c  ften than in FUL
15d60 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72 65 20 69  L mode.  There i
15d70 73 20 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 28  s a very small (
15d80 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29  though non-zero)
15d90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e  ..      /// chan
15da0 63 65 20 74 68 61 74 20 61 20 70 6f 77 65 72 20  ce that a power 
15db0 66 61 69 6c 75 72 65 20 61 74 20 6a 75 73 74 20  failure at just 
15dc0 74 68 65 20 77 72 6f 6e 67 20 74 69 6d 65 20 63  the wrong time c
15dd0 6f 75 6c 64 20 63 6f 72 72 75 70 74 20 74 68 65  ould corrupt the
15de0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
15df0 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41 4c 20 6d  base in NORMAL m
15e00 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ode...      /// 
15e10 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15e20 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c 0d 0a 0d    Normal = 1,...
15e30 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
15e40 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
15e50 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  The database eng
15e60 69 6e 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65  ine will use the
15e70 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66   xSync method of
15e80 20 74 68 65 20 56 46 53 20 74 6f 20 65 6e 73 75   the VFS to ensu
15e90 72 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20 2f  re that..      /
15ea0 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e 74 20 69  // all content i
15eb0 73 20 73 61 66 65 6c 79 20 77 72 69 74 74 65 6e  s safely written
15ec0 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72   to the disk sur
15ed0 66 61 63 65 20 70 72 69 6f 72 20 74 6f 20 63 6f  face prior to co
15ee0 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20 20 20 20  ntinuing...     
15ef0 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73 75 72 65   /// This ensure
15f00 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74  s that an operat
15f10 69 6e 67 20 73 79 73 74 65 6d 20 63 72 61 73 68  ing system crash
15f20 20 6f 72 20 70 6f 77 65 72 20 66 61 69 6c 75 72   or power failur
15f30 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20 20 20 20  e will not..    
15f40 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 20 74 68    /// corrupt th
15f50 65 20 64 61 74 61 62 61 73 65 2e 20 20 46 55 4c  e database.  FUL
15f60 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  L synchronous is
15f70 20 76 65 72 79 20 73 61 66 65 2c 20 62 75 74 20   very safe, but 
15f80 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20 20 20 20  it is also..    
15f90 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e 0d 0a 20    /// slower... 
15fa0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15fb0 72 79 3e 0d 0a 20 20 20 20 20 20 46 75 6c 6c 20  ry>..      Full 
15fc0 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 2..  }....  //
15fd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
15fe0 2f 2f 20 54 68 65 20 72 65 71 75 65 73 74 65 64  // The requested
15ff0 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74 69   command executi
16000 6f 6e 20 74 79 70 65 2e 20 20 54 68 69 73 20 63  on type.  This c
16010 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68 20 6d 65  ontrols which me
16020 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a 20 20 2f  thod of the..  /
16030 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
16040 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e 20  LiteCommand" /> 
16050 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62 65 20 63  object will be c
16060 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  alled...  /// </
16070 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
16080 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 45 78  ic enum SQLiteEx
16090 65 63 75 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a  ecuteType..  {..
160a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
160b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44  ry>..      /// D
160c0 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e 6f 20 6d  o nothing.  No m
160d0 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63 61  ethod will be ca
160e0 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lled...      ///
160f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
16100 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 0d 0a     None = 0,....
16110 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16120 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
16130 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f  he command is no
16140 74 20 65 78 70 65 63 74 65 64 20 74 6f 20 72 65  t expected to re
16150 74 75 72 6e 20 61 20 72 65 73 75 6c 74 20 2d 4f  turn a result -O
16160 52 2d 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  R- the result is
16170 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   not..      /// 
16180 6e 65 65 64 65 64 2e 20 20 54 68 65 20 3c 73 65  needed.  The <se
16190 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
161a0 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e  mmand.ExecuteNon
161b0 51 75 65 72 79 28 29 22 20 2f 3e 20 6f 72 0d 0a  Query()" /> or..
161c0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
161d0 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
161e0 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  nd.ExecuteNonQue
161f0 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69  ry(CommandBehavi
16200 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68 6f 64 0d  or)" />  method.
16210 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20  .      /// will 
16220 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
16230 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16240 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75 65 72 79  ..      NonQuery
16250 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
16260 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16270 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d      /// The comm
16280 61 6e 64 20 69 73 20 65 78 70 65 63 74 65 64 20  and is expected 
16290 74 6f 20 72 65 74 75 72 6e 20 61 20 73 63 61 6c  to return a scal
162a0 61 72 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74  ar result -OR- t
162b0 68 65 20 72 65 73 75 6c 74 20 73 68 6f 75 6c 64  he result should
162c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 6c  ..      /// be l
162d0 69 6d 69 74 65 64 20 74 6f 20 61 20 73 63 61 6c  imited to a scal
162e0 61 72 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20  ar result.  The 
162f0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
16300 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
16310 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d 0a 20 20  Scalar()" />..  
16320 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20      /// or <see 
16330 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
16340 61 6e 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61  and.ExecuteScala
16350 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  r(CommandBehavio
16360 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  r)" /> method wi
16370 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
16380 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
16390 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
163a0 20 20 20 20 20 20 53 63 61 6c 61 72 20 3d 20 32        Scalar = 2
163b0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
163c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
163d0 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20  /// The command 
163e0 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 72  is expected to r
163f0 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65 66 3d  eturn <see cref=
16400 22 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65  "SQLiteDataReade
16410 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e 0d 0a 20  r" /> result... 
16420 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
16430 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
16440 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61  mmand.ExecuteRea
16450 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d 0a 20 20  der()" /> or..  
16460 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
16470 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  f="SQLiteCommand
16480 2e 45 78 65 63 75 74 65 52 65 61 64 65 72 28 43  .ExecuteReader(C
16490 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22  ommandBehavior)"
164a0 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d   /> method will.
164b0 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 63 61  .      /// be ca
164c0 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lled...      ///
164d0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
164e0 20 20 20 52 65 61 64 65 72 20 3d 20 33 2c 0d 0a     Reader = 3,..
164f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16500 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16510 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   Use the default
16520 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63 75 74 69   command executi
16530 6f 6e 20 74 79 70 65 2e 20 20 55 73 69 6e 67 20  on type.  Using 
16540 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 74 68  this value is th
16550 65 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f  e same..      //
16560 2f 20 61 73 20 75 73 69 6e 67 20 74 68 65 20 3c  / as using the <
16570 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
16580 45 78 65 63 75 74 65 54 79 70 65 2e 4e 6f 6e 51  ExecuteType.NonQ
16590 75 65 72 79 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  uery" /> value..
165a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
165b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66  mary>..      Def
165c0 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65 72 79 20  ault = NonQuery 
165d0 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 64 65  /* TODO: Good de
165e0 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20 7d 0d 0a  fault? */..  }..
165f0 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
16600 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 61 63 74  >..  /// The act
16610 69 6f 6e 20 63 6f 64 65 20 72 65 73 70 6f 6e 73  ion code respons
16620 69 62 6c 65 20 66 6f 72 20 74 68 65 20 63 75 72  ible for the cur
16630 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74  rent call into t
16640 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a  he authorizer...
16650 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16660 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
16670 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72  SQLiteAuthorizer
16680 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20 20 7b 0d  ActionCode..  {.
16690 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
166a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
166b0 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20 62 65 69  No action is bei
166c0 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e 20 20 54  ng performed.  T
166d0 68 69 73 20 76 61 6c 75 65 20 73 68 6f 75 6c 64  his value should
166e0 20 6e 6f 74 20 62 65 20 75 73 65 64 20 66 72 6f   not be used fro
166f0 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 65 78 74  m..      /// ext
16700 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a 20 20 20  ernal code...   
16710 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16720 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  >..      None = 
16730 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  -1,....      ///
16740 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16750 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67 65 72 20    /// No longer 
16760 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  used...      ///
16770 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
16780 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d 0a 0d 0a     Copy = 0,....
16790 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
167a0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
167b0 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20  n index will be 
167c0 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
167d0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
167e0 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d  guments are the.
167f0 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78  .      /// index
16800 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
16810 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
16820 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   ///..      /// 
16830 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16840 20 20 43 72 65 61 74 65 49 6e 64 65 78 20 3d 20    CreateIndex = 
16850 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
16860 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16870 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c   /// A table wil
16880 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
16890 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
168a0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
168b0 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
168c0 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61  table name and a
168d0 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
168e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
168f0 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
16900 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d 0a 20 20  Table = 2,....  
16910 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16920 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
16930 65 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77  emporary index w
16940 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16950 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16960 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16970 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16980 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64  e index name and
16990 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
169a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
169b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
169c0 65 61 74 65 54 65 6d 70 49 6e 64 65 78 20 3d 20  eateTempIndex = 
169d0 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  3,....      /// 
169e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
169f0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
16a00 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63   table will be c
16a10 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74  reated.  The act
16a20 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16a30 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
16a40 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  / are the table 
16a50 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16a60 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16a70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16a80 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 54 61      CreateTempTa
16a90 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20  ble = 4,....    
16aa0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16ab0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
16ac0 70 6f 72 61 72 79 20 74 72 69 67 67 65 72 20 77  porary trigger w
16ad0 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16ae0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16af0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
16b00 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
16b10 65 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61  e trigger name a
16b20 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
16b30 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16b40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16b50 43 72 65 61 74 65 54 65 6d 70 54 72 69 67 67 65  CreateTempTrigge
16b60 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20 20  r = 5,....      
16b70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16b80 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
16b90 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c 20 62  rary view will b
16ba0 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
16bb0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16bc0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20  arguments are.. 
16bd0 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 65       /// the vie
16be0 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  w name and a nul
16bf0 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
16c00 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
16c10 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70        CreateTemp
16c20 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20  View = 6,....   
16c30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16c40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72  ..      /// A tr
16c50 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72  igger will be cr
16c60 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
16c70 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16c80 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
16c90 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65 72       /// trigger
16ca0 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
16cb0 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
16cc0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16cd0 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 72 69  .      CreateTri
16ce0 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20  gger = 7,....   
16cf0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16d00 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69  ..      /// A vi
16d10 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74  ew will be creat
16d20 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
16d30 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
16d40 74 73 20 61 72 65 20 74 68 65 20 76 69 65 77 0d  ts are the view.
16d50 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20  .      /// name 
16d60 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
16d70 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
16d80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
16d90 72 65 61 74 65 56 69 65 77 20 3d 20 38 2c 0d 0a  reateView = 8,..
16da0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16db0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16dc0 20 41 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d   A DELETE statem
16dd0 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
16de0 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
16df0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
16e00 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
16e10 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
16e20 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
16e30 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16e40 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16e50 20 20 44 65 6c 65 74 65 20 3d 20 39 2c 0d 0a 0d    Delete = 9,...
16e60 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16e70 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16e80 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  An index will be
16e90 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
16ea0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
16eb0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
16ec0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65  ..      /// inde
16ed0 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
16ee0 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
16ef0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16f00 0d 0a 20 20 20 20 20 20 44 72 6f 70 49 6e 64 65  ..      DropInde
16f10 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20  x = 10,....     
16f20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16f30 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
16f40 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  e will be droppe
16f50 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
16f60 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
16f70 73 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 73  s are the tables
16f80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65  ..      /// name
16f90 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
16fa0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16fb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16fc0 44 72 6f 70 54 61 62 6c 65 20 3d 20 31 31 2c 0d  DropTable = 11,.
16fd0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16fe0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16ff0 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e  / A temporary in
17000 64 65 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  dex will be drop
17010 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
17020 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
17030 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
17040 2f 2f 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d  // the index nam
17050 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
17060 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
17070 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17080 20 20 20 44 72 6f 70 54 65 6d 70 49 6e 64 65 78     DropTempIndex
17090 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 12,....      
170a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
170b0 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
170c0 72 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20  rary table will 
170d0 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
170e0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
170f0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a   arguments are..
17100 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61        /// the ta
17110 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ble name and a n
17120 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
17130 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17140 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
17150 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a 0d 0a 20  Table = 13,.... 
17160 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
17170 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
17180 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65  temporary trigge
17190 72 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  r will be droppe
171a0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
171b0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
171c0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
171d0 20 74 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d   the trigger nam
171e0 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
171f0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
17200 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17210 20 20 20 44 72 6f 70 54 65 6d 70 54 72 69 67 67     DropTempTrigg
17220 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20  er = 14,....    
17230 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17240 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
17250 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c  porary view will
17260 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
17270 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17280 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d  c arguments are.
17290 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76  .      /// the v
172a0 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  iew name and a n
172b0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
172c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
172d0 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
172e0 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20  View = 15,....  
172f0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
17300 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
17310 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64  rigger will be d
17320 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
17330 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17340 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
17350 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65        /// trigge
17360 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  r name and the t
17370 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
17380 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17390 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 72 69 67  ..      DropTrig
173a0 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20  ger = 16,....   
173b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
173c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69  ..      /// A vi
173d0 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  ew will be dropp
173e0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
173f0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
17400 74 73 20 61 72 65 20 74 68 65 20 76 69 65 77 0d  ts are the view.
17410 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20  .      /// name 
17420 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
17430 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17440 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
17450 72 6f 70 56 69 65 77 20 3d 20 31 37 2c 0d 0a 0d  ropView = 17,...
17460 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17470 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17480 41 6e 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  An INSERT statem
17490 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
174a0 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
174b0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
174c0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
174d0 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
174e0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
174f0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
17500 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17510 20 20 49 6e 73 65 72 74 20 3d 20 31 38 2c 0d 0a    Insert = 18,..
17520 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17530 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17540 20 41 20 50 52 41 47 4d 41 20 73 74 61 74 65 6d   A PRAGMA statem
17550 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
17560 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
17570 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
17580 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
17590 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  are the name of 
175a0 74 68 65 20 50 52 41 47 4d 41 20 61 6e 64 20 74  the PRAGMA and t
175b0 68 65 20 6e 65 77 20 76 61 6c 75 65 20 6f 72 20  he new value or 
175c0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
175d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
175e0 72 79 3e 0d 0a 20 20 20 20 20 20 50 72 61 67 6d  ry>..      Pragm
175f0 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20 20 20 20  a = 19,....     
17600 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17610 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
17620 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20 62 65  e column will be
17630 20 72 65 61 64 2e 20 20 54 68 65 20 61 63 74 69   read.  The acti
17640 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17650 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
17660 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e       /// table n
17670 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75  ame and the colu
17680 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  mn name...      
17690 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
176a0 20 20 20 20 20 20 52 65 61 64 20 3d 20 32 30 2c        Read = 20,
176b0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
176c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
176d0 2f 2f 20 41 20 53 45 4c 45 43 54 20 73 74 61 74  // A SELECT stat
176e0 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78  ement will be ex
176f0 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74  ecuted.  The act
17700 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
17710 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
17720 2f 20 61 72 65 20 62 6f 74 68 20 6e 75 6c 6c 20  / are both null 
17730 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
17740 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17750 20 20 20 20 20 53 65 6c 65 63 74 20 3d 20 32 31       Select = 21
17760 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17770 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17780 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f  /// A transactio
17790 6e 20 77 69 6c 6c 20 62 65 20 73 74 61 72 74 65  n will be starte
177a0 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c 20 6f 72  d, committed, or
177b0 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54   rolled back.  T
177c0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63  he..      /// ac
177d0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
177e0 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
177f0 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72  name of the oper
17800 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20  ation (BEGIN,.. 
17810 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d 49 54 2c       /// COMMIT,
17820 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e   or ROLLBACK) an
17830 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
17840 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17850 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 54 72 61  mary>..      Tra
17860 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32 2c 0d 0a  nsaction = 22,..
17870 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17880 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17890 20 41 6e 20 55 50 44 41 54 45 20 73 74 61 74 65   An UPDATE state
178a0 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65  ment will be exe
178b0 63 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  cuted.  The acti
178c0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
178d0 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
178e0 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e   are the table n
178f0 61 6d 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75  ame and the colu
17900 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  mn name...      
17910 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17920 20 20 20 20 20 20 55 70 64 61 74 65 20 3d 20 32        Update = 2
17930 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  3,....      /// 
17940 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17950 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73 65 20   /// A database 
17960 77 69 6c 6c 20 62 65 20 61 74 74 61 63 68 65 64  will be attached
17970 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   to the connecti
17980 6f 6e 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  on.  The action-
17990 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20  specific..      
179a0 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72  /// arguments ar
179b0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  e the database f
179c0 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ile name and a n
179d0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
179e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
179f0 0d 0a 20 20 20 20 20 20 41 74 74 61 63 68 20 3d  ..      Attach =
17a00 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   24,....      //
17a10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17a20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73     /// A databas
17a30 65 20 77 69 6c 6c 20 62 65 20 64 65 74 61 63 68  e will be detach
17a40 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e  ed from the conn
17a50 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74  ection.  The act
17a60 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20  ion-specific..  
17a70 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
17a80 73 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61  s are the databa
17a90 73 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  se name and a nu
17aa0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
17ab0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17ac0 0a 20 20 20 20 20 20 44 65 74 61 63 68 20 3d 20  .      Detach = 
17ad0 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  25,....      ///
17ae0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17af0 20 20 2f 2f 2f 20 54 68 65 20 73 63 68 65 6d 61    /// The schema
17b00 20 6f 66 20 61 20 74 61 62 6c 65 20 77 69 6c 6c   of a table will
17b10 20 62 65 20 61 6c 74 65 72 65 64 2e 20 20 54 68   be altered.  Th
17b20 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17b30 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
17b40 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 64     /// are the d
17b50 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64  atabase name and
17b60 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
17b70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17b80 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 6c  mmary>..      Al
17b90 74 65 72 54 61 62 6c 65 20 3d 20 32 36 2c 0d 0a  terTable = 26,..
17ba0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17bb0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17bc0 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62   An index will b
17bd0 65 20 64 65 6c 65 74 65 64 20 61 6e 64 20 74 68  e deleted and th
17be0 65 6e 20 72 65 63 72 65 61 74 65 64 2e 20 20 54  en recreated.  T
17bf0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
17c00 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ic..      /// ar
17c10 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
17c20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 61  index name and a
17c30 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
17c40 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17c50 79 3e 0d 0a 20 20 20 20 20 20 52 65 69 6e 64 65  y>..      Reinde
17c60 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20 20 20 20  x = 27,....     
17c70 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17c80 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
17c90 65 20 77 69 6c 6c 20 62 65 20 61 6e 61 6c 79 7a  e will be analyz
17ca0 65 64 20 74 6f 20 67 61 74 68 65 72 73 20 73 74  ed to gathers st
17cb0 61 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 69  atistics about i
17cc0 74 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f  t.  The..      /
17cd0 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  // action-specif
17ce0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
17cf0 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
17d00 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
17d10 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17d20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
17d30 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d 0a 0d 0a  nalyze = 28,....
17d40 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17d50 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17d60 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77   virtual table w
17d70 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
17d80 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
17d90 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
17da0 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
17db0 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
17dc0 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65   the module name
17dd0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17de0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
17df0 72 65 61 74 65 56 74 61 62 6c 65 20 3d 20 32 39  reateVtable = 29
17e00 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17e10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17e20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61  /// A virtual ta
17e30 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  ble will be drop
17e40 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
17e50 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
17e60 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
17e70 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  // the table nam
17e80 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65  e and the module
17e90 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
17ea0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17eb0 20 20 20 20 44 72 6f 70 56 74 61 62 6c 65 20 3d      DropVtable =
17ec0 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   30,....      //
17ed0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17ee0 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20 66 75 6e     /// A SQL fun
17ef0 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61  ction will be ca
17f00 6c 6c 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  lled.  The actio
17f10 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
17f20 65 6e 74 73 20 61 72 65 20 61 0d 0a 20 20 20 20  ents are a..    
17f30 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61 6c 75 65    /// null value
17f40 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f   and the functio
17f50 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  n name...      /
17f60 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17f70 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 20 3d 20       Function = 
17f80 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  31,....      ///
17f90 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17fa0 20 20 2f 2f 2f 20 41 20 73 61 76 65 70 6f 69 6e    /// A savepoin
17fb0 74 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  t will be create
17fc0 64 2c 20 72 65 6c 65 61 73 65 64 2c 20 6f 72 20  d, released, or 
17fd0 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54 68  rolled back.  Th
17fe0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74  e..      /// act
17ff0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
18000 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 6e  uments are the n
18010 61 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61  ame of the opera
18020 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20 20  tion (BEGIN,..  
18030 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41 53 45 2c      /// RELEASE,
18040 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e   or ROLLBACK) an
18050 64 20 74 68 65 20 73 61 76 65 70 6f 69 6e 74 20  d the savepoint 
18060 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
18070 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
18080 20 20 20 53 61 76 65 70 6f 69 6e 74 20 3d 20 33     Savepoint = 3
18090 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  2,....      /// 
180a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
180b0 20 2f 2f 2f 20 41 20 72 65 63 75 72 73 69 76 65   /// A recursive
180c0 20 71 75 65 72 79 20 77 69 6c 6c 20 62 65 20 65   query will be e
180d0 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
180e0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
180f0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
18100 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75 6c 6c 20  // are two null 
18110 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f  values...      /
18120 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
18130 20 20 20 20 20 52 65 63 75 72 73 69 76 65 20 3d       Recursive =
18140 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f   33..  }....  //
18150 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
18160 2f 2f 20 54 68 65 20 70 6f 73 73 69 62 6c 65 20  // The possible 
18170 72 65 74 75 72 6e 20 63 6f 64 65 73 20 66 6f 72  return codes for
18180 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 63 61   the progress ca
18190 6c 6c 62 61 63 6b 2e 0d 0a 20 20 2f 2f 2f 20 3c  llback...  /// <
181a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
181b0 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 50  lic enum SQLiteP
181c0 72 6f 67 72 65 73 73 52 65 74 75 72 6e 43 6f 64  rogressReturnCod
181d0 65 20 2f 2a 20 69 6e 74 20 2a 2f 0d 0a 20 20 7b  e /* int */..  {
181e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
181f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
18200 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 73   The operation s
18210 68 6f 75 6c 64 20 63 6f 6e 74 69 6e 75 65 2e 0d  hould continue..
18220 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
18230 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e  mary>..      Con
18240 74 69 6e 75 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20  tinue = 0,....  
18250 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
18260 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
18270 20 6f 70 65 72 61 74 69 6f 6e 20 73 68 6f 75 6c   operation shoul
18280 64 20 62 65 20 69 6e 74 65 72 72 75 70 74 65 64  d be interrupted
18290 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
182a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49  ummary>..      I
182b0 6e 74 65 72 72 75 70 74 20 3d 20 31 0d 0a 20 20  nterrupt = 1..  
182c0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
182d0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
182e0 72 65 74 75 72 6e 20 63 6f 64 65 20 66 6f 72 20  return code for 
182f0 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c 6c  the current call
18300 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68 6f 72   into the author
18310 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  izer...  /// </s
18320 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
18330 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41 75 74  c enum SQLiteAut
18340 68 6f 72 69 7a 65 72 52 65 74 75 72 6e 43 6f 64  horizerReturnCod
18350 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
18360 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
18370 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 69 6f     /// The actio
18380 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c 6f 77 65  n will be allowe
18390 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
183a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
183b0 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20  Ok = 0,....     
183c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
183d0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 76        /// The ov
183e0 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20 77 69 6c  erall action wil
183f0 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 20  l be disallowed 
18400 61 6e 64 20 61 6e 20 65 72 72 6f 72 20 6d 65 73  and an error mes
18410 73 61 67 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20  sage will be..  
18420 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 65 64      /// returned
18430 20 66 72 6f 6d 20 74 68 65 20 71 75 65 72 79 20   from the query 
18440 70 72 65 70 61 72 61 74 69 6f 6e 20 6d 65 74 68  preparation meth
18450 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
18460 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
18470 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20   Deny = 1,....  
18480 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
18490 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
184a0 20 73 70 65 63 69 66 69 63 20 61 63 74 69 6f 6e   specific action
184b0 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f   will be disallo
184c0 77 65 64 3b 20 68 6f 77 65 76 65 72 2c 20 74 68  wed; however, th
184d0 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e  e overall action
184e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c  ..      /// will
184f0 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54 68 65 20   continue.  The 
18500 65 78 61 63 74 20 65 66 66 65 63 74 73 20 6f 66  exact effects of
18510 20 74 68 69 73 20 72 65 74 75 72 6e 20 63 6f 64   this return cod
18520 65 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67  e vary depending
18530 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 20 74  ..      /// on t
18540 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74 69  he specific acti
18550 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65 72  on, please refer
18560 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
18570 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  ore library..   
18580 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65 6e 74 61     /// documenta
18590 74 69 6f 6e 20 66 6f 72 20 66 75 74 68 65 72 20  tion for futher 
185a0 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  details...      
185b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
185c0 20 20 20 20 20 20 49 67 6e 6f 72 65 20 3d 20 32        Ignore = 2
185d0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
185e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
185f0 43 6c 61 73 73 20 75 73 65 64 20 69 6e 74 65 72  Class used inter
18600 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65 72 6d 69  nally to determi
18610 6e 65 20 74 68 65 20 64 61 74 61 74 79 70 65 20  ne the datatype 
18620 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 61  of a column in a
18630 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20 2f 2f   resultset..  //
18640 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18650 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
18660 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79 70 65  class SQLiteType
18670 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ..  {..    /// <
18680 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
18690 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f 66 20  / The DbType of 
186a0 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20 44  the column, or D
186b0 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69 66 20  bType.Object if 
186c0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
186d0 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f  ermined..    ///
186e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
186f0 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65   internal DbType
18700 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f 2f 20   Type;..    /// 
18710 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
18720 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74 79 20  // The affinity 
18730 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75 73 65  of a column, use
18740 64 20 66 6f 72 20 65 78 70 72 65 73 73 69 6f 6e  d for expression
18750 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65 20 69  s or when Type i
18760 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 0d  s DbType.Object.
18770 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
18780 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
18790 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 41  l TypeAffinity A
187a0 66 66 69 6e 69 74 79 3b 0d 0a 0d 0a 20 20 20 20  ffinity;....    
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18800 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18810 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72  ..    /// Constr
18820 75 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69  ucts a default i
18830 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
18840 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  type...    /// <
18850 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
18860 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65  ublic SQLiteType
18870 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
18880 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
18890 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
188a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
188e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
188f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18900 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
18910 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
18920 66 20 74 68 69 73 20 74 79 70 65 20 77 69 74 68  f this type with
18930 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
18940 69 65 6c 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  ield values...  
18950 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18960 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
18970 20 6e 61 6d 65 3d 22 61 66 66 69 6e 69 74 79 22   name="affinity"
18980 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
18990 79 70 65 20 61 66 66 69 6e 69 74 79 20 74 6f 20  ype affinity to 
189a0 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77 20  use for the new 
189b0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
189c0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
189d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
189e0 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="type">..    //
189f0 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 74  / The database t
18a00 79 70 65 20 74 6f 20 75 73 65 20 66 6f 72 20 74  ype to use for t
18a10 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e  he new instance.
18a20 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
18a30 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53  m>..    public S
18a40 51 4c 69 74 65 54 79 70 65 28 0d 0a 20 20 20 20  QLiteType(..    
18a50 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 61    TypeAffinity a
18a60 66 66 69 6e 69 74 79 2c 0d 0a 20 20 20 20 20 20  ffinity,..      
18a70 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20 20 20  DbType type..   
18a80 20 20 20 29 0d 0a 20 20 20 20 20 20 3a 20 74 68     )..      : th
18a90 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  is()..    {..   
18aa0 20 20 20 74 68 69 73 2e 41 66 66 69 6e 69 74 79     this.Affinity
18ab0 20 3d 20 61 66 66 69 6e 69 74 79 3b 0d 0a 20 20   = affinity;..  
18ac0 20 20 20 20 74 68 69 73 2e 54 79 70 65 20 3d 20      this.Type = 
18ad0 74 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  type;..    }..  
18ae0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
18af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b30 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e  ////....  intern
18b40 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
18b50 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 0d  SQLiteDbTypeMap.
18b60 0a 20 20 20 20 20 20 3a 20 44 69 63 74 69 6f 6e  .      : Diction
18b70 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69  ary<string, SQLi
18b80 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e  teDbTypeMapping>
18b90 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65  ..  {..      #re
18ba0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
18bb0 61 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  a..      private
18bc0 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79   Dictionary<DbTy
18bd0 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65  pe, SQLiteDbType
18be0 4d 61 70 70 69 6e 67 3e 20 72 65 76 65 72 73 65  Mapping> reverse
18bf0 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
18c00 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
18c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18c60 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
18c70 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
18c80 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
18c90 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20 20  DbTypeMap()..   
18ca0 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e 65         : base(ne
18cb0 77 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67  w TypeNameString
18cc0 43 6f 6d 70 61 72 65 72 28 29 29 0d 0a 20 20 20  Comparer())..   
18cd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18ce0 72 65 76 65 72 73 65 20 3d 20 6e 65 77 20 44 69  reverse = new Di
18cf0 63 74 69 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c  ctionary<DbType,
18d00 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
18d10 70 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20  ping>();..      
18d20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d70 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
18d80 62 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70  blic SQLiteDbTyp
18d90 65 4d 61 70 28 0d 0a 20 20 20 20 20 20 20 20 20  eMap(..         
18da0 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c   IEnumerable<SQL
18db0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
18dc0 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20  > collection..  
18dd0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
18de0 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
18df0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18e00 20 20 41 64 64 28 63 6f 6c 6c 65 63 74 69 6f 6e    Add(collection
18e10 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
18e20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18e30 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
18e40 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
18e90 6e 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74  n System.Collect
18ea0 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 44 69 63  ions.Generic.Dic
18eb0 74 69 6f 6e 61 72 79 20 22 4f 76 65 72 72 69 64  tionary "Overrid
18ec0 65 73 22 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  es"..      publi
18ed0 63 20 6e 65 77 20 69 6e 74 20 43 6c 65 61 72 28  c new int Clear(
18ee0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
18ef0 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74        int result
18f00 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
18f10 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20 21     if (reverse !
18f20 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
18f30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18f40 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20 72 65      result += re
18f50 76 65 72 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20 20  verse.Count;..  
18f60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 76 65              reve
18f70 72 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20  rse.Clear();..  
18f80 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
18f90 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d         result +=
18fa0 20 62 61 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20 20   base.Count;..  
18fb0 20 20 20 20 20 20 20 20 62 61 73 65 2e 43 6c 65          base.Cle
18fc0 61 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ar();....       
18fd0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
18fe0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
18ff0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
19000 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19050 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
19060 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
19070 70 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ping Helper Meth
19080 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ods..      publi
19090 63 20 76 6f 69 64 20 41 64 64 28 0d 0a 20 20 20  c void Add(..   
190a0 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62         IEnumerab
190b0 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d  le<SQLiteDbTypeM
190c0 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69  apping> collecti
190d0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  on..          ).
190e0 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
190f0 20 20 20 20 69 66 20 28 63 6f 6c 6c 65 63 74 69      if (collecti
19100 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
19110 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
19120 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
19130 6c 45 78 63 65 70 74 69 6f 6e 28 22 63 6f 6c 6c  lException("coll
19140 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a 20 20 20  ection");....   
19150 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
19160 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
19170 69 6e 67 20 69 74 65 6d 20 69 6e 20 63 6f 6c 6c  ing item in coll
19180 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20  ection)..       
19190 20 20 20 20 20 20 20 41 64 64 28 69 74 65 6d 29         Add(item)
191a0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
191b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
191c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
191d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
191e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
191f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19200 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f  .      public vo
19210 69 64 20 41 64 64 28 53 51 4c 69 74 65 44 62 54  id Add(SQLiteDbT
19220 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 29  ypeMapping item)
19230 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
19240 20 20 20 20 20 69 66 20 28 69 74 65 6d 20 3d 3d       if (item ==
19250 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
19260 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
19270 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
19280 70 74 69 6f 6e 28 22 69 74 65 6d 22 29 3b 0d 0a  ption("item");..
19290 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
192a0 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 20 3d 3d  item.typeName ==
192b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
192c0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
192d0 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f  ArgumentExceptio
192e0 6e 28 22 69 74 65 6d 20 74 79 70 65 20 6e 61 6d  n("item type nam
192f0 65 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c  e cannot be null
19300 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
19310 20 62 61 73 65 2e 41 64 64 28 69 74 65 6d 2e 74   base.Add(item.t
19320 79 70 65 4e 61 6d 65 2c 20 69 74 65 6d 29 3b 0d  ypeName, item);.
19330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
19340 28 69 74 65 6d 2e 70 72 69 6d 61 72 79 29 0d 0a  (item.primary)..
19350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19360 76 65 72 73 65 2e 41 64 64 28 69 74 65 6d 2e 64  verse.Add(item.d
19370 61 74 61 54 79 70 65 2c 20 69 74 65 6d 29 3b 0d  ataType, item);.
19380 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
19390 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
193a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
193f0 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44  .      #region D
19400 62 54 79 70 65 20 48 65 6c 70 65 72 20 4d 65 74  bType Helper Met
19410 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c  hods..      publ
19420 69 63 20 62 6f 6f 6c 20 43 6f 6e 74 61 69 6e 73  ic bool Contains
19430 4b 65 79 28 44 62 54 79 70 65 20 6b 65 79 29 0d  Key(DbType key).
19440 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
19450 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
19460 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
19470 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
19480 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
19490 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73     return revers
194a0 65 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28 6b 65  e.ContainsKey(ke
194b0 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  y);..      }....
194c0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19510 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  ...      public 
19520 62 6f 6f 6c 20 54 72 79 47 65 74 56 61 6c 75 65  bool TryGetValue
19530 28 44 62 54 79 70 65 20 6b 65 79 2c 20 6f 75 74  (DbType key, out
19540 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
19550 70 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ping value)..   
19560 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19570 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e  if (reverse == n
19580 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19590 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
195a0 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
195b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
195c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
195d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
195e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 76        return rev
195f0 65 72 73 65 2e 54 72 79 47 65 74 56 61 6c 75 65  erse.TryGetValue
19600 28 6b 65 79 2c 20 6f 75 74 20 76 61 6c 75 65 29  (key, out value)
19610 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
19620 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19670 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f  .      public bo
19680 6f 6c 20 52 65 6d 6f 76 65 28 44 62 54 79 70 65  ol Remove(DbType
19690 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a   key)..      {..
196a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
196b0 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
196c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
196d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
196e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
196f0 72 65 76 65 72 73 65 2e 52 65 6d 6f 76 65 28 6b  reverse.Remove(k
19700 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ey);..      }.. 
19710 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
19720 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  .  }....  //////
19730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74  ///////....  int
19780 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
19790 73 73 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ss SQLiteDbTypeM
197a0 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a 20 20 20  apping..  {..   
197b0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
197c0 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 0d 0a  DbTypeMapping(..
197d0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
197e0 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20  ewTypeName,..   
197f0 20 20 20 20 20 44 62 54 79 70 65 20 6e 65 77 44       DbType newD
19800 61 74 61 54 79 70 65 2c 0d 0a 20 20 20 20 20 20  ataType,..      
19810 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69 6d 61 72    bool newPrimar
19820 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  y..        )..  
19830 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 4e    {..      typeN
19840 61 6d 65 20 3d 20 6e 65 77 54 79 70 65 4e 61 6d  ame = newTypeNam
19850 65 3b 0d 0a 20 20 20 20 20 20 64 61 74 61 54 79  e;..      dataTy
19860 70 65 20 3d 20 6e 65 77 44 61 74 61 54 79 70 65  pe = newDataType
19870 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d 61 72 79  ;..      primary
19880 20 3d 20 6e 65 77 50 72 69 6d 61 72 79 3b 0d 0a   = newPrimary;..
19890 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
198a0 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 74 79 70  ernal string typ
198b0 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69 6e 74 65  eName;..    inte
198c0 72 6e 61 6c 20 44 62 54 79 70 65 20 64 61 74 61  rnal DbType data
198d0 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e 74 65 72  Type;..    inter
198e0 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d 61 72 79  nal bool primary
198f0 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 6e 74 65  ;..  }....  inte
19900 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
19910 73 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67  s TypeNameString
19920 43 6f 6d 70 61 72 65 72 20 3a 20 49 45 71 75 61  Comparer : IEqua
19930 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72  lityComparer<str
19940 69 6e 67 3e 2c 20 49 43 6f 6d 70 61 72 65 72 3c  ing>, IComparer<
19950 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20  string>..  {..  
19960 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75 61 6c    #region IEqual
19970 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72 69  ityComparer<stri
19980 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ng> Members..   
19990 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75   public bool Equ
199a0 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74 72 69  als(..      stri
199b0 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20  ng left,..      
199c0 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a 20 20  string right..  
199d0 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
199e0 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
199f0 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c 20 72  g.Equals(left, r
19a00 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70  ight, StringComp
19a10 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
19a20 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20  noreCase);..    
19a30 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c  ////....    publ
19a90 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43 6f  ic int GetHashCo
19aa0 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  de(..      strin
19ab0 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 29  g value..      )
19ac0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ..    {..      /
19ad0 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
19ae0 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67  : The only thing
19af0 20 74 68 61 74 20 77 65 20 6d 75 73 74 20 67 75   that we must gu
19b00 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20 61 63  arantee here, ac
19b10 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  cording..      /
19b20 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65 20 4d  /       to the M
19b30 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
19b40 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74 79 43  n for IEqualityC
19b50 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a 20 20 20  omparer, is..   
19b60 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 61 74     //       that
19b70 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e 20 73   for two given s
19b80 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75 61 6c  trings, if Equal
19b90 73 20 72 65 74 75 72 6e 20 74 72 75 65 20 74 68  s return true th
19ba0 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  en..      //    
19bb0 20 20 20 74 68 65 20 74 77 6f 20 73 74 72 69 6e     the two strin
19bc0 67 73 20 6d 75 73 74 20 68 61 73 68 20 74 6f 20  gs must hash to 
19bd0 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d  the same value..
19be0 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
19bf0 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
19c00 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ll)..        ret
19c10 75 72 6e 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  urn StringCompar
19c20 65 72 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65  er.OrdinalIgnore
19c30 43 61 73 65 2e 47 65 74 48 61 73 68 43 6f 64 65  Case.GetHashCode
19c40 28 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  (value);..      
19c50 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74 68  else..        th
19c60 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
19c70 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76  NullException("v
19c80 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a  alue");..    }..
19c90 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
19ca0 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cf0 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
19d00 20 49 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e   IComparer<strin
19d10 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  g> Members..    
19d20 70 75 62 6c 69 63 20 69 6e 74 20 43 6f 6d 70 61  public int Compa
19d30 72 65 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  re(..      strin
19d40 67 20 78 2c 0d 0a 20 20 20 20 20 20 73 74 72 69  g x,..      stri
19d50 6e 67 20 79 0d 0a 20 20 20 20 20 20 29 0d 0a 20  ng y..      ).. 
19d60 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28     {..      if (
19d70 28 78 20 3d 3d 20 6e 75 6c 6c 29 20 26 26 20 28  (x == null) && (
19d80 79 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  y == null))..   
19d90 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a       return 0;..
19da0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 78        else if (x
19db0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
19dc0 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0d 0a 20     return -1;.. 
19dd0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 79 20       else if (y 
19de0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
19df0 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20    return 1;..   
19e00 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
19e10 20 72 65 74 75 72 6e 20 78 2e 43 6f 6d 70 61 72   return x.Compar
19e20 65 54 6f 28 79 29 3b 0d 0a 20 20 20 20 7d 0d 0a  eTo(y);..    }..
19e30 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
19e40 20 20 7d 0d 0a 7d 0d 0a                            }..}..