System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8fbe14cab8998f841d987233b0d51ccfa2625ffb:


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 29 0d 0a 20 20 20 20 20 20 2f 2f  T_471)..      //
eca0: 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a  ..      // NOTE:
ecb0: 20 54 68 69 73 20 74 79 70 65 20 69 73 20 6f 6e   This type is on
ecc0: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20  ly available on 
ecd0: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20  the..      //   
ece0: 20 20 20 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f      .NET Framewo
ecf0: 72 6b 20 32 2e 30 20 53 50 31 20 61 6e 64 20 6c  rk 2.0 SP1 and l
ed00: 61 74 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d  ater...      //.
ed10: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
ed20: 74 65 54 69 6d 65 4f 66 66 73 65 74 29 20 2f 2f  teTimeOffset) //
ed30: 20 44 61 74 65 54 69 6d 65 4f 66 66 73 65 74 20   DateTimeOffset 
ed40: 28 32 37 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  (27)..#else..   
ed50: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
ed60: 6d 65 29 20 20 20 20 20 20 20 2f 2f 20 44 61 74  me)       // Dat
ed70: 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32 37 29  eTimeOffset (27)
ed80: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d 3b  ..#endif..    };
ed90: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
eda0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46  mary>..    /// F
edb0: 6f 72 20 61 20 67 69 76 65 6e 20 74 79 70 65 2c  or a given type,
edc0: 20 72 65 74 75 72 6e 20 74 68 65 20 63 6c 6f 73   return the clos
edd0: 65 73 74 2d 6d 61 74 63 68 20 53 51 4c 69 74 65  est-match SQLite
ede0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2c 20 77   TypeAffinity, w
edf0: 68 69 63 68 20 6f 6e 6c 79 20 75 6e 64 65 72 73  hich only unders
ee00: 74 61 6e 64 73 20 61 20 76 65 72 79 20 6c 69 6d  tands a very lim
ee10: 69 74 65 64 20 73 75 62 73 65 74 20 6f 66 20 74  ited subset of t
ee20: 79 70 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ypes...    /// <
ee30: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
ee40: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
ee50: 74 79 70 22 3e 54 68 65 20 74 79 70 65 20 74 6f  typ">The type to
ee60: 20 65 76 61 6c 75 61 74 65 3c 2f 70 61 72 61 6d   evaluate</param
ee70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
ee80: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54  m name="flags">T
ee90: 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61  he flags associa
eea0: 74 65 64 20 77 69 74 68 20 74 68 65 20 63 6f 6e  ted with the con
eeb0: 6e 65 63 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e  nection.</param>
eec0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
eed0: 6e 73 3e 54 68 65 20 53 51 4c 69 74 65 20 74 79  ns>The SQLite ty
eee0: 70 65 20 61 66 66 69 6e 69 74 79 20 66 6f 72 20  pe affinity for 
eef0: 74 68 61 74 20 74 79 70 65 2e 3c 2f 72 65 74 75  that type.</retu
ef00: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
ef10: 61 6c 20 73 74 61 74 69 63 20 54 79 70 65 41 66  al static TypeAf
ef20: 66 69 6e 69 74 79 20 54 79 70 65 54 6f 41 66 66  finity TypeToAff
ef30: 69 6e 69 74 79 28 0d 0a 20 20 20 20 20 20 20 20  inity(..        
ef40: 54 79 70 65 20 74 79 70 2c 0d 0a 20 20 20 20 20  Type typ,..     
ef50: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
ef60: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
ef70: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
ef80: 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64 65  ..      TypeCode
ef90: 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79   tc = Type.GetTy
efa0: 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20  peCode(typ);..  
efb0: 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79      if (tc == Ty
efc0: 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a  peCode.Object)..
efd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
efe0: 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65   if (typ == type
eff0: 6f 66 28 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79  of(byte[]) || ty
f000: 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64  p == typeof(Guid
f010: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ))..          re
f020: 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74  turn TypeAffinit
f030: 79 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20  y.Blob;..       
f040: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
f050: 20 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69   return TypeAffi
f060: 6e 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20  nity.Text;..    
f070: 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 20 28 28    }..      if ((
f080: 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e 44  tc == TypeCode.D
f090: 65 63 69 6d 61 6c 29 20 26 26 0d 0a 20 20 20 20  ecimal) &&..    
f0a0: 20 20 20 20 20 20 28 28 66 6c 61 67 73 20 26 20        ((flags & 
f0b0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
f0c0: 46 6c 61 67 73 2e 47 65 74 44 65 63 69 6d 61 6c  Flags.GetDecimal
f0d0: 41 73 54 65 78 74 29 20 3d 3d 20 53 51 4c 69 74  AsText) == SQLit
f0e0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
f0f0: 2e 47 65 74 44 65 63 69 6d 61 6c 41 73 54 65 78  .GetDecimalAsTex
f100: 74 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  t))..      {..  
f110: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
f120: 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74  ypeAffinity.Text
f130: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
f140: 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65 63 6f    return _typeco
f150: 64 65 41 66 66 69 6e 69 74 69 65 73 5b 28 69 6e  deAffinities[(in
f160: 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  t)tc];..    }...
f170: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
f180: 74 69 63 20 54 79 70 65 41 66 66 69 6e 69 74 79  tic TypeAffinity
f190: 5b 5d 20 5f 74 79 70 65 63 6f 64 65 41 66 66 69  [] _typecodeAffi
f1a0: 6e 69 74 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20  nities = {..    
f1b0: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e    TypeAffinity.N
f1c0: 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 45 6d 70 74  ull,     // Empt
f1d0: 79 20 28 30 29 0d 0a 20 20 20 20 20 20 54 79 70  y (0)..      Typ
f1e0: 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 2c 20  eAffinity.Blob, 
f1f0: 20 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31      // Object (1
f200: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
f210: 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20  inity.Null,     
f220: 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20  // DBNull (2).. 
f230: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
f240: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42  y.Int64,    // B
f250: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
f260: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
f270: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 43 68 61 72  nt64,    // Char
f280: 20 28 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (4)..      Type
f290: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
f2a0: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d     // SByte (5).
f2b0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
f2c0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
f2d0: 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20 20 20   Byte (6)..     
f2e0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
f2f0: 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36  t64,    // Int16
f300: 20 28 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (7)..      Type
f310: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
f320: 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29     // UInt16 (8)
f330: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
f340: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
f350: 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20 20  / Int32 (9)..   
f360: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
f370: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e  Int64,    // UIn
f380: 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20  t32 (10)..      
f390: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
f3a0: 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20  64,    // Int64 
f3b0: 28 31 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (11)..      Type
f3c0: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
f3d0: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32     // UInt64 (12
f3e0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
f3f0: 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20  inity.Double,   
f400: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a  // Single (13)..
f410: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
f420: 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20  ty.Double,   // 
f430: 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20 20 20  Double (14)..   
f440: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
f450: 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 65 63  Double,   // Dec
f460: 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20 20  imal (15)..     
f470: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 61   TypeAffinity.Da
f480: 74 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54  teTime, // DateT
f490: 69 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20  ime (16)..      
f4a0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c  TypeAffinity.Nul
f4b0: 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f 20 28 31 37  l,     // ?? (17
f4c0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
f4d0: 69 6e 69 74 79 2e 54 65 78 74 20 20 20 20 20 20  inity.Text      
f4e0: 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a  // String (18)..
f4f0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
f500: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f510: 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 6e 64 20   /// Builds and 
f520: 72 65 74 75 72 6e 73 20 61 20 6d 61 70 20 63 6f  returns a map co
f530: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74  ntaining the dat
f540: 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70  abase column typ
f550: 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 63 6f  es..    /// reco
f560: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 20 70  gnized by this p
f570: 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f  rovider...    //
f580: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f590: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
f5a0: 0a 20 20 20 20 2f 2f 2f 20 41 20 6d 61 70 20 63  .    /// A map c
f5b0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61  ontaining the da
f5c0: 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79  tabase column ty
f5d0: 70 65 73 20 72 65 63 6f 67 6e 69 7a 65 64 20 62  pes recognized b
f5e0: 79 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20  y this..    /// 
f5f0: 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f  provider...    /
f600: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
f610: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
f620: 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  c SQLiteDbTypeMa
f630: 70 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70  p GetSQLiteDbTyp
f640: 65 4d 61 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  eMap()..    {.. 
f650: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
f660: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f670: 70 28 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79  p(new SQLiteDbTy
f680: 70 65 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d 0a 20  peMapping[] {.. 
f690: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f6a0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f6b0: 6e 67 28 22 42 49 47 49 4e 54 22 2c 20 44 62 54  ng("BIGINT", DbT
f6c0: 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65  ype.Int64, false
f6d0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f6e0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f6f0: 4d 61 70 70 69 6e 67 28 22 42 49 47 55 49 4e 54  Mapping("BIGUINT
f700: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34  ", DbType.UInt64
f710: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f720: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f730: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f740: 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65 2e  BINARY", DbType.
f750: 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
f760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f770: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f780: 70 69 6e 67 28 22 42 49 54 22 2c 20 44 62 54 79  ping("BIT", DbTy
f790: 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72 75 65  pe.Boolean, true
f7a0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f7b0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f7c0: 4d 61 70 70 69 6e 67 28 22 42 4c 4f 42 22 2c 20  Mapping("BLOB", 
f7d0: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 74  DbType.Binary, t
f7e0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
f7f0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f800: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c  ypeMapping("BOOL
f810: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
f820: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
f830: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f840: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f850: 22 42 4f 4f 4c 45 41 4e 22 2c 20 44 62 54 79 70  "BOOLEAN", DbTyp
f860: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65  e.Boolean, false
f870: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f880: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f890: 4d 61 70 70 69 6e 67 28 22 43 48 41 52 22 2c 20  Mapping("CHAR", 
f8a0: 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
f8b0: 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20 74 72  gFixedLength, tr
f8c0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
f8d0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f8e0: 70 65 4d 61 70 70 69 6e 67 28 22 43 4c 4f 42 22  peMapping("CLOB"
f8f0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f900: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f910: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f920: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43  DbTypeMapping("C
f930: 4f 55 4e 54 45 52 22 2c 20 44 62 54 79 70 65 2e  OUNTER", DbType.
f940: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
f950: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f960: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f970: 69 6e 67 28 22 43 55 52 52 45 4e 43 59 22 2c 20  ing("CURRENCY", 
f980: 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20  DbType.Decimal, 
f990: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
f9a0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f9b0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41  bTypeMapping("DA
f9c0: 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  TE", DbType.Date
f9d0: 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Time, false),.. 
f9e0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f9f0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fa00: 6e 67 28 22 44 41 54 45 54 49 4d 45 22 2c 20 44  ng("DATETIME", D
fa10: 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20  bType.DateTime, 
fa20: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
fa30: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
fa40: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 45 43  TypeMapping("DEC
fa50: 49 4d 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 65  IMAL", DbType.De
fa60: 63 69 6d 61 6c 2c 20 74 72 75 65 29 2c 0d 0a 20  cimal, true),.. 
fa70: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fa80: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fa90: 6e 67 28 22 44 45 43 49 4d 41 4c 54 45 58 54 22  ng("DECIMALTEXT"
faa0: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
fab0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fac0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fad0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fae0: 44 4f 55 42 4c 45 22 2c 20 44 62 54 79 70 65 2e  DOUBLE", DbType.
faf0: 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d  Double, false),.
fb00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fb10: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fb20: 70 69 6e 67 28 22 46 4c 4f 41 54 22 2c 20 44 62  ping("FLOAT", Db
fb30: 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c  Type.Double, fal
fb40: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fb50: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fb60: 70 65 4d 61 70 70 69 6e 67 28 22 47 45 4e 45 52  peMapping("GENER
fb70: 41 4c 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  AL", DbType.Bina
fb80: 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
fb90: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
fba0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
fbb0: 28 22 47 55 49 44 22 2c 20 44 62 54 79 70 65 2e  ("GUID", DbType.
fbc0: 47 75 69 64 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Guid, false),.. 
fbd0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fbe0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fbf0: 6e 67 28 22 49 44 45 4e 54 49 54 59 22 2c 20 44  ng("IDENTITY", D
fc00: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
fc10: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fc20: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fc30: 70 65 4d 61 70 70 69 6e 67 28 22 49 4d 41 47 45  peMapping("IMAGE
fc40: 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
fc50: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fc60: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fc70: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fc80: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  INT", DbType.Int
fc90: 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  32, true),..    
fca0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fcb0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fcc0: 22 49 4e 54 38 22 2c 20 44 62 54 79 70 65 2e 53  "INT8", DbType.S
fcd0: 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Byte, false),.. 
fce0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fcf0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fd00: 6e 67 28 22 49 4e 54 31 36 22 2c 20 44 62 54 79  ng("INT16", DbTy
fd10: 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65 29  pe.Int16, false)
fd20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
fd30: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
fd40: 61 70 70 69 6e 67 28 22 49 4e 54 33 32 22 2c 20  apping("INT32", 
fd50: 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61  DbType.Int32, fa
fd60: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
fd70: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fd80: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 36  ypeMapping("INT6
fd90: 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  4", DbType.Int64
fda0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fdb0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fdc0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fdd0: 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70 65  INTEGER", DbType
fde0: 2e 49 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a  .Int64, true),..
fdf0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fe00: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fe10: 69 6e 67 28 22 49 4e 54 45 47 45 52 38 22 2c 20  ing("INTEGER8", 
fe20: 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 66 61  DbType.SByte, fa
fe30: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
fe40: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fe50: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
fe60: 47 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e 49  GER16", DbType.I
fe70: 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt16, false),.. 
fe80: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fe90: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fea0: 6e 67 28 22 49 4e 54 45 47 45 52 33 32 22 2c 20  ng("INTEGER32", 
feb0: 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61  DbType.Int32, fa
fec0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
fed0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fee0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
fef0: 47 45 52 36 34 22 2c 20 44 62 54 79 70 65 2e 49  GER64", DbType.I
ff00: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
ff10: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ff20: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ff30: 6e 67 28 22 4c 4f 47 49 43 41 4c 22 2c 20 44 62  ng("LOGICAL", Db
ff40: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61  Type.Boolean, fa
ff50: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ff60: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ff70: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47  ypeMapping("LONG
ff80: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
ff90: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ffa0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ffb0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
ffc0: 4f 4e 47 43 48 41 52 22 2c 20 44 62 54 79 70 65  ONGCHAR", DbType
ffd0: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
ffe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
fff0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10000 70 70 69 6e 67 28 22 4c 4f 4e 47 54 45 58 54 22  pping("LONGTEXT"
10010 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
10020 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
10030 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10040 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
10050 4f 4e 47 56 41 52 43 48 41 52 22 2c 20 44 62 54  ONGVARCHAR", DbT
10060 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
10070 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10080 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10090 65 4d 61 70 70 69 6e 67 28 22 4d 45 4d 4f 22 2c  eMapping("MEMO",
100a0 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
100b0 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
100c0 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
100d0 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4d 4f  bTypeMapping("MO
100e0 4e 45 59 22 2c 20 44 62 54 79 70 65 2e 44 65 63  NEY", DbType.Dec
100f0 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  imal, false),.. 
10100 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
10110 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10120 6e 67 28 22 4e 43 48 41 52 22 2c 20 44 62 54 79  ng("NCHAR", DbTy
10130 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c 65  pe.StringFixedLe
10140 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20  ngth, true),..  
10150 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10160 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10170 67 28 22 4e 4f 54 45 22 2c 20 44 62 54 79 70 65  g("NOTE", DbType
10180 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
10190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
101a0 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
101b0 70 70 69 6e 67 28 22 4e 54 45 58 54 22 2c 20 44  pping("NTEXT", D
101c0 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
101d0 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
101e0 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
101f0 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 42  ypeMapping("NUMB
10200 45 52 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  ER", DbType.Deci
10210 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  mal, false),..  
10220 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10230 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10240 67 28 22 4e 55 4d 45 52 49 43 22 2c 20 44 62 54  g("NUMERIC", DbT
10250 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c  ype.Decimal, fal
10260 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10270 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10280 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 45 52  peMapping("NUMER
10290 49 43 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e  ICTEXT", DbType.
102a0 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c  Decimal, false),
102b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
102c0 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
102d0 70 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22  pping("NVARCHAR"
102e0 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
102f0 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
10300 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10310 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c  bTypeMapping("OL
10320 45 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65  EOBJECT", DbType
10330 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
10340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10350 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10360 70 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54  pping("RAW", DbT
10370 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
10380 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10390 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
103a0 65 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c  eMapping("REAL",
103b0 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20   DbType.Double, 
103c0 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
103d0 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
103e0 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e  TypeMapping("SIN
103f0 47 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e  GLE", DbType.Sin
10400 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gle, true),..   
10410 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10420 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10430 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62  ("SMALLDATE", Db
10440 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66  Type.DateTime, f
10450 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10460 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10470 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
10480 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  LLINT", DbType.I
10490 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt16, true),..  
104a0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
104b0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
104c0 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44  g("SMALLUINT", D
104d0 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72  bType.UInt16, tr
104e0 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
104f0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10500 70 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e  peMapping("STRIN
10510 47 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  G", DbType.Strin
10520 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
10530 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10540 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10550 22 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53  "TEXT", DbType.S
10560 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
10570 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10580 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10590 69 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79  ing("TIME", DbTy
105a0 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
105b0 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
105c0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
105d0 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53  peMapping("TIMES
105e0 54 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61  TAMP", DbType.Da
105f0 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
10600 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10610 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10620 70 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20  ping("TINYINT", 
10630 44 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75  DbType.Byte, tru
10640 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10650 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10660 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49  eMapping("TINYSI
10670 4e 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  NT", DbType.SByt
10680 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
10690 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
106a0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
106b0 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49  UINT", DbType.UI
106c0 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
106d0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
106e0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
106f0 67 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70  g("UINT8", DbTyp
10700 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
10710 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10720 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10730 70 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44  ping("UINT16", D
10740 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61  bType.UInt16, fa
10750 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10760 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10770 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
10780 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  32", DbType.UInt
10790 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
107a0 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
107b0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
107c0 28 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70  ("UINT64", DbTyp
107d0 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
107e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
107f0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10800 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20  apping("ULONG", 
10810 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66  DbType.UInt64, f
10820 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10830 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10840 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49  TypeMapping("UNI
10850 51 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20  QUEIDENTIFIER", 
10860 44 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75  DbType.Guid, tru
10870 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10880 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10890 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
108a0 45 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  EDINTEGER", DbTy
108b0 70 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29  pe.UInt64, true)
108c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
108d0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
108e0 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
108f0 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
10900 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
10910 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10920 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10930 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
10940 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
10950 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  .UInt16, false),
10960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10970 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10980 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
10990 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
109a0 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  e.UInt32, false)
109b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
109c0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
109d0 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
109e0 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79  INTEGER64", DbTy
109f0 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65  pe.UInt64, false
10a00 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
10a10 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
10a20 4d 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41  Mapping("VARBINA
10a30 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  RY", DbType.Bina
10a40 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
10a50 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10a60 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10a70 28 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  ("VARCHAR", DbTy
10a80 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74  pe.AnsiString, t
10a90 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
10aa0 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10ab0 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43  ypeMapping("VARC
10ac0 48 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e  HAR2", DbType.An
10ad0 73 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  siString, false)
10ae0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10af0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10b00 61 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20  apping("YESNO", 
10b10 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
10b20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20  false)..        
10b30 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  });..    }....  
10b40 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10b50 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
10b60 6e 65 73 20 69 66 20 61 20 64 61 74 61 62 61 73  nes if a databas
10b70 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
10b80 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
10b90 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
10ba0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10bb0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
10bc0 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ype">..    /// T
10bd0 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65  he database type
10be0 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20   to check...    
10bf0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
10c00 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
10c10 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
10c20 6f 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73  o if the databas
10c30 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
10c40 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
10c50 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20 20 20 2f  ing, zero..    /
10c60 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  // otherwise... 
10c70 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
10c80 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
10c90 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 74  static bool IsSt
10ca0 72 69 6e 67 44 62 54 79 70 65 28 0d 0a 20 20 20  ringDbType(..   
10cb0 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
10cc0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
10cd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
10ce0 63 68 20 28 74 79 70 65 29 0d 0a 20 20 20 20 20  ch (type)..     
10cf0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10d00 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e    case DbType.An
10d10 73 69 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20  siString:..     
10d20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79         case DbTy
10d30 70 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20  pe.String:..    
10d40 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10d50 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69  ype.AnsiStringFi
10d60 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20  xedLength:..    
10d70 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
10d80 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c  ype.StringFixedL
10d90 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20  ength:..        
10da0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
10db0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
10dc0 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
10dd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
10de0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
10df0 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
10e00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10e10 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
10e20 69 6e 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ines and returns
10e30 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
10e40 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
10e50 6e 67 20 73 74 72 69 6e 67 20 74 68 61 74 0d 0a  ng string that..
10e60 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62      /// should b
10e70 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20  e used in place 
10e80 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
10e90 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2e 0d 0a   object value...
10ea0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10eb0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
10ec0 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
10ed0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62  ..    /// The ob
10ee0 6a 65 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f  ject value to co
10ef0 6e 76 65 72 74 20 74 6f 20 61 20 73 74 72 69 6e  nvert to a strin
10f00 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  g...    /// </pa
10f10 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
10f20 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
10f30 20 45 69 74 68 65 72 20 74 68 65 20 73 74 72 69   Either the stri
10f40 6e 67 20 74 6f 20 75 73 65 20 69 6e 20 70 6c 61  ng to use in pla
10f50 63 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74  ce of the object
10f60 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c   value -OR- null
10f70 20 69 66 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20   if it..    /// 
10f80 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
10f90 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ined...    /// <
10fa0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
10fb0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
10fc0 72 69 6e 67 20 53 65 74 74 69 6e 67 56 61 6c 75  ring SettingValu
10fd0 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  eToString(..    
10fe0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
10ff0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
11000 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
11010 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29  value is string)
11020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
11030 74 75 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c  turn (string)val
11040 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
11050 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
11060 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
11070 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74  eturn value.ToSt
11080 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ring();....     
11090 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
110a0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
110b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
110c0 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
110d0 74 68 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65  the default <see
110e0 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
110f0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 75 73  > value to be us
11100 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
11110 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
11120 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
11130 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
11140 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11150 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
11160 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
11170 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
11180 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
11190 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e   for type mappin
111a0 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  gs, if any...   
111b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
111c0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
111d0 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
111e0 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d  fault <see cref=
111f0 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
11200 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f  e to use...    /
11210 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
11220 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
11230 63 20 44 62 54 79 70 65 20 47 65 74 44 65 66 61  c DbType GetDefa
11240 75 6c 74 44 62 54 79 70 65 28 0d 0a 20 20 20 20  ultDbType(..    
11250 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
11260 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  tion connection.
11270 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11280 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  {..        SQLit
11290 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
112a0 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e 6e 65 63   flags = (connec
112b0 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  tion != null) ?.
112c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
112d0 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 20 3a 20  nection.Flags : 
112e0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
112f0 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20  Flags.None;.... 
11300 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
11310 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
11320 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76  tionFlags.NoConv
11330 65 72 74 53 65 74 74 69 6e 67 73 29 0d 0a 20 20  ertSettings)..  
11340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 3d                ==
11350 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
11360 6e 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74  nFlags.NoConvert
11370 53 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20  Settings)..     
11380 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11390 20 20 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63    return Fallbac
113a0 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  kDefaultDbType;.
113b0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
113c0 20 20 20 20 20 20 62 6f 6f 6c 20 66 6f 75 6e 64        bool found
113d0 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   = false;..     
113e0 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d     string name =
113f0 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76   "Use_SQLiteConv
11400 65 72 74 5f 44 65 66 61 75 6c 74 44 62 54 79 70  ert_DefaultDbTyp
11410 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  e";..        obj
11420 65 63 74 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c  ect value = null
11430 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ;..        strin
11440 67 20 40 64 65 66 61 75 6c 74 20 3d 20 6e 75 6c  g @default = nul
11450 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  l;....        if
11460 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d 3d   ((connection ==
11470 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20 20 20 20   null) ||..     
11480 20 20 20 20 20 20 20 21 63 6f 6e 6e 65 63 74 69         !connecti
11490 6f 6e 2e 54 72 79 47 65 74 43 61 63 68 65 64 53  on.TryGetCachedS
114a0 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 40 64 65  etting(name, @de
114b0 66 61 75 6c 74 2c 20 6f 75 74 20 76 61 6c 75 65  fault, out value
114c0 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
114d0 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
114e0 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
114f0 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69 6e  ethods.GetSettin
11500 67 56 61 6c 75 65 28 6e 61 6d 65 2c 20 40 64 65  gValue(name, @de
11510 66 61 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  fault);....     
11520 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
11530 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
11540 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
11550 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75   = FallbackDefau
11560 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20  ltDbType;..     
11570 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c     }..        el
11580 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  se..        {.. 
11590 20 20 20 20 20 20 20 20 20 20 20 66 6f 75 6e 64             found
115a0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
115b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74    }....        t
115c0 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
115d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
115e0 28 76 61 6c 75 65 20 69 73 20 44 62 54 79 70 65  (value is DbType
115f0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11600 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11610 20 20 20 76 61 6c 75 65 20 3d 20 53 51 4c 69 74     value = SQLit
11620 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 50  eConnection.TryP
11630 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20  arseEnum(..     
11640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
11650 79 70 65 6f 66 28 44 62 54 79 70 65 29 2c 20 53  ypeof(DbType), S
11660 65 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72  ettingValueToStr
11670 69 6e 67 28 76 61 6c 75 65 29 2c 20 74 72 75 65  ing(value), true
11680 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11690 20 20 20 20 20 20 69 66 20 28 21 28 76 61 6c 75        if (!(valu
116a0 65 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20  e is DbType)).. 
116b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116c0 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c 62     value = Fallb
116d0 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65  ackDefaultDbType
116e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
116f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11700 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29 76  return (DbType)v
11710 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alue;..        }
11720 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
11730 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
11740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 66            if (!f
11750 6f 75 6e 64 20 26 26 20 28 63 6f 6e 6e 65 63 74  ound && (connect
11760 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ion != null)).. 
11770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
11780 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 43 61 63  onnection.SetCac
11790 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c  hedSetting(name,
117a0 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
117b0 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
117c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
117d0 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
117e0 73 20 74 68 65 20 6f 62 6a 65 63 74 20 76 61 6c  s the object val
117f0 75 65 2c 20 77 68 69 63 68 20 69 73 20 61 73 73  ue, which is ass
11800 75 6d 65 64 20 74 6f 20 68 61 76 65 20 6f 72 69  umed to have ori
11810 67 69 6e 61 74 65 64 0d 0a 20 20 20 20 2f 2f 2f  ginated..    ///
11820 20 66 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65   from a <see cre
11830 66 3d 22 44 61 74 61 52 6f 77 22 20 2f 3e 2c 20  f="DataRow" />, 
11840 74 6f 20 61 20 73 74 72 69 6e 67 20 76 61 6c 75  to a string valu
11850 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
11860 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
11870 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
11880 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
11890 65 20 76 61 6c 75 65 20 74 6f 20 62 65 20 63 6f  e value to be co
118a0 6e 76 65 72 74 65 64 20 74 6f 20 61 20 73 74 72  nverted to a str
118b0 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
118c0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
118d0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
118e0 2f 2f 20 41 20 6e 75 6c 6c 20 76 61 6c 75 65 20  // A null value 
118f0 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64  will be returned
11900 20 69 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c   if the original
11910 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c 20 2d   value is null -
11920 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65  OR-..    /// the
11930 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20   original value 
11940 69 73 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42  is <see cref="DB
11950 4e 75 6c 6c 2e 56 61 6c 75 65 22 20 2f 3e 2e 20  Null.Value" />. 
11960 20 4f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 20   Otherwise,..   
11970 20 2f 2f 2f 20 74 68 65 20 6f 72 69 67 69 6e 61   /// the origina
11980 6c 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  l value will be 
11990 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 73  converted to a s
119a0 74 72 69 6e 67 2c 20 75 73 69 6e 67 20 69 74 73  tring, using its
119b0 0d 0a 20 20 20 20 2f 2f 2f 20 28 70 6f 73 73 69  ..    /// (possi
119c0 62 6c 79 20 6f 76 65 72 72 69 64 64 65 6e 29 20  bly overridden) 
119d0 3c 73 65 65 20 63 72 65 66 3d 22 4f 62 6a 65 63  <see cref="Objec
119e0 74 2e 54 6f 53 74 72 69 6e 67 22 20 2f 3e 20 6d  t.ToString" /> m
119f0 65 74 68 6f 64 20 61 6e 64 0d 0a 20 20 20 20 2f  ethod and..    /
11a00 2f 2f 20 74 68 65 6e 20 72 65 74 75 72 6e 65 64  // then returned
11a10 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
11a20 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
11a30 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
11a40 47 65 74 53 74 72 69 6e 67 4f 72 4e 75 6c 6c 28  GetStringOrNull(
11a50 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
11a60 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
11a70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
11a80 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
11a90 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
11aa0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
11ab0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61  ..        if (va
11ac0 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29 0d 0a  lue is string)..
11ad0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
11ae0 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c 75 65  rn (string)value
11af0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
11b00 28 76 61 6c 75 65 20 3d 3d 20 44 42 4e 75 6c 6c  (value == DBNull
11b10 2e 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20  .Value)..       
11b20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
11b30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ;....        ret
11b40 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  urn value.ToStri
11b50 6e 67 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ng();..    }....
11b60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11b70 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
11b80 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65  mines if the spe
11b90 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76  cified textual v
11ba0 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20  alue appears to 
11bb0 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  be a..    /// <s
11bc0 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22  ee cref="DBNull"
11bd0 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
11be0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11bf0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
11c00 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20  ame="text">..   
11c10 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c   /// The textual
11c20 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63   value to inspec
11c30 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
11c40 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
11c50 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
11c60 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
11c70 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65   text looks like
11c80 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 42   a <see cref="DB
11c90 4e 75 6c 6c 22 20 2f 3e 20 76 61 6c 75 65 2c 0d  Null" /> value,.
11ca0 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74  .    /// zero ot
11cb0 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f  herwise...    //
11cc0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
11cd0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
11ce0 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65  c bool LooksLike
11cf0 4e 75 6c 6c 28 0d 0a 20 20 20 20 20 20 20 20 73  Null(..        s
11d00 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20  tring text..    
11d10 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
11d20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 74 65        return (te
11d30 78 74 20 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20  xt == null);..  
11d40 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
11d50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
11d60 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
11d70 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74 65  the specified te
11d80 78 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65  xtual value appe
11d90 61 72 73 20 74 6f 20 62 65 20 61 6e 0d 0a 20 20  ars to be an..  
11da0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11db0 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
11dc0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
11dd0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
11de0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74  param name="text
11df0 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
11e00 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f  textual value to
11e10 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f   inspect...    /
11e20 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
11e30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
11e40 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
11e50 20 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f   if the text loo
11e60 6b 73 20 6c 69 6b 65 20 61 6e 20 3c 73 65 65 20  ks like an <see 
11e70 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
11e80 76 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20  value,..    /// 
11e90 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
11ea0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
11eb0 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
11ec0 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f  l static bool Lo
11ed0 6f 6b 73 4c 69 6b 65 49 6e 74 36 34 28 0d 0a 20  oksLikeInt64(.. 
11ee0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65         string te
11ef0 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  xt..        ).. 
11f00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f     {..        lo
11f10 6e 67 20 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a 0d  ng longValue;...
11f20 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
11f30 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
11f40 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6c 6f  .        if (!lo
11f50 6e 67 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20  ng.TryParse(..  
11f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65                te
11f70 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73  xt, NumberStyles
11f80 2e 49 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72  .Integer, Cultur
11f90 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
11fa0 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
11fb0 20 20 20 20 20 20 20 20 20 6f 75 74 20 6c 6f 6e           out lon
11fc0 67 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  gValue))..      
11fd0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11fe0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
11ff0 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
12000 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
12010 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12020 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 20        longValue 
12030 3d 20 6c 6f 6e 67 2e 50 61 72 73 65 28 0d 0a 20  = long.Parse(.. 
12040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
12050 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65  ext, NumberStyle
12060 73 2e 49 6e 74 65 67 65 72 2c 20 43 75 6c 74 75  s.Integer, Cultu
12070 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
12080 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
12090 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61     }..        ca
120a0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  tch..        {..
120b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
120c0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
120d0 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
120e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
120f0 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20  tring.Equals(.. 
12100 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 56             longV
12110 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75  alue.ToString(Cu
12120 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
12130 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78  antCulture), tex
12140 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
12150 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
12160 2e 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20  .Ordinal);..    
12170 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
12180 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
12190 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68  Determines if th
121a0 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74  e specified text
121b0 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72  ual value appear
121c0 73 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f  s to be a..    /
121d0 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f  // <see cref="Do
121e0 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  uble" /> value..
121f0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
12200 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
12210 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e  ram name="text">
12220 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
12230 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69  xtual value to i
12240 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  nspect...    ///
12250 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
12260 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
12270 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
12280 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73  f the text looks
12290 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65   like a <see cre
122a0 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61  f="Double" /> va
122b0 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65  lue,..    /// ze
122c0 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
122d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
122e0 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
122f0 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b  static bool Look
12300 73 4c 69 6b 65 44 6f 75 62 6c 65 28 0d 0a 20 20  sLikeDouble(..  
12310 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78        string tex
12320 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  t..        )..  
12330 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 64 6f 75    {..        dou
12340 62 6c 65 20 64 6f 75 62 6c 65 56 61 6c 75 65 3b  ble doubleValue;
12350 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52  ....#if !PLATFOR
12360 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
12370 52 4b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  RK..        if (
12380 21 64 6f 75 62 6c 65 2e 54 72 79 50 61 72 73 65  !double.TryParse
12390 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
123a0 20 20 20 74 65 78 74 2c 20 4e 75 6d 62 65 72 53     text, NumberS
123b0 74 79 6c 65 73 2e 46 6c 6f 61 74 20 7c 20 4e 75  tyles.Float | Nu
123c0 6d 62 65 72 53 74 79 6c 65 73 2e 41 6c 6c 6f 77  mberStyles.Allow
123d0 54 68 6f 75 73 61 6e 64 73 2c 0d 0a 20 20 20 20  Thousands,..    
123e0 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
123f0 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
12400 74 43 75 6c 74 75 72 65 2c 20 6f 75 74 20 64 6f  tCulture, out do
12410 75 62 6c 65 56 61 6c 75 65 29 29 0d 0a 20 20 20  ubleValue))..   
12420 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12430 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
12440 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
12450 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74 72 79  lse..        try
12460 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
12470 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56           doubleV
12480 61 6c 75 65 20 3d 20 64 6f 75 62 6c 65 2e 50 61  alue = double.Pa
12490 72 73 65 28 74 65 78 74 2c 20 43 75 6c 74 75 72  rse(text, Cultur
124a0 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
124b0 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
124c0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
124d0 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
124e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
124f0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
12500 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
12510 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
12520 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20  ring.Equals(..  
12530 20 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65            double
12540 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 43  Value.ToString(C
12550 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
12560 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 74 65  iantCulture), te
12570 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt,..           
12580 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
12590 6e 2e 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20  n.Ordinal);..   
125a0 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
125b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
125c0 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74   Determines if t
125d0 68 65 20 73 70 65 63 69 66 69 65 64 20 74 65 78  he specified tex
125e0 74 75 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61  tual value appea
125f0 72 73 20 74 6f 20 62 65 20 61 0d 0a 20 20 20 20  rs to be a..    
12600 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44  /// <see cref="D
12610 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75  ateTime" /> valu
12620 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
12630 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
12640 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
12650 76 65 72 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  vert">..    /// 
12660 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
12670 51 4c 69 74 65 43 6f 6e 76 65 72 74 22 20 2f 3e  QLiteConvert" />
12680 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
12690 20 63 6f 6e 66 69 67 75 72 65 64 20 77 69 74 68   configured with
126a0 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 63 68  ..    /// the ch
126b0 6f 73 65 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  osen <see cref="
126c0 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 66 6f 72  DateTime" /> for
126d0 6d 61 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  mat...    /// </
126e0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
126f0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78  <param name="tex
12700 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
12710 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 74   textual value t
12720 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20  o inspect...    
12730 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
12740 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
12750 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
12760 6f 20 69 66 20 74 68 65 20 74 65 78 74 20 6c 6f  o if the text lo
12770 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73 65 65 20  oks like a <see 
12780 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
12790 2f 3e 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f  /> in the..    /
127a0 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f  // configured fo
127b0 72 6d 61 74 2c 20 7a 65 72 6f 20 6f 74 68 65 72  rmat, zero other
127c0 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  wise...    /// <
127d0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
127e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62  nternal static b
127f0 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61 74  ool LooksLikeDat
12800 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eTime(..        
12810 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 20 63 6f  SQLiteConvert co
12820 6e 76 65 72 74 2c 0d 0a 20 20 20 20 20 20 20 20  nvert,..        
12830 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20  string text..   
12840 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
12850 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 76 65         if (conve
12860 72 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  rt == null)..   
12870 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12880 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
12890 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 7b    try..        {
128a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 61  ..            Da
128b0 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 56  teTime dateTimeV
128c0 61 6c 75 65 20 3d 20 63 6f 6e 76 65 72 74 2e 54  alue = convert.T
128d0 6f 44 61 74 65 54 69 6d 65 28 74 65 78 74 29 3b  oDateTime(text);
128e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
128f0 69 66 20 28 53 74 72 69 6e 67 2e 45 71 75 61 6c  if (String.Equal
12900 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
12910 20 20 20 20 20 20 20 20 63 6f 6e 76 65 72 74 2e          convert.
12920 54 6f 53 74 72 69 6e 67 28 64 61 74 65 54 69 6d  ToString(dateTim
12930 65 56 61 6c 75 65 29 2c 0d 0a 20 20 20 20 20 20  eValue),..      
12940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65                te
12950 78 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  xt, StringCompar
12960 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a  ison.Ordinal))..
12970 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12990 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
129a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
129b0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63      }..        c
129c0 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d  atch..        {.
129d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
129e0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
129f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12a00 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
12a10 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
12a20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12a30 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e   /// For a given
12a40 20 74 65 78 74 75 61 6c 20 64 61 74 61 62 61 73   textual databas
12a50 65 20 74 79 70 65 20 6e 61 6d 65 2c 20 72 65 74  e type name, ret
12a60 75 72 6e 20 74 68 65 20 22 63 6c 6f 73 65 73 74  urn the "closest
12a70 2d 6d 61 74 63 68 22 20 64 61 74 61 62 61 73 65  -match" database
12a80 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
12a90 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
12aa0 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 71 75 65  alled during que
12ab0 72 79 20 72 65 73 75 6c 74 20 70 72 6f 63 65 73  ry result proces
12ac0 73 69 6e 67 3b 20 74 68 65 72 65 66 6f 72 65 2c  sing; therefore,
12ad0 20 69 74 73 20 70 65 72 66 6f 72 6d 61 6e 63 65   its performance
12ae0 0d 0a 20 20 20 20 2f 2f 2f 20 69 73 20 63 72 69  ..    /// is cri
12af0 74 69 63 61 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tical...    /// 
12b00 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
12b10 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
12b20 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65  "connection">The
12b30 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
12b40 65 78 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74  ext for custom t
12b50 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66  ype mappings, if
12b60 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20   any.</param>.. 
12b70 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
12b80 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e 54 68  me="typeName">Th
12b90 65 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f  e textual name o
12ba0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  f the database t
12bb0 79 70 65 20 74 6f 20 6d 61 74 63 68 2e 3c 2f 70  ype to match.</p
12bc0 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
12bd0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
12be0 73 22 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73  s">The flags ass
12bf0 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
12c00 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
12c10 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61  on object.</para
12c20 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
12c30 75 72 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44 42  urns>The .NET DB
12c40 54 79 70 65 20 74 68 65 20 74 65 78 74 20 65 76  Type the text ev
12c50 61 6c 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74  aluates to.</ret
12c60 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
12c70 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70  nal static DbTyp
12c80 65 20 54 79 70 65 4e 61 6d 65 54 6f 44 62 54 79  e TypeNameToDbTy
12c90 70 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  pe(..        SQL
12ca0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
12cb0 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  nnection,..     
12cc0 20 20 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61     string typeNa
12cd0 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  me,..        SQL
12ce0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
12cf0 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
12d00 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
12d10 20 20 20 20 44 62 54 79 70 65 3f 20 64 65 66 61      DbType? defa
12d20 75 6c 74 44 62 54 79 70 65 20 3d 20 6e 75 6c 6c  ultDbType = null
12d30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
12d40 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e  (connection != n
12d50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ull)..        {.
12d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6c 61  .            fla
12d70 67 73 20 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  gs |= connection
12d80 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20  .Flags;....     
12d90 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
12da0 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
12db0 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e  tionFlags.UseCon
12dc0 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d  nectionTypes) ==
12dd0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
12de0 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63  nFlags.UseConnec
12df0 74 69 6f 6e 54 79 70 65 73 29 0d 0a 20 20 20 20  tionTypes)..    
12e00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12e10 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
12e20 65 44 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65  eDbTypeMap conne
12e30 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d  ctionTypeNames =
12e40 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70   connection._typ
12e50 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20  eNames;....     
12e60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
12e70 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
12e80 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
12e90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12eb0 20 20 20 20 69 66 20 28 74 79 70 65 4e 61 6d 65      if (typeName
12ec0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
12ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12ef0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
12f00 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61  DbTypeMapping va
12f10 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
12f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f30 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79  if (connectionTy
12f40 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61  peNames.TryGetVa
12f50 6c 75 65 28 74 79 70 65 4e 61 6d 65 2c 20 6f 75  lue(typeName, ou
12f60 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fa0 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64    return value.d
12fb0 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
12fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fd0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
12fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
12ff0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
13000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13020 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
13030 64 65 78 20 3d 20 74 79 70 65 4e 61 6d 65 2e 49  dex = typeName.I
13040 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a  ndexOf('(');....
13050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13060 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
13070 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a  (index > 0) &&..
13080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
130a0 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61  connectionTypeNa
130b0 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
130c0 74 79 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69  typeName.Substri
130d0 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69  ng(0, index).Tri
130e0 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75  mEnd(), out valu
130f0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
13100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13110 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13130 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
13140 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20  .dataType;..    
13150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13160 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13180 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13190 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
131a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
131b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
131c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
131d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
131e0 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65  NOTE: Use the de
131f0 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74  fault database t
13200 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ype for the conn
13210 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  ection...       
13220 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
13230 20 20 20 20 20 64 65 66 61 75 6c 74 44 62 54 79       defaultDbTy
13240 70 65 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  pe = connection.
13250 44 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  DefaultDbType;..
13260 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13270 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
13280 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
13290 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c  onFlags.NoGlobal
132a0 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65  Types) == SQLite
132b0 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
132c0 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a  NoGlobalTypes)..
132d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
132e0 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61 75         if (defau
132f0 6c 74 44 62 54 79 70 65 20 21 3d 20 6e 75 6c 6c  ltDbType != null
13300 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13310 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70     return (DbTyp
13320 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b  e)defaultDbType;
13330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13340 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  defaultDbType = 
13350 47 65 74 44 65 66 61 75 6c 74 44 62 54 79 70 65  GetDefaultDbType
13360 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d  (connection);...
13370 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
13380 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41  T_20 && TRACE_WA
13390 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20  RNING..         
133a0 20 20 20 44 65 66 61 75 6c 74 44 62 54 79 70 65     DefaultDbType
133b0 57 61 72 6e 69 6e 67 28 74 79 70 65 4e 61 6d 65  Warning(typeName
133c0 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74  , flags, default
133d0 44 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64 69 66  DbType);..#endif
133e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
133f0 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29 64  return (DbType)d
13400 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20  efaultDbType;.. 
13410 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13420 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
13430 20 20 20 69 66 20 28 28 5f 74 79 70 65 4e 61 6d     if ((_typeNam
13440 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 20 28  es != null) && (
13450 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c  typeName != null
13460 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
13470 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13480 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d     SQLiteDbTypeM
13490 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d  apping value;...
134a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
134b0 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e   if (_typeNames.
134c0 54 72 79 47 65 74 56 61 6c 75 65 28 74 79 70 65  TryGetValue(type
134d0 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65 29  Name, out value)
134e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
134f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13500 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13510 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b   value.dataType;
13520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13530 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
13540 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
13550 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13570 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 74 79    int index = ty
13580 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27  peName.IndexOf('
13590 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  (');....        
135a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
135b0 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a  (index > 0) &&..
135c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135d0 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d          _typeNam
135e0 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74  es.TryGetValue(t
135f0 79 70 65 4e 61 6d 65 2e 53 75 62 73 74 72 69 6e  ypeName.Substrin
13600 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d  g(0, index).Trim
13610 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75 65  End(), out value
13620 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
13630 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13650 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
13660 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  dataType;..     
13670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
13680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13690 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
136a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
136b0 0a 20 20 20 20 20 20 20 20 69 66 20 28 64 65 66  .        if (def
136c0 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20 6e 75  aultDbType != nu
136d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
136e0 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65 29   return (DbType)
136f0 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a  defaultDbType;..
13700 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 6c  ..        defaul
13710 74 44 62 54 79 70 65 20 3d 20 47 65 74 44 65 66  tDbType = GetDef
13720 61 75 6c 74 44 62 54 79 70 65 28 63 6f 6e 6e 65  aultDbType(conne
13730 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ction);....#if !
13740 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
13750 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
13760 0a 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74  .        Default
13770 44 62 54 79 70 65 57 61 72 6e 69 6e 67 28 74 79  DbTypeWarning(ty
13780 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c 20 64  peName, flags, d
13790 65 66 61 75 6c 74 44 62 54 79 70 65 29 3b 0d 0a  efaultDbType);..
137a0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
137b0 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65    return (DbType
137c0 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  )defaultDbType;.
137d0 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
137e0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 70 72  region....    pr
137f0 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
13800 64 6f 6e 6c 79 20 53 51 4c 69 74 65 44 62 54 79  donly SQLiteDbTy
13810 70 65 4d 61 70 20 5f 74 79 70 65 4e 61 6d 65 73  peMap _typeNames
13820 20 3d 20 47 65 74 53 51 4c 69 74 65 44 62 54 79   = GetSQLiteDbTy
13830 70 65 4d 61 70 28 29 3b 0d 0a 20 20 7d 0d 0a 0d  peMap();..  }...
13840 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
13850 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 68  ..  /// SQLite h
13860 61 73 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20  as very limited 
13870 74 79 70 65 73 2c 20 61 6e 64 20 69 73 20 69 6e  types, and is in
13880 68 65 72 65 6e 74 6c 79 20 74 65 78 74 2d 62 61  herently text-ba
13890 73 65 64 2e 20 20 54 68 65 20 66 69 72 73 74 20  sed.  The first 
138a0 35 20 74 79 70 65 73 20 62 65 6c 6f 77 20 72 65  5 types below re
138b0 70 72 65 73 65 6e 74 20 74 68 65 20 73 75 6d 20  present the sum 
138c0 6f 66 20 61 6c 6c 20 74 79 70 65 73 20 53 51 4c  of all types SQL
138d0 69 74 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64 65 72  ite..  /// under
138e0 73 74 61 6e 64 73 2e 20 20 54 68 65 20 44 61 74  stands.  The Dat
138f0 65 54 69 6d 65 20 65 78 74 65 6e 73 69 6f 6e 20  eTime extension 
13900 74 6f 20 74 68 65 20 73 70 65 63 20 69 73 20 66  to the spec is f
13910 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20  or internal use 
13920 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  only...  /// </s
13930 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
13940 63 20 65 6e 75 6d 20 54 79 70 65 41 66 66 69 6e  c enum TypeAffin
13950 69 74 79 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ity..  {..    //
13960 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13970 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 0d 0a 20   /// Not used.. 
13980 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13990 3e 0d 0a 20 20 20 20 55 6e 69 6e 69 74 69 61 6c  >..    Uninitial
139a0 69 7a 65 64 20 3d 20 30 2c 0d 0a 20 20 20 20 2f  ized = 0,..    /
139b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
139c0 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65 67 65    /// All intege
139d0 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66  rs in SQLite def
139e0 61 75 6c 74 20 74 6f 20 49 6e 74 36 34 0d 0a 20  ault to Int64.. 
139f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13a00 3e 0d 0a 20 20 20 20 49 6e 74 36 34 20 3d 20 31  >..    Int64 = 1
13a10 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
13a20 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c  ary>..    /// Al
13a30 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  l floating point
13a40 20 6e 75 6d 62 65 72 73 20 69 6e 20 53 51 4c 69   numbers in SQLi
13a50 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20 64 6f  te default to do
13a60 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  uble..    /// </
13a70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 6f  summary>..    Do
13a80 75 62 6c 65 20 3d 20 32 2c 0d 0a 20 20 20 20 2f  uble = 2,..    /
13a90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13aa0 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
13ab0 74 20 64 61 74 61 20 74 79 70 65 20 6f 66 20 53  t data type of S
13ac0 51 4c 69 74 65 20 69 73 20 74 65 78 74 0d 0a 20  QLite is text.. 
13ad0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13ae0 3e 0d 0a 20 20 20 20 54 65 78 74 20 3d 20 33 2c  >..    Text = 3,
13af0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
13b00 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 79 70  ry>..    /// Typ
13b10 69 63 61 6c 6c 79 20 62 6c 6f 62 20 74 79 70 65  ically blob type
13b20 73 20 61 72 65 20 6f 6e 6c 79 20 73 65 65 6e 20  s are only seen 
13b30 77 68 65 6e 20 72 65 74 75 72 6e 65 64 20 66 72  when returned fr
13b40 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 0d 0a 20  om a function.. 
13b50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13b60 3e 0d 0a 20 20 20 20 42 6c 6f 62 20 3d 20 34 2c  >..    Blob = 4,
13b70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
13b80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c  ry>..    /// Nul
13b90 6c 20 74 79 70 65 73 20 63 61 6e 20 62 65 20 72  l types can be r
13ba0 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66 75 6e  eturned from fun
13bb0 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20  ctions..    /// 
13bc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13bd0 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20 20 2f  Null = 5,..    /
13be0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13bf0 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
13c00 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72  nally by this pr
13c10 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20  ovider..    /// 
13c20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13c30 44 61 74 65 54 69 6d 65 20 3d 20 31 30 2c 0d 0a  DateTime = 10,..
13c40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13c50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20  >..    /// Used 
13c60 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68  internally by th
13c70 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20  is provider..   
13c80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13c90 0a 20 20 20 20 4e 6f 6e 65 20 3d 20 31 31 2c 0d  .    None = 11,.
13ca0 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
13cb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
13cc0 68 65 73 65 20 61 72 65 20 74 68 65 20 65 76 65  hese are the eve
13cd0 6e 74 20 74 79 70 65 73 20 61 73 73 6f 63 69 61  nt types associa
13ce0 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20  ted with the..  
13cf0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
13d00 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45  QLiteConnectionE
13d10 76 65 6e 74 48 61 6e 64 6c 65 72 22 20 2f 3e 0d  ventHandler" />.
13d20 0a 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20  .  /// delegate 
13d30 28 61 6e 64 20 69 74 73 20 63 6f 72 72 65 73 70  (and its corresp
13d40 6f 6e 64 69 6e 67 20 65 76 65 6e 74 29 20 61 6e  onding event) an
13d50 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  d the..  /// <se
13d60 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69  e cref="Connecti
13d70 6f 6e 45 76 65 6e 74 41 72 67 73 22 20 2f 3e 20  onEventArgs" /> 
13d80 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  class...  /// </
13d90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
13da0 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f  ic enum SQLiteCo
13db0 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79 70  nnectionEventTyp
13dc0 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
13dd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13de0 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e     /// Not used.
13df0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13e00 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e  mmary>..      In
13e10 76 61 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d 0a 20  valid = -1,.... 
13e20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13e30 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  y>..      /// No
13e40 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  t used...      /
13e50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13e60 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30       Unknown = 0
13e70 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13e80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13e90 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
13ea0 6f 6e 20 69 73 20 62 65 69 6e 67 20 6f 70 65 6e  on is being open
13eb0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13ec0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13ed0 20 4f 70 65 6e 69 6e 67 20 3d 20 31 2c 0d 0a 0d   Opening = 1,...
13ee0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13ef0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13f00 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  The connection s
13f10 74 72 69 6e 67 20 68 61 73 20 62 65 65 6e 20 70  tring has been p
13f20 61 72 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  arsed...      //
13f30 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13f40 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74      ConnectionSt
13f50 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20  ring = 2,....   
13f60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13f70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13f80 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f  connection was o
13f90 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  pened...      //
13fa0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13fb0 20 20 20 20 4f 70 65 6e 65 64 20 3d 20 33 2c 0d      Opened = 3,.
13fc0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13fd0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13fe0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
13ff0 22 43 68 61 6e 67 65 44 61 74 61 62 61 73 65 22  "ChangeDatabase"
14000 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 63   /> method was c
14010 61 6c 6c 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20  alled on the..  
14020 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69      /// connecti
14030 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
14040 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14050 20 43 68 61 6e 67 65 44 61 74 61 62 61 73 65 20   ChangeDatabase 
14060 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 4,....      //
14070 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14080 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63     /// A transac
14090 74 69 6f 6e 20 77 61 73 20 63 72 65 61 74 65 64  tion was created
140a0 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65   using the conne
140b0 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
140c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
140d0 20 20 20 20 4e 65 77 54 72 61 6e 73 61 63 74 69      NewTransacti
140e0 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20  on = 5,....     
140f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14100 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
14110 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 65 6e 6c  nnection was enl
14120 69 73 74 65 64 20 69 6e 74 6f 20 61 20 74 72 61  isted into a tra
14130 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  nsaction...     
14140 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14150 0a 20 20 20 20 20 20 45 6e 6c 69 73 74 54 72 61  .      EnlistTra
14160 6e 73 61 63 74 69 6f 6e 20 3d 20 36 2c 0d 0a 0d  nsaction = 6,...
14170 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
14180 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14190 41 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 63 72  A command was cr
141a0 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
141b0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
141c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
141d0 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 6f 6d 6d  >..      NewComm
141e0 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20  and = 7,....    
141f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14200 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74  .      /// A dat
14210 61 20 72 65 61 64 65 72 20 77 61 73 20 63 72 65  a reader was cre
14220 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 63  ated using the c
14230 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
14240 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14250 0d 0a 20 20 20 20 20 20 4e 65 77 44 61 74 61 52  ..      NewDataR
14260 65 61 64 65 72 20 3d 20 38 2c 0d 0a 0d 0a 20 20  eader = 8,....  
14270 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14280 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  >..      /// An 
14290 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 3c 73  instance of a <s
142a0 65 65 20 63 72 65 66 3d 22 43 72 69 74 69 63 61  ee cref="Critica
142b0 6c 48 61 6e 64 6c 65 22 20 2f 3e 20 64 65 72 69  lHandle" /> deri
142c0 76 65 64 20 63 6c 61 73 73 20 68 61 73 0d 0a 20  ved class has.. 
142d0 20 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20 63 72       /// been cr
142e0 65 61 74 65 64 20 74 6f 20 77 72 61 70 20 61 20  eated to wrap a 
142f0 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 2e  native resource.
14300 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
14310 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
14320 77 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20  wCriticalHandle 
14330 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 9,....      //
14340 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14350 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
14360 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 63  ction is being c
14370 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
14380 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14390 20 20 20 20 43 6c 6f 73 69 6e 67 20 3d 20 31 30      Closing = 10
143a0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
143b0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
143c0 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
143d0 6f 6e 20 77 61 73 20 63 6c 6f 73 65 64 2e 0d 0a  on was closed...
143e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
143f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73  ary>..      Clos
14400 65 64 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20  ed = 11,....    
14410 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14420 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d  .      /// A com
14430 6d 61 6e 64 20 69 73 20 62 65 69 6e 67 20 64 69  mand is being di
14440 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  sposed...      /
14450 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14460 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67 43 6f       DisposingCo
14470 6d 6d 61 6e 64 20 3d 20 31 32 2c 0d 0a 0d 0a 20  mmand = 12,.... 
14480 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14490 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
144a0 64 61 74 61 20 72 65 61 64 65 72 20 69 73 20 62  data reader is b
144b0 65 69 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a  eing disposed...
144c0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
144d0 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70  ary>..      Disp
144e0 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72 20  osingDataReader 
144f0 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 13,....      /
14500 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14510 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72      /// A data r
14520 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20 63  eader is being c
14530 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
14540 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14550 20 20 20 20 43 6c 6f 73 69 6e 67 44 61 74 61 52      ClosingDataR
14560 65 61 64 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20  eader = 14,.... 
14570 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14580 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
14590 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 20  native resource 
145a0 77 61 73 20 6f 70 65 6e 65 64 20 28 69 2e 65 2e  was opened (i.e.
145b0 20 6f 62 74 61 69 6e 65 64 29 20 66 72 6f 6d 20   obtained) from 
145c0 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20  the pool...     
145d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
145e0 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 46 72 6f  .      OpenedFro
145f0 6d 50 6f 6f 6c 20 3d 20 31 35 2c 0d 0a 0d 0a 20  mPool = 15,.... 
14600 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
14610 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
14620 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 20  native resource 
14630 77 61 73 20 63 6c 6f 73 65 64 20 28 69 2e 65 2e  was closed (i.e.
14640 20 72 65 6c 65 61 73 65 64 29 20 74 6f 20 74 68   released) to th
14650 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f  e pool...      /
14660 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14670 20 20 20 20 20 43 6c 6f 73 65 64 54 6f 50 6f 6f       ClosedToPoo
14680 6c 20 3d 20 31 36 0d 0a 20 20 7d 0d 0a 0d 0a 20  l = 16..  }.... 
14690 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
146a0 20 20 2f 2f 2f 20 54 68 69 73 20 69 6d 70 6c 65    /// This imple
146b0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 53 51 4c  mentation of SQL
146c0 69 74 65 20 66 6f 72 20 41 44 4f 2e 4e 45 54 20  ite for ADO.NET 
146d0 63 61 6e 20 70 72 6f 63 65 73 73 20 64 61 74 65  can process date
146e0 2f 74 69 6d 65 20 66 69 65 6c 64 73 20 69 6e 0d  /time fields in.
146f0 0a 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 73  .  /// databases
14700 20 69 6e 20 6f 6e 65 20 6f 66 20 73 69 78 20 66   in one of six f
14710 6f 72 6d 61 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c  ormats...  /// <
14720 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  /summary>..  ///
14730 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f   <remarks>..  //
14740 2f 20 49 53 4f 38 36 30 31 20 66 6f 72 6d 61 74  / ISO8601 format
14750 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69   is more compati
14760 62 6c 65 2c 20 72 65 61 64 61 62 6c 65 2c 20 66  ble, readable, f
14770 75 6c 6c 79 2d 70 72 6f 63 65 73 73 61 62 6c 65  ully-processable
14780 2c 20 62 75 74 20 6c 65 73 73 0d 0a 20 20 2f 2f  , but less..  //
14790 2f 20 61 63 63 75 72 61 74 65 20 61 73 20 69 74  / accurate as it
147a0 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64   does not provid
147b0 65 20 74 69 6d 65 20 64 6f 77 6e 20 74 6f 20 66  e time down to f
147c0 72 61 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65  ractions of a se
147d0 63 6f 6e 64 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c  cond...  /// Jul
147e0 69 61 6e 44 61 79 20 69 73 20 74 68 65 20 6e 75  ianDay is the nu
147f0 6d 65 72 69 63 20 66 6f 72 6d 61 74 20 74 68 65  meric format the
14800 20 53 51 4c 69 74 65 20 75 73 65 73 20 69 6e 74   SQLite uses int
14810 65 72 6e 61 6c 6c 79 20 61 6e 64 20 69 73 20 61  ernally and is a
14820 72 67 75 61 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74  rguably..  /// t
14830 68 65 20 6d 6f 73 74 20 63 6f 6d 70 61 74 69 62  he most compatib
14840 6c 65 20 77 69 74 68 20 33 72 64 20 70 61 72 74  le with 3rd part
14850 79 20 74 6f 6f 6c 73 2e 20 20 49 74 20 69 73 20  y tools.  It is 
14860 6e 6f 74 20 72 65 61 64 61 62 6c 65 20 61 73 20  not readable as 
14870 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68  text..  /// with
14880 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73  out post-process
14890 69 6e 67 2e 20 20 54 69 63 6b 73 20 6c 65 73 73  ing.  Ticks less
148a0 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68   compatible with
148b0 20 33 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73   3rd party tools
148c0 20 74 68 61 74 0d 0a 20 20 2f 2f 2f 20 71 75 65   that..  /// que
148d0 72 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2c  ry the database,
148e0 20 61 6e 64 20 72 65 6e 64 65 72 73 20 74 68 65   and renders the
148f0 20 44 61 74 65 54 69 6d 65 20 66 69 65 6c 64 20   DateTime field 
14900 75 6e 72 65 61 64 61 62 6c 65 20 61 73 20 74 65  unreadable as te
14910 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75  xt..  /// withou
14920 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e  t post-processin
14930 67 2e 20 20 55 6e 69 78 45 70 6f 63 68 20 69 73  g.  UnixEpoch is
14940 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65   more compatible
14950 20 77 69 74 68 20 55 6e 69 78 20 73 79 73 74 65   with Unix syste
14960 6d 73 2e 0d 0a 20 20 2f 2f 2f 20 49 6e 76 61 72  ms...  /// Invar
14970 69 61 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f  iantCulture allo
14980 77 73 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65  ws the configure
14990 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65  d format for the
149a0 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75   invariant cultu
149b0 72 65 0d 0a 20 20 2f 2f 2f 20 66 6f 72 6d 61 74  re..  /// format
149c0 20 74 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20   to be used and 
149d0 69 73 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c  is human readabl
149e0 65 2e 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75  e.  CurrentCultu
149f0 72 65 20 61 6c 6c 6f 77 73 20 74 68 65 0d 0a 20  re allows the.. 
14a00 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20   /// configured 
14a10 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 63  format for the c
14a20 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 20 74  urrent culture t
14a30 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73  o be used and is
14a40 20 61 6c 73 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f   also human..  /
14a50 2f 2f 20 72 65 61 64 61 62 6c 65 2e 0d 0a 20 20  // readable...  
14a60 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70  ///..  /// The p
14a70 72 65 66 65 72 72 65 64 20 6f 72 64 65 72 20 6f  referred order o
14a80 66 20 63 68 6f 6f 73 69 6e 67 20 61 20 44 61 74  f choosing a Dat
14a90 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 69 73 20  eTime format is 
14aa0 4a 75 6c 69 61 6e 44 61 79 2c 20 49 53 4f 38 36  JulianDay, ISO86
14ab0 30 31 2c 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74  01,..  /// and t
14ac0 68 65 6e 20 54 69 63 6b 73 2e 20 20 54 69 63 6b  hen Ticks.  Tick
14ad0 73 20 69 73 20 6d 61 69 6e 6c 79 20 70 72 65 73  s is mainly pres
14ae0 65 6e 74 20 66 6f 72 20 6c 65 67 61 63 79 20 63  ent for legacy c
14af0 6f 64 65 20 73 75 70 70 6f 72 74 2e 0d 0a 20 20  ode support...  
14b00 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
14b10 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
14b20 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 0d  LiteDateFormats.
14b30 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  .  {..    /// <s
14b40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14b50 20 55 73 65 20 74 68 65 20 76 61 6c 75 65 20 6f   Use the value o
14b60 66 20 44 61 74 65 54 69 6d 65 2e 54 69 63 6b 73  f DateTime.Ticks
14b70 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 69 73  .  This value is
14b80 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64   not recommended
14b90 20 61 6e 64 20 69 73 20 6e 6f 74 20 77 65 6c 6c   and is not well
14ba0 20 73 75 70 70 6f 72 74 65 64 20 77 69 74 68 20   supported with 
14bb0 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  LINQ...    /// <
14bc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54  /summary>..    T
14bd0 69 63 6b 73 20 3d 20 30 2c 0d 0a 20 20 20 20 2f  icks = 0,..    /
14be0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14bf0 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 49 53    /// Use the IS
14c00 4f 2d 38 36 30 31 20 66 6f 72 6d 61 74 2e 20 20  O-8601 format.  
14c10 55 73 65 73 20 74 68 65 20 22 79 79 79 79 2d 4d  Uses the "yyyy-M
14c20 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
14c30 46 46 46 46 46 4b 22 20 66 6f 72 6d 61 74 20 66  FFFFFK" format f
14c40 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
14c50 76 61 6c 75 65 73 20 61 6e 64 0d 0a 20 20 20 20  values and..    
14c60 2f 2f 2f 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20  /// "yyyy-MM-dd 
14c70 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
14c80 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  " format for loc
14c90 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
14ca0 65 73 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  es)...    /// </
14cb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 53  summary>..    IS
14cc0 4f 38 36 30 31 20 3d 20 31 2c 0d 0a 20 20 20 20  O8601 = 1,..    
14cd0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14ce0 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72     /// The inter
14cf0 76 61 6c 20 6f 66 20 74 69 6d 65 20 69 6e 20 64  val of time in d
14d00 61 79 73 20 61 6e 64 20 66 72 61 63 74 69 6f 6e  ays and fraction
14d10 73 20 6f 66 20 61 20 64 61 79 20 73 69 6e 63 65  s of a day since
14d20 20 4a 61 6e 75 61 72 79 20 31 2c 20 34 37 31 33   January 1, 4713
14d30 20 42 43 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   BC...    /// </
14d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75  summary>..    Ju
14d50 6c 69 61 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20  lianDay = 2,..  
14d60 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14d70 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f  .    /// The who
14d80 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63  le number of sec
14d90 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55  onds since the U
14da0 6e 69 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61  nix epoch (Janua
14db0 72 79 20 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20  ry 1, 1970)...  
14dc0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14dd0 0d 0a 20 20 20 20 55 6e 69 78 45 70 6f 63 68 20  ..    UnixEpoch 
14de0 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 3,..    /// <s
14df0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14e00 20 41 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e 64   Any culture-ind
14e10 65 70 65 6e 64 65 6e 74 20 73 74 72 69 6e 67 20  ependent string 
14e20 76 61 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e  value that the .
14e30 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61  NET Framework ca
14e40 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73 20 61  n interpret as a
14e50 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65 2e   valid DateTime.
14e60 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14e70 61 72 79 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69  ary>..    Invari
14e80 61 6e 74 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d  antCulture = 4,.
14e90 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14ea0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20  y>..    /// Any 
14eb0 73 74 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61  string value tha
14ec0 74 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65  t the .NET Frame
14ed0 77 6f 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72  work can interpr
14ee0 65 74 20 61 73 20 61 20 76 61 6c 69 64 20 44 61  et as a valid Da
14ef0 74 65 54 69 6d 65 20 75 73 69 6e 67 20 74 68 65  teTime using the
14f00 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
14f10 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
14f20 6d 61 72 79 3e 0d 0a 20 20 20 20 43 75 72 72 65  mary>..    Curre
14f30 6e 74 43 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a  ntCulture = 5,..
14f40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14f50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
14f60 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f  efault format fo
14f70 72 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e  r this provider.
14f80 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14f90 61 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c  ary>..    Defaul
14fa0 74 20 3d 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d  t = ISO8601..  }
14fb0 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
14fc0 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
14fd0 65 6e 75 6d 20 64 65 74 65 72 6d 69 6e 65 73 20  enum determines 
14fe0 68 6f 77 20 53 51 4c 69 74 65 20 74 72 65 61 74  how SQLite treat
14ff0 73 20 69 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69  s its journal fi
15000 6c 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  le...  /// </sum
15010 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65  mary>..  /// <re
15020 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79  marks>..  /// By
15030 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20   default SQLite 
15040 77 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20  will create and 
15050 64 65 6c 65 74 65 20 74 68 65 20 6a 6f 75 72 6e  delete the journ
15060 61 6c 20 66 69 6c 65 20 77 68 65 6e 20 6e 65 65  al file when nee
15070 64 65 64 20 64 75 72 69 6e 67 20 61 20 74 72 61  ded during a tra
15080 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f  nsaction...  ///
15090 20 48 6f 77 65 76 65 72 2c 20 66 6f 72 20 73 6f   However, for so
150a0 6d 65 20 63 6f 6d 70 75 74 65 72 73 20 72 75 6e  me computers run
150b0 6e 69 6e 67 20 63 65 72 74 61 69 6e 20 66 69 6c  ning certain fil
150c0 65 73 79 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69  esystem monitori
150d0 6e 67 20 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61  ng tools, the ra
150e0 70 69 64 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74  pid..  /// creat
150f0 69 6f 6e 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e  ion and deletion
15100 20 6f 66 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20   of the journal 
15110 66 69 6c 65 20 63 61 6e 20 63 61 75 73 65 20 74  file can cause t
15120 68 6f 73 65 20 70 72 6f 67 72 61 6d 73 20 74 6f  hose programs to
15130 20 66 61 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74   fail, or to int
15140 65 72 66 65 72 65 20 77 69 74 68 20 53 51 4c 69  erfere with SQLi
15150 74 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f  te...  ///..  //
15160 2f 20 49 66 20 61 20 70 72 6f 67 72 61 6d 20 6f  / If a program o
15170 72 20 76 69 72 75 73 20 73 63 61 6e 6e 65 72 20  r virus scanner 
15180 69 73 20 69 6e 74 65 72 66 65 72 69 6e 67 20 77  is interfering w
15190 69 74 68 20 53 51 4c 69 74 65 27 73 20 6a 6f 75  ith SQLite's jou
151a0 72 6e 61 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d  rnal file, you m
151b0 61 79 20 72 65 63 65 69 76 65 20 65 72 72 6f 72  ay receive error
151c0 73 20 6c 69 6b 65 20 22 75 6e 61 62 6c 65 20 74  s like "unable t
151d0 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20  o open database 
151e0 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65  file"..  /// whe
151f0 6e 20 73 74 61 72 74 69 6e 67 20 61 20 74 72 61  n starting a tra
15200 6e 73 61 63 74 69 6f 6e 2e 20 20 49 66 20 74 68  nsaction.  If th
15210 69 73 20 69 73 20 68 61 70 70 65 6e 69 6e 67 2c  is is happening,
15220 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f   you may want to
15230 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
15240 75 6c 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65  ult journal mode
15250 20 74 6f 20 50 65 72 73 69 73 74 2e 0d 0a 20 20   to Persist...  
15260 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
15270 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
15280 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45  LiteJournalModeE
15290 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  num..  {..    //
152a0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
152b0 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
152c0 20 6d 6f 64 65 2c 20 74 68 69 73 20 63 61 75 73   mode, this caus
152d0 65 73 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  es SQLite to use
152e0 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 6a 6f   the existing jo
152f0 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f  urnaling mode fo
15300 72 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d  r the database..
15310 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
15320 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74  ry>..    Default
15330 20 3d 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20   = -1,..    /// 
15340 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
15350 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63  // SQLite will c
15360 72 65 61 74 65 20 61 6e 64 20 64 65 73 74 72 6f  reate and destro
15370 79 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  y the journal fi
15380 6c 65 20 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20  le as-needed... 
15390 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
153a0 3e 0d 0a 20 20 20 20 44 65 6c 65 74 65 20 3d 20  >..    Delete = 
153b0 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  0,..    /// <sum
153c0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57  mary>..    /// W
153d0 68 65 6e 20 74 68 69 73 20 69 73 20 73 65 74 2c  hen this is set,
153e0 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65   SQLite will kee
153f0 70 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  p the journal fi
15400 6c 65 20 65 76 65 6e 20 61 66 74 65 72 20 61 20  le even after a 
15410 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20  transaction has 
15420 63 6f 6d 70 6c 65 74 65 64 2e 20 20 49 74 27 73  completed.  It's
15430 20 63 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62   contents will b
15440 65 20 65 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f  e erased,..    /
15450 2f 2f 20 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e  // and the journ
15460 61 6c 20 72 65 2d 75 73 65 64 20 61 73 20 6f 66  al re-used as of
15470 74 65 6e 20 61 73 20 6e 65 65 64 65 64 2e 20 20  ten as needed.  
15480 49 66 20 69 74 20 69 73 20 64 65 6c 65 74 65 64  If it is deleted
15490 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 63  , it will be rec
154a0 72 65 61 74 65 64 20 74 68 65 20 6e 65 78 74 20  reated the next 
154b0 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65  time it is neede
154c0 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
154d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 50 65 72 73  mmary>..    Pers
154e0 69 73 74 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  ist = 1,..    //
154f0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
15500 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
15510 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 72 6f   disables the ro
15520 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65  llback journal e
15530 6e 74 69 72 65 6c 79 2e 20 20 49 6e 74 65 72 72  ntirely.  Interr
15540 75 70 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  upted transactio
15550 6e 73 20 6f 72 20 61 20 70 72 6f 67 72 61 6d 20  ns or a program 
15560 63 72 61 73 68 20 63 61 6e 20 63 61 75 73 65 20  crash can cause 
15570 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f  database..    //
15580 2f 20 63 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20  / corruption in 
15590 74 68 69 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20  this mode!..    
155a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
155b0 20 20 20 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20      Off = 2,..  
155c0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
155d0 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  .    /// SQLite 
155e0 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68  will truncate th
155f0 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74  e journal file t
15600 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e  o zero-length in
15610 73 74 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e  stead of deletin
15620 67 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  g it...    /// <
15630 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54  /summary>..    T
15640 72 75 6e 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20  runcate = 3,..  
15650 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15660 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  .    /// SQLite 
15670 77 69 6c 6c 20 73 74 6f 72 65 20 74 68 65 20 6a  will store the j
15680 6f 75 72 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69  ournal in volati
15690 6c 65 20 52 41 4d 2e 20 20 54 68 69 73 20 73 61  le RAM.  This sa
156a0 76 65 73 20 64 69 73 6b 20 49 2f 4f 20 62 75 74  ves disk I/O but
156b0 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
156c0 6f 66 20 64 61 74 61 62 61 73 65 20 73 61 66 65  of database safe
156d0 74 79 20 61 6e 64 20 69 6e 74 65 67 72 69 74 79  ty and integrity
156e0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  ...    /// If th
156f0 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
15700 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61 73 68  ing SQLite crash
15710 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65  es in the middle
15720 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f   of a transactio
15730 6e 20 77 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52  n when the MEMOR
15740 59 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64  Y journaling mod
15750 65 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74  e is set, then t
15760 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61  he..    /// data
15770 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 76  base file will v
15780 65 72 79 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f  ery likely go co
15790 72 72 75 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rrupt...    /// 
157a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
157b0 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20  Memory = 4,..   
157c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
157d0 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75      /// SQLite u
157e0 73 65 73 20 61 20 77 72 69 74 65 2d 61 68 65 61  ses a write-ahea
157f0 64 20 6c 6f 67 20 69 6e 73 74 65 61 64 20 6f 66  d log instead of
15800 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72   a rollback jour
15810 6e 61 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  nal to implement
15820 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20   transactions.  
15830 54 68 65 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69  The WAL journali
15840 6e 67 20 6d 6f 64 65 20 69 73 20 70 65 72 73 69  ng mode is persi
15850 73 74 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20  stent;..    /// 
15860 61 66 74 65 72 20 62 65 69 6e 67 20 73 65 74 20  after being set 
15870 69 74 20 73 74 61 79 73 20 69 6e 20 65 66 66 65  it stays in effe
15880 63 74 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70  ct across multip
15890 6c 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  le database conn
158a0 65 63 74 69 6f 6e 73 20 61 6e 64 20 61 66 74 65  ections and afte
158b0 72 20 63 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65  r closing and re
158c0 6f 70 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61  opening the data
158d0 62 61 73 65 2e 20 41 20 64 61 74 61 62 61 73 65  base. A database
158e0 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c  ..    /// in WAL
158f0 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65   journaling mode
15900 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63   can only be acc
15910 65 73 73 65 64 20 62 79 20 53 51 4c 69 74 65 20  essed by SQLite 
15920 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72  version 3.7.0 or
15930 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f   later...    ///
15940 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15950 20 57 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d   Wal = 5..  }...
15960 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
15970 0d 0a 20 20 2f 2f 2f 20 50 6f 73 73 69 62 6c 65  ..  /// Possible
15980 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
15990 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61  "synchronous" da
159a0 74 61 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20  tabase setting. 
159b0 20 54 68 69 73 20 73 65 74 74 69 6e 67 20 64 65   This setting de
159c0 74 65 72 6d 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20  termines..  /// 
159d0 68 6f 77 20 6f 66 74 65 6e 20 74 68 65 20 64 61  how often the da
159e0 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 63 61  tabase engine ca
159f0 6c 6c 73 20 74 68 65 20 78 53 79 6e 63 20 6d 65  lls the xSync me
15a00 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46 53 2e  thod of the VFS.
15a10 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
15a20 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65  y>..  internal e
15a30 6e 75 6d 20 53 51 4c 69 74 65 53 79 6e 63 68 72  num SQLiteSynchr
15a40 6f 6e 6f 75 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a  onousEnum..  {..
15a50 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
15a60 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  ry>..      /// U
15a70 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 22  se the default "
15a80 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74  synchronous" dat
15a90 61 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20  abase setting.  
15aa0 43 75 72 72 65 6e 74 6c 79 2c 20 74 68 69 73 20  Currently, this 
15ab0 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20  should be..     
15ac0 20 2f 2f 2f 20 74 68 65 20 73 61 6d 65 20 61 73   /// the same as
15ad0 20 75 73 69 6e 67 20 74 68 65 20 46 55 4c 4c 20   using the FULL 
15ae0 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mode...      ///
15af0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15b00 20 20 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c     Default = -1,
15b10 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
15b20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
15b30 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
15b40 65 6e 67 69 6e 65 20 63 6f 6e 74 69 6e 75 65 73  engine continues
15b50 20 77 69 74 68 6f 75 74 20 73 79 6e 63 69 6e 67   without syncing
15b60 20 61 73 20 73 6f 6f 6e 20 61 73 20 69 74 20 68   as soon as it h
15b70 61 73 20 68 61 6e 64 65 64 0d 0a 20 20 20 20 20  as handed..     
15b80 20 2f 2f 2f 20 64 61 74 61 20 6f 66 66 20 74 6f   /// data off to
15b90 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
15ba0 79 73 74 65 6d 2e 20 20 49 66 20 74 68 65 20 61  ystem.  If the a
15bb0 70 70 6c 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69  pplication runni
15bc0 6e 67 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ng SQLite..     
15bd0 20 2f 2f 2f 20 63 72 61 73 68 65 73 2c 20 74 68   /// crashes, th
15be0 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73  e data will be s
15bf0 61 66 65 2c 20 62 75 74 20 74 68 65 20 64 61 74  afe, but the dat
15c00 61 62 61 73 65 20 6d 69 67 68 74 20 62 65 63 6f  abase might beco
15c10 6d 65 20 63 6f 72 72 75 70 74 65 64 0d 0a 20 20  me corrupted..  
15c20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6f      /// if the o
15c30 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
15c40 63 72 61 73 68 65 73 20 6f 72 20 74 68 65 20 63  crashes or the c
15c50 6f 6d 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f  omputer loses po
15c60 77 65 72 20 62 65 66 6f 72 65 20 74 68 61 74 0d  wer before that.
15c70 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20  .      /// data 
15c80 68 61 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e  has been written
15c90 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72   to the disk sur
15ca0 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  face...      ///
15cb0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15cc0 20 20 20 4f 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20     Off = 0,.... 
15cd0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15ce0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15cf0 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
15d00 65 20 77 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e  e will still syn
15d10 63 20 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72  c at the most cr
15d20 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20  itical moments, 
15d30 62 75 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c  but..      /// l
15d40 65 73 73 20 6f 66 74 65 6e 20 74 68 61 6e 20 69  ess often than i
15d50 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68  n FULL mode.  Th
15d60 65 72 65 20 69 73 20 61 20 76 65 72 79 20 73 6d  ere is a very sm
15d70 61 6c 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d  all (though non-
15d80 7a 65 72 6f 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero)..      ///
15d90 20 63 68 61 6e 63 65 20 74 68 61 74 20 61 20 70   chance that a p
15da0 6f 77 65 72 20 66 61 69 6c 75 72 65 20 61 74 20  ower failure at 
15db0 6a 75 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74  just the wrong t
15dc0 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70  ime could corrup
15dd0 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  t the..      ///
15de0 20 64 61 74 61 62 61 73 65 20 69 6e 20 4e 4f 52   database in NOR
15df0 4d 41 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  MAL mode...     
15e00 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15e10 0a 20 20 20 20 20 20 4e 6f 72 6d 61 6c 20 3d 20  .      Normal = 
15e20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
15e30 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15e40 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73   /// The databas
15e50 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c 20 75 73  e engine will us
15e60 65 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68  e the xSync meth
15e70 6f 64 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f  od of the VFS to
15e80 20 65 6e 73 75 72 65 20 74 68 61 74 0d 0a 20 20   ensure that..  
15e90 20 20 20 20 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74      /// all cont
15ea0 65 6e 74 20 69 73 20 73 61 66 65 6c 79 20 77 72  ent is safely wr
15eb0 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73  itten to the dis
15ec0 6b 20 73 75 72 66 61 63 65 20 70 72 69 6f 72 20  k surface prior 
15ed0 74 6f 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a  to continuing...
15ee0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65        /// This e
15ef0 6e 73 75 72 65 73 20 74 68 61 74 20 61 6e 20 6f  nsures that an o
15f00 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
15f10 63 72 61 73 68 20 6f 72 20 70 6f 77 65 72 20 66  crash or power f
15f20 61 69 6c 75 72 65 20 77 69 6c 6c 20 6e 6f 74 0d  ailure will not.
15f30 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75  .      /// corru
15f40 70 74 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  pt the database.
15f50 20 20 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f    FULL synchrono
15f60 75 73 20 69 73 20 76 65 72 79 20 73 61 66 65 2c  us is very safe,
15f70 20 62 75 74 20 69 74 20 69 73 20 61 6c 73 6f 0d   but it is also.
15f80 0a 20 20 20 20 20 20 2f 2f 2f 20 73 6c 6f 77 65  .      /// slowe
15f90 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  r...      /// </
15fa0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15fb0 46 75 6c 6c 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d  Full = 2..  }...
15fc0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
15fd0 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75  ..  /// The requ
15fe0 65 73 74 65 64 20 63 6f 6d 6d 61 6e 64 20 65 78  ested command ex
15ff0 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 54  ecution type.  T
16000 68 69 73 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69  his controls whi
16010 63 68 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65  ch method of the
16020 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
16030 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  f="SQLiteCommand
16040 22 20 2f 3e 20 6f 62 6a 65 63 74 20 77 69 6c 6c  " /> object will
16050 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f   be called...  /
16060 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16070 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
16080 69 74 65 45 78 65 63 75 74 65 54 79 70 65 0d 0a  iteExecuteType..
16090 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
160a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
160b0 2f 2f 2f 20 44 6f 20 6e 6f 74 68 69 6e 67 2e 20  /// Do nothing. 
160c0 20 4e 6f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20   No method will 
160d0 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
160e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
160f0 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30  ..      None = 0
16100 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16110 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16120 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20  /// The command 
16130 69 73 20 6e 6f 74 20 65 78 70 65 63 74 65 64 20  is not expected 
16140 74 6f 20 72 65 74 75 72 6e 20 61 20 72 65 73 75  to return a resu
16150 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75  lt -OR- the resu
16160 6c 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20  lt is not..     
16170 20 2f 2f 2f 20 6e 65 65 64 65 64 2e 20 20 54 68   /// needed.  Th
16180 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
16190 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
161a0 74 65 4e 6f 6e 51 75 65 72 79 28 29 22 20 2f 3e  teNonQuery()" />
161b0 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   or..      /// <
161c0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
161d0 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e  Command.ExecuteN
161e0 6f 6e 51 75 65 72 79 28 43 6f 6d 6d 61 6e 64 42  onQuery(CommandB
161f0 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 20 6d 65  ehavior)" />  me
16200 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  thod..      /// 
16210 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
16220 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16230 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e  mary>..      Non
16240 51 75 65 72 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20  Query = 1,....  
16250 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16260 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
16270 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65   command is expe
16280 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61  cted to return a
16290 20 73 63 61 6c 61 72 20 72 65 73 75 6c 74 20 2d   scalar result -
162a0 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74 20 73  OR- the result s
162b0 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
162c0 20 62 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 61   be limited to a
162d0 20 73 63 61 6c 61 72 20 72 65 73 75 6c 74 2e 20   scalar result. 
162e0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
162f0 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78  SQLiteCommand.Ex
16300 65 63 75 74 65 53 63 61 6c 61 72 28 29 22 20 2f  ecuteScalar()" /
16310 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  >..      /// or 
16320 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
16330 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
16340 53 63 61 6c 61 72 28 43 6f 6d 6d 61 6e 64 42 65  Scalar(CommandBe
16350 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68  havior)" /> meth
16360 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f  od will..      /
16370 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  // be called... 
16380 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16390 72 79 3e 0d 0a 20 20 20 20 20 20 53 63 61 6c 61  ry>..      Scala
163a0 72 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20  r = 2,....      
163b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
163c0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
163d0 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74 65 64  mand is expected
163e0 20 74 6f 20 72 65 74 75 72 6e 20 3c 73 65 65 20   to return <see 
163f0 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61  cref="SQLiteData
16400 52 65 61 64 65 72 22 20 2f 3e 20 72 65 73 75 6c  Reader" /> resul
16410 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  t...      /// Th
16420 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
16430 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
16440 74 65 52 65 61 64 65 72 28 29 22 20 2f 3e 20 6f  teReader()" /> o
16450 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  r..      /// <se
16460 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
16470 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61  mmand.ExecuteRea
16480 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76  der(CommandBehav
16490 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20  ior)" /> method 
164a0 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  will..      /// 
164b0 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
164c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
164d0 0d 0a 20 20 20 20 20 20 52 65 61 64 65 72 20 3d  ..      Reader =
164e0 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   3,....      ///
164f0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16500 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65    /// Use the de
16510 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 65 78  fault command ex
16520 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 55  ecution type.  U
16530 73 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20  sing this value 
16540 69 73 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20  is the same..   
16550 20 20 20 2f 2f 2f 20 61 73 20 75 73 69 6e 67 20     /// as using 
16560 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
16570 51 4c 69 74 65 45 78 65 63 75 74 65 54 79 70 65  QLiteExecuteType
16580 2e 4e 6f 6e 51 75 65 72 79 22 20 2f 3e 20 76 61  .NonQuery" /> va
16590 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
165a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
165b0 20 20 44 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 51    Default = NonQ
165c0 75 65 72 79 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f  uery /* TODO: Go
165d0 6f 64 20 64 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a  od default? */..
165e0 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75    }....  /// <su
165f0 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
16600 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20 72 65  e action code re
16610 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68  sponsible for th
16620 65 20 63 75 72 72 65 6e 74 20 63 61 6c 6c 20 69  e current call i
16630 6e 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a  nto the authoriz
16640 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  er...  /// </sum
16650 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
16660 65 6e 75 6d 20 53 51 4c 69 74 65 41 75 74 68 6f  enum SQLiteAutho
16670 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 0d  rizerActionCode.
16680 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  .  {..      /// 
16690 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
166a0 20 2f 2f 2f 20 4e 6f 20 61 63 74 69 6f 6e 20 69   /// No action i
166b0 73 20 62 65 69 6e 67 20 70 65 72 66 6f 72 6d 65  s being performe
166c0 64 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 73  d.  This value s
166d0 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65  hould not be use
166e0 64 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f  d from..      //
166f0 2f 20 65 78 74 65 72 6e 61 6c 20 63 6f 64 65 2e  / external code.
16700 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
16710 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
16720 6e 65 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20  ne = -1,....    
16730 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16740 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f  .      /// No lo
16750 6e 67 65 72 20 75 73 65 64 2e 0d 0a 20 20 20 20  nger used...    
16760 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16770 0d 0a 20 20 20 20 20 20 43 6f 70 79 20 3d 20 30  ..      Copy = 0
16780 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16790 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
167a0 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c  /// An index wil
167b0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
167c0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
167d0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
167e0 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
167f0 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74  index name and t
16800 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
16810 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
16820 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16830 0a 20 20 20 20 20 20 43 72 65 61 74 65 49 6e 64  .      CreateInd
16840 65 78 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  ex = 1,....     
16850 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16860 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
16870 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  e will be create
16880 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
16890 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
168a0 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
168b0 20 2f 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20   /// table name 
168c0 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
168d0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
168e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
168f0 72 65 61 74 65 54 61 62 6c 65 20 3d 20 32 2c 0d  reateTable = 2,.
16900 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16910 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16920 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e  / A temporary in
16930 64 65 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61  dex will be crea
16940 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
16950 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16960 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
16970 72 65 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d  re the index nam
16980 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
16990 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
169a0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
169b0 20 20 20 43 72 65 61 74 65 54 65 6d 70 49 6e 64     CreateTempInd
169c0 65 78 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20  ex = 3,....     
169d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
169e0 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70        /// A temp
169f0 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c  orary table will
16a00 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68   be created.  Th
16a10 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16a20 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
16a30 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
16a40 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
16a50 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
16a60 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16a70 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
16a80 65 6d 70 54 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d  empTable = 4,...
16a90 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16aa0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16ab0 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67  A temporary trig
16ac0 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ger will be crea
16ad0 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
16ae0 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16af0 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
16b00 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20 6e  re the trigger n
16b10 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
16b20 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
16b30 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16b40 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 54       CreateTempT
16b50 72 69 67 67 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20  rigger = 5,.... 
16b60 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16b70 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16b80 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77  temporary view w
16b90 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16ba0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16bb0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
16bc0 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
16bd0 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20  e view name and 
16be0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16bf0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16c00 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74  ry>..      Creat
16c10 65 54 65 6d 70 56 69 65 77 20 3d 20 36 2c 0d 0a  eTempView = 6,..
16c20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16c30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16c40 20 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20   A trigger will 
16c50 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
16c60 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16c70 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16c80 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72  he..      /// tr
16c90 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74  igger name and t
16ca0 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
16cb0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16cc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
16cd0 74 65 54 72 69 67 67 65 72 20 3d 20 37 2c 0d 0a  teTrigger = 7,..
16ce0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16cf0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16d00 20 41 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20   A view will be 
16d10 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
16d20 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16d30 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
16d40 76 69 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  view..      /// 
16d50 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16d60 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16d70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16d80 20 20 20 20 43 72 65 61 74 65 56 69 65 77 20 3d      CreateView =
16d90 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   8,....      ///
16da0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16db0 20 20 2f 2f 2f 20 41 20 44 45 4c 45 54 45 20 73    /// A DELETE s
16dc0 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
16dd0 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
16de0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16df0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
16e00 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
16e10 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
16e20 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
16e30 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16e40 0a 20 20 20 20 20 20 44 65 6c 65 74 65 20 3d 20  .      Delete = 
16e50 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  9,....      /// 
16e60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16e70 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69   /// An index wi
16e80 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
16e90 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16ea0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
16eb0 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
16ec0 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
16ed0 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16ee0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16ef0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16f00 70 49 6e 64 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a  pIndex = 10,....
16f10 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16f20 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16f30 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64   table will be d
16f40 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
16f50 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16f60 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74  uments are the t
16f70 61 62 6c 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ables..      ///
16f80 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
16f90 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16fa0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16fb0 20 20 20 20 20 44 72 6f 70 54 61 62 6c 65 20 3d       DropTable =
16fc0 20 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   11,....      //
16fd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16fe0 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
16ff0 72 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  ry index will be
17000 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
17010 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
17020 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
17030 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 64 65      /// the inde
17040 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
17050 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
17060 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17070 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
17080 49 6e 64 65 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20  Index = 12,.... 
17090 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
170a0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
170b0 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20  temporary table 
170c0 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
170d0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
170e0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
170f0 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  are..      /// t
17100 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
17110 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
17120 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17130 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
17140 70 54 65 6d 70 54 61 62 6c 65 20 3d 20 31 33 2c  pTempTable = 13,
17150 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17160 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17170 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
17180 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64  rigger will be d
17190 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
171a0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
171b0 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
171c0 2f 20 61 72 65 20 74 68 65 20 74 72 69 67 67 65  / are the trigge
171d0 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  r name and the t
171e0 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
171f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17200 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
17210 54 72 69 67 67 65 72 20 3d 20 31 34 2c 0d 0a 0d  Trigger = 14,...
17220 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17230 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17240 41 20 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77  A temporary view
17250 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
17260 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
17270 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17280 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   are..      /// 
17290 74 68 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e  the view name an
172a0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
172b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
172c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
172d0 70 54 65 6d 70 56 69 65 77 20 3d 20 31 35 2c 0d  pTempView = 15,.
172e0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
172f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17300 2f 20 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c  / A trigger will
17310 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
17320 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17330 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
17340 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  the..      /// t
17350 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20  rigger name and 
17360 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
17370 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17380 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
17390 70 54 72 69 67 67 65 72 20 3d 20 31 36 2c 0d 0a  pTrigger = 16,..
173a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
173b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
173c0 20 41 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20   A view will be 
173d0 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63  dropped.  The ac
173e0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
173f0 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
17400 76 69 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  view..      /// 
17410 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
17420 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
17430 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17440 20 20 20 20 44 72 6f 70 56 69 65 77 20 3d 20 31      DropView = 1
17450 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  7,....      /// 
17460 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
17470 20 2f 2f 2f 20 41 6e 20 49 4e 53 45 52 54 20 73   /// An INSERT s
17480 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
17490 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
174a0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
174b0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
174c0 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
174d0 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
174e0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
174f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17500 0a 20 20 20 20 20 20 49 6e 73 65 72 74 20 3d 20  .      Insert = 
17510 31 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  18,....      ///
17520 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17530 20 20 2f 2f 2f 20 41 20 50 52 41 47 4d 41 20 73    /// A PRAGMA s
17540 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
17550 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
17560 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
17570 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
17580 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 6e 61 6d   /// are the nam
17590 65 20 6f 66 20 74 68 65 20 50 52 41 47 4d 41 20  e of the PRAGMA 
175a0 61 6e 64 20 74 68 65 20 6e 65 77 20 76 61 6c 75  and the new valu
175b0 65 20 6f 72 20 61 20 6e 75 6c 6c 20 76 61 6c 75  e or a null valu
175c0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
175d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
175e0 50 72 61 67 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a  Pragma = 19,....
175f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17600 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17610 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69   table column wi
17620 6c 6c 20 62 65 20 72 65 61 64 2e 20 20 54 68 65  ll be read.  The
17630 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
17640 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
17650 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61  he..      /// ta
17660 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ble name and the
17670 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20   column name... 
17680 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17690 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 20  ry>..      Read 
176a0 3d 20 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 20,....      /
176b0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
176c0 20 20 20 20 2f 2f 2f 20 41 20 53 45 4c 45 43 54      /// A SELECT
176d0 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
176e0 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68  be executed.  Th
176f0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17700 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
17710 20 20 20 2f 2f 2f 20 61 72 65 20 62 6f 74 68 20     /// are both 
17720 6e 75 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20  null values...  
17730 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17740 79 3e 0d 0a 20 20 20 20 20 20 53 65 6c 65 63 74  y>..      Select
17750 20 3d 20 32 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 21,....      
17760 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17770 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73       /// A trans
17780 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 73  action will be s
17790 74 61 72 74 65 64 2c 20 63 6f 6d 6d 69 74 74 65  tarted, committe
177a0 64 2c 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63  d, or rolled bac
177b0 6b 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f  k.  The..      /
177c0 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  // action-specif
177d0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
177e0 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
177f0 20 6f 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49   operation (BEGI
17800 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 4f  N,..      /// CO
17810 4d 4d 49 54 2c 20 6f 72 20 52 4f 4c 4c 42 41 43  MMIT, or ROLLBAC
17820 4b 29 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  K) and a null va
17830 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
17840 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17850 20 20 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20    Transaction = 
17860 32 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  22,....      ///
17870 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17880 20 20 2f 2f 2f 20 41 6e 20 55 50 44 41 54 45 20    /// An UPDATE 
17890 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62  statement will b
178a0 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65  e executed.  The
178b0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
178c0 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
178d0 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61    /// are the ta
178e0 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ble name and the
178f0 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20   column name... 
17900 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17910 72 79 3e 0d 0a 20 20 20 20 20 20 55 70 64 61 74  ry>..      Updat
17920 65 20 3d 20 32 33 2c 0d 0a 0d 0a 20 20 20 20 20  e = 23,....     
17930 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17940 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61        /// A data
17950 62 61 73 65 20 77 69 6c 6c 20 62 65 20 61 74 74  base will be att
17960 61 63 68 65 64 20 74 6f 20 74 68 65 20 63 6f 6e  ached to the con
17970 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63  nection.  The ac
17980 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20  tion-specific.. 
17990 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e       /// argumen
179a0 74 73 20 61 72 65 20 74 68 65 20 64 61 74 61 62  ts are the datab
179b0 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 61 6e  ase file name an
179c0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
179d0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
179e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 74 74  mary>..      Att
179f0 61 63 68 20 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20  ach = 24,....   
17a00 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17a10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61  ..      /// A da
17a20 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65 20 64  tabase will be d
17a30 65 74 61 63 68 65 64 20 66 72 6f 6d 20 74 68 65  etached from the
17a40 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68   connection.  Th
17a50 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17a60 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  c..      /// arg
17a70 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 64  uments are the d
17a80 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64  atabase name and
17a90 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
17aa0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17ab0 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 61  ary>..      Deta
17ac0 63 68 20 3d 20 32 35 2c 0d 0a 0d 0a 20 20 20 20  ch = 25,....    
17ad0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17ae0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
17af0 63 68 65 6d 61 20 6f 66 20 61 20 74 61 62 6c 65  chema of a table
17b00 20 77 69 6c 6c 20 62 65 20 61 6c 74 65 72 65 64   will be altered
17b10 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
17b20 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17b30 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
17b40 74 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d  the database nam
17b50 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
17b60 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
17b70 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17b80 20 20 20 41 6c 74 65 72 54 61 62 6c 65 20 3d 20     AlterTable = 
17b90 32 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  26,....      ///
17ba0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17bb0 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77    /// An index w
17bc0 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64 20 61  ill be deleted a
17bd0 6e 64 20 74 68 65 6e 20 72 65 63 72 65 61 74 65  nd then recreate
17be0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17bf0 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f  pecific..      /
17c00 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  // arguments are
17c10 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
17c20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
17c30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17c40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
17c50 65 69 6e 64 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a  eindex = 27,....
17c60 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17c70 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17c80 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61   table will be a
17c90 6e 61 6c 79 7a 65 64 20 74 6f 20 67 61 74 68 65  nalyzed to gathe
17ca0 72 73 20 73 74 61 74 69 73 74 69 63 73 20 61 62  rs statistics ab
17cb0 6f 75 74 20 69 74 2e 20 20 54 68 65 0d 0a 20 20  out it.  The..  
17cc0 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73      /// action-s
17cd0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17ce0 73 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  s are the table 
17cf0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
17d00 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
17d10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17d20 20 20 20 20 41 6e 61 6c 79 7a 65 20 3d 20 32 38      Analyze = 28
17d30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17d40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17d50 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61  /// A virtual ta
17d60 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ble will be crea
17d70 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
17d80 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
17d90 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
17da0 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  // the table nam
17db0 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65  e and the module
17dc0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
17dd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17de0 20 20 20 20 43 72 65 61 74 65 56 74 61 62 6c 65      CreateVtable
17df0 20 3d 20 32 39 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 29,....      
17e00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17e10 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75       /// A virtu
17e20 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  al table will be
17e30 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
17e40 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
17e50 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
17e60 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
17e70 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d  e name and the m
17e80 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  odule name...   
17e90 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17ea0 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 74 61  >..      DropVta
17eb0 62 6c 65 20 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20  ble = 30,....   
17ec0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17ed0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 51  ..      /// A SQ
17ee0 4c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  L function will 
17ef0 62 65 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 20  be called.  The 
17f00 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
17f10 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 61 0d  arguments are a.
17f20 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20  .      /// null 
17f30 76 61 6c 75 65 20 61 6e 64 20 74 68 65 20 66 75  value and the fu
17f40 6e 63 74 69 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20  nction name...  
17f50 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17f60 79 3e 0d 0a 20 20 20 20 20 20 46 75 6e 63 74 69  y>..      Functi
17f70 6f 6e 20 3d 20 33 31 2c 0d 0a 0d 0a 20 20 20 20  on = 31,....    
17f80 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17f90 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 61 76  .      /// A sav
17fa0 65 70 6f 69 6e 74 20 77 69 6c 6c 20 62 65 20 63  epoint will be c
17fb0 72 65 61 74 65 64 2c 20 72 65 6c 65 61 73 65 64  reated, released
17fc0 2c 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b  , or rolled back
17fd0 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
17fe0 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  / action-specifi
17ff0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
18000 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
18010 6f 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e  operation (BEGIN
18020 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 45 4c  ,..      /// REL
18030 45 41 53 45 2c 20 6f 72 20 52 4f 4c 4c 42 41 43  EASE, or ROLLBAC
18040 4b 29 20 61 6e 64 20 74 68 65 20 73 61 76 65 70  K) and the savep
18050 6f 69 6e 74 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  oint name...    
18060 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18070 0d 0a 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e  ..      Savepoin
18080 74 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20  t = 32,....     
18090 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
180a0 20 20 20 20 20 20 2f 2f 2f 20 41 20 72 65 63 75        /// A recu
180b0 72 73 69 76 65 20 71 75 65 72 79 20 77 69 6c 6c  rsive query will
180c0 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54   be executed.  T
180d0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
180e0 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
180f0 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 77 6f 20      /// are two 
18100 6e 75 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20  null values...  
18110 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18120 79 3e 0d 0a 20 20 20 20 20 20 52 65 63 75 72 73  y>..      Recurs
18130 69 76 65 20 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d  ive = 33..  }...
18140 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
18150 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 6f 73 73  ..  /// The poss
18160 69 62 6c 65 20 72 65 74 75 72 6e 20 63 6f 64 65  ible return code
18170 73 20 66 6f 72 20 74 68 65 20 70 72 6f 67 72 65  s for the progre
18180 73 73 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20  ss callback...  
18190 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
181a0 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
181b0 4c 69 74 65 50 72 6f 67 72 65 73 73 52 65 74 75  LiteProgressRetu
181c0 72 6e 43 6f 64 65 20 2f 2a 20 69 6e 74 20 2a 2f  rnCode /* int */
181d0 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f  ..  {..      ///
181e0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
181f0 20 20 2f 2f 2f 20 54 68 65 20 6f 70 65 72 61 74    /// The operat
18200 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 69  ion should conti
18210 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nue...      /// 
18220 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18230 20 20 43 6f 6e 74 69 6e 75 65 20 3d 20 30 2c 0d    Continue = 0,.
18240 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
18250 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
18260 2f 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  / The operation 
18270 73 68 6f 75 6c 64 20 62 65 20 69 6e 74 65 72 72  should be interr
18280 75 70 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  upted...      //
18290 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
182a0 20 20 20 20 49 6e 74 65 72 72 75 70 74 20 3d 20      Interrupt = 
182b0 31 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  1..  }....  /// 
182c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
182d0 20 54 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65   The return code
182e0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
182f0 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61   call into the a
18300 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f  uthorizer...  //
18310 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18320 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
18330 74 65 41 75 74 68 6f 72 69 7a 65 72 52 65 74 75  teAuthorizerRetu
18340 72 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20  rnCode..  {..   
18350 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18360 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
18370 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61  action will be a
18380 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20 20 20 20 2f  llowed...      /
18390 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
183a0 20 20 20 20 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a       Ok = 0,....
183b0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
183c0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
183d0 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f  he overall actio
183e0 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c  n will be disall
183f0 6f 77 65 64 20 61 6e 64 20 61 6e 20 65 72 72 6f  owed and an erro
18400 72 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62  r message will b
18410 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  e..      /// ret
18420 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 71  urned from the q
18430 75 65 72 79 20 70 72 65 70 61 72 61 74 69 6f 6e  uery preparation
18440 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
18450 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18460 20 20 20 20 20 20 44 65 6e 79 20 3d 20 31 2c 0d        Deny = 1,.
18470 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
18480 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
18490 2f 20 54 68 65 20 73 70 65 63 69 66 69 63 20 61  / The specific a
184a0 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69  ction will be di
184b0 73 61 6c 6c 6f 77 65 64 3b 20 68 6f 77 65 76 65  sallowed; howeve
184c0 72 2c 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 61  r, the overall a
184d0 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ction..      ///
184e0 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 2e 20   will continue. 
184f0 20 54 68 65 20 65 78 61 63 74 20 65 66 66 65 63   The exact effec
18500 74 73 20 6f 66 20 74 68 69 73 20 72 65 74 75 72  ts of this retur
18510 6e 20 63 6f 64 65 20 76 61 72 79 20 64 65 70 65  n code vary depe
18520 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  nding..      ///
18530 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 63   on the specific
18540 20 61 63 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20   action, please 
18550 72 65 66 65 72 20 74 6f 20 74 68 65 20 53 51 4c  refer to the SQL
18560 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
18570 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 63 75  ..      /// docu
18580 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
18590 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20  ther details... 
185a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
185b0 72 79 3e 0d 0a 20 20 20 20 20 20 49 67 6e 6f 72  ry>..      Ignor
185c0 65 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  e = 2..  }....  
185d0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
185e0 20 2f 2f 2f 20 43 6c 61 73 73 20 75 73 65 64 20   /// Class used 
185f0 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 65  internally to de
18600 74 65 72 6d 69 6e 65 20 74 68 65 20 64 61 74 61  termine the data
18610 74 79 70 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  type of a column
18620 20 69 6e 20 61 20 72 65 73 75 6c 74 73 65 74 0d   in a resultset.
18630 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
18640 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  >..  internal se
18650 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
18660 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20  eType..  {..    
18670 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
18680 20 20 20 2f 2f 2f 20 54 68 65 20 44 62 54 79 70     /// The DbTyp
18690 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c  e of the column,
186a0 20 6f 72 20 44 62 54 79 70 65 2e 4f 62 6a 65 63   or DbType.Objec
186b0 74 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  t if it cannot b
186c0 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20  e determined..  
186d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
186e0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
186f0 62 54 79 70 65 20 54 79 70 65 3b 0d 0a 20 20 20  bType Type;..   
18700 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
18710 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 66 66 69      /// The affi
18720 6e 69 74 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  nity of a column
18730 2c 20 75 73 65 64 20 66 6f 72 20 65 78 70 72 65  , used for expre
18740 73 73 69 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54  ssions or when T
18750 79 70 65 20 69 73 20 44 62 54 79 70 65 2e 4f 62  ype is DbType.Ob
18760 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ject..    /// </
18770 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
18780 74 65 72 6e 61 6c 20 54 79 70 65 41 66 66 69 6e  ternal TypeAffin
18790 69 74 79 20 41 66 66 69 6e 69 74 79 3b 0d 0a 0d  ity Affinity;...
187a0 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
187b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187f0 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
18800 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
18810 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65 66 61  onstructs a defa
18820 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  ult instance of 
18830 74 68 69 73 20 74 79 70 65 2e 0d 0a 20 20 20 20  this type...    
18840 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18850 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
18860 65 54 79 70 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  eType()..    {..
18870 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
18880 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ing...    }.... 
18890 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a  //////////////..
188e0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
188f0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
18900 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
18910 6e 63 65 20 6f 66 20 74 68 69 73 20 74 79 70 65  nce of this type
18920 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
18930 69 65 64 20 66 69 65 6c 64 20 76 61 6c 75 65 73  ied field values
18940 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
18950 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
18960 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 66 66 69  param name="affi
18970 6e 69 74 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nity">..    /// 
18980 54 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  The type affinit
18990 79 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65  y to use for the
189a0 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   new instance...
189b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
189c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
189d0 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20   name="type">.. 
189e0 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
189f0 61 73 65 20 74 79 70 65 20 74 6f 20 75 73 65 20  ase type to use 
18a00 66 6f 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74  for the new inst
18a10 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ance...    /// <
18a20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62  /param>..    pub
18a30 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65 28 0d  lic SQLiteType(.
18a40 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
18a50 69 74 79 20 61 66 66 69 6e 69 74 79 2c 0d 0a 20  ity affinity,.. 
18a60 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
18a70 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20  ..      )..     
18a80 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 7b   : this()..    {
18a90 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 41 66 66  ..      this.Aff
18aa0 69 6e 69 74 79 20 3d 20 61 66 66 69 6e 69 74 79  inity = affinity
18ab0 3b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 54 79  ;..      this.Ty
18ac0 70 65 20 3d 20 74 79 70 65 3b 0d 0a 20 20 20 20  pe = type;..    
18ad0 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f  }..  }....  ////
18ae0 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 69  /////////....  i
18b30 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
18b40 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79 70  lass SQLiteDbTyp
18b50 65 4d 61 70 0d 0a 20 20 20 20 20 20 3a 20 44 69  eMap..      : Di
18b60 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
18b70 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
18b80 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20  ping>..  {..    
18b90 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
18ba0 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 70 72  e Data..      pr
18bb0 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79  ivate Dictionary
18bc0 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44  <DbType, SQLiteD
18bd0 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 72 65  bTypeMapping> re
18be0 76 65 72 73 65 3b 0d 0a 20 20 20 20 20 20 23 65  verse;..      #e
18bf0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
18c00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
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 0d 0a 0d 0a 20  ///////////.... 
18c50 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
18c60 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
18c70 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53  ..      public S
18c80 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 29  QLiteDbTypeMap()
18c90 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 62 61  ..          : ba
18ca0 73 65 28 6e 65 77 20 54 79 70 65 4e 61 6d 65 53  se(new TypeNameS
18cb0 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 28 29 29  tringComparer())
18cc0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18cd0 20 20 20 20 20 72 65 76 65 72 73 65 20 3d 20 6e       reverse = n
18ce0 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62  ew Dictionary<Db
18cf0 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79  Type, SQLiteDbTy
18d00 70 65 4d 61 70 70 69 6e 67 3e 28 29 3b 0d 0a 20  peMapping>();.. 
18d10 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18d70 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
18d80 44 62 54 79 70 65 4d 61 70 28 0d 0a 20 20 20 20  DbTypeMap(..    
18d90 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62 6c        IEnumerabl
18da0 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  e<SQLiteDbTypeMa
18db0 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f  pping> collectio
18dc0 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  n..          )..
18dd0 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
18de0 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
18df0 20 20 20 20 20 20 20 41 64 64 28 63 6f 6c 6c 65         Add(colle
18e00 63 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ction);..      }
18e10 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
18e20 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
18e30 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
18e80 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e 43 6f  region System.Co
18e90 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69  llections.Generi
18ea0 63 2e 44 69 63 74 69 6f 6e 61 72 79 20 22 4f 76  c.Dictionary "Ov
18eb0 65 72 72 69 64 65 73 22 0d 0a 20 20 20 20 20 20  errides"..      
18ec0 70 75 62 6c 69 63 20 6e 65 77 20 69 6e 74 20 43  public new int C
18ed0 6c 65 61 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lear()..      {.
18ee0 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72  .          int r
18ef0 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  esult = 0;....  
18f00 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65          if (reve
18f10 72 73 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rse != null)..  
18f20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18f30 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
18f40 2b 3d 20 72 65 76 65 72 73 65 2e 43 6f 75 6e 74  += reverse.Count
18f50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18f60 20 72 65 76 65 72 73 65 2e 43 6c 65 61 72 28 29   reverse.Clear()
18f70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
18f80 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 73 75  ..          resu
18f90 6c 74 20 2b 3d 20 62 61 73 65 2e 43 6f 75 6e 74  lt += base.Count
18fa0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 61 73  ;..          bas
18fb0 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d 0a 20 20  e.Clear();....  
18fc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
18fd0 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  esult;..      }.
18fe0 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
18ff0 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
19000 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
19050 65 67 69 6f 6e 20 53 51 4c 69 74 65 44 62 54 79  egion SQLiteDbTy
19060 70 65 4d 61 70 70 69 6e 67 20 48 65 6c 70 65 72  peMapping Helper
19070 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
19080 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28  public void Add(
19090 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75  ..          IEnu
190a0 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62  merable<SQLiteDb
190b0 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c  TypeMapping> col
190c0 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  lection..       
190d0 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
190e0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6c           if (col
190f0 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29  lection == null)
19100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19110 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
19120 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
19130 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 29 3b 0d 0a  "collection");..
19140 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65  ..          fore
19150 61 63 68 20 28 53 51 4c 69 74 65 44 62 54 79 70  ach (SQLiteDbTyp
19160 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 20 69 6e  eMapping item in
19170 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20   collection)..  
19180 20 20 20 20 20 20 20 20 20 20 20 20 41 64 64 28              Add(
19190 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  item);..      }.
191a0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
191b0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
19200 69 63 20 76 6f 69 64 20 41 64 64 28 53 51 4c 69  ic void Add(SQLi
19210 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
19220 69 74 65 6d 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  item)..      {..
19230 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74            if (it
19240 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  em == null)..   
19250 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
19260 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
19270 6c 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d  lException("item
19280 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
19290 20 69 66 20 28 69 74 65 6d 2e 74 79 70 65 4e 61   if (item.typeNa
192a0 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
192b0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
192c0 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63   new ArgumentExc
192d0 65 70 74 69 6f 6e 28 22 69 74 65 6d 20 74 79 70  eption("item typ
192e0 65 20 6e 61 6d 65 20 63 61 6e 6e 6f 74 20 62 65  e name cannot be
192f0 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20   null");....    
19300 20 20 20 20 20 20 62 61 73 65 2e 41 64 64 28 69        base.Add(i
19310 74 65 6d 2e 74 79 70 65 4e 61 6d 65 2c 20 69 74  tem.typeName, it
19320 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  em);....        
19330 20 20 69 66 20 28 69 74 65 6d 2e 70 72 69 6d 61    if (item.prima
19340 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry)..           
19350 20 20 20 72 65 76 65 72 73 65 2e 41 64 64 28 69     reverse.Add(i
19360 74 65 6d 2e 64 61 74 61 54 79 70 65 2c 20 69 74  tem.dataType, it
19370 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  em);..      }.. 
19380 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
19390 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
193a0 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
193f0 69 6f 6e 20 44 62 54 79 70 65 20 48 65 6c 70 65  ion DbType Helpe
19400 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
19410 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e   public bool Con
19420 74 61 69 6e 73 4b 65 79 28 44 62 54 79 70 65 20  tainsKey(DbType 
19430 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  key)..      {.. 
19440 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76           if (rev
19450 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  erse == null).. 
19460 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
19470 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
19480 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
19490 65 76 65 72 73 65 2e 43 6f 6e 74 61 69 6e 73 4b  everse.ContainsK
194a0 65 79 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ey(key);..      
194b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
194c0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
19510 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79 47 65 74  blic bool TryGet
19520 56 61 6c 75 65 28 44 62 54 79 70 65 20 6b 65 79  Value(DbType key
19530 2c 20 6f 75 74 20 53 51 4c 69 74 65 44 62 54 79  , out SQLiteDbTy
19540 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 29  peMapping value)
19550 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
19560 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65       if (reverse
19570 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
19580 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19590 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75        value = nu
195a0 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
195b0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
195c0 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
195d0 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
195e0 6e 20 72 65 76 65 72 73 65 2e 54 72 79 47 65 74  n reverse.TryGet
195f0 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 76  Value(key, out v
19600 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  alue);..      }.
19610 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
19620 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
19670 69 63 20 62 6f 6f 6c 20 52 65 6d 6f 76 65 28 44  ic bool Remove(D
19680 62 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20  bType key)..    
19690 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
196a0 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75  f (reverse == nu
196b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
196c0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
196d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
196e0 74 75 72 6e 20 72 65 76 65 72 73 65 2e 52 65 6d  turn reverse.Rem
196f0 6f 76 65 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20  ove(key);..     
19700 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
19710 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  gion..  }....  /
19720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
19770 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
19780 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62  d class SQLiteDb
19790 54 79 70 65 4d 61 70 70 69 6e 67 0d 0a 20 20 7b  TypeMapping..  {
197a0 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53  ..    internal S
197b0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
197c0 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ng(..        str
197d0 69 6e 67 20 6e 65 77 54 79 70 65 4e 61 6d 65 2c  ing newTypeName,
197e0 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65  ..        DbType
197f0 20 6e 65 77 44 61 74 61 54 79 70 65 2c 0d 0a 20   newDataType,.. 
19800 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 65 77 50         bool newP
19810 72 69 6d 61 72 79 0d 0a 20 20 20 20 20 20 20 20  rimary..        
19820 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
19830 74 79 70 65 4e 61 6d 65 20 3d 20 6e 65 77 54 79  typeName = newTy
19840 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64  peName;..      d
19850 61 74 61 54 79 70 65 20 3d 20 6e 65 77 44 61 74  ataType = newDat
19860 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 70 72  aType;..      pr
19870 69 6d 61 72 79 20 3d 20 6e 65 77 50 72 69 6d 61  imary = newPrima
19880 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ry;..    }....  
19890 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
198a0 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  g typeName;..   
198b0 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65   internal DbType
198c0 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20   dataType;..    
198d0 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 70 72  internal bool pr
198e0 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20  imary;..  }.... 
198f0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
19900 20 63 6c 61 73 73 20 54 79 70 65 4e 61 6d 65 53   class TypeNameS
19910 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20  tringComparer : 
19920 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65  IEqualityCompare
19930 72 3c 73 74 72 69 6e 67 3e 2c 20 49 43 6f 6d 70  r<string>, IComp
19940 61 72 65 72 3c 73 74 72 69 6e 67 3e 0d 0a 20 20  arer<string>..  
19950 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49  {..    #region I
19960 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72  EqualityComparer
19970 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73  <string> Members
19980 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f  ..    public boo
19990 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  l Equals(..     
199a0 20 73 74 72 69 6e 67 20 6c 65 66 74 2c 0d 0a 20   string left,.. 
199b0 20 20 20 20 20 73 74 72 69 6e 67 20 72 69 67 68       string righ
199c0 74 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20  t..      )..    
199d0 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
199e0 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 6c 65  String.Equals(le
199f0 66 74 2c 20 72 69 67 68 74 2c 20 53 74 72 69 6e  ft, right, Strin
19a00 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
19a10 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
19a20 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
19a80 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65 74 48   public int GetH
19a90 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20 20 20  ashCode(..      
19aa0 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20  string value..  
19ab0 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
19ac0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f      //..      //
19ad0 20 4e 4f 54 45 3a 20 54 68 65 20 6f 6e 6c 79 20   NOTE: The only 
19ae0 74 68 69 6e 67 20 74 68 61 74 20 77 65 20 6d 75  thing that we mu
19af0 73 74 20 67 75 61 72 61 6e 74 65 65 20 68 65 72  st guarantee her
19b00 65 2c 20 61 63 63 6f 72 64 69 6e 67 0d 0a 20 20  e, according..  
19b10 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20      //       to 
19b20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e  the MSDN documen
19b30 74 61 74 69 6f 6e 20 66 6f 72 20 49 45 71 75 61  tation for IEqua
19b40 6c 69 74 79 43 6f 6d 70 61 72 65 72 2c 20 69 73  lityComparer, is
19b50 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20  ..      //      
19b60 20 74 68 61 74 20 66 6f 72 20 74 77 6f 20 67 69   that for two gi
19b70 76 65 6e 20 73 74 72 69 6e 67 73 2c 20 69 66 20  ven strings, if 
19b80 45 71 75 61 6c 73 20 72 65 74 75 72 6e 20 74 72  Equals return tr
19b90 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 2f  ue then..      /
19ba0 2f 20 20 20 20 20 20 20 74 68 65 20 74 77 6f 20  /       the two 
19bb0 73 74 72 69 6e 67 73 20 6d 75 73 74 20 68 61 73  strings must has
19bc0 68 20 74 6f 20 74 68 65 20 73 61 6d 65 20 76 61  h to the same va
19bd0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a  lue...      //..
19be0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
19bf0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
19c00 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 43    return StringC
19c10 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c 49  omparer.OrdinalI
19c20 67 6e 6f 72 65 43 61 73 65 2e 47 65 74 48 61 73  gnoreCase.GetHas
19c30 68 43 6f 64 65 28 76 61 6c 75 65 29 3b 0d 0a 20  hCode(value);.. 
19c40 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
19c50 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
19c60 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69  umentNullExcepti
19c70 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20 20  on("value");..  
19c80 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
19c90 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
19ca0 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
19cf0 65 67 69 6f 6e 20 49 43 6f 6d 70 61 72 65 72 3c  egion IComparer<
19d00 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73 0d  string> Members.
19d10 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20  .    public int 
19d20 43 6f 6d 70 61 72 65 28 0d 0a 20 20 20 20 20 20  Compare(..      
19d30 73 74 72 69 6e 67 20 78 2c 0d 0a 20 20 20 20 20  string x,..     
19d40 20 73 74 72 69 6e 67 20 79 0d 0a 20 20 20 20 20   string y..     
19d50 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
19d60 20 69 66 20 28 28 78 20 3d 3d 20 6e 75 6c 6c 29   if ((x == null)
19d70 20 26 26 20 28 79 20 3d 3d 20 6e 75 6c 6c 29 29   && (y == null))
19d80 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
19d90 20 30 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 20   0;..      else 
19da0 69 66 20 28 78 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  if (x == null)..
19db0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d          return -
19dc0 31 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 20 69  1;..      else i
19dd0 66 20 28 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  f (y == null).. 
19de0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b         return 1;
19df0 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20  ..      else..  
19e00 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 2e 43        return x.C
19e10 6f 6d 70 61 72 65 54 6f 28 79 29 3b 0d 0a 20 20  ompareTo(y);..  
19e20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
19e30 69 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a           ion..  }..}..