System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact f50e363299848cb8cfb48e72d001072e49c5307d:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
0380: 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63 6b   DbType Fallback
0390: 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20  DefaultDbType = 
03a0: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d 0a  DbType.Object;..
03b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
03c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
03d0: 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c   fallback defaul
03e0: 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  t database type 
03f0: 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63 61  name when one ca
0400: 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65 64  nnot be obtained
0410: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 61   from..    /// a
0420: 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65  n existing conne
0430: 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d  ction instance..
0440: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0450: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0460: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0470: 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61 63 6b   string Fallback
0480: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20  DefaultTypeName 
0490: 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d  = String.Empty;.
04a0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
04b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
04c0: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
04d0: 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e  Unix epoch (e.g.
04e0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30   January 1, 1970
04f0: 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e   at midnight, in
0500: 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20   UTC)...    /// 
0510: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0520: 70 72 6f 74 65 63 74 65 64 20 73 74 61 74 69 63  protected static
0530: 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69   readonly DateTi
0540: 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a  me UnixEpoch =..
0550: 20 20 20 20 20 20 20 20 6e 65 77 20 44 61 74 65          new Date
0560: 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c  Time(1970, 1, 1,
0570: 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69   0, 0, 0, DateTi
0580: 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a  meKind.Utc);....
0590: 20 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e      #pragma warn
05a0: 69 6e 67 20 64 69 73 61 62 6c 65 20 34 31 34 0d  ing disable 414.
05b0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05c0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
05d0: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c 45  value of the OLE
05e0: 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63   Automation epoc
05f0: 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  h represented as
0600: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 20 20   a Julian day.  
0610: 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 66 69  This..    /// fi
0620: 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  eld cannot be re
0630: 6d 6f 76 65 64 20 61 73 20 74 68 65 20 74 65 73  moved as the tes
0640: 74 20 73 75 69 74 65 20 72 65 6c 69 65 73 20 75  t suite relies u
0650: 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  pon it...    ///
0660: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0670: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0680: 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c 65 20  readonly double 
0690: 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f  OleAutomationEpo
06a0: 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20 3d 20  chAsJulianDay = 
06b0: 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20 20 20 20  2415018.5;..    
06c0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 20  #pragma warning 
06d0: 72 65 73 74 6f 72 65 20 34 31 34 0d 0a 0d 0a 20  restore 414.... 
06e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
06f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f  ..    /// The fo
0700: 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20  rmat string for 
0710: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20  DateTime values 
0720: 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20 49  when using the I
0730: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
0740: 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72  or CurrentCultur
0750: 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20 20  e formats...    
0760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0770: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
0780: 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f 72  t string FullFor
0790: 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d 64  mat = "yyyy-MM-d
07a0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66 66  dTHH:mm:ss.fffff
07b0: 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  ffK";....    ///
07c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
07d0: 2f 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20  /// This is the 
07e0: 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61 6e 20 44  minimum Julian D
07f0: 61 79 20 76 61 6c 75 65 20 73 75 70 70 6f 72 74  ay value support
0800: 65 64 20 62 79 20 74 68 69 73 20 6c 69 62 72 61  ed by this libra
0810: 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28 31 34 38  ry..    /// (148
0820: 37 33 31 31 36 33 32 30 30 30 30 30 29 2e 0d 0a  731163200000)...
0830: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
0840: 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  y>..    private 
0850: 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
0860: 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a 64 20 3d  long MinimumJd =
0870: 20 63 6f 6d 70 75 74 65 4a 44 28 44 61 74 65 54   computeJD(DateT
0880: 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29 3b 0d 0a  ime.MinValue);..
0890: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
08a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
08b0: 73 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  s is the maximum
08c0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
08d0: 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74  e supported by t
08e0: 68 69 73 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  his library..   
08f0: 20 2f 2f 2f 20 28 34 36 34 32 36 39 30 36 30 37   /// (4642690607
0900: 39 39 30 30 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f  99000)...    ///
0910: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0920: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0930: 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67 20 4d 61  readonly long Ma
0940: 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d 70 75 74  ximumJd = comput
0950: 65 4a 44 28 44 61 74 65 54 69 6d 65 2e 4d 61 78  eJD(DateTime.Max
0960: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f  Value);....    /
0970: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0980: 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f    /// An array o
0990: 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54  f ISO-8601 DateT
09a0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74  ime formats that
09b0: 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73   we support pars
09c0: 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
09d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
09e0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
09f0: 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46  ing[] _datetimeF
0a00: 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72  ormats = new str
0a10: 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22  ing[] {..      "
0a20: 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  THHmmssK",..    
0a30: 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20    "THHmmK",..   
0a40: 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46     "HH:mm:ss.FFF
0a50: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
0a60: 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20  HH:mm:ssK",..   
0a70: 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20     "HH:mmK",..  
0a80: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a90: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0aa0: 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43  K", /* NOTE: UTC
0ab0: 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f   default (5). */
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
0ad0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d  -dd HH:mm:ssK",.
0ae0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0af0: 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20  dd HH:mmK",..   
0b00: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
0b10: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0b20: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0b30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-ddTHH:mmK",..
0b40: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0b50: 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20  dTHH:mm:ssK",.. 
0b60: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
0b70: 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22  mmssK",..      "
0b80: 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d  yyyyMMddHHmmK",.
0b90: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ba0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22  THHmmssFFFFFFFK"
0bb0: 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73  ,..      "THHmms
0bc0: 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d  s",..      "THHm
0bd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  m",..      "HH:m
0be0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a  m:ss.FFFFFFF",..
0bf0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22        "HH:mm:ss"
0c00: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22  ,..      "HH:mm"
0c10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0c20: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0c30: 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a  FFFFF", /* NOTE:
0c40: 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74   Non-UTC default
0c50: 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20   (19). */..     
0c60: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
0c70: 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22  mm:ss",..      "
0c80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
0c90: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ca0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
0cb0: 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20  FFFFFF",..      
0cc0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0cd0: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0ce0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22  -MM-ddTHH:mm:ss"
0cf0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d00: 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20  ddHHmmss",..    
0d10: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22    "yyyyMMddHHmm"
0d20: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d  ,..      "yyyyMM
0d30: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
0d40: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0d50: 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22  MM-dd",..      "
0d60: 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20  yyyyMMdd",..    
0d70: 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20    "yy-MM-dd"..  
0d80: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
0d90: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
0da0: 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  // The internal 
0db0: 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66  default format f
0dc0: 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
0dd0: 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76  values when conv
0de0: 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20  erting..    /// 
0df0: 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20  to a string...  
0e00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0e10: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
0e20: 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74  atic readonly st
0e30: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
0e40: 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74  rmatUtc = _datet
0e50: 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a  imeFormats[5];..
0e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e80: 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c   internal defaul
0e90: 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  t format for loc
0ea0: 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
0eb0: 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  es when converti
0ec0: 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61  ng..    /// to a
0ed0: 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f   string...    //
0ee0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0ef0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0f00: 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
0f10: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f20: 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d  Local = _datetim
0f30: 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d  eFormats[19];...
0f40: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0f50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55  y>..    /// An U
0f60: 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e  TF-8 Encoding in
0f70: 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61  stance, so we ca
0f80: 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67  n convert string
0f90: 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54  s to and from UT
0fa0: 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  F-8..    /// </s
0fb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
0fc0: 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f  vate static Enco
0fd0: 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77  ding _utf8 = new
0fe0: 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b   UTF8Encoding();
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1000: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
1010: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
1020: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69  e format for thi
1030: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1040: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1050: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51  .    internal SQ
1060: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
1070: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b  _datetimeFormat;
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1090: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
10a0: 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d   default DateTim
10b0: 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69  eKind for this i
10c0: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54    internal DateT
10f0: 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d  imeKind _datetim
1100: 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20  eKind;..    /// 
1110: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1120: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44  // The default D
1130: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1140: 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69  tring for this i
1150: 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f  nstance...    //
1160: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1170: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
1180: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
1190: 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d  tString = null;.
11a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
11b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74  y>..    /// Init
11c0: 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76  ializes the conv
11d0: 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20  ersion class..  
11e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1200: 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20   name="fmt">The 
1210: 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d  default date/tim
1220: 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20  e format to use 
1230: 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63  for this instanc
1240: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1250: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1260: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
1270: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
1280: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1290: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74  <param name="fmt
12a0: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
12b0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
12c0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
12d0: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
12e0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d   SQLiteConvert(.
12f0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44  .        SQLiteD
1300: 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d  ateFormats fmt,.
1310: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
1320: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
1330: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53       string fmtS
1340: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
1350: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f  ..    {..      _
1360: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d  datetimeFormat =
1370: 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61   fmt;..      _da
1380: 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e  tetimeKind = kin
1390: 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74  d;..      _datet
13a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
13b0: 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20  = fmtString;..  
13c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69    }....    #regi
13d0: 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73  on UTF-8 Convers
13e0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
13f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1400: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1410: 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61  ts a string to a
1420: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62   UTF-8 encoded b
1430: 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20  yte array sized 
1440: 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c  to include a nul
1450: 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68  l-terminating ch
1460: 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f  aracter...    //
1470: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1480: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1490: 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54  e="sourceText">T
14a0: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e  he string to con
14b0: 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70  vert to UTF-8</p
14c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
14d0: 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61  returns>A byte a
14e0: 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  rray containing 
14f0: 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74  the converted st
1500: 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74  ring plus an ext
1510: 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67  ra 0 terminating
1520: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1530: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1540: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1550: 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65  blic static byte
1560: 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67  [] ToUTF8(string
1570: 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20   sourceText)..  
1580: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 73    {..      if (s
1590: 6f 75 72 63 65 54 65 78 74 20 3d 3d 20 6e 75 6c  ourceText == nul
15a0: 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d  l) return null;.
15b0: 0a 20 20 20 20 20 20 42 79 74 65 5b 5d 20 62 79  .      Byte[] by
15c0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 20 20  teArray;..      
15d0: 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38  int nlen = _utf8
15e0: 2e 47 65 74 42 79 74 65 43 6f 75 6e 74 28 73 6f  .GetByteCount(so
15f0: 75 72 63 65 54 65 78 74 29 20 2b 20 31 3b 0d 0a  urceText) + 1;..
1600: 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72 61  ..      byteArra
1610: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 6c 65  y = new byte[nle
1620: 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c 65 6e 20  n];..      nlen 
1630: 3d 20 5f 75 74 66 38 2e 47 65 74 42 79 74 65 73  = _utf8.GetBytes
1640: 28 73 6f 75 72 63 65 54 65 78 74 2c 20 30 2c 20  (sourceText, 0, 
1650: 73 6f 75 72 63 65 54 65 78 74 2e 4c 65 6e 67 74  sourceText.Lengt
1660: 68 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 29  h, byteArray, 0)
1670: 3b 0d 0a 20 20 20 20 20 20 62 79 74 65 41 72 72  ;..      byteArr
1680: 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b 0d 0a 0d  ay[nlen] = 0;...
1690: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79  .      return by
16a0: 74 65 41 72 72 61 79 3b 0d 0a 20 20 20 20 7d 0d  teArray;..    }.
16b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
16c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
16d0: 6e 76 65 72 74 20 61 20 44 61 74 65 54 69 6d 65  nvert a DateTime
16e0: 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f   to a UTF-8 enco
16f0: 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  ded, zero-termin
1700: 61 74 65 64 20 62 79 74 65 20 61 72 72 61 79 2e  ated byte array.
1710: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1720: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
1730: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1740: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
1750: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
1760: 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69 63 68 20  function, which 
1770: 66 69 72 73 74 20 63 61 6c 6c 73 20 54 6f 53 74  first calls ToSt
1780: 72 69 6e 67 28 29 20 6f 6e 20 74 68 65 20 44 61  ring() on the Da
1790: 74 65 54 69 6d 65 2c 20 61 6e 64 20 74 68 65 6e  teTime, and then
17a0: 20 63 61 6c 6c 73 20 54 6f 55 54 46 38 28 29 20   calls ToUTF8() 
17b0: 77 69 74 68 20 74 68 65 0d 0a 20 20 20 20 2f 2f  with the..    //
17c0: 2f 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 2e  / string result.
17d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61  ..    /// </rema
17e0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  rks>..    /// <p
17f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54  aram name="dateT
1800: 69 6d 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61  imeValue">The Da
1810: 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72  teTime to conver
1820: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
1830: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
1840: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73   UTF-8 encoded s
1850: 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64 69 6e 67  tring, including
1860: 20 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67   a 0 terminating
1870: 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64   byte at the end
1880: 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f   of the array.</
1890: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
18a0: 62 6c 69 63 20 62 79 74 65 5b 5d 20 54 6f 55 54  blic byte[] ToUT
18b0: 46 38 28 44 61 74 65 54 69 6d 65 20 64 61 74 65  F8(DateTime date
18c0: 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20 20 20 20  TimeValue)..    
18d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
18e0: 54 6f 55 54 46 38 28 54 6f 53 74 72 69 6e 67 28  ToUTF8(ToString(
18f0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 29 3b  dateTimeValue));
1900: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
1910: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1920: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
1930: 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49   UTF-8 encoded I
1940: 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73 70 65  ntPtr of the spe
1950: 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e  cified length in
1960: 74 6f 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67  to a .NET string
1970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1980: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1990: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
19a0: 65 73 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69  estring">The poi
19b0: 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
19c0: 72 79 20 77 68 65 72 65 20 74 68 65 20 55 54 46  ry where the UTF
19d0: 2d 38 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63  -8 string is enc
19e0: 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  oded</param>..  
19f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a00: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  e="nativestringl
1a10: 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  en">The number o
1a20: 66 20 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64  f bytes to decod
1a30: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
1a40: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74  // <returns>A st
1a50: 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
1a60: 74 68 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63  the translated c
1a70: 68 61 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74  haracter(s)</ret
1a80: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
1a90: 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67  c virtual string
1aa0: 20 54 6f 53 74 72 69 6e 67 28 49 6e 74 50 74 72   ToString(IntPtr
1ab0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20 69   nativestring, i
1ac0: 6e 74 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  nt nativestringl
1ad0: 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  en)..    {..    
1ae0: 20 20 72 65 74 75 72 6e 20 55 54 46 38 54 6f 53    return UTF8ToS
1af0: 74 72 69 6e 67 28 6e 61 74 69 76 65 73 74 72 69  tring(nativestri
1b00: 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67  ng, nativestring
1b10: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  len);..    }....
1b20: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1b30: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
1b40: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f  rts a UTF-8 enco
1b50: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68  ded IntPtr of th
1b60: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1b70: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73  th into a .NET s
1b80: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tring..    /// <
1b90: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1ba0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1bb0: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68  nativestring">Th
1bc0: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1bd0: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68   memory where th
1be0: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69  e UTF-8 string i
1bf0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d  s encoded</param
1c00: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1c10: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74  m name="nativest
1c20: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d  ringlen">The num
1c30: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
1c40: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a  decode</param>..
1c50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1c60: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  >A string contai
1c70: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61  ning the transla
1c80: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29  ted character(s)
1c90: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1ca0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1cb0: 72 69 6e 67 20 55 54 46 38 54 6f 53 74 72 69 6e  ring UTF8ToStrin
1cc0: 67 28 49 6e 74 50 74 72 20 6e 61 74 69 76 65 73  g(IntPtr natives
1cd0: 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76  tring, int nativ
1ce0: 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20  estringlen)..   
1cf0: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61   {..      if (na
1d00: 74 69 76 65 73 74 72 69 6e 67 20 3d 3d 20 49 6e  tivestring == In
1d10: 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20 6e 61 74  tPtr.Zero || nat
1d20: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20  ivestringlen == 
1d30: 30 29 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67  0) return String
1d40: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 69  .Empty;..      i
1d50: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  f (nativestringl
1d60: 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20 20 20 7b  en < 0)..      {
1d70: 0d 0a 20 20 20 20 20 20 20 20 6e 61 74 69 76 65  ..        native
1d80: 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30 3b 0d 0a  stringlen = 0;..
1d90: 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20  ..        while 
1da0: 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 42 79 74  (Marshal.ReadByt
1db0: 65 28 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20  e(nativestring, 
1dc0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29  nativestringlen)
1dd0: 20 21 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   != 0)..        
1de0: 20 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65    nativestringle
1df0: 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n++;....        
1e00: 69 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67  if (nativestring
1e10: 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e  len == 0) return
1e20: 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a   String.Empty;..
1e30: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e40: 20 62 79 74 65 5b 5d 20 62 79 74 65 41 72 72 61   byte[] byteArra
1e50: 79 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 61 74  y = new byte[nat
1e60: 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d 3b 0d 0a  ivestringlen];..
1e70: 0d 0a 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e  ..      Marshal.
1e80: 43 6f 70 79 28 6e 61 74 69 76 65 73 74 72 69 6e  Copy(nativestrin
1e90: 67 2c 20 62 79 74 65 41 72 72 61 79 2c 20 30 2c  g, byteArray, 0,
1ea0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1eb0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
1ec0: 72 6e 20 5f 75 74 66 38 2e 47 65 74 53 74 72 69  rn _utf8.GetStri
1ed0: 6e 67 28 62 79 74 65 41 72 72 61 79 2c 20 30 2c  ng(byteArray, 0,
1ee0: 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e   nativestringlen
1ef0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
1f00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
1f10: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1f60: 20 20 20 20 23 72 65 67 69 6f 6e 20 44 61 74 65      #region Date
1f70: 54 69 6d 65 20 43 6f 6e 76 65 72 73 69 6f 6e 20  Time Conversion 
1f80: 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 23  Functions..    #
1f90: 72 65 67 69 6f 6e 20 4e 65 77 20 4a 75 6c 69 61  region New Julia
1fa0: 6e 20 44 61 79 20 43 6f 6e 76 65 72 73 69 6f 6e  n Day Conversion
1fb0: 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 2f 2f   Methods..    //
1fc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1fd0: 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20 74   /// Checks if t
1fe0: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
1ff0: 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f  e cref="Int64" /
2000: 3e 20 69 73 20 77 69 74 68 69 6e 20 74 68 65 0d  > is within the.
2010: 0a 20 20 20 20 2f 2f 2f 20 73 75 70 70 6f 72 74  .    /// support
2020: 65 64 20 72 61 6e 67 65 20 66 6f 72 20 61 20 4a  ed range for a J
2030: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e  ulian Day value.
2040: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
2050: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
2060: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d  aram name="jd">.
2070: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c  .    /// The Jul
2080: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f  ian Day value to
2090: 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f   check...    ///
20a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
20b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
20c0: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
20d0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
20e0: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
20f0: 20 69 73 20 69 6e 20 74 68 65 20 73 75 70 70 6f   is in the suppo
2100: 72 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 72 61  rted..    /// ra
2110: 6e 67 65 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  nge; otherwise, 
2120: 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  zero...    /// <
2130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2140: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f  rivate static bo
2150: 6f 6c 20 69 73 56 61 6c 69 64 4a 64 28 0d 0a 20  ol isValidJd(.. 
2160: 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d 0a         long jd..
2170: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
2180: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
2190: 20 28 28 6a 64 20 3e 3d 20 4d 69 6e 69 6d 75 6d   ((jd >= Minimum
21a0: 4a 64 29 20 26 26 20 28 6a 64 20 3c 3d 20 4d 61  Jd) && (jd <= Ma
21b0: 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a 20 20 20 20  ximumJd));..    
21c0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2210: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
2220: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
2230: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a 75  // Converts a Ju
2240: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20 66  lian Day value f
2250: 72 6f 6d 20 61 20 3c 73 65 65 20 63 72 65 66 3d  rom a <see cref=
2260: 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74 6f 20 61  "Double" /> to a
2270: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  n..    /// <see 
2280: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 2e  cref="Int64" />.
2290: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
22a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
22b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61  aram name="julia
22c0: 6e 44 61 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nDay">..    /// 
22d0: 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c  The Julian Day <
22e0: 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65  see cref="Double
22f0: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 63 6f  " /> value to co
2300: 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  nvert...    /// 
2310: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
2320: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
2330: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
2340: 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73  ng Julian Day <s
2350: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
2360: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
2370: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
2380: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
2390: 63 20 6c 6f 6e 67 20 44 6f 75 62 6c 65 54 6f 4a  c long DoubleToJ
23a0: 64 28 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62  d(..        doub
23b0: 6c 65 20 6a 75 6c 69 61 6e 44 61 79 0d 0a 20 20  le julianDay..  
23c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
23d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
23e0: 6c 6f 6e 67 29 28 6a 75 6c 69 61 6e 44 61 79 20  long)(julianDay 
23f0: 2a 20 38 36 34 30 30 30 30 30 2e 30 29 3b 0d 0a  * 86400000.0);..
2400: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2460: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2470: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
2480: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
2490: 75 65 20 66 72 6f 6d 20 61 6e 20 3c 73 65 65 20  ue from an <see 
24a0: 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20  cref="Int64" /> 
24b0: 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  to a..    /// <s
24c0: 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
24d0: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   />...    /// </
24e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
24f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
2500: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  d">..    /// The
2510: 20 4a 75 6c 69 61 6e 20 44 61 79 20 3c 73 65 65   Julian Day <see
2520: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
2530: 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
2540: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
2550: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
2560: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
2570: 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 4a   The resulting J
2580: 75 6c 69 61 6e 20 44 61 79 20 3c 73 65 65 20 63  ulian Day <see c
2590: 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20  ref="Double" /> 
25a0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
25b0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
25c0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 64  private static d
25d0: 6f 75 62 6c 65 20 4a 64 54 6f 44 6f 75 62 6c 65  ouble JdToDouble
25e0: 28 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  (..        long 
25f0: 6a 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  jd..        ).. 
2600: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
2610: 74 75 72 6e 20 28 64 6f 75 62 6c 65 29 28 6a 64  turn (double)(jd
2620: 20 2f 20 38 36 34 30 30 30 30 30 2e 30 29 3b 0d   / 86400000.0);.
2630: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
2640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2690: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
26a0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
26b0: 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61   a Julian Day va
26c0: 6c 75 65 20 74 6f 20 61 20 3c 73 65 65 20 63 72  lue to a <see cr
26d0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
26e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
26f0: 6d 65 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73  method was trans
2700: 6c 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22  lated from the "
2710: 63 6f 6d 70 75 74 65 59 4d 44 22 20 66 75 6e 63  computeYMD" func
2720: 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20  tion in the..   
2730: 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22 20 66 69   /// "date.c" fi
2740: 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20  le belonging to 
2750: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
2760: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
2770: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2780: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2790: 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  e="jd">..    ///
27a0: 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61 79 20   The Julian Day 
27b0: 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74  value to convert
27c0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
27d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
27e0: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c  ram name="badVal
27f0: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
2800: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  e <see cref="Dat
2810: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
2820: 74 6f 20 72 65 74 75 72 6e 20 69 6e 20 74 68 65  to return in the
2830: 20 65 76 65 6e 74 20 74 68 61 74 20 74 68 65 0d   event that the.
2840: 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20  .    /// Julian 
2850: 44 61 79 20 69 73 20 6f 75 74 20 6f 66 20 74 68  Day is out of th
2860: 65 20 73 75 70 70 6f 72 74 65 64 20 72 61 6e 67  e supported rang
2870: 65 2e 20 20 49 66 20 74 68 69 73 20 76 61 6c 75  e.  If this valu
2880: 65 20 69 73 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20  e is null,..    
2890: 2f 2f 2f 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  /// an exception
28a0: 20 77 69 6c 6c 20 62 65 20 74 68 72 6f 77 6e 20   will be thrown 
28b0: 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f  instead...    //
28c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
28d0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
28e0: 20 20 20 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72     /// A <see cr
28f0: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
2900: 20 76 61 6c 75 65 20 74 68 61 74 20 63 6f 6e 74   value that cont
2910: 61 69 6e 73 20 74 68 65 20 79 65 61 72 2c 20 6d  ains the year, m
2920: 6f 6e 74 68 2c 20 61 6e 64 0d 0a 20 20 20 20 2f  onth, and..    /
2930: 2f 2f 20 64 61 79 20 76 61 6c 75 65 73 20 74 68  // day values th
2940: 61 74 20 61 72 65 20 63 6c 6f 73 65 73 74 20 74  at are closest t
2950: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
2960: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
2970: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
2980: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
2990: 74 65 20 73 74 61 74 69 63 20 44 61 74 65 54 69  te static DateTi
29a0: 6d 65 20 63 6f 6d 70 75 74 65 59 4d 44 28 0d 0a  me computeYMD(..
29b0: 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 2c          long jd,
29c0: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
29d0: 6d 65 3f 20 62 61 64 56 61 6c 75 65 0d 0a 20 20  me? badValue..  
29e0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
29f0: 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 56          if (!isV
2a00: 61 6c 69 64 4a 64 28 6a 64 29 29 0d 0a 20 20 20  alidJd(jd))..   
2a10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a20: 20 20 20 20 69 66 20 28 62 61 64 56 61 6c 75 65      if (badValue
2a30: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2a40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a50: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
2a60: 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65  new ArgumentExce
2a70: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
2a80: 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74              "Not
2a90: 20 61 20 73 75 70 70 6f 72 74 65 64 20 4a 75 6c   a supported Jul
2aa0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 22 29  ian Day value.")
2ab0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2ac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ad0: 72 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65  return (DateTime
2ae0: 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20  )badValue;..    
2af0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2b00: 20 69 6e 74 20 5a 2c 20 41 2c 20 42 2c 20 43 2c   int Z, A, B, C,
2b10: 20 44 2c 20 45 2c 20 58 31 3b 0d 0a 0d 0a 20 20   D, E, X1;....  
2b20: 20 20 20 20 20 20 5a 20 3d 20 28 69 6e 74 29 28        Z = (int)(
2b30: 28 6a 64 20 2b 20 34 33 32 30 30 30 30 30 29 20  (jd + 43200000) 
2b40: 2f 20 38 36 34 30 30 30 30 30 29 3b 0d 0a 20 20  / 86400000);..  
2b50: 20 20 20 20 20 20 41 20 3d 20 28 69 6e 74 29 28        A = (int)(
2b60: 28 5a 20 2d 20 31 38 36 37 32 31 36 2e 32 35 29  (Z - 1867216.25)
2b70: 20 2f 20 33 36 35 32 34 2e 32 35 29 3b 0d 0a 20   / 36524.25);.. 
2b80: 20 20 20 20 20 20 20 41 20 3d 20 5a 20 2b 20 31         A = Z + 1
2b90: 20 2b 20 41 20 2d 20 28 41 20 2f 20 34 29 3b 0d   + A - (A / 4);.
2ba0: 0a 20 20 20 20 20 20 20 20 42 20 3d 20 41 20 2b  .        B = A +
2bb0: 20 31 35 32 34 3b 0d 0a 20 20 20 20 20 20 20 20   1524;..        
2bc0: 43 20 3d 20 28 69 6e 74 29 28 28 42 20 2d 20 31  C = (int)((B - 1
2bd0: 32 32 2e 31 29 20 2f 20 33 36 35 2e 32 35 29 3b  22.1) / 365.25);
2be0: 0d 0a 20 20 20 20 20 20 20 20 44 20 3d 20 28 33  ..        D = (3
2bf0: 36 35 32 35 20 2a 20 43 29 20 2f 20 31 30 30 3b  6525 * C) / 100;
2c00: 0d 0a 20 20 20 20 20 20 20 20 45 20 3d 20 28 69  ..        E = (i
2c10: 6e 74 29 28 28 42 20 2d 20 44 29 20 2f 20 33 30  nt)((B - D) / 30
2c20: 2e 36 30 30 31 29 3b 0d 0a 20 20 20 20 20 20 20  .6001);..       
2c30: 20 58 31 20 3d 20 28 69 6e 74 29 28 33 30 2e 36   X1 = (int)(30.6
2c40: 30 30 31 20 2a 20 45 29 3b 0d 0a 0d 0a 20 20 20  001 * E);....   
2c50: 20 20 20 20 20 69 6e 74 20 64 61 79 2c 20 6d 6f       int day, mo
2c60: 6e 74 68 2c 20 79 65 61 72 3b 0d 0a 0d 0a 20 20  nth, year;....  
2c70: 20 20 20 20 20 20 64 61 79 20 3d 20 42 20 2d 20        day = B - 
2c80: 44 20 2d 20 58 31 3b 0d 0a 20 20 20 20 20 20 20  D - X1;..       
2c90: 20 6d 6f 6e 74 68 20 3d 20 45 20 3c 20 31 34 20   month = E < 14 
2ca0: 3f 20 45 20 2d 20 31 20 3a 20 45 20 2d 20 31 33  ? E - 1 : E - 13
2cb0: 3b 0d 0a 20 20 20 20 20 20 20 20 79 65 61 72 20  ;..        year 
2cc0: 3d 20 6d 6f 6e 74 68 20 3e 20 32 20 3f 20 43 20  = month > 2 ? C 
2cd0: 2d 20 34 37 31 36 20 3a 20 43 20 2d 20 34 37 31  - 4716 : C - 471
2ce0: 35 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72  5;....        tr
2cf0: 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  y..        {..  
2d00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d10: 20 6e 65 77 20 44 61 74 65 54 69 6d 65 28 79 65   new DateTime(ye
2d20: 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 79 29 3b  ar, month, day);
2d30: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2d40: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2d50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d60: 20 20 20 69 66 20 28 62 61 64 56 61 6c 75 65 20     if (badValue 
2d70: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2d80: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 3b            throw;
2d90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2da0: 72 65 74 75 72 6e 20 28 44 61 74 65 54 69 6d 65  return (DateTime
2db0: 29 62 61 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20  )badValue;..    
2dc0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
2dd0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e20: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
2e30: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
2e40: 6e 76 65 72 74 73 20 61 20 4a 75 6c 69 61 6e 20  nverts a Julian 
2e50: 44 61 79 20 76 61 6c 75 65 20 74 6f 20 61 20 3c  Day value to a <
2e60: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
2e70: 6d 65 22 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f  me" />...    ///
2e80: 20 54 68 69 73 20 6d 65 74 68 6f 64 20 77 61 73   This method was
2e90: 20 74 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d   translated from
2ea0: 20 74 68 65 20 22 63 6f 6d 70 75 74 65 48 4d 53   the "computeHMS
2eb0: 22 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68  " function in th
2ec0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 22 64 61 74 65  e..    /// "date
2ed0: 2e 63 22 20 66 69 6c 65 20 62 65 6c 6f 6e 67 69  .c" file belongi
2ee0: 6e 67 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  ng to the SQLite
2ef0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a   core library...
2f00: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2f10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2f20: 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20  am name="jd">.. 
2f30: 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61     /// The Julia
2f40: 6e 20 44 61 79 20 76 61 6c 75 65 20 74 6f 20 63  n Day value to c
2f50: 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f  onvert...    ///
2f60: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
2f70: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f80: 62 61 64 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20  badValue">..    
2f90: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
2fa0: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
2fb0: 76 61 6c 75 65 20 74 6f 20 72 65 74 75 72 6e 20  value to return 
2fc0: 69 6e 20 74 68 65 20 65 76 65 6e 74 20 74 68 61  in the event tha
2fd0: 74 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 4a  t the..    /// J
2fe0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
2ff0: 69 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 75  is out of the su
3000: 70 70 6f 72 74 65 64 20 72 61 6e 67 65 2e 20 20  pported range.  
3010: 49 66 20 74 68 69 73 20 76 61 6c 75 65 20 69 73  If this value is
3020: 0d 0a 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2c 20  ..    /// null, 
3030: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69 6c  an exception wil
3040: 6c 20 62 65 20 74 68 72 6f 77 6e 20 69 6e 73 74  l be thrown inst
3050: 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ead...    /// </
3060: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
3070: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
3080: 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66 3d 22  // A <see cref="
3090: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
30a0: 75 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  ue that contains
30b0: 20 74 68 65 20 68 6f 75 72 2c 20 6d 69 6e 75 74   the hour, minut
30c0: 65 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  e, and..    /// 
30d0: 73 65 63 6f 6e 64 2c 20 61 6e 64 20 6d 69 6c 6c  second, and mill
30e0: 69 73 65 63 6f 6e 64 20 76 61 6c 75 65 73 20 74  isecond values t
30f0: 68 61 74 20 61 72 65 20 63 6c 6f 73 65 73 74 20  hat are closest 
3100: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
3110: 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e  ..    /// Julian
3120: 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20   Day value...   
3130: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
3140: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
3150: 74 69 63 20 44 61 74 65 54 69 6d 65 20 63 6f 6d  tic DateTime com
3160: 70 75 74 65 48 4d 53 28 0d 0a 20 20 20 20 20 20  puteHMS(..      
3170: 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20    long jd,..    
3180: 20 20 20 20 44 61 74 65 54 69 6d 65 3f 20 62 61      DateTime? ba
3190: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20  dValue..        
31a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
31b0: 20 20 69 66 20 28 21 69 73 56 61 6c 69 64 4a 64    if (!isValidJd
31c0: 28 6a 64 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  (jd))..        {
31d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
31e0: 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75   (badValue == nu
31f0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
3200: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3210: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72      throw new Ar
3220: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28  gumentException(
3230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3240: 20 20 20 20 20 20 22 4e 6f 74 20 61 20 73 75 70        "Not a sup
3250: 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e 20 44 61  ported Julian Da
3260: 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20  y value.");..   
3270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3280: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3290: 20 28 44 61 74 65 54 69 6d 65 29 62 61 64 56 61   (DateTime)badVa
32a0: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lue;..        }.
32b0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 73  ...        int s
32c0: 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 69  i;....        si
32d0: 20 3d 20 28 69 6e 74 29 28 28 6a 64 20 2b 20 34   = (int)((jd + 4
32e0: 33 32 30 30 30 30 30 29 20 25 20 38 36 34 30 30  3200000) % 86400
32f0: 30 30 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  000);....       
3300: 20 64 65 63 69 6d 61 6c 20 73 64 3b 0d 0a 0d 0a   decimal sd;....
3310: 20 20 20 20 20 20 20 20 73 64 20 3d 20 73 69 20          sd = si 
3320: 2f 20 31 30 30 30 2e 30 4d 3b 0d 0a 20 20 20 20  / 1000.0M;..    
3330: 20 20 20 20 73 69 20 3d 20 28 69 6e 74 29 73 64      si = (int)sd
3340: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ;....        int
3350: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 3d 20 28   millisecond = (
3360: 69 6e 74 29 28 28 73 64 20 2d 20 73 69 29 20 2a  int)((sd - si) *
3370: 20 31 30 30 30 2e 30 4d 29 3b 0d 0a 0d 0a 20 20   1000.0M);....  
3380: 20 20 20 20 20 20 73 64 20 2d 3d 20 73 69 3b 0d        sd -= si;.
3390: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 68  ...        int h
33a0: 6f 75 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  our;....        
33b0: 68 6f 75 72 20 3d 20 73 69 20 2f 20 33 36 30 30  hour = si / 3600
33c0: 3b 0d 0a 20 20 20 20 20 20 20 20 73 69 20 2d 3d  ;..        si -=
33d0: 20 68 6f 75 72 20 2a 20 33 36 30 30 3b 0d 0a 0d   hour * 3600;...
33e0: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6d 69 6e  .        int min
33f0: 75 74 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ute;....        
3400: 6d 69 6e 75 74 65 20 3d 20 73 69 20 2f 20 36 30  minute = si / 60
3410: 3b 0d 0a 20 20 20 20 20 20 20 20 73 64 20 2b 3d  ;..        sd +=
3420: 20 73 69 20 2d 20 6d 69 6e 75 74 65 20 2a 20 36   si - minute * 6
3430: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e  0;....        in
3440: 74 20 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29  t second = (int)
3450: 73 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  sd;....        t
3460: 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
3470: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
3480: 69 6d 65 20 6d 69 6e 56 61 6c 75 65 20 3d 20 44  ime minValue = D
3490: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
34a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
34b0: 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65   return new Date
34c0: 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Time(..         
34d0: 20 20 20 20 20 20 20 6d 69 6e 56 61 6c 75 65 2e         minValue.
34e0: 59 65 61 72 2c 20 6d 69 6e 56 61 6c 75 65 2e 4d  Year, minValue.M
34f0: 6f 6e 74 68 2c 20 6d 69 6e 56 61 6c 75 65 2e 44  onth, minValue.D
3500: 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay,..           
3510: 20 20 20 20 20 68 6f 75 72 2c 20 6d 69 6e 75 74       hour, minut
3520: 65 2c 20 73 65 63 6f 6e 64 2c 20 6d 69 6c 6c 69  e, second, milli
3530: 73 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 20 20  second);..      
3540: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74    }..        cat
3550: 63 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ch..        {.. 
3560: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
3570: 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29  adValue == null)
3580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3590: 20 20 74 68 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20    throw;....    
35a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
35b0: 44 61 74 65 54 69 6d 65 29 62 61 64 56 61 6c 75  DateTime)badValu
35c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
35d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f  ///////....    /
3630: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
3640: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
3650: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
3660: 54 69 6d 65 22 20 2f 3e 20 74 6f 20 61 20 4a 75  Time" /> to a Ju
3670: 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d  lian Day value..
3680: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
3690: 74 68 6f 64 20 77 61 73 20 74 72 61 6e 73 6c 61  thod was transla
36a0: 74 65 64 20 66 72 6f 6d 20 74 68 65 20 22 63 6f  ted from the "co
36b0: 6d 70 75 74 65 4a 44 22 20 66 75 6e 63 74 69 6f  mputeJD" functio
36c0: 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  n in..    /// th
36d0: 65 20 22 64 61 74 65 2e 63 22 20 66 69 6c 65 20  e "date.c" file 
36e0: 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65  belonging to the
36f0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
3700: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 53  rary...    /// S
3710: 69 6e 63 65 20 74 68 65 20 72 61 6e 67 65 20 6f  ince the range o
3720: 66 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  f Julian Day val
3730: 75 65 73 20 73 75 70 70 6f 72 74 65 64 20 62 79  ues supported by
3740: 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20   this method..  
3750: 20 20 2f 2f 2f 20 69 6e 63 6c 75 64 65 73 20 61    /// includes a
3760: 6c 6c 20 70 6f 73 73 69 62 6c 65 20 28 76 61 6c  ll possible (val
3770: 69 64 29 20 76 61 6c 75 65 73 20 6f 66 20 61 20  id) values of a 
3780: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
3790: 69 6d 65 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ime" />..    ///
37a0: 20 76 61 6c 75 65 2c 20 69 74 20 73 68 6f 75 6c   value, it shoul
37b0: 64 20 62 65 20 65 78 74 72 65 6d 65 6c 79 20 64  d be extremely d
37c0: 69 66 66 69 63 75 6c 74 20 66 6f 72 20 74 68 69  ifficult for thi
37d0: 73 20 6d 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20  s method to..   
37e0: 20 2f 2f 2f 20 72 61 69 73 65 20 61 6e 20 65 78   /// raise an ex
37f0: 63 65 70 74 69 6f 6e 20 6f 72 20 72 65 74 75 72  ception or retur
3800: 6e 20 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 72  n an undefined r
3810: 65 73 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  esult...    /// 
3820: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3830: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
3840: 22 64 61 74 65 54 69 6d 65 22 3e 0d 0a 20 20 20  "dateTime">..   
3850: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
3860: 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e  ef="DateTime" />
3870: 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72   value to conver
3880: 74 2e 20 20 54 68 69 73 20 76 61 6c 75 65 0d 0a  t.  This value..
3890: 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20      /// will be 
38a0: 77 69 74 68 69 6e 20 74 68 65 20 72 61 6e 67 65  within the range
38b0: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 44   of <see cref="D
38c0: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
38d0: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 28 30  " />..    /// (0
38e0: 30 3a 30 30 3a 30 30 2e 30 30 30 30 30 30 30 2c  0:00:00.0000000,
38f0: 20 4a 61 6e 75 61 72 79 20 31 2c 20 30 30 30 31   January 1, 0001
3900: 29 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  ) to..    /// <s
3910: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
3920: 65 2e 4d 61 78 56 61 6c 75 65 22 20 2f 3e 20 28  e.MaxValue" /> (
3930: 32 33 3a 35 39 3a 35 39 2e 39 39 39 39 39 39 39  23:59:59.9999999
3940: 2c 20 44 65 63 65 6d 62 65 72 0d 0a 20 20 20 20  , December..    
3950: 2f 2f 2f 20 33 31 2c 20 39 39 39 39 29 2e 0d 0a  /// 31, 9999)...
3960: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
3970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
3980: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
3990: 20 6e 65 61 72 65 73 74 20 4a 75 6c 69 61 6e 20   nearest Julian 
39a0: 44 61 79 20 76 61 6c 75 65 20 63 6f 72 72 65 73  Day value corres
39b0: 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 73  ponding to the s
39c0: 70 65 63 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f  pecified..    //
39d0: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  / <see cref="Dat
39e0: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
39f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
3a00: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
3a10: 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 63 6f  e static long co
3a20: 6d 70 75 74 65 4a 44 28 0d 0a 20 20 20 20 20 20  mputeJD(..      
3a30: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 54    DateTime dateT
3a40: 69 6d 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ime..        )..
3a50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
3a60: 6e 74 20 59 2c 20 4d 2c 20 44 3b 0d 0a 0d 0a 20  nt Y, M, D;.... 
3a70: 20 20 20 20 20 20 20 59 20 3d 20 64 61 74 65 54         Y = dateT
3a80: 69 6d 65 2e 59 65 61 72 3b 0d 0a 20 20 20 20 20  ime.Year;..     
3a90: 20 20 20 4d 20 3d 20 64 61 74 65 54 69 6d 65 2e     M = dateTime.
3aa0: 4d 6f 6e 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  Month;..        
3ab0: 44 20 3d 20 64 61 74 65 54 69 6d 65 2e 44 61 79  D = dateTime.Day
3ac0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
3ad0: 28 4d 20 3c 3d 20 32 29 0d 0a 20 20 20 20 20 20  (M <= 2)..      
3ae0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3af0: 20 59 2d 2d 3b 0d 0a 20 20 20 20 20 20 20 20 20   Y--;..         
3b00: 20 20 20 4d 20 2b 3d 20 31 32 3b 0d 0a 20 20 20     M += 12;..   
3b10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
3b20: 20 20 69 6e 74 20 41 2c 20 42 2c 20 58 31 2c 20    int A, B, X1, 
3b30: 58 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41  X2;....        A
3b40: 20 3d 20 59 20 2f 20 31 30 30 3b 0d 0a 20 20 20   = Y / 100;..   
3b50: 20 20 20 20 20 42 20 3d 20 32 20 2d 20 41 20 2b       B = 2 - A +
3b60: 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20   (A / 4);..     
3b70: 20 20 20 58 31 20 3d 20 33 36 35 32 35 20 2a 20     X1 = 36525 * 
3b80: 28 59 20 2b 20 34 37 31 36 29 20 2f 20 31 30 30  (Y + 4716) / 100
3b90: 3b 0d 0a 20 20 20 20 20 20 20 20 58 32 20 3d 20  ;..        X2 = 
3ba0: 33 30 36 30 30 31 20 2a 20 28 4d 20 2b 20 31 29  306001 * (M + 1)
3bb0: 20 2f 20 31 30 30 30 30 3b 0d 0a 0d 0a 20 20 20   / 10000;....   
3bc0: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 3b 0d 0a 0d       long jd;...
3bd0: 0a 20 20 20 20 20 20 20 20 6a 64 20 3d 20 28 6c  .        jd = (l
3be0: 6f 6e 67 29 28 28 58 31 20 2b 20 58 32 20 2b 20  ong)((X1 + X2 + 
3bf0: 44 20 2b 20 42 20 2d 20 31 35 32 34 2e 35 29 20  D + B - 1524.5) 
3c00: 2a 20 38 36 34 30 30 30 30 30 29 3b 0d 0a 0d 0a  * 86400000);....
3c10: 20 20 20 20 20 20 20 20 6a 64 20 2b 3d 20 28 64          jd += (d
3c20: 61 74 65 54 69 6d 65 2e 48 6f 75 72 20 2a 20 33  ateTime.Hour * 3
3c30: 36 30 30 30 30 30 29 20 2b 20 28 64 61 74 65 54  600000) + (dateT
3c40: 69 6d 65 2e 4d 69 6e 75 74 65 20 2a 20 36 30 30  ime.Minute * 600
3c50: 30 30 29 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  00) +..         
3c60: 20 20 20 28 64 61 74 65 54 69 6d 65 2e 53 65 63     (dateTime.Sec
3c70: 6f 6e 64 20 2a 20 31 30 30 30 29 20 2b 20 64 61  ond * 1000) + da
3c80: 74 65 54 69 6d 65 2e 4d 69 6c 6c 69 73 65 63 6f  teTime.Milliseco
3c90: 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  nd;....        r
3ca0: 65 74 75 72 6e 20 6a 64 3b 0d 0a 20 20 20 20 7d  eturn jd;..    }
3cb0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
3cc0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
3d20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
3d30: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
3d40: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
3d50: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44  ime, using the D
3d60: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44  ateTimeFormat, D
3d70: 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20  ateTimeKind,..  
3d80: 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69    /// and DateTi
3d90: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73  meFormatString s
3da0: 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68 65  pecified for the
3db0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e   connection when
3dc0: 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d   it was opened..
3dd0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
3de0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
3df0: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
3e00: 41 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36  Acceptable ISO86
3e10: 30 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d  01 DateTime form
3e20: 61 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f  ats are:..    //
3e30: 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75  / <list type="bu
3e40: 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  llet">..    /// 
3e50: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3e60: 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73  on>THHmmssK</des
3e70: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
3e80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
3e90: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
3ea0: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
3eb0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
3ec0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3ed0: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46  tion>HH:mm:ss.FF
3ee0: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
3ef0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
3f00: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
3f10: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73  ription>HH:mm:ss
3f20: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
3f30: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
3f40: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
3f50: 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72  on>HH:mmK</descr
3f60: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
3f70: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
3f80: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
3f90: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46  MM-dd HH:mm:ss.F
3fa0: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
3fb0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
3fc0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
3fd0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
3fe0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64  -dd HH:mm:ssK</d
3ff0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4000: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4010: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4020: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b  yyy-MM-dd HH:mmK
4030: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4040: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4050: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4060: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
4070: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f  mm:ss.FFFFFFFK</
4080: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4090: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
40a0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
40b0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
40c0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
40d0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
40e0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
40f0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4100: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
4110: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4120: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4130: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
4140: 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69  dHHmmssK</descri
4150: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4160: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4170: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4180: 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70  ddHHmmK</descrip
4190: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
41a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
41b0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
41c0: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b  dTHHmmssFFFFFFFK
41d0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
41e0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
41f0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4200: 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72  n>THHmmss</descr
4210: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4220: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4230: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
4240: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4250: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4260: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4270: 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  n>HH:mm:ss.FFFFF
4280: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
4290: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
42a0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
42b0: 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65  ion>HH:mm:ss</de
42c0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
42d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
42e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
42f0: 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :mm</description
4300: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4310: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4320: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
4330: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
4340: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4350: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4360: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4370: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4380: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
4390: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
43a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
43b0: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
43c0: 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  d HH:mm</descrip
43d0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
43e0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
43f0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
4400: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -ddTHH:mm:ss.FFF
4410: 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFF</descriptio
4420: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4430: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4440: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4450: 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74  THH:mm</descript
4460: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4470: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4480: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4490: 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73  ddTHH:mm:ss</des
44a0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
44b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
44c0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
44d0: 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73  yMMddHHmmss</des
44e0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
44f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4500: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4510: 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72  yMMddHHmm</descr
4520: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4530: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4540: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
4550: 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46  MddTHHmmssFFFFFF
4560: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4570: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4580: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4590: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64  on>yyyy-MM-dd</d
45a0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
45b0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
45c0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
45d0: 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70  yyyMMdd</descrip
45e0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
45f0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4600: 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64  cription>yy-MM-d
4610: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
4620: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4630: 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f  </list>..    ///
4640: 20 49 66 20 74 68 65 20 73 74 72 69 6e 67 20 63   If the string c
4650: 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64  annot be matched
4660: 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61   to one of the a
4670: 62 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52  bove formats -OR
4680: 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 44  -..    /// the D
4690: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72  ateTimeFormatStr
46a0: 69 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20 70  ing if one was p
46b0: 72 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63 65  rovided, an exce
46c0: 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20  ption will..    
46d0: 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a  /// be thrown...
46e0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
46f0: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
4700: 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65 78  am name="dateTex
4710: 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63 6f  t">The string co
4720: 6e 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72 20  ntaining either 
4730: 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e  a long integer n
4740: 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e  umber of 100-nan
4750: 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69  osecond units si
4760: 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73  nce..    /// Sys
4770: 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e  tem.DateTime.Min
4780: 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20  Value, a Julian 
4790: 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69  day double, an i
47a0: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66  nteger number of
47b0: 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74   seconds since t
47c0: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61  he Unix epoch, a
47d0: 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72  ..    /// cultur
47e0: 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f  e-independent fo
47f0: 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64  rmatted date and
4800: 20 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61 20   time string, a 
4810: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
4820: 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69  nd time string i
4830: 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20  n the current.. 
4840: 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20     /// culture, 
4850: 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f  or an ISO8601-fo
4860: 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61  rmat string.</pa
4870: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
4880: 65 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69 6d  eturns>A DateTim
4890: 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73  e value</returns
48a0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61  >..    public Da
48b0: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
48c0: 65 28 73 74 72 69 6e 67 20 64 61 74 65 54 65 78  e(string dateTex
48d0: 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  t)..    {..     
48e0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
48f0: 6d 65 28 64 61 74 65 54 65 78 74 2c 20 5f 64 61  me(dateText, _da
4900: 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64  tetimeFormat, _d
4910: 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61  atetimeKind, _da
4920: 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  tetimeFormatStri
4930: 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ng);..    }.... 
4940: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
4950: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
4960: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
4970: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
4980: 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ng the specified
4990: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c   DateTimeFormat,
49a0: 0d 0a 20 20 20 20 2f 2f 2f 20 44 61 74 65 54 69  ..    /// DateTi
49b0: 6d 65 4b 69 6e 64 20 61 6e 64 20 44 61 74 65 54  meKind and DateT
49c0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 2e  imeFormatString.
49d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
49e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
49f0: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
4a00: 20 41 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38   Acceptable ISO8
4a10: 36 30 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72  601 DateTime for
4a20: 6d 61 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f  mats are:..    /
4a30: 2f 2f 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62  // <list type="b
4a40: 75 6c 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f  ullet">..    ///
4a50: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4a60: 69 6f 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65  ion>THHmmssK</de
4a70: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
4a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
4a90: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
4aa0: 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  HmmK</descriptio
4ab0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4ac0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4ad0: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46  ption>HH:mm:ss.F
4ae0: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
4af0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
4b00: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
4b10: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73  cription>HH:mm:s
4b20: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
4b30: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4b40: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4b50: 69 6f 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  ion>HH:mmK</desc
4b60: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4b70: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4b80: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4b90: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e  -MM-dd HH:mm:ss.
4ba0: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
4bb0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4bc0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4bd0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
4be0: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f  M-dd HH:mm:ssK</
4bf0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4c00: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4c10: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4c20: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
4c30: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4c40: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4c50: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4c60: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4c70: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c  :mm:ss.FFFFFFFK<
4c80: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
4c90: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4ca0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4cb0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
4cc0: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
4cd0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4ce0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4cf0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
4d00: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
4d10: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4d20: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4d30: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4d40: 64 64 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72  ddHHmmssK</descr
4d50: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4d60: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4d70: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
4d80: 4d 64 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69  MddHHmmK</descri
4d90: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4da0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4db0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4dc0: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
4dd0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
4de0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4df0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4e00: 6f 6e 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63  on>THHmmss</desc
4e10: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4e20: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4e30: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
4e40: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
4e50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4e60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4e70: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  on>HH:mm:ss.FFFF
4e80: 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFF</description
4e90: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4ea0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4eb0: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64  tion>HH:mm:ss</d
4ec0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ed0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4ee0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
4ef0: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
4f00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4f10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4f20: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4f30: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
4f40: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4f50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4f60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4f70: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
4f80: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
4f90: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4fa0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4fb0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4fc0: 64 64 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69  dd HH:mm</descri
4fd0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4fe0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4ff0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
5000: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-ddTHH:mm:ss.FF
5010: 46 46 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69  FFFFF</descripti
5020: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5030: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5040: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
5050: 64 54 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70  dTHH:mm</descrip
5060: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
5070: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
5080: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
5090: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65  -ddTHH:mm:ss</de
50a0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
50b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
50c0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
50d0: 79 79 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65  yyMMddHHmmss</de
50e0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
50f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5100: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
5110: 79 79 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63  yyMMddHHmm</desc
5120: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
5130: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
5140: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
5150: 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46  MMddTHHmmssFFFFF
5160: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
5170: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5180: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
5190: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f  ion>yyyy-MM-dd</
51a0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
51b0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
51c0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
51d0: 79 79 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69  yyyyMMdd</descri
51e0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
51f0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
5200: 73 63 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d  scription>yy-MM-
5210: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
5220: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
5230: 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f   </list>..    //
5240: 2f 20 49 66 20 74 68 65 20 73 74 72 69 6e 67 20  / If the string 
5250: 63 61 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65  cannot be matche
5260: 64 20 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20  d to one of the 
5270: 61 62 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f  above formats -O
5280: 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20  R-..    /// the 
5290: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74  DateTimeFormatSt
52a0: 72 69 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20  ring if one was 
52b0: 70 72 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63  provided, an exc
52c0: 65 70 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20  eption will..   
52d0: 20 2f 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d   /// be thrown..
52e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
52f0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ks>..    /// <pa
5300: 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65  ram name="dateTe
5310: 78 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63  xt">The string c
5320: 6f 6e 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72  ontaining either
5330: 20 61 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20   a long integer 
5340: 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61  number of 100-na
5350: 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73  nosecond units s
5360: 69 6e 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79  ince..    /// Sy
5370: 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69  stem.DateTime.Mi
5380: 6e 56 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e  nValue, a Julian
5390: 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20   day double, an 
53a0: 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f  integer number o
53b0: 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20  f seconds since 
53c0: 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20  the Unix epoch, 
53d0: 61 0d 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75  a..    /// cultu
53e0: 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66  re-independent f
53f0: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
5400: 64 20 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61  d time string, a
5410: 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20   formatted date 
5420: 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20  and time string 
5430: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a  in the current..
5440: 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c      /// culture,
5450: 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66   or an ISO8601-f
5460: 6f 72 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70  ormat string.</p
5470: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5480: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d  param name="form
5490: 61 74 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61  at">The SQLiteDa
54a0: 74 65 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65  teFormats to use
54b0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
54c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
54d0: 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69  kind">The DateTi
54e0: 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f  meKind to use.</
54f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5500: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72  <param name="for
5510: 6d 61 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  matString">The D
5520: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
5530: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
5540: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5550: 72 65 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69  returns>A DateTi
5560: 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e  me value</return
5570: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
5580: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54  tatic DateTime T
5590: 6f 44 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20  oDateTime(..    
55a0: 20 20 20 20 73 74 72 69 6e 67 20 64 61 74 65 54      string dateT
55b0: 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 53 51  ext,..        SQ
55c0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
55d0: 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  format,..       
55e0: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69   DateTimeKind ki
55f0: 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72  nd,..        str
5600: 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  ing formatString
5610: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
5620: 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
5630: 63 68 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20  ch (format)..   
5640: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5650: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
5660: 61 74 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73  ateFormats.Ticks
5670: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5690: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
56a0: 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76   ToDateTime(Conv
56b0: 65 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20  ert.ToInt64(..  
56c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56d0: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
56e0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
56f0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b  riantCulture), k
5700: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
5710: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5720: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
5730: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
5740: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
5750: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5770: 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d  return ToDateTim
5780: 65 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62  e(Convert.ToDoub
5790: 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
57a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
57b0: 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e  eText, CultureIn
57c0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
57d0: 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20  ure), kind);..  
57e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
57f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
5800: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
5810: 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a  ats.UnixEpoch:..
5820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5830: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5840: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f         return To
5850: 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74  DateTime(Convert
5860: 2e 54 6f 49 6e 74 33 32 28 0d 0a 20 20 20 20 20  .ToInt32(..     
5870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5880: 20 20 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c     dateText, Cul
5890: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
58a0: 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64  ntCulture), kind
58b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
58c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
58d0: 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61     case SQLiteDa
58e0: 74 65 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69  teFormats.Invari
58f0: 61 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20  antCulture:..   
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5920: 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74      if (formatSt
5930: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  ring != null).. 
5940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5950: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
5960: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
5970: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73  nd(DateTime.Pars
5980: 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20  eExact(..       
5990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59a0: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66       dateText, f
59b0: 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20  ormatString,..  
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59d0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
59e0: 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76  meFormatInfo.Inv
59f0: 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  ariantInfo,..   
5a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a10: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
5a20: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
5a30: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
5a60: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
5a70: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
5a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a90: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
5aa0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
5ad0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5ae0: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
5b10: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
5b20: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
5b30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5b50: 61 74 65 54 65 78 74 2c 20 44 61 74 65 54 69 6d  ateText, DateTim
5b60: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
5b70: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
5b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b90: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
5ba0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
5bb0: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
5bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bd0: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5be0: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
5bf0: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
5c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c10: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5c20: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c40: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
5c50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
5c60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
5c70: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
5c80: 65 46 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74  eFormats.Current
5c90: 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20  Culture:..      
5ca0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cc0: 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e   if (formatStrin
5cd0: 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  g != null)..    
5ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cf0: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
5d00: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
5d10: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78  DateTime.ParseEx
5d20: 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  act(..          
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d    dateText, form
5d50: 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20  atString,..     
5d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d70: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 46         DateTimeF
5d80: 6f 72 6d 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e  ormatInfo.Curren
5d90: 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20  tInfo,..        
5da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5db0: 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65      kind == Date
5dc0: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a  TimeKind.Utc ?..
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5df0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41  DateTimeStyles.A
5e00: 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c  djustToUniversal
5e10: 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e30: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
5e40: 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20  es.None),..     
5e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e60: 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20         kind);.. 
5e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e80: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
5e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ea0: 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65   return DateTime
5eb0: 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74  .SpecifyKind(Dat
5ec0: 65 54 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20  eTime.Parse(..  
5ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ee0: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
5ef0: 78 74 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  xt, DateTimeForm
5f00: 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e  atInfo.CurrentIn
5f10: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f30: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
5f40: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
5f70: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
5f80: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
5f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fb0: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
5fc0: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
5fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fe0: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
6000: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
6010: 6c 74 3a 20 2f 2a 20 49 53 4f 2d 38 36 30 31 20  lt: /* ISO-8601 
6020: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
6030: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6040: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66             if (f
6050: 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e  ormatString != n
6060: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
6080: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
6090: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
60a0: 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a  me.ParseExact(..
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
60d0: 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69  Text, formatStri
60e0: 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng,..           
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6100: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
6110: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
6120: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
6130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6140: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
6150: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
6160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6170: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
6180: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
6190: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61c0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
61d0: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
61e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61f0: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
6200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
6210: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
6220: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6230: 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65  urn DateTime.Spe
6240: 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d  cifyKind(DateTim
6250: 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20  e.ParseExact(.. 
6260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6270: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
6280: 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ext, _datetimeFo
6290: 72 6d 61 74 73 2c 0d 0a 20 20 20 20 20 20 20 20  rmats,..        
62a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62b0: 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d      DateTimeForm
62c0: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
62d0: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62f0: 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54     kind == DateT
6300: 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20  imeKind.Utc ?.. 
6310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6330: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64  ateTimeStyles.Ad
6340: 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20  justToUniversal 
6350: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
6360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6370: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
6380: 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20  s.None),..      
6390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63a0: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
63c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
63d0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
63e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
63f0: 43 6f 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61  Converts a julia
6400: 6e 64 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20  nday value into 
6410: 61 20 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20  a DateTime..    
6420: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
6430: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
6440: 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e  ame="julianDay">
6450: 54 68 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  The value to con
6460: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
6470: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
6480: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
6490: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
64a0: 62 6c 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  blic DateTime To
64b0: 44 61 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20  DateTime(double 
64c0: 6a 75 6c 69 61 6e 44 61 79 29 0d 0a 20 20 20 20  julianDay)..    
64d0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
64e0: 54 6f 44 61 74 65 54 69 6d 65 28 6a 75 6c 69 61  ToDateTime(julia
64f0: 6e 44 61 79 2c 20 5f 64 61 74 65 74 69 6d 65 4b  nDay, _datetimeK
6500: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
6510: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6520: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6530: 72 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20  rts a julianday 
6540: 76 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74  value into a Dat
6550: 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  eTime..    /// <
6560: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6570: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6580: 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76  julianDay">The v
6590: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
65a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
65b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
65c0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
65d0: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
65e0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
65f0: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
6600: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
6610: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
6620: 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44  tic DateTime ToD
6630: 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20  ateTime(..      
6640: 20 20 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44    double julianD
6650: 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74  ay,..        Dat
6660: 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 0d 0a  eTimeKind kind..
6670: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
6680: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a  ..        long j
6690: 64 20 3d 20 44 6f 75 62 6c 65 54 6f 4a 64 28 6a  d = DoubleToJd(j
66a0: 75 6c 69 61 6e 44 61 79 29 3b 0d 0a 20 20 20 20  ulianDay);..    
66b0: 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61 74      DateTime dat
66c0: 65 54 69 6d 65 59 4d 44 20 3d 20 63 6f 6d 70 75  eTimeYMD = compu
66d0: 74 65 59 4d 44 28 6a 64 2c 20 6e 75 6c 6c 29 3b  teYMD(jd, null);
66e0: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
66f0: 6d 65 20 64 61 74 65 54 69 6d 65 48 4d 53 20 3d  me dateTimeHMS =
6700: 20 63 6f 6d 70 75 74 65 48 4d 53 28 6a 64 2c 20   computeHMS(jd, 
6710: 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  null);....      
6720: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74    return new Dat
6730: 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eTime(..        
6740: 20 20 20 20 64 61 74 65 54 69 6d 65 59 4d 44 2e      dateTimeYMD.
6750: 59 65 61 72 2c 20 64 61 74 65 54 69 6d 65 59 4d  Year, dateTimeYM
6760: 44 2e 4d 6f 6e 74 68 2c 20 64 61 74 65 54 69 6d  D.Month, dateTim
6770: 65 59 4d 44 2e 44 61 79 2c 0d 0a 20 20 20 20 20  eYMD.Day,..     
6780: 20 20 20 20 20 20 20 64 61 74 65 54 69 6d 65 48         dateTimeH
6790: 4d 53 2e 48 6f 75 72 2c 20 64 61 74 65 54 69 6d  MS.Hour, dateTim
67a0: 65 48 4d 53 2e 4d 69 6e 75 74 65 2c 20 64 61 74  eHMS.Minute, dat
67b0: 65 54 69 6d 65 48 4d 53 2e 53 65 63 6f 6e 64 2c  eTimeHMS.Second,
67c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61  ..            da
67d0: 74 65 54 69 6d 65 48 4d 53 2e 4d 69 6c 6c 69 73  teTimeHMS.Millis
67e0: 65 63 6f 6e 64 2c 20 6b 69 6e 64 29 3b 0d 0a 20  econd, kind);.. 
67f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
6800: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
6810: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
6820: 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72  specified number
6830: 20 6f 66 20 73 65 63 6f 6e 64 73 20 66 72 6f 6d   of seconds from
6840: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20   the Unix epoch 
6850: 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  into a..    /// 
6860: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6870: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6880: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6890: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
68a0: 61 6d 20 6e 61 6d 65 3d 22 73 65 63 6f 6e 64 73  am name="seconds
68b0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
68c0: 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20  number of whole 
68d0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
68e0: 65 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20  e Unix epoch... 
68f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
6900: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6910: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20  name="kind">..  
6920: 20 20 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63    /// Either Utc
6930: 20 6f 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d   or Local time..
6940: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
6950: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6960: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
6970: 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  e new <see cref=
6980: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
6990: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
69a0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
69b0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61  ternal static Da
69c0: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
69d0: 65 28 69 6e 74 20 73 65 63 6f 6e 64 73 2c 20 44  e(int seconds, D
69e0: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
69f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
6a00: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
6a10: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 55 6e  e.SpecifyKind(Un
6a20: 69 78 45 70 6f 63 68 2e 41 64 64 53 65 63 6f 6e  ixEpoch.AddSecon
6a30: 64 73 28 73 65 63 6f 6e 64 73 29 2c 20 6b 69 6e  ds(seconds), kin
6a40: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
6a50: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6a60: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6a70: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
6a80: 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 20  number of ticks 
6a90: 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63 68 20  since the epoch 
6aa0: 69 6e 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  into a..    /// 
6ab0: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
6ac0: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
6ad0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
6ae0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
6af0: 61 6d 20 6e 61 6d 65 3d 22 74 69 63 6b 73 22 3e  am name="ticks">
6b00: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75  ..    /// The nu
6b10: 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20 74 69  mber of whole ti
6b20: 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20 65 70  cks since the ep
6b30: 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  och...    /// </
6b40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
6b50: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e  <param name="kin
6b60: 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74  d">..    /// Eit
6b70: 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61 6c  her Utc or Local
6b80: 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   time...    /// 
6b90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6ba0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6bb0: 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65   /// The new <se
6bc0: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
6bd0: 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
6be0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
6bf0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
6c00: 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f  atic DateTime To
6c10: 44 61 74 65 54 69 6d 65 28 6c 6f 6e 67 20 74 69  DateTime(long ti
6c20: 63 6b 73 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e  cks, DateTimeKin
6c30: 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a  d kind)..    {..
6c40: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
6c50: 65 77 20 44 61 74 65 54 69 6d 65 28 74 69 63 6b  ew DateTime(tick
6c60: 73 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d  s, kind);..    }
6c70: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
6c80: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
6c90: 6f 6e 76 65 72 74 73 20 61 20 44 61 74 65 54 69  onverts a DateTi
6ca0: 6d 65 20 73 74 72 75 63 74 20 74 6f 20 61 20 4a  me struct to a J
6cb0: 75 6c 69 61 6e 44 61 79 20 64 6f 75 62 6c 65 0d  ulianDay double.
6cc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
6cd0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
6ce0: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
6cf0: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f  >The DateTime to
6d00: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
6d10: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
6d20: 6e 73 3e 54 68 65 20 4a 75 6c 69 61 6e 44 61 79  ns>The JulianDay
6d30: 20 76 61 6c 75 65 20 74 68 65 20 44 61 74 65 74   value the Datet
6d40: 69 6d 65 20 72 65 70 72 65 73 65 6e 74 73 3c 2f  ime represents</
6d50: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
6d60: 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
6d70: 6c 65 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 44  le ToJulianDay(D
6d80: 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a  ateTime value)..
6d90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
6da0: 65 74 75 72 6e 20 4a 64 54 6f 44 6f 75 62 6c 65  eturn JdToDouble
6db0: 28 63 6f 6d 70 75 74 65 4a 44 28 76 61 6c 75 65  (computeJD(value
6dc0: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ));..    }....  
6dd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6de0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
6df0: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72  s a DateTime str
6e00: 75 63 74 20 74 6f 20 74 68 65 20 77 68 6f 6c 65  uct to the whole
6e10: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
6e20: 64 73 20 73 69 6e 63 65 20 74 68 65 0d 0a 20 20  ds since the..  
6e30: 20 20 2f 2f 2f 20 55 6e 69 78 20 65 70 6f 63 68    /// Unix epoch
6e40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6e50: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
6e60: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
6e70: 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  e">The DateTime 
6e80: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
6e90: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6ea0: 75 72 6e 73 3e 54 68 65 20 77 68 6f 6c 65 20 6e  urns>The whole n
6eb0: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
6ec0: 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
6ed0: 65 70 6f 63 68 3c 2f 72 65 74 75 72 6e 73 3e 0d  epoch</returns>.
6ee0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
6ef0: 69 63 20 6c 6f 6e 67 20 54 6f 55 6e 69 78 45 70  ic long ToUnixEp
6f00: 6f 63 68 28 44 61 74 65 54 69 6d 65 20 76 61 6c  och(DateTime val
6f10: 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
6f20: 20 20 20 20 72 65 74 75 72 6e 20 28 76 61 6c 75      return (valu
6f30: 65 2e 53 75 62 74 72 61 63 74 28 55 6e 69 78 45  e.Subtract(UnixE
6f40: 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20 54 69  poch).Ticks / Ti
6f50: 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50 65 72 53  meSpan.TicksPerS
6f60: 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a  econd);..    }..
6f70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
6f80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
6f90: 75 72 6e 73 20 74 68 65 20 44 61 74 65 54 69 6d  urns the DateTim
6fa0: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
6fb0: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 73  to use for the s
6fc0: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
6fd0: 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eKind...    /// 
6fe0: 49 66 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  If <paramref nam
6ff0: 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22  e="formatString"
7000: 20 2f 3e 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c   /> is not null,
7010: 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 74 75   it will be retu
7020: 72 6e 65 64 20 76 65 72 62 61 74 69 6d 2e 0d 0a  rned verbatim...
7030: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
7040: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
7050: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54  am name="kind">T
7060: 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  he DateTimeKind 
7070: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
7080: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7090: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69  name="formatStri
70a0: 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  ng">The DateTime
70b0: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74   format string t
70c0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
70d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
70e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44  >..    /// The D
70f0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
7100: 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f 72  tring to use for
7110: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44   the specified D
7120: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20  ateTimeKind...  
7130: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7140: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
7150: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
7160: 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61  ateTimeKindForma
7170: 74 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  t(..        Date
7180: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a  TimeKind kind,..
7190: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
71a0: 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20  ormatString..   
71b0: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
71c0: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61         if (forma
71d0: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29  tString != null)
71e0: 20 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 53 74   return formatSt
71f0: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 72  ring;..        r
7200: 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d 3d 20 44  eturn (kind == D
7210: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29  ateTimeKind.Utc)
7220: 20 3f 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d   ? _datetimeForm
7230: 61 74 55 74 63 20 3a 20 5f 64 61 74 65 74 69 6d  atUtc : _datetim
7240: 65 46 6f 72 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20  eFormatLocal;.. 
7250: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
7260: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7270: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74  // Converts a st
7280: 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65  ring into a Date
7290: 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20  Time, using the 
72a0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20  DateTimeFormat, 
72b0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20  DateTimeKind,.. 
72c0: 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54     /// and DateT
72d0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
72e0: 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68  specified for th
72f0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65  e connection whe
7300: 6e 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e  n it was opened.
7310: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
7320: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
7330: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56  aram name="dateV
7340: 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69  alue">The DateTi
7350: 6d 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  me value to conv
7360: 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ert</param>..   
7370: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69   /// <returns>Ei
7380: 74 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f  ther a string co
7390: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e  ntaining the lon
73a0: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
73b0: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
73c0: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53  nd units since S
73d0: 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d  ystem.DateTime.M
73e0: 69 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20  inValue, a..    
73f0: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  /// Julian day d
7400: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
7410: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
7420: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
7430: 69 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74  ix epoch, a cult
7440: 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20  ure-independent 
7450: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
7460: 6e 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f  nd time..    ///
7470: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
7480: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
7490: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
74a0: 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
74b0: 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d  , or an ISO8601-
74c0: 66 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65  format date/time
74d0: 20 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e   string.</return
74e0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
74f0: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 44  tring ToString(D
7500: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
7510: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
7520: 20 20 20 72 65 74 75 72 6e 20 54 6f 53 74 72 69     return ToStri
7530: 6e 67 28 64 61 74 65 56 61 6c 75 65 2c 20 5f 64  ng(dateValue, _d
7540: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f  atetimeFormat, _
7550: 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64  datetimeKind, _d
7560: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
7570: 69 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ing);..    }....
7580: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7590: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
75a0: 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74  rts a string int
75b0: 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73  o a DateTime, us
75c0: 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65  ing the DateTime
75d0: 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65  Format, DateTime
75e0: 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61  Kind,..    /// a
75f0: 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  nd DateTimeForma
7600: 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65  tString specifie
7610: 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  d for the connec
7620: 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73  tion when it was
7630: 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f   opened...    //
7640: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7650: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7660: 65 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68  e="dateValue">Th
7670: 65 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  e DateTime value
7680: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
7690: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
76a0: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
76b0: 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61 74 65  ">The SQLiteDate
76c0: 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c  Formats to use.<
76d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
76e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
76f0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
7700: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
7710: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
7720: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61  aram name="forma
7730: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74  tString">The Dat
7740: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72  eTime format str
7750: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ing to use.</par
7760: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
7770: 74 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73  turns>Either a s
7780: 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
7790: 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65   the long intege
77a0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d  r number of 100-
77b0: 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73  nanosecond units
77c0: 20 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61   since System.Da
77d0: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
77e0: 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69   a..    /// Juli
77f0: 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61  an day double, a
7800: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
7810: 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63   of seconds sinc
7820: 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68  e the Unix epoch
7830: 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  , a culture-inde
7840: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
7850: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d  d date and time.
7860: 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c  .    /// string,
7870: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74   a formatted dat
7880: 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e  e and time strin
7890: 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  g in the current
78a0: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
78b0: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64  ISO8601-format d
78c0: 61 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e  ate/time string.
78d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
78e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
78f0: 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 0d 0a  ring ToString(..
7900: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7910: 20 64 61 74 65 56 61 6c 75 65 2c 0d 0a 20 20 20   dateValue,..   
7920: 20 20 20 20 20 53 51 4c 69 74 65 44 61 74 65 46       SQLiteDateF
7930: 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 2c 0d 0a  ormats format,..
7940: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
7950: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
7960: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
7970: 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  tString..       
7980: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
7990: 20 20 20 73 77 69 74 63 68 20 28 66 6f 72 6d 61     switch (forma
79a0: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
79b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
79c0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
79d0: 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 20 20 20  s.Ticks:..      
79e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
79f0: 20 64 61 74 65 56 61 6c 75 65 2e 54 69 63 6b 73   dateValue.Ticks
7a00: 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
7a10: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
7a20: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
7a30: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
7a40: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
7a50: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
7a60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7a70: 54 6f 4a 75 6c 69 61 6e 44 61 79 28 64 61 74 65  ToJulianDay(date
7a80: 56 61 6c 75 65 29 2e 54 6f 53 74 72 69 6e 67 28  Value).ToString(
7a90: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
7aa0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
7ab0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
7ac0: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
7ad0: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
7ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7af0: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 28 64 61  eturn ((long)(da
7b00: 74 65 56 61 6c 75 65 2e 53 75 62 74 72 61 63 74  teValue.Subtract
7b10: 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63 6b  (UnixEpoch).Tick
7b20: 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69 63  s / TimeSpan.Tic
7b30: 6b 73 50 65 72 53 65 63 6f 6e 64 29 29 2e 54 6f  ksPerSecond)).To
7b40: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
7b50: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
7b60: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e  teDateFormats.In
7b70: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d  variantCulture:.
7b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7b90: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
7ba0: 65 2e 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d  e.ToString((form
7bb0: 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c  atString != null
7bc0: 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
7bd0: 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53           formatS
7be0: 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d  tring : FullForm
7bf0: 61 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  at, CultureInfo.
7c00: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
7c10: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7c20: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
7c30: 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75  ormats.CurrentCu
7c40: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
7c50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
7c60: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
7c70: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
7c80: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
7c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ca0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
7cb0: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
7cc0: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
7cd0: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
7ce0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20       default:.. 
7cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
7d00: 65 74 75 72 6e 20 28 64 61 74 65 56 61 6c 75 65  eturn (dateValue
7d10: 2e 4b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d  .Kind == DateTim
7d20: 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65  eKind.Unspecifie
7d30: 64 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  d) ?..          
7d40: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
7d50: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 64  me.SpecifyKind(d
7d60: 61 74 65 56 61 6c 75 65 2c 20 6b 69 6e 64 29 2e  ateValue, kind).
7d70: 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ToString(..     
7d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7d90: 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69     GetDateTimeKi
7da0: 6e 64 46 6f 72 6d 61 74 28 6b 69 6e 64 2c 20 66  ndFormat(kind, f
7db0: 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20  ormatString),.. 
7dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7dd0: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
7de0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
7df0: 43 75 6c 74 75 72 65 29 20 3a 20 64 61 74 65 56  Culture) : dateV
7e00: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 0d 0a  alue.ToString(..
7e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e20: 20 20 20 20 20 20 20 20 47 65 74 44 61 74 65 54          GetDateT
7e30: 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 64 61  imeKindFormat(da
7e40: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c 20 66 6f  teValue.Kind, fo
7e50: 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20  rmatString),..  
7e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e70: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
7e80: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
7e90: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
7ea0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
7eb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7ec0: 0a 20 20 20 20 2f 2f 2f 20 49 6e 74 65 72 6e 61  .    /// Interna
7ed0: 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6f  l function to co
7ee0: 6e 76 65 72 74 20 61 20 55 54 46 2d 38 20 65 6e  nvert a UTF-8 en
7ef0: 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20  coded IntPtr of 
7f00: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65  the specified le
7f10: 6e 67 74 68 20 74 6f 20 61 20 44 61 74 65 54 69  ngth to a DateTi
7f20: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
7f30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
7f40: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
7f50: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 63 6f  /// This is a co
7f60: 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69  nvenience functi
7f70: 6f 6e 2c 20 77 68 69 63 68 20 66 69 72 73 74 20  on, which first 
7f80: 63 61 6c 6c 73 20 54 6f 53 74 72 69 6e 67 28 29  calls ToString()
7f90: 20 6f 6e 20 74 68 65 20 49 6e 74 50 74 72 20 74   on the IntPtr t
7fa0: 6f 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20  o convert it to 
7fb0: 61 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 63  a string, then c
7fc0: 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f  alls..    /// To
7fd0: 44 61 74 65 54 69 6d 65 28 29 20 6f 6e 20 74 68  DateTime() on th
7fe0: 65 20 73 74 72 69 6e 67 20 74 6f 20 72 65 74 75  e string to retu
7ff0: 72 6e 20 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a  rn a DateTime...
8000: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
8010: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
8020: 61 6d 20 6e 61 6d 65 3d 22 70 74 72 22 3e 41 20  am name="ptr">A 
8030: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 55  pointer to the U
8040: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72  TF-8 encoded str
8050: 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ing</param>..   
8060: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
8070: 3d 22 6c 65 6e 22 3e 54 68 65 20 6c 65 6e 67 74  ="len">The lengt
8080: 68 20 69 6e 20 62 79 74 65 73 20 6f 66 20 74 68  h in bytes of th
8090: 65 20 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e  e string</param>
80a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
80b0: 6e 73 3e 54 68 65 20 70 61 72 73 65 64 20 44 61  ns>The parsed Da
80c0: 74 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65  teTime value</re
80d0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
80e0: 72 6e 61 6c 20 44 61 74 65 54 69 6d 65 20 54 6f  rnal DateTime To
80f0: 44 61 74 65 54 69 6d 65 28 49 6e 74 50 74 72 20  DateTime(IntPtr 
8100: 70 74 72 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a 20  ptr, int len).. 
8110: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
8120: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 54 6f  rn ToDateTime(To
8130: 53 74 72 69 6e 67 28 70 74 72 2c 20 6c 65 6e 29  String(ptr, len)
8140: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
8150: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8160: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8170: 20 20 20 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65      /// Smart me
8180: 74 68 6f 64 20 6f 66 20 73 70 6c 69 74 74 69 6e  thod of splittin
8190: 67 20 61 20 73 74 72 69 6e 67 2e 20 20 53 6b 69  g a string.  Ski
81a0: 70 73 20 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e  ps quoted elemen
81b0: 74 73 2c 20 72 65 6d 6f 76 65 73 20 74 68 65 20  ts, removes the 
81c0: 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  quotes...    ///
81d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
81e0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
81f0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c      /// This spl
8200: 69 74 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b  it function work
8210: 73 20 73 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20  s somewhat like 
8220: 74 68 65 20 53 74 72 69 6e 67 2e 53 70 6c 69 74  the String.Split
8230: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74  () function in t
8240: 68 61 74 20 69 74 20 62 72 65 61 6b 73 20 61 70  hat it breaks ap
8250: 61 72 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74  art a string int
8260: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 70 69 65 63 65  o..    /// piece
8270: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
8280: 65 20 70 69 65 63 65 73 20 61 73 20 61 6e 20 61  e pieces as an a
8290: 72 72 61 79 2e 20 20 54 68 65 20 70 72 69 6d 61  rray.  The prima
82a0: 72 79 20 64 69 66 66 65 72 65 6e 63 65 73 20 61  ry differences a
82b0: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
82c0: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
82d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
82e0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e  ><description>On
82f0: 6c 79 20 6f 6e 65 20 63 68 61 72 61 63 74 65 72  ly one character
8300: 20 63 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64   can be provided
8310: 20 61 73 20 61 20 73 65 70 61 72 61 74 6f 72 20   as a separator 
8320: 63 68 61 72 61 63 74 65 72 3c 2f 64 65 73 63 72  character</descr
8330: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
8340: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
8350: 65 73 63 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65  escription>Quote
8360: 64 20 74 65 78 74 20 69 6e 73 69 64 65 20 74 68  d text inside th
8370: 65 20 73 74 72 69 6e 67 20 69 73 20 73 6b 69 70  e string is skip
8380: 70 65 64 20 6f 76 65 72 20 77 68 65 6e 20 73 65  ped over when se
8390: 61 72 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20  arching for the 
83a0: 73 65 70 61 72 61 74 6f 72 2c 20 61 6e 64 20 74  separator, and t
83b0: 68 65 20 71 75 6f 74 65 73 20 61 72 65 20 72 65  he quotes are re
83c0: 6d 6f 76 65 64 2e 3c 2f 64 65 73 63 72 69 70 74  moved.</descript
83d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
83e0: 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20   /// </list>..  
83f0: 20 20 2f 2f 2f 20 54 68 75 73 2c 20 69 66 20 73    /// Thus, if s
8400: 70 6c 69 74 74 69 6e 67 20 74 68 65 20 66 6f 6c  plitting the fol
8410: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f  lowing string lo
8420: 6f 6b 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d  oking for a comm
8430: 61 3a 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  a:<br/>..    ///
8440: 20 4f 6e 65 2c 54 77 6f 2c 20 22 54 68 72 65 65   One,Two, "Three
8450: 2c 20 46 6f 75 72 22 2c 20 46 69 76 65 3c 62 72  , Four", Five<br
8460: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
8470: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
8480: 65 73 75 6c 74 69 6e 67 20 61 72 72 61 79 20 77  esulting array w
8490: 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f  ould contain<br/
84a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f  >..    /// [0] O
84b0: 6e 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ne<br/>..    ///
84c0: 20 5b 31 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20   [1] Two<br/>.. 
84d0: 20 20 20 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65     /// [2] Three
84e0: 2c 20 46 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20  , Four<br/>..   
84f0: 20 2f 2f 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72   /// [3] Five<br
8500: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
8510: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20  >..    /// Note 
8520: 74 68 61 74 20 74 68 65 20 6c 65 61 64 69 6e 67  that the leading
8530: 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 73 70   and trailing sp
8540: 61 63 65 73 20 77 65 72 65 20 72 65 6d 6f 76 65  aces were remove
8550: 64 20 66 72 6f 6d 20 65 61 63 68 20 69 74 65 6d  d from each item
8560: 20 64 75 72 69 6e 67 20 74 68 65 20 73 70 6c 69   during the spli
8570: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
8580: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
8590: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
85a0: 72 63 65 22 3e 53 6f 75 72 63 65 20 73 74 72 69  rce">Source stri
85b0: 6e 67 20 74 6f 20 73 70 6c 69 74 20 61 70 61 72  ng to split apar
85c0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
85d0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
85e0: 73 65 70 61 72 61 74 6f 72 22 3e 53 65 70 61 72  separator">Separ
85f0: 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 3c 2f  ator character</
8600: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
8610: 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69 6e  <returns>A strin
8620: 67 20 61 72 72 61 79 20 6f 66 20 74 68 65 20 73  g array of the s
8630: 70 6c 69 74 20 75 70 20 65 6c 65 6d 65 6e 74 73  plit up elements
8640: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
8650: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
8660: 72 69 6e 67 5b 5d 20 53 70 6c 69 74 28 73 74 72  ring[] Split(str
8670: 69 6e 67 20 73 6f 75 72 63 65 2c 20 63 68 61 72  ing source, char
8680: 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20   separator)..   
8690: 20 7b 0d 0a 20 20 20 20 20 20 63 68 61 72 5b 5d   {..      char[]
86a0: 20 74 6f 6b 73 20 3d 20 6e 65 77 20 63 68 61 72   toks = new char
86b0: 5b 32 5d 20 7b 20 27 5c 22 27 2c 20 73 65 70 61  [2] { '\"', sepa
86c0: 72 61 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20  rator };..      
86d0: 63 68 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65  char[] quot = ne
86e0: 77 20 63 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27  w char[1] { '\"'
86f0: 20 7d 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e   };..      int n
8700: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73   = 0;..      Lis
8710: 74 3c 73 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e  t<string> ls = n
8720: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
8730: 29 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  );..      string
8740: 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69   s;....      whi
8750: 6c 65 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74  le (source.Lengt
8760: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d  h > 0)..      {.
8770: 0a 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75  .        n = sou
8780: 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74  rce.IndexOfAny(t
8790: 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20  oks, n);..      
87a0: 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62    if (n == -1) b
87b0: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69  reak;..        i
87c0: 66 20 28 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20  f (source[n] == 
87d0: 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  toks[0])..      
87e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
87f0: 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65  /source = source
8800: 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a  .Remove(n, 1);..
8810: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f            n = so
8820: 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28  urce.IndexOfAny(
8830: 71 75 6f 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20  quot, n + 1);.. 
8840: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d           if (n =
8850: 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20  = -1)..         
8860: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8870: 2f 2f 73 6f 75 72 63 65 20 3d 20 22 5c 22 22 20  //source = "\"" 
8880: 2b 20 73 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20  + source;..     
8890: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
88a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
88b0: 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20        n++;..    
88c0: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
88d0: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
88e0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  , 1);..        }
88f0: 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
8900: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8910: 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e       s = source.
8920: 53 75 62 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e  Substring(0, n).
8930: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
8940: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
8950: 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71  > 1 && s[0] == q
8960: 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65  uot[0] && s[s.Le
8970: 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30  ngth - 1] == s[0
8980: 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ])..            
8990: 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28  s = s.Substring(
89a0: 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29  1, s.Length - 2)
89b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
89c0: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 53  ource = source.S
89d0: 75 62 73 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e  ubstring(n + 1).
89e0: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
89f0: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
8a00: 3e 20 30 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d  > 0) ls.Add(s);.
8a10: 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 30  .          n = 0
8a20: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
8a30: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 20      }..      if 
8a40: 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e  (source.Length >
8a50: 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   0)..      {..  
8a60: 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65        s = source
8a70: 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20  .Trim();..      
8a80: 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e    if (s.Length >
8a90: 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75   1 && s[0] == qu
8aa0: 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e  ot[0] && s[s.Len
8ab0: 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d  gth - 1] == s[0]
8ac0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d  )..          s =
8ad0: 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20   s.Substring(1, 
8ae0: 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a  s.Length - 2);..
8af0: 20 20 20 20 20 20 20 20 6c 73 2e 41 64 64 28 73          ls.Add(s
8b00: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
8b10: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
8b20: 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73   = new string[ls
8b30: 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20  .Count];..      
8b40: 6c 73 2e 43 6f 70 79 54 6f 28 61 72 2c 20 30 29  ls.CopyTo(ar, 0)
8b50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
8b60: 6e 20 61 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  n ar;..    }....
8b70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8b80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74  >..    /// Split
8b90: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
8ba0: 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74  string into mult
8bb0: 69 70 6c 65 20 73 74 72 69 6e 67 73 20 62 61 73  iple strings bas
8bc0: 65 64 20 6f 6e 20 61 20 73 65 70 61 72 61 74 6f  ed on a separato
8bd0: 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72  r..    /// and r
8be0: 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c  eturns the resul
8bf0: 74 20 61 73 20 61 6e 20 61 72 72 61 79 20 6f 66  t as an array of
8c00: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f   strings...    /
8c10: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8c20: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8c30: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
8c40: 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20   /// The string 
8c50: 74 6f 20 73 70 6c 69 74 20 69 6e 74 6f 20 70 69  to split into pi
8c60: 65 63 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68  eces based on th
8c70: 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72  e separator char
8c80: 61 63 74 65 72 2e 20 20 49 66 0d 0a 20 20 20 20  acter.  If..    
8c90: 2f 2f 2f 20 74 68 69 73 20 73 74 72 69 6e 67 20  /// this string 
8ca0: 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69  is null, null wi
8cb0: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65 74  ll always be ret
8cc0: 75 72 6e 65 64 2e 20 20 49 66 20 74 68 69 73 20  urned.  If this 
8cd0: 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f  string is..    /
8ce0: 2f 2f 20 65 6d 70 74 79 2c 20 61 6e 20 61 72 72  // empty, an arr
8cf0: 61 79 20 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e  ay of zero strin
8d00: 67 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  gs will always b
8d10: 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
8d20: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8d30: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8d40: 6d 65 3d 22 73 65 70 61 72 61 74 6f 72 22 3e 0d  me="separator">.
8d50: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 68 61  .    /// The cha
8d60: 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20 64  racter used to d
8d70: 69 76 69 64 65 20 74 68 65 20 6f 72 69 67 69 6e  ivide the origin
8d80: 61 6c 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 73  al string into s
8d90: 75 62 2d 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20  ub-strings...   
8da0: 20 2f 2f 2f 20 54 68 69 73 20 63 68 61 72 61 63   /// This charac
8db0: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 61 20  ter cannot be a 
8dc0: 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64  backslash or a d
8dd0: 6f 75 62 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68  ouble-quote; oth
8de0: 65 72 77 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20  erwise, no..    
8df0: 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65  /// work will be
8e00: 20 70 65 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e   performed and n
8e10: 75 6c 6c 20 77 69 6c 6c 20 62 65 20 72 65 74 75  ull will be retu
8e20: 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rned...    /// <
8e30: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
8e40: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65   <param name="ke
8e50: 65 70 51 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f  epQuote">..    /
8e60: 2f 2f 20 49 66 20 74 68 69 73 20 70 61 72 61 6d  // If this param
8e70: 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  eter is non-zero
8e80: 2c 20 61 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f  , all double-quo
8e90: 74 65 20 63 68 61 72 61 63 74 65 72 73 20 77 69  te characters wi
8ea0: 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72  ll be..    /// r
8eb0: 65 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 72  etained in the r
8ec0: 65 74 75 72 6e 65 64 20 6c 69 73 74 20 6f 66 20  eturned list of 
8ed0: 73 74 72 69 6e 67 73 3b 20 6f 74 68 65 72 77 69  strings; otherwi
8ee0: 73 65 2c 20 74 68 65 79 20 77 69 6c 6c 20 62 65  se, they will be
8ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65  ..    /// droppe
8f00: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
8f10: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
8f20: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
8f30: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ">..    /// Upon
8f40: 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
8f50: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
8f60: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
8f70: 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69  tain an appropri
8f80: 61 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72  ate..    /// err
8f90: 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
8fa0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
8fb0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8fc0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
8fd0: 77 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  w array of strin
8fe0: 67 73 20 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68  gs or null if th
8ff0: 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 69  e input string i
9000: 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d  s null -OR- the.
9010: 0a 20 20 20 20 2f 2f 2f 20 73 65 70 61 72 61 74  .    /// separat
9020: 6f 72 20 63 68 61 72 61 63 74 65 72 20 69 73 20  or character is 
9030: 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61  a backslash or a
9040: 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f   double-quote -O
9050: 52 2d 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20  R- the string.. 
9060: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20     /// contains 
9070: 61 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 62 61  an unbalanced ba
9080: 63 6b 73 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c  ckslash or doubl
9090: 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  e-quote characte
90a0: 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  r...    /// </re
90b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
90c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
90d0: 6e 67 5b 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a  ng[] NewSplit(..
90e0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
90f0: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 63  alue,..        c
9100: 68 61 72 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a  har separator,..
9110: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65          bool kee
9120: 70 51 75 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20  pQuote,..       
9130: 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
9140: 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  r..        )..  
9150: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e    {..        con
9160: 73 74 20 63 68 61 72 20 45 73 63 61 70 65 43 68  st char EscapeCh
9170: 61 72 20 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20  ar = '\\';..    
9180: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 51      const char Q
9190: 75 6f 74 65 43 68 61 72 20 3d 20 27 5c 22 27 3b  uoteChar = '\"';
91a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
91b0: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
91c0: 20 49 74 20 69 73 20 69 6c 6c 65 67 61 6c 20 66   It is illegal f
91d0: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
91e0: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
91f0: 20 65 69 74 68 65 72 20 61 0d 0a 20 20 20 20 20   either a..     
9200: 20 20 20 2f 2f 20 20 20 20 20 20 20 62 61 63 6b     //       back
9210: 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c  slash or a doubl
9220: 65 2d 71 75 6f 74 65 20 62 65 63 61 75 73 65 20  e-quote because 
9230: 62 6f 74 68 20 6f 66 20 74 68 6f 73 65 20 63 68  both of those ch
9240: 61 72 61 63 74 65 72 73 0d 0a 20 20 20 20 20 20  aracters..      
9250: 20 20 2f 2f 20 20 20 20 20 20 20 61 72 65 20 75    //       are u
9260: 73 65 64 20 66 6f 72 20 65 73 63 61 70 69 6e 67  sed for escaping
9270: 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65 72   other character
9280: 73 20 28 65 2e 67 2e 20 74 68 65 20 73 65 70 61  s (e.g. the sepa
9290: 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  rator..        /
92a0: 2f 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65  /       characte
92b0: 72 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  r)...        //.
92c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 73 65  .        if ((se
92d0: 70 61 72 61 74 6f 72 20 3d 3d 20 45 73 63 61 70  parator == Escap
92e0: 65 43 68 61 72 29 20 7c 7c 20 28 73 65 70 61 72  eChar) || (separ
92f0: 61 74 6f 72 20 3d 3d 20 51 75 6f 74 65 43 68 61  ator == QuoteCha
9300: 72 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  r))..        {..
9310: 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
9320: 72 20 3d 20 22 73 65 70 61 72 61 74 6f 72 20 63  r = "separator c
9330: 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20  haracter cannot 
9340: 62 65 20 74 68 65 20 65 73 63 61 70 65 20 6f 72  be the escape or
9350: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
9360: 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s";..           
9370: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
9380: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9390: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
93a0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
93b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
93c0: 72 72 6f 72 20 3d 20 22 73 74 72 69 6e 67 20 76  rror = "string v
93d0: 61 6c 75 65 20 74 6f 20 73 70 6c 69 74 20 63 61  alue to split ca
93e0: 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a  nnot be null";..
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9400: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
9410: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
9420: 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75  nt length = valu
9430: 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  e.Length;....   
9440: 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
9450: 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
9460: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 73 74     return new st
9470: 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  ring[0];....    
9480: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
9490: 20 6c 69 73 74 20 3d 20 6e 65 77 20 4c 69 73 74   list = new List
94a0: 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20  <string>();..   
94b0: 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
94c0: 65 72 20 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77  er element = new
94d0: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
94e0: 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ;..        int i
94f0: 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20  ndex = 0;..     
9500: 20 20 20 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d     bool escape =
9510: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
9520: 20 62 6f 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61   bool quote = fa
9530: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
9540: 77 68 69 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c  while (index < l
9550: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
9560: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
9570: 68 61 72 20 63 68 61 72 61 63 74 65 72 20 3d 20  har character = 
9580: 76 61 6c 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d  value[index++];.
9590: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
95a0: 66 20 28 65 73 63 61 70 65 29 0d 0a 20 20 20 20  f (escape)..    
95b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
95c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
95e0: 2f 20 48 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e  / HACK: Only con
95f0: 73 69 64 65 72 20 74 68 65 20 65 73 63 61 70 65  sider the escape
9600: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
9610: 20 61 6e 20 61 63 74 75 61 6c 0d 0a 20 20 20 20   an actual..    
9620: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
9630: 20 20 20 20 20 22 65 73 63 61 70 65 22 20 69 66       "escape" if
9640: 20 69 74 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20   it is followed 
9650: 62 79 20 61 20 72 65 73 65 72 76 65 64 20 63 68  by a reserved ch
9660: 61 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20  aracter;..      
9670: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
9680: 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 65 6d     otherwise, em
9690: 69 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  it the original 
96a0: 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72  escape character
96b0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
96c0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
96d0: 68 65 20 63 75 72 72 65 6e 74 20 63 68 61 72 61  he current chara
96e0: 63 74 65 72 20 69 6e 20 61 6e 20 65 66 66 6f 72  cter in an effor
96f0: 74 20 74 6f 20 68 65 6c 70 20 70 72 65 73 65 72  t to help preser
9700: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
9710: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
9720: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
9730: 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20   content...     
9740: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
9750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9760: 66 20 28 28 63 68 61 72 61 63 74 65 72 20 21 3d  f ((character !=
9770: 20 45 73 63 61 70 65 43 68 61 72 29 20 26 26 0d   EscapeChar) &&.
9780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9790: 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72 20       (character 
97a0: 21 3d 20 51 75 6f 74 65 43 68 61 72 29 20 26 26  != QuoteChar) &&
97b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97c0: 20 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72        (character
97d0: 20 21 3d 20 73 65 70 61 72 61 74 6f 72 29 29 0d   != separator)).
97e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
97f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9800: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
9810: 41 70 70 65 6e 64 28 45 73 63 61 70 65 43 68 61  Append(EscapeCha
9820: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9830: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9840: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
9850: 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74  t.Append(charact
9860: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
9870: 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 66        escape = f
9880: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
9890: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
98a0: 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72 61    else if (chara
98b0: 63 74 65 72 20 3d 3d 20 45 73 63 61 70 65 43 68  cter == EscapeCh
98c0: 61 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ar)..           
98d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
98e0: 20 20 20 20 65 73 63 61 70 65 20 3d 20 74 72 75      escape = tru
98f0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
9900: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
9910: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
9920: 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 0d  r == QuoteChar).
9930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9950: 69 66 20 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a  if (keepQuote)..
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9970: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65      element.Appe
9980: 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a  nd(character);..
9990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
99a0: 20 20 71 75 6f 74 65 20 3d 20 21 71 75 6f 74 65    quote = !quote
99b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
99c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
99d0: 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72  se if (character
99e0: 20 3d 3d 20 73 65 70 61 72 61 74 6f 72 29 0d 0a   == separator)..
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
9a10: 66 20 28 71 75 6f 74 65 29 0d 0a 20 20 20 20 20  f (quote)..     
9a20: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a40: 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64    element.Append
9a50: 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20  (character);..  
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a80: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
9a90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
9ab0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
9ac0: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20  oString());..   
9ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ae0: 20 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20   element.Length 
9af0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
9b00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9b10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9b20: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
9b30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9b40: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
9b50: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
9b60: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
9b70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
9b80: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
9b90: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e       // NOTE: An
9ba0: 20 75 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61   unbalanced esca
9bb0: 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72  pe or quote char
9bc0: 61 63 74 65 72 20 69 6e 20 74 68 65 20 73 74 72  acter in the str
9bd0: 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ing is..        
9be0: 2f 2f 20 20 20 20 20 20 20 63 6f 6e 73 69 64 65  //       conside
9bf0: 72 65 64 20 74 6f 20 62 65 20 61 20 66 61 74 61  red to be a fata
9c00: 6c 20 65 72 72 6f 72 3b 20 74 68 65 72 65 66 6f  l error; therefo
9c10: 72 65 2c 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e  re, return null.
9c20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
9c30: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
9c40: 20 7c 7c 20 71 75 6f 74 65 29 0d 0a 20 20 20 20   || quote)..    
9c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9c60: 20 20 20 65 72 72 6f 72 20 3d 20 22 75 6e 62 61     error = "unba
9c70: 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f 72  lanced escape or
9c80: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
9c90: 20 66 6f 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20   found";..      
9ca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
9cb0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
9cc0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65  .        if (ele
9cd0: 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29  ment.Length > 0)
9ce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69  ..            li
9cf0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
9d00: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20  oString());.... 
9d10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69         return li
9d20: 73 74 2e 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20  st.ToArray();.. 
9d30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
9d40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
9d50: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
9d60: 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e  eturns the strin
9d70: 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
9d80: 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63 74 2c 20   for an object, 
9d90: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f  using the..    /
9da0: 2f 2f 20 73 70 65 63 69 66 69 65 64 20 28 6f 72  // specified (or
9db0: 20 63 75 72 72 65 6e 74 29 20 66 6f 72 6d 61 74   current) format
9dc0: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
9dd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
9de0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
9df0: 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20  ame="obj">..    
9e00: 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 69  /// The object i
9e10: 6e 73 74 61 6e 63 65 20 74 6f 20 72 65 74 75 72  nstance to retur
9e20: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70  n the string rep
9e30: 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 2e  resentation for.
9e40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
9e50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
9e60: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65  am name="provide
9e70: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  r">..    /// The
9e80: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9e90: 20 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c   to use -OR- nul
9ea0: 6c 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74  l if the current
9eb0: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
9ec0: 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 74 68   for..    /// th
9ed0: 65 20 74 68 72 65 61 64 20 73 68 6f 75 6c 64 20  e thread should 
9ee0: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e  be used instead.
9ef0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
9f00: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
9f10: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
9f20: 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73  he string repres
9f30: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
9f40: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
9f50: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
9f60: 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63  e..    /// objec
9f70: 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 61 6c  t instance is al
9f80: 73 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f  so null...    //
9f90: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
9fa0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
9fb0: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 57  string ToStringW
9fc0: 69 74 68 50 72 6f 76 69 64 65 72 28 0d 0a 20 20  ithProvider(..  
9fd0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a        object obj
9fe0: 2c 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d  ,..        IForm
9ff0: 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69  atProvider provi
a000: 64 65 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  der..        )..
a010: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
a020: 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d  f (obj == null).
a030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
a040: 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 6e 75 6c  urn null; /* nul
a050: 6c 20 2d 2d 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d  l --> null */...
a060: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
a070: 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
a080: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a090: 28 73 74 72 69 6e 67 29 6f 62 6a 3b 20 2f 2a 20  (string)obj; /* 
a0a0: 69 64 65 6e 74 69 74 79 20 2a 2f 0d 0a 0d 0a 20  identity */.... 
a0b0: 20 20 20 20 20 20 20 49 43 6f 6e 76 65 72 74 69         IConverti
a0c0: 62 6c 65 20 63 6f 6e 76 65 72 74 69 62 6c 65 20  ble convertible 
a0d0: 3d 20 6f 62 6a 20 61 73 20 49 43 6f 6e 76 65 72  = obj as IConver
a0e0: 74 69 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tible;....      
a0f0: 20 20 69 66 20 28 63 6f 6e 76 65 72 74 69 62 6c    if (convertibl
a100: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
a110: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
a120: 6f 6e 76 65 72 74 69 62 6c 65 2e 54 6f 53 74 72  onvertible.ToStr
a130: 69 6e 67 28 70 72 6f 76 69 64 65 72 29 3b 0d 0a  ing(provider);..
a140: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
a150: 20 6f 62 6a 2e 54 6f 53 74 72 69 6e 67 28 29 3b   obj.ToString();
a160: 20 2f 2a 20 6e 6f 74 20 49 43 6f 6e 76 65 72 74   /* not IConvert
a170: 69 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ible */..    }..
a180: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
a190: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74  ry>..    /// Att
a1a0: 65 6d 70 74 73 20 74 6f 20 63 6f 6e 76 65 72 74  empts to convert
a1b0: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 6f 62   an arbitrary ob
a1c0: 6a 65 63 74 20 74 6f 20 74 68 65 20 42 6f 6f 6c  ject to the Bool
a1d0: 65 61 6e 20 64 61 74 61 20 74 79 70 65 2e 0d 0a  ean data type...
a1e0: 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 6f 62 6a      /// Null obj
a1f0: 65 63 74 20 76 61 6c 75 65 73 20 61 72 65 20 63  ect values are c
a200: 6f 6e 76 65 72 74 65 64 20 74 6f 20 66 61 6c 73  onverted to fals
a210: 65 2e 20 20 54 68 72 6f 77 73 20 61 6e 20 65 78  e.  Throws an ex
a220: 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  ception..    ///
a230: 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
a240: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a250: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
a260: 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a  am name="obj">..
a270: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
a280: 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  ct value to conv
a290: 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ert...    /// </
a2a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
a2b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
a2c0: 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f  vider">..    ///
a2d0: 20 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f 76   The format prov
a2e0: 69 64 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20  ider to use...  
a2f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a300: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a310: 61 6d 65 3d 22 76 69 61 46 72 61 6d 65 77 6f 72  ame="viaFramewor
a320: 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  k">..    /// If 
a330: 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 20 73 74 72 69  non-zero, a stri
a340: 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  ng value will be
a350: 20 63 6f 6e 76 65 72 74 65 64 20 75 73 69 6e 67   converted using
a360: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
a370: 65 65 20 63 72 65 66 3d 22 43 6f 6e 76 65 72 74  ee cref="Convert
a380: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 4f 62 6a 65 63  .ToBoolean(Objec
a390: 74 2c 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  t, IFormatProvid
a3a0: 65 72 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  er)" />..    ///
a3b0: 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
a3c0: 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
a3d0: 66 3d 22 54 6f 42 6f 6f 6c 65 61 6e 28 53 74 72  f="ToBoolean(Str
a3e0: 69 6e 67 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  ing)" />..    //
a3f0: 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  / method will be
a400: 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20   used...    /// 
a410: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
a420: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
a430: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
a440: 65 64 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  ed boolean value
a450: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
a460: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
a470: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
a480: 54 6f 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20  ToBoolean(..    
a490: 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d      object obj,.
a4a0: 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74  .        IFormat
a4b0: 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65  Provider provide
a4c0: 72 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  r,..        bool
a4d0: 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 0d 0a 20   viaFramework.. 
a4e0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
a4f0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
a500: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a510: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
a520: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
a530: 54 79 70 65 43 6f 64 65 20 74 79 70 65 43 6f 64  TypeCode typeCod
a540: 65 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  e = Type.GetType
a550: 43 6f 64 65 28 6f 62 6a 2e 47 65 74 54 79 70 65  Code(obj.GetType
a560: 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ());....        
a570: 73 77 69 74 63 68 20 28 74 79 70 65 43 6f 64 65  switch (typeCode
a580: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a590: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
a5a0: 79 70 65 43 6f 64 65 2e 45 6d 70 74 79 3a 0d 0a  ypeCode.Empty:..
a5b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
a5c0: 20 54 79 70 65 43 6f 64 65 2e 44 42 4e 75 6c 6c   TypeCode.DBNull
a5d0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
a5e0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
a5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
a600: 73 65 20 54 79 70 65 43 6f 64 65 2e 42 6f 6f 6c  se TypeCode.Bool
a610: 65 61 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ean:..          
a620: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 62 6f        return (bo
a630: 6f 6c 29 6f 62 6a 3b 0d 0a 20 20 20 20 20 20 20  ol)obj;..       
a640: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a650: 64 65 2e 43 68 61 72 3a 0d 0a 20 20 20 20 20 20  de.Char:..      
a660: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a670: 20 28 28 63 68 61 72 29 6f 62 6a 29 20 21 3d 20   ((char)obj) != 
a680: 28 63 68 61 72 29 30 20 3f 20 74 72 75 65 20 3a  (char)0 ? true :
a690: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a6a0: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
a6b0: 64 65 2e 53 42 79 74 65 3a 0d 0a 20 20 20 20 20  de.SByte:..     
a6c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a6d0: 6e 20 28 28 73 62 79 74 65 29 6f 62 6a 29 20 21  n ((sbyte)obj) !
a6e0: 3d 20 28 73 62 79 74 65 29 30 20 3f 20 74 72 75  = (sbyte)0 ? tru
a6f0: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a700: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a710: 65 43 6f 64 65 2e 42 79 74 65 3a 0d 0a 20 20 20  eCode.Byte:..   
a720: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
a730: 75 72 6e 20 28 28 62 79 74 65 29 6f 62 6a 29 20  urn ((byte)obj) 
a740: 21 3d 20 28 62 79 74 65 29 30 20 3f 20 74 72 75  != (byte)0 ? tru
a750: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
a760: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
a770: 65 43 6f 64 65 2e 49 6e 74 31 36 3a 0d 0a 20 20  eCode.Int16:..  
a780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a790: 74 75 72 6e 20 28 28 73 68 6f 72 74 29 6f 62 6a  turn ((short)obj
a7a0: 29 20 21 3d 20 28 73 68 6f 72 74 29 30 20 3f 20  ) != (short)0 ? 
a7b0: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
a7c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
a7d0: 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 31 36 3a  TypeCode.UInt16:
a7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a7f0: 20 20 72 65 74 75 72 6e 20 28 28 75 73 68 6f 72    return ((ushor
a800: 74 29 6f 62 6a 29 20 21 3d 20 28 75 73 68 6f 72  t)obj) != (ushor
a810: 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  t)0 ? true : fal
a820: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
a830: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49   case TypeCode.I
a840: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
a850: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a860: 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 69 6e 74  int)obj) != (int
a870: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
a880: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a890: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49  case TypeCode.UI
a8a0: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
a8b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
a8c0: 75 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 75 69  uint)obj) != (ui
a8d0: 6e 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  nt)0 ? true : fa
a8e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
a8f0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
a900: 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20  Int64:..        
a910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
a920: 28 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 6c  (long)obj) != (l
a930: 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20 66  ong)0 ? true : f
a940: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
a950: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
a960: 2e 55 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20  .UInt64:..      
a970: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
a980: 20 28 28 75 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d   ((ulong)obj) !=
a990: 20 28 75 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65   (ulong)0 ? true
a9a0: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
a9b0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
a9c0: 43 6f 64 65 2e 53 69 6e 67 6c 65 3a 0d 0a 20 20  Code.Single:..  
a9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
a9e0: 74 75 72 6e 20 28 28 66 6c 6f 61 74 29 6f 62 6a  turn ((float)obj
a9f0: 29 20 21 3d 20 28 66 6c 6f 61 74 29 30 2e 30 20  ) != (float)0.0 
aa00: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
aa10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
aa20: 65 20 54 79 70 65 43 6f 64 65 2e 44 6f 75 62 6c  e TypeCode.Doubl
aa30: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
aa40: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 6f 75      return ((dou
aa50: 62 6c 65 29 6f 62 6a 29 20 21 3d 20 28 64 6f 75  ble)obj) != (dou
aa60: 62 6c 65 29 30 2e 30 20 3f 20 74 72 75 65 20 3a  ble)0.0 ? true :
aa70: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
aa80: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
aa90: 64 65 2e 44 65 63 69 6d 61 6c 3a 0d 0a 20 20 20  de.Decimal:..   
aaa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
aab0: 75 72 6e 20 28 28 64 65 63 69 6d 61 6c 29 6f 62  urn ((decimal)ob
aac0: 6a 29 20 21 3d 20 44 65 63 69 6d 61 6c 2e 5a 65  j) != Decimal.Ze
aad0: 72 6f 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  ro ? true : fals
aae0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
aaf0: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53 74  case TypeCode.St
ab00: 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20  ring:..         
ab10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 69         return vi
ab20: 61 46 72 61 6d 65 77 6f 72 6b 20 3f 0d 0a 20 20  aFramework ?..  
ab30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab40: 20 20 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c    Convert.ToBool
ab50: 65 61 6e 28 6f 62 6a 2c 20 70 72 6f 76 69 64 65  ean(obj, provide
ab60: 72 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  r) :..          
ab70: 20 20 20 20 20 20 20 20 20 20 54 6f 42 6f 6f 6c            ToBool
ab80: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
ab90: 50 72 6f 76 69 64 65 72 28 6f 62 6a 2c 20 70 72  Provider(obj, pr
aba0: 6f 76 69 64 65 72 29 29 3b 0d 0a 20 20 20 20 20  ovider));..     
abb0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
abc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
abd0: 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
abe0: 65 45 78 63 65 70 74 69 6f 6e 28 55 6e 73 61 66  eException(Unsaf
abf0: 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53  eNativeMethods.S
ac00: 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20  tringFormat(..  
ac10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac20: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
ac30: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
ac40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac50: 20 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65     "Cannot conve
ac60: 72 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20 62  rt type {0} to b
ac70: 6f 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20  oolean",..      
ac80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
ac90: 70 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20  peCode));..     
aca0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
acb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
acc0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
acd0: 74 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72 75  t a value to tru
ace0: 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20  e or false...   
acf0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
ad00: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
ad10: 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41 20  name="source">A 
ad20: 73 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72  string or number
ad30: 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72   representing tr
ad40: 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72  ue or false</par
ad50: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
ad60: 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e  turns></returns>
ad70: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
ad80: 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65  tic bool ToBoole
ad90: 61 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63 65  an(object source
ada0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
adb0: 69 66 20 28 73 6f 75 72 63 65 20 69 73 20 62 6f  if (source is bo
adc0: 6f 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c  ol) return (bool
add0: 29 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20  )source;....    
ade0: 20 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65    return ToBoole
adf0: 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68 50  an(ToStringWithP
ae00: 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20  rovider(..      
ae10: 20 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c 74      source, Cult
ae20: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
ae30: 74 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20  tCulture));..   
ae40: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
ae50: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
ae60: 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 69 6e   Convert a strin
ae70: 67 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c  g to true or fal
ae80: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
ae90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
aea0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
aeb0: 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 72  urce">A string r
aec0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65  epresenting true
aed0: 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d   or false</param
aee0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
aef0: 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  rns></returns>..
af00: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
af10: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 65 73 22  >..    /// "yes"
af20: 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22  , "no", "y", "n"
af30: 2c 20 22 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22  , "0", "1", "on"
af40: 2c 20 22 6f 66 66 22 20 61 73 20 77 65 6c 6c 20  , "off" as well 
af50: 61 73 20 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65  as Boolean.False
af60: 53 74 72 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65  String and Boole
af70: 61 6e 2e 54 72 75 65 53 74 72 69 6e 67 20 77 69  an.TrueString wi
af80: 6c 6c 20 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f  ll all be..    /
af90: 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  // converted to 
afa0: 61 20 70 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e  a proper boolean
afb0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
afc0: 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20   </remarks>..   
afd0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
afe0: 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74  ool ToBoolean(st
aff0: 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20 20  ring source)..  
b000: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 53    {..      if (S
b010: 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f  tring.Compare(so
b020: 75 72 63 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53  urce, bool.TrueS
b030: 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d  tring, StringCom
b040: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b050: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b060: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
b070: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53 74       else if (St
b080: 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75  ring.Compare(sou
b090: 72 63 65 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53  rce, bool.FalseS
b0a0: 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d  tring, StringCom
b0b0: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
b0c0: 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29  gnoreCase) == 0)
b0d0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
b0e0: 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68 28 73  ..      switch(s
b0f0: 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75  ource.ToLower(Cu
b100: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
b110: 61 6e 74 43 75 6c 74 75 72 65 29 29 0d 0a 20 20  antCulture))..  
b120: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63      {..        c
b130: 61 73 65 20 22 79 65 73 22 3a 0d 0a 20 20 20 20  ase "yes":..    
b140: 20 20 20 20 63 61 73 65 20 22 79 22 3a 0d 0a 20      case "y":.. 
b150: 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22 3a         case "1":
b160: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b170: 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  on":..          
b180: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
b190: 20 20 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a        case "no":
b1a0: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
b1b0: 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  n":..        cas
b1c0: 65 20 22 30 22 3a 0d 0a 20 20 20 20 20 20 20 20  e "0":..        
b1d0: 63 61 73 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20  case "off":..   
b1e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
b1f0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 64 65  lse;..        de
b200: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
b210: 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
b220: 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 73  mentException("s
b230: 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 20 20  ource");..      
b240: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
b250: 23 72 65 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e  #region Type Con
b260: 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  versions..    //
b270: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b280: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
b290: 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20 61 20  SQLiteType to a 
b2a0: 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a 65 63 74  .NET Type object
b2b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
b2c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
b2d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68  aram name="t">Th
b2e0: 65 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20  e SQLiteType to 
b2f0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
b300: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
b310: 73 3e 52 65 74 75 72 6e 73 20 61 20 2e 4e 45 54  s>Returns a .NET
b320: 20 54 79 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65   Type object</re
b330: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
b340: 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65  rnal static Type
b350: 20 53 51 4c 69 74 65 54 79 70 65 54 6f 54 79 70   SQLiteTypeToTyp
b360: 65 28 53 51 4c 69 74 65 54 79 70 65 20 74 29 0d  e(SQLiteType t).
b370: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
b380: 20 28 74 2e 54 79 70 65 20 3d 3d 20 44 62 54 79   (t.Type == DbTy
b390: 70 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20  pe.Object)..    
b3a0: 20 20 20 20 72 65 74 75 72 6e 20 5f 61 66 66 69      return _affi
b3b0: 6e 69 74 79 74 6f 74 79 70 65 5b 28 69 6e 74 29  nitytotype[(int)
b3c0: 74 2e 41 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20  t.Affinity];..  
b3d0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
b3e0: 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43    return SQLiteC
b3f0: 6f 6e 76 65 72 74 2e 44 62 54 79 70 65 54 6f 54  onvert.DbTypeToT
b400: 79 70 65 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20  ype(t.Type);..  
b410: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
b420: 74 65 20 73 74 61 74 69 63 20 54 79 70 65 5b 5d  te static Type[]
b430: 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70 65   _affinitytotype
b440: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65   = {..      type
b450: 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f  of(object),   //
b460: 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 28   Uninitialized (
b470: 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  0)..      typeof
b480: 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49  (Int64),    // I
b490: 6e 74 36 34 20 28 31 29 0d 0a 20 20 20 20 20 20  nt64 (1)..      
b4a0: 74 79 70 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20  typeof(Double), 
b4b0: 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d    // Double (2).
b4c0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
b4d0: 72 69 6e 67 29 2c 20 20 20 2f 2f 20 54 65 78 74  ring),   // Text
b4e0: 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (3)..      type
b4f0: 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f  of(byte[]),   //
b500: 20 42 6c 6f 62 20 28 34 29 0d 0a 20 20 20 20 20   Blob (4)..     
b510: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c   typeof(object),
b520: 20 20 20 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a     // Null (5)..
b530: 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74        typeof(Dat
b540: 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54  eTime), // DateT
b550: 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20 20  ime (10)..      
b560: 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20 20  typeof(object)  
b570: 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a    // None (11)..
b580: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
b590: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b5a0: 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e   /// For a given
b5b0: 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65 2c   intrinsic type,
b5c0: 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70 65   return a DbType
b5d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
b5e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
b5f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
b600: 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65 20  The native type 
b610: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
b620: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
b630: 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73 70  urns>The corresp
b640: 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74 20  onding (closest 
b650: 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f 72  match) DbType</r
b660: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
b670: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54  ernal static DbT
b680: 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70 65  ype TypeToDbType
b690: 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  (Type typ)..    
b6a0: 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64  {..      TypeCod
b6b0: 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54  e tc = Type.GetT
b6c0: 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20  ypeCode(typ);.. 
b6d0: 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54       if (tc == T
b6e0: 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d  ypeCode.Object).
b6f0: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
b700: 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70    if (typ == typ
b710: 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65 74  eof(byte[])) ret
b720: 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61 72  urn DbType.Binar
b730: 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  y;..        if (
b740: 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75  typ == typeof(Gu
b750: 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54 79  id)) return DbTy
b760: 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20 20  pe.Guid;..      
b770: 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e    return DbType.
b780: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d  String;..      }
b790: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
b7a0: 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69 6e  typetodbtype[(in
b7b0: 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  t)tc];..    }...
b7c0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
b7d0: 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74 79  tic DbType[] _ty
b7e0: 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a  petodbtype = {..
b7f0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a        DbType.Obj
b800: 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20  ect,   // Empty 
b810: 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (0)..      DbTyp
b820: 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f  e.Binary,   // O
b830: 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20  bject (1)..     
b840: 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20   DbType.Object, 
b850: 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d    // DBNull (2).
b860: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 6f  .      DbType.Bo
b870: 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65  olean,  // Boole
b880: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44 62  an (3)..      Db
b890: 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20 2f  Type.SByte,    /
b8a0: 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20  / Char (4)..    
b8b0: 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20    DbType.SByte, 
b8c0: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d     // SByte (5).
b8d0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 79  .      DbType.By
b8e0: 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20  te,     // Byte 
b8f0: 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (6)..      DbTyp
b900: 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49  e.Int16,    // I
b910: 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20  nt16 (7)..      
b920: 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 20  DbType.UInt16,  
b930: 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a   // UInt16 (8)..
b940: 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74        DbType.Int
b950: 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20  32,    // Int32 
b960: 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (9)..      DbTyp
b970: 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55  e.UInt32,   // U
b980: 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20  Int32 (10)..    
b990: 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20    DbType.Int64, 
b9a0: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29     // Int64 (11)
b9b0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
b9c0: 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74  Int64,   // UInt
b9d0: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44  64 (12)..      D
b9e0: 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20  bType.Single,   
b9f0: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a  // Single (13)..
ba00: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f 75        DbType.Dou
ba10: 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65  ble,   // Double
ba20: 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62 54   (14)..      DbT
ba30: 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f  ype.Decimal,  //
ba40: 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20   Decimal (15).. 
ba50: 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74 65       DbType.Date
ba60: 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d  Time, // DateTim
ba70: 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 62  e (16)..      Db
ba80: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
ba90: 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20  / ?? (17)..     
baa0: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20 20   DbType.String  
bab0: 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29    // String (18)
bac0: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
bad0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
bae0: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74     /// Returns t
baf0: 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f  he ColumnSize fo
bb00: 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54 79  r the given DbTy
bb10: 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  pe..    /// </su
bb20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
bb30: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
bb40: 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f 20  ">The DbType to 
bb50: 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 3c  get the size of<
bb60: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
bb70: 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75   <returns></retu
bb80: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
bb90: 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44 62  al static int Db
bba0: 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65  TypeToColumnSize
bbb0: 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20  (DbType typ)..  
bbc0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
bbd0: 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d  n _dbtypetocolum
bbe0: 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b  nsize[(int)typ];
bbf0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
bc00: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
bc10: 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c  t[] _dbtypetocol
bc20: 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20  umnsize = {..   
bc30: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bc40: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28   // AnsiString (
bc50: 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  0)..      int.Ma
bc60: 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72  xValue, // Binar
bc70: 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c 20  y (1)..      1, 
bc80: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79             // By
bc90: 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31 2c  te (2)..      1,
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
bcb0: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
bcc0: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
bcd0: 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d  // Currency (4).
bce0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
bcf0: 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35 29       // Date (5)
bd00: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
bd10: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d        // DateTim
bd20: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c 20  e (6)..      8, 
bd30: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65             // De
bd40: 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20  cimal (7)..     
bd50: 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   8,            /
bd60: 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20  / Double (8)..  
bd70: 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20 20      16,         
bd80: 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20    // Guid (9).. 
bd90: 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20 20       2,         
bda0: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29     // Int16 (10)
bdb0: 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20 20  ..      4,      
bdc0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28        // Int32 (
bdd0: 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  11)..      8,   
bde0: 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36           // Int6
bdf0: 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69 6e  4 (12)..      in
be00: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f  t.MaxValue, // O
be10: 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20  bject (13)..    
be20: 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20 20    1,            
be30: 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20  // SByte (14).. 
be40: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
be50: 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35     // Single (15
be60: 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78  )..      int.Max
be70: 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67  Value, // String
be80: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c 20   (16)..      8, 
be90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 69             // Ti
bea0: 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 32  me (17)..      2
beb0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
bec0: 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20  UInt16 (18)..   
bed0: 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20     4,           
bee0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d   // UInt32 (19).
bef0: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
bf00: 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28       // UInt64 (
bf10: 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  20)..      8,   
bf20: 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e           // VarN
bf30: 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20  umeric (21)..   
bf40: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
bf50: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
bf60: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
bf70: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
bf80: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78  ue, // StringFix
bf90: 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20  edLength (23).. 
bfa0: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bfb0: 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20  e, // ?? (24).. 
bfc0: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
bfd0: 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a  e  // Xml (25)..
bfe0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e      };....    in
bff0: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f 62  ternal static ob
c000: 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75 6d  ject DbTypeToNum
c010: 65 72 69 63 50 72 65 63 69 73 69 6f 6e 28 44 62  ericPrecision(Db
c020: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
c030: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
c040: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 70  dbtypetonumericp
c050: 72 65 63 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79  recision[(int)ty
c060: 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  p];..    }....  
c070: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
c080: 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70   object[] _dbtyp
c090: 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63 69 73  etonumericprecis
c0a0: 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ion = {..      D
c0b0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c0c0: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
c0d0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c0e0: 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ue, // Binary (1
c0f0: 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20 20 20  )..      3,     
c100: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
c110: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c120: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65  .Value, // Boole
c130: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 31 39  an (3)..      19
c140: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43  ,           // C
c150: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
c160: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c170: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
c180: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c190: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
c1a0: 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20  )..      53,    
c1b0: 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d 61         // Decima
c1c0: 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 35 33 2c  l (7)..      53,
c1d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f             // Do
c1e0: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
c1f0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c200: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
c210: 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   5,            /
c220: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
c230: 20 20 20 20 31 30 2c 20 20 20 20 20 20 20 20 20      10,         
c240: 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d    // Int32 (11).
c250: 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20  .      19,      
c260: 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31       // Int64 (1
c270: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c280: 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63  .Value, // Objec
c290: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 33 2c  t (13)..      3,
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c2b0: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
c2c0: 20 32 34 2c 20 20 20 20 20 20 20 20 20 20 20 2f   24,           /
c2d0: 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20  / Single (15).. 
c2e0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c2f0: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36  e, // String (16
c300: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c310: 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28  Value, // Time (
c320: 31 37 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20  17)..      5,   
c330: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
c340: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 31  16 (18)..      1
c350: 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  0,           // 
c360: 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20  UInt32 (19)..   
c370: 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20 20     19,          
c380: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
c390: 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20  .      53,      
c3a0: 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72       // VarNumer
c3b0: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44  ic (21)..      D
c3c0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c3d0: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
c3e0: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
c3f0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c400: 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65  // StringFixedLe
c410: 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20  ngth (23)..     
c420: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c430: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
c440: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f   DBNull.Value  /
c450: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
c460: 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e  };....    intern
c470: 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  al static object
c480: 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69 63   DbTypeToNumeric
c490: 53 63 61 6c 65 28 44 62 54 79 70 65 20 74 79 70  Scale(DbType typ
c4a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
c4b0: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f  return _dbtypeto
c4c0: 6e 75 6d 65 72 69 63 73 63 61 6c 65 5b 28 69 6e  numericscale[(in
c4d0: 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  t)typ];..    }..
c4e0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
c4f0: 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64  atic object[] _d
c500: 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63  btypetonumericsc
c510: 61 6c 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44  ale = {..      D
c520: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c530: 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a  AnsiString (0)..
c540: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
c550: 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ue, // Binary (1
c560: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20  )..      0,     
c570: 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28         // Byte (
c580: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c590: 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65  .Value, // Boole
c5a0: 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 34 2c  an (3)..      4,
c5b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43              // C
c5c0: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
c5d0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
c5e0: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
c5f0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
c600: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36  , // DateTime (6
c610: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c620: 56 61 6c 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61  Value, // Decima
c630: 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 44 42 4e  l (7)..      DBN
c640: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f  ull.Value, // Do
c650: 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20  uble (8)..      
c660: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
c670: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
c680: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
c690: 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20  / Int16 (10)..  
c6a0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
c6b0: 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d    // Int32 (11).
c6c0: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c6d0: 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31       // Int64 (1
c6e0: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
c6f0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63  .Value, // Objec
c700: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 30 2c  t (13)..      0,
c710: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53              // S
c720: 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20  Byte (14)..     
c730: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c740: 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20  / Single (15).. 
c750: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
c760: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36  e, // String (16
c770: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
c780: 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28  Value, // Time (
c790: 31 37 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  17)..      0,   
c7a0: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
c7b0: 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 30  16 (18)..      0
c7c0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
c7d0: 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20  UInt32 (19)..   
c7e0: 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20     0,           
c7f0: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
c800: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
c810: 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72       // VarNumer
c820: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44  ic (21)..      D
c830: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
c840: 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c  AnsiStringFixedL
c850: 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20  ength (22)..    
c860: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
c870: 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65  // StringFixedLe
c880: 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20  ngth (23)..     
c890: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
c8a0: 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20  / ?? (24)..     
c8b0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f   DBNull.Value  /
c8c0: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
c8d0: 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  };....    /// <s
c8e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
c8f0: 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   Determines the 
c900: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
c910: 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 62 65   type name to be
c920: 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20 20   used when a..  
c930: 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63    /// per-connec
c940: 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f  tion value is no
c950: 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20  t available...  
c960: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c970: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
c980: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
c990: 6e 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  n">..    /// The
c9a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
c9b0: 65 78 74 20 66 6f 72 20 74 79 70 65 20 6d 61 70  ext for type map
c9c0: 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  pings, if any...
c9d0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
c9e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
c9f0: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
ca00: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
ca10: 65 20 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 75  e type name to u
ca20: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
ca30: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
ca40: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
ca50: 6e 67 20 47 65 74 44 65 66 61 75 6c 74 54 79 70  ng GetDefaultTyp
ca60: 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
ca70: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
ca80: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
ca90: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
caa0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
cab0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
cac0: 67 73 20 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e  gs = (connection
cad0: 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20   != null) ?..   
cae0: 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
caf0: 69 6f 6e 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69  ion.Flags : SQLi
cb00: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
cb10: 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20  s.None;....     
cb20: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
cb30: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
cb40: 46 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53  Flags.NoConvertS
cb50: 65 74 74 69 6e 67 73 29 0d 0a 20 20 20 20 20 20  ettings)..      
cb60: 20 20 20 20 20 20 20 20 20 20 3d 3d 20 53 51 4c            == SQL
cb70: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
cb80: 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
cb90: 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 7b  ings)..        {
cba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
cbb0: 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66  turn FallbackDef
cbc0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
cbd0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
cbe0: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20      string name 
cbf0: 3d 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e  = "Use_SQLiteCon
cc00: 76 65 72 74 5f 44 65 66 61 75 6c 74 54 79 70 65  vert_DefaultType
cc10: 4e 61 6d 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  Name";..        
cc20: 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 6e  object value = n
cc30: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 73 74  ull;..        st
cc40: 72 69 6e 67 20 40 64 65 66 61 75 6c 74 20 3d 20  ring @default = 
cc50: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
cc60: 20 69 66 20 28 28 63 6f 6e 6e 65 63 74 69 6f 6e   if ((connection
cc70: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
cc80: 20 20 20 20 20 20 20 20 20 20 21 63 6f 6e 6e 65            !conne
cc90: 63 74 69 6f 6e 2e 54 72 79 47 65 74 43 61 63 68  ction.TryGetCach
cca0: 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20  edSetting(name, 
ccb0: 40 64 65 66 61 75 6c 74 2c 20 6f 75 74 20 76 61  @default, out va
ccc0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
ccd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
cce0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
ccf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cd00: 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66 65    value = Unsafe
cd10: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65  NativeMethods.Ge
cd20: 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28 6e 61  tSettingValue(na
cd30: 6d 65 2c 20 40 64 65 66 61 75 6c 74 29 3b 0d 0a  me, @default);..
cd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cd50: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
cd60: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
cd70: 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20            value 
cd80: 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  = FallbackDefaul
cd90: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
cda0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cdb0: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
cdc0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
cde0: 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  f (connection !=
cdf0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
ce00: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e              conn
ce10: 65 63 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64  ection.SetCached
ce20: 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61  Setting(name, va
ce30: 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue);..         
ce40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
ce50: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
ce60: 6e 20 53 65 74 74 69 6e 67 56 61 6c 75 65 54 6f  n SettingValueTo
ce70: 53 74 72 69 6e 67 28 76 61 6c 75 65 29 3b 0d 0a  String(value);..
ce80: 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e 45      }....#if !NE
ce90: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
cea0: 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20  TRACE_WARNING.. 
ceb0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
cec0: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61 70 70  ..    /// If app
ced0: 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65 73 20  licable, issues 
cee0: 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65 73 73  a trace log mess
cef0: 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62 6f 75  age warning abou
cf00: 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74  t falling back t
cf10: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 64  o..    /// the d
cf20: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
cf30: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
cf40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
cf50: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
cf60: 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 0d 0a 20  ame="dbType">.. 
cf70: 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
cf80: 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d  ase value type..
cf90: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
cfa0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
cfb0: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
cfc0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
cfd0: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
cfe0: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
cff0: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
d000: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
d010: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
d020: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d  am name="typeNam
d030: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
d040: 20 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66   textual name of
d050: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79   the database ty
d060: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  pe...    /// </p
d070: 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61  aram>..    priva
d080: 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 44  te static void D
d090: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61  efaultTypeNameWa
d0a0: 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  rning(..        
d0b0: 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a  DbType dbType,..
d0c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d0d0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
d0e0: 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ags,..        st
d0f0: 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 0d 0a 20  ring typeName.. 
d100: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
d110: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c  .        if ((fl
d120: 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e  ags & SQLiteConn
d130: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
d140: 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c  eWarning) == SQL
d150: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d160: 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29  gs.TraceWarning)
d170: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d180: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57           Trace.W
d190: 72 69 74 65 4c 69 6e 65 28 55 6e 73 61 66 65 4e  riteLine(UnsafeN
d1a0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 53 74 72  ativeMethods.Str
d1b0: 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ingFormat(..    
d1c0: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74              Cult
d1d0: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
d1e0: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
d1f0: 20 20 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e           "WARNIN
d200: 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20  G: Type mapping 
d210: 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e  failed, returnin
d220: 67 20 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 5c  g default name \
d230: 22 7b 30 7d 5c 22 20 66 6f 72 20 74 79 70 65 20  "{0}\" for type 
d240: 7b 31 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  {1}.",..        
d250: 20 20 20 20 20 20 20 20 74 79 70 65 4e 61 6d 65          typeName
d260: 2c 20 64 62 54 79 70 65 29 29 3b 0d 0a 20 20 20  , dbType));..   
d270: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
d280: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
d290: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61  y>..    /// If a
d2a0: 70 70 6c 69 63 61 62 6c 65 2c 20 69 73 73 75 65  pplicable, issue
d2b0: 73 20 61 20 74 72 61 63 65 20 6c 6f 67 20 6d 65  s a trace log me
d2c0: 73 73 61 67 65 20 77 61 72 6e 69 6e 67 20 61 62  ssage warning ab
d2d0: 6f 75 74 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b  out falling back
d2e0: 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65   to..    /// the
d2f0: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
d300: 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20  e value type... 
d310: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d320: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
d330: 6d 20 6e 61 6d 65 3d 22 74 79 70 65 4e 61 6d 65  m name="typeName
d340: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
d350: 74 65 78 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20  textual name of 
d360: 74 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70  the database typ
d370: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
d380: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
d390: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
d3a0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
d3b0: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
d3c0: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
d3d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
d3e0: 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ct...    /// </p
d3f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d400: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54 79  param name="dbTy
d410: 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  pe">..    /// Th
d420: 65 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65  e database value
d430: 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
d440: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72  </param>..    pr
d450: 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
d460: 64 20 44 65 66 61 75 6c 74 44 62 54 79 70 65 57  d DefaultDbTypeW
d470: 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  arning(..       
d480: 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
d490: 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
d4a0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
d4b0: 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20   flags,..       
d4c0: 20 44 62 54 79 70 65 3f 20 64 62 54 79 70 65 0d   DbType? dbType.
d4d0: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
d4e0: 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21  {..        if (!
d4f0: 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
d500: 6d 70 74 79 28 74 79 70 65 4e 61 6d 65 29 20 26  mpty(typeName) &
d510: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  &..            (
d520: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
d530: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54  onnectionFlags.T
d540: 72 61 63 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20  raceWarning) == 
d550: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d560: 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69  Flags.TraceWarni
d570: 6e 67 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng))..        {.
d580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61  .            Tra
d590: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 55 6e 73  ce.WriteLine(Uns
d5a0: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
d5b0: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a  .StringFormat(..
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5d0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
d5e0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
d5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57 41               "WA
d600: 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70  RNING: Type mapp
d610: 69 6e 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75  ing failed, retu
d620: 72 6e 69 6e 67 20 64 65 66 61 75 6c 74 20 74 79  rning default ty
d630: 70 65 20 7b 30 7d 20 66 6f 72 20 6e 61 6d 65 20  pe {0} for name 
d640: 5c 22 7b 31 7d 5c 22 2e 22 2c 0d 0a 20 20 20 20  \"{1}\".",..    
d650: 20 20 20 20 20 20 20 20 20 20 20 20 64 62 54 79              dbTy
d660: 70 65 2c 20 74 79 70 65 4e 61 6d 65 29 29 3b 0d  pe, typeName));.
d670: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
d680: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
d690: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d6a0: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69      /// For a gi
d6b0: 76 65 6e 20 64 61 74 61 62 61 73 65 20 76 61 6c  ven database val
d6c0: 75 65 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20  ue type, return 
d6d0: 74 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74  the "closest-mat
d6e0: 63 68 22 20 74 65 78 74 75 61 6c 20 64 61 74 61  ch" textual data
d6f0: 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d  base type name..
d700: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
d710: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
d720: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
d730: 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63  tion">The connec
d740: 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
d750: 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d 61 70   custom type map
d760: 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f  pings, if any.</
d770: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
d780: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 62 54  <param name="dbT
d790: 79 70 65 22 3e 54 68 65 20 64 61 74 61 62 61 73  ype">The databas
d7a0: 65 20 76 61 6c 75 65 20 74 79 70 65 2e 3c 2f 70  e value type.</p
d7b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d7c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
d7d0: 73 22 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73  s">The flags ass
d7e0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
d7f0: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
d800: 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61  on object.</para
d810: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
d820: 75 72 6e 73 3e 54 68 65 20 74 79 70 65 20 6e 61  urns>The type na
d830: 6d 65 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 73  me or an empty s
d840: 74 72 69 6e 67 20 69 66 20 69 74 20 63 61 6e 6e  tring if it cann
d850: 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  ot be determined
d860: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
d870: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
d880: 20 73 74 72 69 6e 67 20 44 62 54 79 70 65 54 6f   string DbTypeTo
d890: 54 79 70 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20  TypeName(..     
d8a0: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
d8b0: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d  ion connection,.
d8c0: 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20  .        DbType 
d8d0: 64 62 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 20  dbType,..       
d8e0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
d8f0: 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20  nFlags flags..  
d900: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
d910: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
d920: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d  efaultTypeName =
d930: 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
d940: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
d950: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d960: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d970: 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e 65    flags |= conne
d980: 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a  ction.Flags;....
d990: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d9a0: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
d9b0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55  onnectionFlags.U
d9c0: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65  seConnectionType
d9d0: 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  s) == SQLiteConn
d9e0: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43  ectionFlags.UseC
d9f0: 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 0d  onnectionTypes).
da00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da20: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20  SQLiteDbTypeMap 
da30: 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61  connectionTypeNa
da40: 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  mes = connection
da50: 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a  ._typeNames;....
da60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da70: 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79  if (connectionTy
da80: 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29  peNames != null)
da90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
daa0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dab0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
dac0: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
dad0: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
dae0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
daf0: 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
db00: 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 64  es.TryGetValue(d
db10: 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75 65  bType, out value
db20: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
db30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
db40: 72 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d  rn value.typeNam
db50: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
db60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
db70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
db80: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
db90: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65      // NOTE: Use
dba0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   the default dat
dbb0: 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20  abase type name 
dbc0: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
dbd0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
dbe0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
dbf0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
dc00: 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65   = connection.De
dc10: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a  faultTypeName;..
dc20: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
dc30: 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20       if ((flags 
dc40: 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  & SQLiteConnecti
dc50: 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c  onFlags.NoGlobal
dc60: 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65  Types) == SQLite
dc70: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
dc80: 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 0d 0a  NoGlobalTypes)..
dc90: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
dca0: 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61 75         if (defau
dcb0: 6c 74 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75  ltTypeName != nu
dcc0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
dcd0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
dce0: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a  ultTypeName;....
dcf0: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
dd00: 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 47 65  ultTypeName = Ge
dd10: 74 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65  tDefaultTypeName
dd20: 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d  (connection);...
dd30: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
dd40: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41  T_20 && TRACE_WA
dd50: 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 20  RNING..         
dd60: 20 20 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61     DefaultTypeNa
dd70: 6d 65 57 61 72 6e 69 6e 67 28 64 62 54 79 70 65  meWarning(dbType
dd80: 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75 6c 74  , flags, default
dd90: 54 79 70 65 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64  TypeName);..#end
dda0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
ddb0: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
ddc0: 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  TypeName;..     
ddd0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
dde0: 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29  lock (_syncRoot)
ddf0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
de00: 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79           if (_ty
de10: 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29  peNames == null)
de20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
de30: 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 47    _typeNames = G
de40: 65 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  etSQLiteDbTypeMa
de50: 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  p();....        
de60: 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65      SQLiteDbType
de70: 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a  Mapping value;..
de80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
de90: 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79   (_typeNames.Try
dea0: 47 65 74 56 61 6c 75 65 28 64 62 54 79 70 65 2c  GetValue(dbType,
deb0: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
ded0: 74 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e  turn value.typeN
dee0: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ame;..        }.
def0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  ...        if (d
df00: 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 21  efaultTypeName !
df10: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
df20: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
df30: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a  ultTypeName;....
df40: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54          defaultT
df50: 79 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66  ypeName = GetDef
df60: 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e  aultTypeName(con
df70: 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66  nection);....#if
df80: 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
df90: 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e   && TRACE_WARNIN
dfa0: 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75  G..        Defau
dfb0: 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e 69 6e  ltTypeNameWarnin
dfc0: 67 28 64 62 54 79 70 65 2c 20 66 6c 61 67 73 2c  g(dbType, flags,
dfd0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
dfe0: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
dff0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66        return def
e000: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
e010: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
e020: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
e030: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 62 54  // Convert a DbT
e040: 79 70 65 20 74 6f 20 61 20 54 79 70 65 0d 0a 20  ype to a Type.. 
e050: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e060: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
e070: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
e080: 20 44 62 54 79 70 65 20 74 6f 20 63 6f 6e 76 65   DbType to conve
e090: 72 74 20 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d  rt from</param>.
e0a0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
e0b0: 73 3e 54 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61  s>The closest-ma
e0c0: 74 63 68 20 2e 4e 45 54 20 74 79 70 65 3c 2f 72  tch .NET type</r
e0d0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
e0e0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70  ernal static Typ
e0f0: 65 20 44 62 54 79 70 65 54 6f 54 79 70 65 28 44  e DbTypeToType(D
e100: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
e110: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
e120: 5f 64 62 74 79 70 65 54 6f 54 79 70 65 5b 28 69  _dbtypeToType[(i
e130: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d  nt)typ];..    }.
e140: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
e150: 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 64 62  tatic Type[] _db
e160: 74 79 70 65 54 6f 54 79 70 65 20 3d 20 7b 0d 0a  typeToType = {..
e170: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
e180: 69 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53  ing),   // AnsiS
e190: 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 20  tring (0)..     
e1a0: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 2c   typeof(byte[]),
e1b0: 20 20 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29     // Binary (1)
e1c0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
e1d0: 79 74 65 29 2c 20 20 20 20 20 2f 2f 20 42 79 74  yte),     // Byt
e1e0: 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74 79 70  e (2)..      typ
e1f0: 65 6f 66 28 62 6f 6f 6c 29 2c 20 20 20 20 20 2f  eof(bool),     /
e200: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
e210: 20 20 20 20 20 74 79 70 65 6f 66 28 64 65 63 69       typeof(deci
e220: 6d 61 6c 29 2c 20 20 2f 2f 20 43 75 72 72 65 6e  mal),  // Curren
e230: 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20 74 79  cy (4)..      ty
e240: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20  peof(DateTime), 
e250: 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20  // Date (5)..   
e260: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
e270: 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  me), // DateTime
e280: 20 28 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (6)..      type
e290: 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f  of(decimal),  //
e2a0: 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20   Decimal (7)..  
e2b0: 20 20 20 20 74 79 70 65 6f 66 28 64 6f 75 62 6c      typeof(doubl
e2c0: 65 29 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20  e),   // Double 
e2d0: 28 38 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (8)..      typeo
e2e0: 66 28 47 75 69 64 29 2c 20 20 20 20 20 2f 2f 20  f(Guid),     // 
e2f0: 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20  Guid (9)..      
e300: 74 79 70 65 6f 66 28 49 6e 74 31 36 29 2c 20 20  typeof(Int16),  
e310: 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d    // Int16 (10).
e320: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
e330: 74 33 32 29 2c 20 20 20 20 2f 2f 20 49 6e 74 33  t32),    // Int3
e340: 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 74 79  2 (11)..      ty
e350: 70 65 6f 66 28 49 6e 74 36 34 29 2c 20 20 20 20  peof(Int64),    
e360: 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a 20  // Int64 (12).. 
e370: 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65       typeof(obje
e380: 63 74 29 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74  ct),   // Object
e390: 20 28 31 33 29 0d 0a 20 20 20 20 20 20 74 79 70   (13)..      typ
e3a0: 65 6f 66 28 73 62 79 74 65 29 2c 20 20 20 20 2f  eof(sbyte),    /
e3b0: 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20  / SByte (14)..  
e3c0: 20 20 20 20 74 79 70 65 6f 66 28 66 6c 6f 61 74      typeof(float
e3d0: 29 2c 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20  ),    // Single 
e3e0: 28 31 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (15)..      type
e3f0: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
e400: 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 20   String (16)..  
e410: 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54      typeof(DateT
e420: 69 6d 65 29 2c 20 2f 2f 20 54 69 6d 65 20 28 31  ime), // Time (1
e430: 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  7)..      typeof
e440: 28 55 49 6e 74 31 36 29 2c 20 20 20 2f 2f 20 55  (UInt16),   // U
e450: 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20  Int16 (18)..    
e460: 20 20 74 79 70 65 6f 66 28 55 49 6e 74 33 32 29    typeof(UInt32)
e470: 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31  ,   // UInt32 (1
e480: 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  9)..      typeof
e490: 28 55 49 6e 74 36 34 29 2c 20 20 20 2f 2f 20 55  (UInt64),   // U
e4a0: 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20 20 20  Int64 (20)..    
e4b0: 20 20 74 79 70 65 6f 66 28 64 6f 75 62 6c 65 29    typeof(double)
e4c0: 2c 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69  ,   // VarNumeri
e4d0: 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 74 79  c (21)..      ty
e4e0: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
e4f0: 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78  // AnsiStringFix
e500: 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20  edLength (22).. 
e510: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
e520: 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67  ng),   // String
e530: 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29  FixedLength (23)
e540: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
e550: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 3f 3f 20  tring),   // ?? 
e560: 28 32 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (24)..      type
e570: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
e580: 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d   Xml (25)..    }
e590: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
e5a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e5b0: 46 6f 72 20 61 20 67 69 76 65 6e 20 74 79 70 65  For a given type
e5c0: 2c 20 72 65 74 75 72 6e 20 74 68 65 20 63 6c 6f  , return the clo
e5d0: 73 65 73 74 2d 6d 61 74 63 68 20 53 51 4c 69 74  sest-match SQLit
e5e0: 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2c 20  e TypeAffinity, 
e5f0: 77 68 69 63 68 20 6f 6e 6c 79 20 75 6e 64 65 72  which only under
e600: 73 74 61 6e 64 73 20 61 20 76 65 72 79 20 6c 69  stands a very li
e610: 6d 69 74 65 64 20 73 75 62 73 65 74 20 6f 66 20  mited subset of 
e620: 74 79 70 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  types...    /// 
e630: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e640: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
e650: 22 74 79 70 22 3e 54 68 65 20 74 79 70 65 20 74  "typ">The type t
e660: 6f 20 65 76 61 6c 75 61 74 65 3c 2f 70 61 72 61  o evaluate</para
e670: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
e680: 75 72 6e 73 3e 54 68 65 20 53 51 4c 69 74 65 20  urns>The SQLite 
e690: 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 66 6f  type affinity fo
e6a0: 72 20 74 68 61 74 20 74 79 70 65 2e 3c 2f 72 65  r that type.</re
e6b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
e6c0: 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70 65  rnal static Type
e6d0: 41 66 66 69 6e 69 74 79 20 54 79 70 65 54 6f 41  Affinity TypeToA
e6e0: 66 66 69 6e 69 74 79 28 54 79 70 65 20 74 79 70  ffinity(Type typ
e6f0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
e700: 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54 79  TypeCode tc = Ty
e710: 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28 74  pe.GetTypeCode(t
e720: 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 28  yp);..      if (
e730: 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e 4f  tc == TypeCode.O
e740: 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b 0d  bject)..      {.
e750: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
e760: 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 5b   == typeof(byte[
e770: 5d 29 20 7c 7c 20 74 79 70 20 3d 3d 20 74 79 70  ]) || typ == typ
e780: 65 6f 66 28 47 75 69 64 29 29 0d 0a 20 20 20 20  eof(Guid))..    
e790: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 79 70        return Typ
e7a0: 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3b 0d  eAffinity.Blob;.
e7b0: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
e7c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
e7d0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
e7e0: 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  t;..      }..   
e7f0: 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65 63     return _typec
e800: 6f 64 65 41 66 66 69 6e 69 74 69 65 73 5b 28 69  odeAffinities[(i
e810: 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  nt)tc];..    }..
e820: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
e830: 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  atic TypeAffinit
e840: 79 5b 5d 20 5f 74 79 70 65 63 6f 64 65 41 66 66  y[] _typecodeAff
e850: 69 6e 69 74 69 65 73 20 3d 20 7b 0d 0a 20 20 20  inities = {..   
e860: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
e870: 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 45 6d 70  Null,     // Emp
e880: 74 79 20 28 30 29 0d 0a 20 20 20 20 20 20 54 79  ty (0)..      Ty
e890: 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 2c  peAffinity.Blob,
e8a0: 20 20 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28       // Object (
e8b0: 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  1)..      TypeAf
e8c0: 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20  finity.Null,    
e8d0: 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a   // DBNull (2)..
e8e0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
e8f0: 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20  ty.Int64,    // 
e900: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
e910: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
e920: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 43 68 61  Int64,    // Cha
e930: 72 20 28 34 29 0d 0a 20 20 20 20 20 20 54 79 70  r (4)..      Typ
e940: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e950: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29      // SByte (5)
e960: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
e970: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
e980: 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20 20  / Byte (6)..    
e990: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
e9a0: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 31  nt64,    // Int1
e9b0: 36 20 28 37 29 0d 0a 20 20 20 20 20 20 54 79 70  6 (7)..      Typ
e9c0: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
e9d0: 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38      // UInt16 (8
e9e0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
e9f0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
ea00: 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20  // Int32 (9)..  
ea10: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
ea20: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
ea30: 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20  nt32 (10)..     
ea40: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
ea50: 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34  t64,    // Int64
ea60: 20 28 31 31 29 0d 0a 20 20 20 20 20 20 54 79 70   (11)..      Typ
ea70: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
ea80: 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 31      // UInt64 (1
ea90: 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  2)..      TypeAf
eaa0: 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20  finity.Double,  
eab0: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d   // Single (13).
eac0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
ead0: 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f  ity.Double,   //
eae0: 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20 20   Double (14)..  
eaf0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
eb00: 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 65  .Double,   // De
eb10: 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20  cimal (15)..    
eb20: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44    TypeAffinity.D
eb30: 61 74 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65  ateTime, // Date
eb40: 54 69 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20  Time (16)..     
eb50: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
eb60: 6c 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f 20 28 31  ll,     // ?? (1
eb70: 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  7)..      TypeAf
eb80: 66 69 6e 69 74 79 2e 54 65 78 74 20 20 20 20 20  finity.Text     
eb90: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d   // String (18).
eba0: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
ebb0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ebc0: 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 6e 64    /// Builds and
ebd0: 20 72 65 74 75 72 6e 73 20 61 20 6d 61 70 20 63   returns a map c
ebe0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61  ontaining the da
ebf0: 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79  tabase column ty
ec00: 70 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 63  pes..    /// rec
ec10: 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 20  ognized by this 
ec20: 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f  provider...    /
ec30: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ec40: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
ec50: 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 6d 61 70 20  ..    /// A map 
ec60: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64  containing the d
ec70: 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74  atabase column t
ec80: 79 70 65 73 20 72 65 63 6f 67 6e 69 7a 65 64 20  ypes recognized 
ec90: 62 79 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f  by this..    ///
eca0: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
ecb0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
ecc0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
ecd0: 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ic SQLiteDbTypeM
ece0: 61 70 20 47 65 74 53 51 4c 69 74 65 44 62 54 79  ap GetSQLiteDbTy
ecf0: 70 65 4d 61 70 28 29 0d 0a 20 20 20 20 7b 0d 0a  peMap()..    {..
ed00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
ed10: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
ed20: 61 70 28 6e 65 77 20 53 51 4c 69 74 65 44 62 54  ap(new SQLiteDbT
ed30: 79 70 65 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d 0a  ypeMapping[] {..
ed40: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
ed50: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ed60: 69 6e 67 28 22 42 49 47 49 4e 54 22 2c 20 44 62  ing("BIGINT", Db
ed70: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
ed80: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ed90: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
eda0: 65 4d 61 70 70 69 6e 67 28 22 42 49 47 55 49 4e  eMapping("BIGUIN
edb0: 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36  T", DbType.UInt6
edc0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
edd0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ede0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
edf0: 22 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65  "BINARY", DbType
ee00: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
ee10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ee20: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ee30: 70 70 69 6e 67 28 22 42 49 54 22 2c 20 44 62 54  pping("BIT", DbT
ee40: 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72 75  ype.Boolean, tru
ee50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ee60: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ee70: 65 4d 61 70 70 69 6e 67 28 22 42 4c 4f 42 22 2c  eMapping("BLOB",
ee80: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
ee90: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
eea0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
eeb0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f  TypeMapping("BOO
eec0: 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  L", DbType.Boole
eed0: 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  an, false),..   
eee0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
eef0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
ef00: 28 22 42 4f 4f 4c 45 41 4e 22 2c 20 44 62 54 79  ("BOOLEAN", DbTy
ef10: 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73  pe.Boolean, fals
ef20: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ef30: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ef40: 65 4d 61 70 70 69 6e 67 28 22 43 48 41 52 22 2c  eMapping("CHAR",
ef50: 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69   DbType.AnsiStri
ef60: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20 74  ngFixedLength, t
ef70: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
ef80: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
ef90: 79 70 65 4d 61 70 70 69 6e 67 28 22 43 4c 4f 42  ypeMapping("CLOB
efa0: 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
efb0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
efc0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
efd0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
efe0: 43 4f 55 4e 54 45 52 22 2c 20 44 62 54 79 70 65  COUNTER", DbType
eff0: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
f000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f010: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f020: 70 69 6e 67 28 22 43 55 52 52 45 4e 43 59 22 2c  ping("CURRENCY",
f030: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
f040: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f050: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f060: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
f070: 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74  ATE", DbType.Dat
f080: 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  eTime, false),..
f090: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f0a0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f0b0: 69 6e 67 28 22 44 41 54 45 54 49 4d 45 22 2c 20  ing("DATETIME", 
f0c0: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
f0d0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
f0e0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
f0f0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 45  bTypeMapping("DE
f100: 43 49 4d 41 4c 22 2c 20 44 62 54 79 70 65 2e 44  CIMAL", DbType.D
f110: 65 63 69 6d 61 6c 2c 20 74 72 75 65 29 2c 0d 0a  ecimal, true),..
f120: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f130: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f140: 69 6e 67 28 22 44 4f 55 42 4c 45 22 2c 20 44 62  ing("DOUBLE", Db
f150: 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c  Type.Double, fal
f160: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
f170: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
f180: 70 65 4d 61 70 70 69 6e 67 28 22 46 4c 4f 41 54  peMapping("FLOAT
f190: 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65  ", DbType.Double
f1a0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f1b0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f1c0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f1d0: 47 45 4e 45 52 41 4c 22 2c 20 44 62 54 79 70 65  GENERAL", DbType
f1e0: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
f1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f200: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f210: 70 70 69 6e 67 28 22 47 55 49 44 22 2c 20 44 62  pping("GUID", Db
f220: 54 79 70 65 2e 47 75 69 64 2c 20 66 61 6c 73 65  Type.Guid, false
f230: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f240: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f250: 4d 61 70 70 69 6e 67 28 22 49 44 45 4e 54 49 54  Mapping("IDENTIT
f260: 59 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  Y", DbType.Int64
f270: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f280: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f290: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f2a0: 49 4d 41 47 45 22 2c 20 44 62 54 79 70 65 2e 42  IMAGE", DbType.B
f2b0: 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a  inary, false),..
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f2d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f2e0: 69 6e 67 28 22 49 4e 54 22 2c 20 44 62 54 79 70  ing("INT", DbTyp
f2f0: 65 2e 49 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d  e.Int32, true),.
f300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f310: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
f320: 70 69 6e 67 28 22 49 4e 54 38 22 2c 20 44 62 54  ping("INT8", DbT
f330: 79 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65  ype.SByte, false
f340: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f350: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f360: 4d 61 70 70 69 6e 67 28 22 49 4e 54 31 36 22 2c  Mapping("INT16",
f370: 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20 66   DbType.Int16, f
f380: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
f390: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
f3a0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54  TypeMapping("INT
f3b0: 33 32 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 33  32", DbType.Int3
f3c0: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
f3d0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f3e0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f3f0: 22 49 4e 54 36 34 22 2c 20 44 62 54 79 70 65 2e  "INT64", DbType.
f400: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
f410: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
f420: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
f430: 69 6e 67 28 22 49 4e 54 45 47 45 52 22 2c 20 44  ing("INTEGER", D
f440: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 74 72 75  bType.Int64, tru
f450: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
f460: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
f470: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45  eMapping("INTEGE
f480: 52 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  R8", DbType.SByt
f490: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
f4a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f4b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f4c0: 22 49 4e 54 45 47 45 52 31 36 22 2c 20 44 62 54  "INTEGER16", DbT
f4d0: 79 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65  ype.Int16, false
f4e0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f4f0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f500: 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52  Mapping("INTEGER
f510: 33 32 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 33  32", DbType.Int3
f520: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
f530: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f540: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f550: 22 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54  "INTEGER64", DbT
f560: 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65  ype.Int64, false
f570: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f580: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f590: 4d 61 70 70 69 6e 67 28 22 4c 4f 47 49 43 41 4c  Mapping("LOGICAL
f5a0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
f5b0: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
f5c0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f5d0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f5e0: 22 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e 49  "LONG", DbType.I
f5f0: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
f600: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f610: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f620: 6e 67 28 22 4c 4f 4e 47 43 48 41 52 22 2c 20 44  ng("LONGCHAR", D
f630: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
f640: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f650: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f660: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47  ypeMapping("LONG
f670: 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74  TEXT", DbType.St
f680: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
f690: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
f6a0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
f6b0: 6e 67 28 22 4c 4f 4e 47 56 41 52 43 48 41 52 22  ng("LONGVARCHAR"
f6c0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
f6d0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
f6e0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
f6f0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4d  DbTypeMapping("M
f700: 45 4d 4f 22 2c 20 44 62 54 79 70 65 2e 53 74 72  EMO", DbType.Str
f710: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
f720: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f730: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f740: 67 28 22 4d 4f 4e 45 59 22 2c 20 44 62 54 79 70  g("MONEY", DbTyp
f750: 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65  e.Decimal, false
f760: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
f770: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
f780: 4d 61 70 70 69 6e 67 28 22 4e 43 48 41 52 22 2c  Mapping("NCHAR",
f790: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 46 69   DbType.StringFi
f7a0: 78 65 64 4c 65 6e 67 74 68 2c 20 74 72 75 65 29  xedLength, true)
f7b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f7c0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f7d0: 61 70 70 69 6e 67 28 22 4e 4f 54 45 22 2c 20 44  apping("NOTE", D
f7e0: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
f7f0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
f800: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
f810: 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 54 45 58  ypeMapping("NTEX
f820: 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  T", DbType.Strin
f830: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
f840: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
f850: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
f860: 22 4e 55 4d 42 45 52 22 2c 20 44 62 54 79 70 65  "NUMBER", DbType
f870: 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29  .Decimal, false)
f880: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
f890: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
f8a0: 61 70 70 69 6e 67 28 22 4e 55 4d 45 52 49 43 22  apping("NUMERIC"
f8b0: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
f8c0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f8d0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f8e0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f8f0: 4e 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 70  NVARCHAR", DbTyp
f900: 65 2e 53 74 72 69 6e 67 2c 20 74 72 75 65 29 2c  e.String, true),
f910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
f920: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
f930: 70 70 69 6e 67 28 22 4f 4c 45 4f 42 4a 45 43 54  pping("OLEOBJECT
f940: 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
f950: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
f960: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
f970: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
f980: 52 41 57 22 2c 20 44 62 54 79 70 65 2e 42 69 6e  RAW", DbType.Bin
f990: 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ary, false),..  
f9a0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
f9b0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
f9c0: 67 28 22 52 45 41 4c 22 2c 20 44 62 54 79 70 65  g("REAL", DbType
f9d0: 2e 44 6f 75 62 6c 65 2c 20 74 72 75 65 29 2c 0d  .Double, true),.
f9e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
f9f0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa00: 70 69 6e 67 28 22 53 49 4e 47 4c 45 22 2c 20 44  ping("SINGLE", D
fa10: 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 74 72  bType.Single, tr
fa20: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
fa30: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fa40: 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c  peMapping("SMALL
fa50: 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61  DATE", DbType.Da
fa60: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
fa70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fa80: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fa90: 70 69 6e 67 28 22 53 4d 41 4c 4c 49 4e 54 22 2c  ping("SMALLINT",
faa0: 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20 74   DbType.Int16, t
fab0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fac0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fad0: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c  ypeMapping("SMAL
fae0: 4c 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55  LUINT", DbType.U
faf0: 49 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20  Int16, true),.. 
fb00: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fb10: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fb20: 6e 67 28 22 53 54 52 49 4e 47 22 2c 20 44 62 54  ng("STRING", DbT
fb30: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
fb40: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
fb50: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
fb60: 65 4d 61 70 70 69 6e 67 28 22 54 45 58 54 22 2c  eMapping("TEXT",
fb70: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
fb80: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
fb90: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
fba0: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49  bTypeMapping("TI
fbb0: 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  ME", DbType.Date
fbc0: 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Time, false),.. 
fbd0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fbe0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fbf0: 6e 67 28 22 54 49 4d 45 53 54 41 4d 50 22 2c 20  ng("TIMESTAMP", 
fc00: 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c  DbType.DateTime,
fc10: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fc20: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fc30: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54  DbTypeMapping("T
fc40: 49 4e 59 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  INYINT", DbType.
fc50: 42 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20  Byte, true),..  
fc60: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fc70: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
fc80: 67 28 22 54 49 4e 59 53 49 4e 54 22 2c 20 44 62  g("TINYSINT", Db
fc90: 54 79 70 65 2e 53 42 79 74 65 2c 20 74 72 75 65  Type.SByte, true
fca0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fcb0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fcc0: 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 22 2c 20  Mapping("UINT", 
fcd0: 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 74  DbType.UInt32, t
fce0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
fcf0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fd00: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
fd10: 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c  8", DbType.Byte,
fd20: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
fd30: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
fd40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
fd50: 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 55  INT16", DbType.U
fd60: 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int16, false),..
fd70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
fd80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
fd90: 69 6e 67 28 22 55 49 4e 54 33 32 22 2c 20 44 62  ing("UINT32", Db
fda0: 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c  Type.UInt32, fal
fdb0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
fdc0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
fdd0: 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 36  peMapping("UINT6
fde0: 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36  4", DbType.UInt6
fdf0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
fe00: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fe10: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fe20: 22 55 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e  "ULONG", DbType.
fe30: 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  UInt64, false),.
fe40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fe50: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fe60: 70 69 6e 67 28 22 55 4e 49 51 55 45 49 44 45 4e  ping("UNIQUEIDEN
fe70: 54 49 46 49 45 52 22 2c 20 44 62 54 79 70 65 2e  TIFIER", DbType.
fe80: 47 75 69 64 2c 20 74 72 75 65 29 2c 0d 0a 20 20  Guid, true),..  
fe90: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
fea0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
feb0: 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47  g("UNSIGNEDINTEG
fec0: 45 52 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  ER", DbType.UInt
fed0: 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  64, true),..    
fee0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
fef0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ff00: 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52  "UNSIGNEDINTEGER
ff10: 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c  8", DbType.Byte,
ff20: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ff30: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ff40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
ff50: 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 31 36  NSIGNEDINTEGER16
ff60: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36  ", DbType.UInt16
ff70: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
ff80: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ff90: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ffa0: 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 33  UNSIGNEDINTEGER3
ffb0: 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33  2", DbType.UInt3
ffc0: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
ffd0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ffe0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
fff0: 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52  "UNSIGNEDINTEGER
10000 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  64", DbType.UInt
10010 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
10020 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10030 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10040 28 22 56 41 52 42 49 4e 41 52 59 22 2c 20 44 62  ("VARBINARY", Db
10050 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c  Type.Binary, fal
10060 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10070 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10080 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43 48  peMapping("VARCH
10090 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e 73 69  AR", DbType.Ansi
100a0 53 74 72 69 6e 67 2c 20 74 72 75 65 29 2c 0d 0a  String, true),..
100b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
100c0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
100d0 69 6e 67 28 22 56 41 52 43 48 41 52 32 22 2c 20  ing("VARCHAR2", 
100e0 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
100f0 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
10100 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10110 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10120 22 59 45 53 4e 4f 22 2c 20 44 62 54 79 70 65 2e  "YESNO", DbType.
10130 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 0d  Boolean, false).
10140 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20 20  .        });..  
10150 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
10160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10170 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69 66 20  / Determines if 
10180 61 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  a database type 
10190 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f  is considered to
101a0 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   be a string... 
101b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
101c0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
101d0 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a  m name="type">..
101e0 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61      /// The data
101f0 62 61 73 65 20 74 79 70 65 20 74 6f 20 63 68 65  base type to che
10200 63 6b 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ck...    /// </p
10210 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
10220 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
10230 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
10240 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  e database type 
10250 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f  is considered to
10260 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 7a 65   be a string, ze
10270 72 6f 0d 0a 20 20 20 20 2f 2f 2f 20 6f 74 68 65  ro..    /// othe
10280 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
10290 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
102a0 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
102b0 62 6f 6f 6c 20 49 73 53 74 72 69 6e 67 44 62 54  bool IsStringDbT
102c0 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20 44 62  ype(..        Db
102d0 54 79 70 65 20 74 79 70 65 0d 0a 20 20 20 20 20  Type type..     
102e0 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
102f0 20 20 20 20 20 73 77 69 74 63 68 20 28 74 79 70       switch (typ
10300 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
10310 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
10320 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
10330 67 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g:..            
10340 63 61 73 65 20 44 62 54 79 70 65 2e 53 74 72 69  case DbType.Stri
10350 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng:..           
10360 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e 73   case DbType.Ans
10370 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
10380 74 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th:..           
10390 20 63 61 73 65 20 44 62 54 79 70 65 2e 53 74 72   case DbType.Str
103a0 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 3a 0d  ingFixedLength:.
103b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
103c0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
103d0 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75             defau
103e0 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lt:..           
103f0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
10400 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
10410 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
10420 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10430 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 61 6e  // Determines an
10440 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 75  d returns the ru
10450 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74  ntime configurat
10460 69 6f 6e 20 73 65 74 74 69 6e 67 20 73 74 72 69  ion setting stri
10470 6e 67 20 74 68 61 74 0d 0a 20 20 20 20 2f 2f 2f  ng that..    ///
10480 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
10490 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
104a0 73 70 65 63 69 66 69 65 64 20 6f 62 6a 65 63 74  specified object
104b0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
104c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
104d0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
104e0 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f  ="value">..    /
104f0 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 76 61  // The object va
10500 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 74  lue to convert t
10510 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  o a string...   
10520 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
10530 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
10540 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74 68 65 72  ..    /// Either
10550 20 74 68 65 20 73 74 72 69 6e 67 20 74 6f 20 75   the string to u
10560 73 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  se in place of t
10570 68 65 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20  he object value 
10580 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 69 74 0d  -OR- null if it.
10590 0a 20 20 20 20 2f 2f 2f 20 63 61 6e 6e 6f 74 20  .    /// cannot 
105a0 62 65 20 64 65 74 65 72 6d 69 6e 65 64 2e 0d 0a  be determined...
105b0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
105c0 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  s>..    private 
105d0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 65  static string Se
105e0 74 74 69 6e 67 56 61 6c 75 65 54 6f 53 74 72 69  ttingValueToStri
105f0 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  ng(..        obj
10600 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ect value..     
10610 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
10620 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69       if (value i
10630 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20  s string)..     
10640 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73         return (s
10650 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d 0a 0d 0a  tring)value;....
10660 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
10670 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
10680 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
10690 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
106a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
106b0 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 7d 0d  rn null;..    }.
106c0 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
106d0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
106e0 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
106f0 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d 22  ault <see cref="
10700 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65  DbType" /> value
10710 20 74 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e   to be used when
10720 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70 65 72 2d   a..    /// per-
10730 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c 75 65  connection value
10740 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
10750 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
10760 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
10770 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
10780 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 2f  nection">..    /
10790 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  // The connectio
107a0 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 74 79  n context for ty
107b0 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66 20  pe mappings, if 
107c0 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  any...    /// </
107d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
107e0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
107f0 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 3c  // The default <
10800 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65  see cref="DbType
10810 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73  " /> value to us
10820 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
10830 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76  turns>..    priv
10840 61 74 65 20 73 74 61 74 69 63 20 44 62 54 79 70  ate static DbTyp
10850 65 20 47 65 74 44 65 66 61 75 6c 74 44 62 54 79  e GetDefaultDbTy
10860 70 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  pe(..        SQL
10870 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
10880 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  nnection..      
10890 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
108a0 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
108b0 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 20  tionFlags flags 
108c0 3d 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d  = (connection !=
108d0 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
108e0 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
108f0 2e 46 6c 61 67 73 20 3a 20 53 51 4c 69 74 65 43  .Flags : SQLiteC
10900 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
10910 6f 6e 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  one;....        
10920 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
10930 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
10940 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74  gs.NoConvertSett
10950 69 6e 67 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ings)..         
10960 20 20 20 20 20 20 20 3d 3d 20 53 51 4c 69 74 65         == SQLite
10970 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
10980 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e 67  NoConvertSetting
10990 73 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  s)..        {.. 
109a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
109b0 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c  n FallbackDefaul
109c0 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  tDbType;..      
109d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62    }....        b
109e0 6f 6f 6c 20 66 6f 75 6e 64 20 3d 20 66 61 6c 73  ool found = fals
109f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e;..        stri
10a00 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65 5f 53  ng name = "Use_S
10a10 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44 65 66  QLiteConvert_Def
10a20 61 75 6c 74 44 62 54 79 70 65 22 3b 0d 0a 20 20  aultDbType";..  
10a30 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
10a40 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ue = null;..    
10a50 20 20 20 20 73 74 72 69 6e 67 20 40 64 65 66 61      string @defa
10a60 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  ult = null;.... 
10a70 20 20 20 20 20 20 20 69 66 20 28 28 63 6f 6e 6e         if ((conn
10a80 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 20  ection == null) 
10a90 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
10aa0 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47  !connection.TryG
10ab0 65 74 43 61 63 68 65 64 53 65 74 74 69 6e 67 28  etCachedSetting(
10ac0 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 2c 20  name, @default, 
10ad0 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20  out value))..   
10ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10af0 20 20 20 20 76 61 6c 75 65 20 3d 20 55 6e 73 61      value = Unsa
10b00 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
10b10 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65 28  GetSettingValue(
10b20 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 29 3b  name, @default);
10b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10b40 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
10b50 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
10b60 20 20 20 20 76 61 6c 75 65 20 3d 20 46 61 6c 6c      value = Fall
10b70 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70  backDefaultDbTyp
10b80 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  e;..        }.. 
10b90 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
10ba0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10bb0 20 20 20 20 66 6f 75 6e 64 20 3d 20 74 72 75 65      found = true
10bc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
10bd0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
10be0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10bf0 20 20 20 20 69 66 20 28 21 28 76 61 6c 75 65 20      if (!(value 
10c00 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20 20 20  is DbType))..   
10c10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10c20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
10c30 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  e = SQLiteConnec
10c40 74 69 6f 6e 2e 54 72 79 50 61 72 73 65 45 6e 75  tion.TryParseEnu
10c50 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m(..            
10c60 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 44          typeof(D
10c70 62 54 79 70 65 29 2c 20 53 65 74 74 69 6e 67 56  bType), SettingV
10c80 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 76 61 6c  alueToString(val
10c90 75 65 29 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20  ue), true);.... 
10ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
10cb0 66 20 28 21 28 76 61 6c 75 65 20 69 73 20 44 62  f (!(value is Db
10cc0 54 79 70 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Type))..        
10cd0 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75              valu
10ce0 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66 61  e = FallbackDefa
10cf0 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
10d00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10d10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10d20 28 44 62 54 79 70 65 29 76 61 6c 75 65 3b 0d 0a  (DbType)value;..
10d30 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10d40 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20     finally..    
10d50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10d60 20 20 20 69 66 20 28 21 66 6f 75 6e 64 20 26 26     if (!found &&
10d70 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21 3d 20   (connection != 
10d80 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
10d90 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69          connecti
10da0 6f 6e 2e 53 65 74 43 61 63 68 65 64 53 65 74 74  on.SetCachedSett
10db0 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29  ing(name, value)
10dc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
10dd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
10de0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
10df0 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 6f  / Converts the o
10e00 62 6a 65 63 74 20 76 61 6c 75 65 2c 20 77 68 69  bject value, whi
10e10 63 68 20 69 73 20 61 73 73 75 6d 65 64 20 74 6f  ch is assumed to
10e20 20 68 61 76 65 20 6f 72 69 67 69 6e 61 74 65 64   have originated
10e30 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 61  ..    /// from a
10e40 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 61   <see cref="Data
10e50 52 6f 77 22 20 2f 3e 2c 20 74 6f 20 61 20 73 74  Row" />, to a st
10e60 72 69 6e 67 20 76 61 6c 75 65 2e 0d 0a 20 20 20  ring value...   
10e70 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10e80 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
10e90 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20  name="value">.. 
10ea0 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
10eb0 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74 65 64   to be converted
10ec0 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   to a string... 
10ed0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
10ee0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
10ef0 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 6e 75  s>..    /// A nu
10f00 6c 6c 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  ll value will be
10f10 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
10f20 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20   original value 
10f30 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d 0d 0a 20 20  is null -OR-..  
10f40 20 20 2f 2f 2f 20 74 68 65 20 6f 72 69 67 69 6e    /// the origin
10f50 61 6c 20 76 61 6c 75 65 20 69 73 20 3c 73 65 65  al value is <see
10f60 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 2e 56 61   cref="DBNull.Va
10f70 6c 75 65 22 20 2f 3e 2e 20 20 4f 74 68 65 72 77  lue" />.  Otherw
10f80 69 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  ise,..    /// th
10f90 65 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65  e original value
10fa0 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74   will be convert
10fb0 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67 2c 20  ed to a string, 
10fc0 75 73 69 6e 67 20 69 74 73 0d 0a 20 20 20 20 2f  using its..    /
10fd0 2f 2f 20 28 70 6f 73 73 69 62 6c 79 20 6f 76 65  // (possibly ove
10fe0 72 72 69 64 64 65 6e 29 20 3c 73 65 65 20 63 72  rridden) <see cr
10ff0 65 66 3d 22 4f 62 6a 65 63 74 2e 54 6f 53 74 72  ef="Object.ToStr
11000 69 6e 67 22 20 2f 3e 20 6d 65 74 68 6f 64 20 61  ing" /> method a
11010 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 6e  nd..    /// then
11020 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20   returned...    
11030 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
11040 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
11050 63 20 73 74 72 69 6e 67 20 47 65 74 53 74 72 69  c string GetStri
11060 6e 67 4f 72 4e 75 6c 6c 28 0d 0a 20 20 20 20 20  ngOrNull(..     
11070 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d     object value.
11080 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11090 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 76  {..        if (v
110a0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
110b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
110c0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
110d0 20 20 20 69 66 20 28 76 61 6c 75 65 20 69 73 20     if (value is 
110e0 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  string)..       
110f0 20 20 20 20 20 72 65 74 75 72 6e 20 28 73 74 72       return (str
11100 69 6e 67 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ing)value;....  
11110 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
11120 3d 3d 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 29  == DBNull.Value)
11130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
11140 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
11150 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
11160 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  ue.ToString();..
11170 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
11180 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11190 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 69  /// Determines i
111a0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
111b0 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61 70  textual value ap
111c0 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d 0a 20  pears to be a.. 
111d0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
111e0 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20 76 61 6c  ="DBNull" /> val
111f0 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ue...    /// </s
11200 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
11210 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 65   <param name="te
11220 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  xt">..    /// Th
11230 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  e textual value 
11240 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20 20 20  to inspect...   
11250 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11260 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
11270 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65  ..    /// Non-ze
11280 72 6f 20 69 66 20 74 68 65 20 74 65 78 74 20 6c  ro if the text l
11290 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73 65 65  ooks like a <see
112a0 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f   cref="DBNull" /
112b0 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 2f 2f  > value,..    //
112c0 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65  / zero otherwise
112d0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
112e0 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
112f0 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
11300 4c 6f 6f 6b 73 4c 69 6b 65 4e 75 6c 6c 28 0d 0a  LooksLikeNull(..
11310 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
11320 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ext..        )..
11330 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
11340 65 74 75 72 6e 20 28 74 65 78 74 20 3d 3d 20 6e  eturn (text == n
11350 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ull);..    }....
11360 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11370 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
11380 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65  mines if the spe
11390 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76  cified textual v
113a0 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20  alue appears to 
113b0 62 65 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  be an..    /// <
113c0 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
113d0 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
113e0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
113f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
11400 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20  ame="text">..   
11410 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c   /// The textual
11420 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63   value to inspec
11430 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
11440 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
11450 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
11460 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
11470 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65   text looks like
11480 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49   an <see cref="I
11490 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2c 0d  nt64" /> value,.
114a0 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74  .    /// zero ot
114b0 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f  herwise...    //
114c0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
114d0 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
114e0 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65  c bool LooksLike
114f0 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
11500 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20  string text..   
11510 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
11520 20 20 20 20 20 20 20 6c 6f 6e 67 20 6c 6f 6e 67         long long
11530 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20 21 50  Value;....#if !P
11540 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46  LATFORM_COMPACTF
11550 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20  RAMEWORK..      
11560 20 20 69 66 20 28 21 6c 6f 6e 67 2e 54 72 79 50    if (!long.TryP
11570 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  arse(..         
11580 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e 75 6d         text, Num
11590 62 65 72 53 74 79 6c 65 73 2e 49 6e 74 65 67 65  berStyles.Intege
115a0 72 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  r, CultureInfo.I
115b0 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 2c  nvariantCulture,
115c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
115d0 20 20 6f 75 74 20 6c 6f 6e 67 56 61 6c 75 65 29    out longValue)
115e0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
115f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11600 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
11610 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20   }..#else..     
11620 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11630 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  {..            l
11640 6f 6e 67 56 61 6c 75 65 20 3d 20 6c 6f 6e 67 2e  ongValue = long.
11650 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Parse(..        
11660 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e 75          text, Nu
11670 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74 65 67  mberStyles.Integ
11680 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  er, CultureInfo.
11690 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
116a0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
116b0 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
116c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
116d0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
116e0 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23  e;..        }..#
116f0 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20  endif....       
11700 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
11710 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
11720 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 2e 54 6f      longValue.To
11730 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e  String(CultureIn
11740 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
11750 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20 20 20  ure), text,..   
11760 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
11770 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
11780 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  l);..    }....  
11790 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
117a0 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
117b0 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69  nes if the speci
117c0 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c  fied textual val
117d0 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  ue appears to be
117e0 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65   a..    /// <see
117f0 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
11800 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
11810 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11820 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
11830 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f  e="text">..    /
11840 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76  // The textual v
11850 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e  alue to inspect.
11860 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
11870 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
11880 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  urns>..    /// N
11890 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74  on-zero if the t
118a0 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61  ext looks like a
118b0 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62   <see cref="Doub
118c0 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20  le" /> value,.. 
118d0 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65     /// zero othe
118e0 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rwise...    /// 
118f0 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
11900 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
11910 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 44 6f  bool LooksLikeDo
11920 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 73  uble(..        s
11930 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20  tring text..    
11940 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
11950 20 20 20 20 20 20 64 6f 75 62 6c 65 20 64 6f 75        double dou
11960 62 6c 65 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66  bleValue;....#if
11970 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
11980 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
11990 20 20 20 20 20 69 66 20 28 21 64 6f 75 62 6c 65       if (!double
119a0 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20  .TryParse(..    
119b0 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
119c0 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 46  , NumberStyles.F
119d0 6c 6f 61 74 20 7c 20 4e 75 6d 62 65 72 53 74 79  loat | NumberSty
119e0 6c 65 73 2e 41 6c 6c 6f 77 54 68 6f 75 73 61 6e  les.AllowThousan
119f0 64 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ds,..           
11a00 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
11a10 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
11a20 65 2c 20 6f 75 74 20 64 6f 75 62 6c 65 56 61 6c  e, out doubleVal
11a30 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ue))..        {.
11a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
11a50 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
11a60 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20      }..#else..  
11a70 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
11a80 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11a90 20 20 64 6f 75 62 6c 65 56 61 6c 75 65 20 3d 20    doubleValue = 
11aa0 64 6f 75 62 6c 65 2e 50 61 72 73 65 28 74 65 78  double.Parse(tex
11ab0 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  t, CultureInfo.I
11ac0 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
11ad0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
11ae0 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
11af0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11b00 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
11b10 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65  ;..        }..#e
11b20 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ndif....        
11b30 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71  return String.Eq
11b40 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
11b50 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65 2e 54     doubleValue.T
11b60 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65 49  oString(CultureI
11b70 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
11b80 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20 20  ture), text,..  
11b90 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
11ba0 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
11bb0 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  al);..    }.... 
11bc0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11bd0 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
11be0 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65 63  ines if the spec
11bf0 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76 61  ified textual va
11c00 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20 62  lue appears to b
11c10 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65  e a..    /// <se
11c20 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
11c30 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20  " /> value...   
11c40 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11c50 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
11c60 6e 61 6d 65 3d 22 63 6f 6e 76 65 72 74 22 3e 0d  name="convert">.
11c70 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65  .    /// The <se
11c80 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
11c90 6e 76 65 72 74 22 20 2f 3e 20 6f 62 6a 65 63 74  nvert" /> object
11ca0 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 66 69 67   instance config
11cb0 75 72 65 64 20 77 69 74 68 0d 0a 20 20 20 20 2f  ured with..    /
11cc0 2f 2f 20 74 68 65 20 63 68 6f 73 65 6e 20 3c 73  // the chosen <s
11cd0 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
11ce0 65 22 20 2f 3e 20 66 6f 72 6d 61 74 2e 0d 0a 20  e" /> format... 
11cf0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
11d00 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
11d10 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20  name="text">..  
11d20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61    /// The textua
11d30 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65  l value to inspe
11d40 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ct...    /// </p
11d50 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
11d60 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f  returns>..    //
11d70 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  / Non-zero if th
11d80 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b  e text looks lik
11d90 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44  e a <see cref="D
11da0 61 74 65 54 69 6d 65 22 20 2f 3e 20 69 6e 20 74  ateTime" /> in t
11db0 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 66  he..    /// conf
11dc0 69 67 75 72 65 64 20 66 6f 72 6d 61 74 2c 20 7a  igured format, z
11dd0 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
11de0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
11df0 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
11e00 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f   static bool Loo
11e10 6b 73 4c 69 6b 65 44 61 74 65 54 69 6d 65 28 0d  ksLikeDateTime(.
11e20 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
11e30 6f 6e 76 65 72 74 20 63 6f 6e 76 65 72 74 2c 0d  onvert convert,.
11e40 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
11e50 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29 0d  text..        ).
11e60 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
11e70 69 66 20 28 63 6f 6e 76 65 72 74 20 3d 3d 20 6e  if (convert == n
11e80 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
11e90 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
11ea0 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
11eb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11ec0 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20         DateTime 
11ed0 64 61 74 65 54 69 6d 65 56 61 6c 75 65 20 3d 20  dateTimeValue = 
11ee0 63 6f 6e 76 65 72 74 2e 54 6f 44 61 74 65 54 69  convert.ToDateTi
11ef0 6d 65 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  me(text);....   
11f00 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
11f10 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20  ing.Equals(..   
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f30 20 63 6f 6e 76 65 72 74 2e 54 6f 53 74 72 69 6e   convert.ToStrin
11f40 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29  g(dateTimeValue)
11f50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
11f60 20 20 20 20 20 20 20 74 65 78 74 2c 20 53 74 72         text, Str
11f70 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
11f80 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20  dinal))..       
11f90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
11fa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
11fb0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
11fc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
11fd0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
11fe0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11ff0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
12000 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ing...        }.
12010 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
12020 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d  n false;..    }.
12030 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
12040 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f  ary>..    /// Fo
12050 72 20 61 20 67 69 76 65 6e 20 74 65 78 74 75 61  r a given textua
12060 6c 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  l database type 
12070 6e 61 6d 65 2c 20 72 65 74 75 72 6e 20 74 68 65  name, return the
12080 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 22   "closest-match"
12090 20 64 61 74 61 62 61 73 65 20 74 79 70 65 2e 0d   database type..
120a0 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65  .    /// This me
120b0 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 64  thod is called d
120c0 75 72 69 6e 67 20 71 75 65 72 79 20 72 65 73 75  uring query resu
120d0 6c 74 20 70 72 6f 63 65 73 73 69 6e 67 3b 20 74  lt processing; t
120e0 68 65 72 65 66 6f 72 65 2c 20 69 74 73 20 70 65  herefore, its pe
120f0 72 66 6f 72 6d 61 6e 63 65 0d 0a 20 20 20 20 2f  rformance..    /
12100 2f 2f 20 69 73 20 63 72 69 74 69 63 61 6c 2e 0d  // is critical..
12110 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
12120 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
12130 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
12140 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63  tion">The connec
12150 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
12160 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d 61 70   custom type map
12170 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f  pings, if any.</
12180 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
12190 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70  <param name="typ
121a0 65 4e 61 6d 65 22 3e 54 68 65 20 74 65 78 74 75  eName">The textu
121b0 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64  al name of the d
121c0 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f 20  atabase type to 
121d0 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  match.</param>..
121e0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
121f0 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20  ame="flags">The 
12200 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
12210 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
12220 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
12230 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ct.</param>..   
12240 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
12250 65 20 2e 4e 45 54 20 44 42 54 79 70 65 20 74 68  e .NET DBType th
12260 65 20 74 65 78 74 20 65 76 61 6c 75 61 74 65 73  e text evaluates
12270 20 74 6f 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a   to.</returns>..
12280 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12290 74 69 63 20 44 62 54 79 70 65 20 54 79 70 65 4e  tic DbType TypeN
122a0 61 6d 65 54 6f 44 62 54 79 70 65 28 0d 0a 20 20  ameToDbType(..  
122b0 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
122c0 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
122d0 6e 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  n,..        stri
122e0 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20 20  ng typeName,..  
122f0 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
12300 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
12310 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  s..        )..  
12320 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 62 54    {..        DbT
12330 79 70 65 3f 20 64 65 66 61 75 6c 74 44 62 54 79  ype? defaultDbTy
12340 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  pe = null;....  
12350 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63        if (connec
12360 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tion != null).. 
12370 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12380 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 63        flags |= c
12390 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b  onnection.Flags;
123a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
123b0 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
123c0 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
123d0 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  gs.UseConnection
123e0 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65  Types) == SQLite
123f0 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
12400 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  UseConnectionTyp
12410 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es)..           
12420 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12430 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65      SQLiteDbType
12440 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79  Map connectionTy
12450 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63  peNames = connec
12460 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b  tion._typeNames;
12470 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12480 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
12490 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e  onTypeNames != n
124a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
124b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
124c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
124d0 28 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75 6c  (typeName != nul
124e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
124f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12510 20 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d     SQLiteDbTypeM
12520 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d  apping value;...
12530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12540 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
12550 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73  nectionTypeNames
12560 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79 70  .TryGetValue(typ
12570 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75 65  eName, out value
12580 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
12590 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
125a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
125c0 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65  n value.dataType
125d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
125e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
125f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12600 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
12610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12620 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12640 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 74     int index = t
12650 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28  ypeName.IndexOf(
12660 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  '(');....       
12670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12680 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
12690 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20 20  > 0) &&..       
126a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126b0 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74           connect
126c0 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72 79  ionTypeNames.Try
126d0 47 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d  GetValue(typeNam
126e0 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69  e.Substring(0, i
126f0 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c  ndex).TrimEnd(),
12700 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
12710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12720 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12750 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79  urn value.dataTy
12760 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
12770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12780 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
12790 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
127a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
127c0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
127d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
127e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
127f0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55        // NOTE: U
12800 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 64  se the default d
12810 61 74 61 62 61 73 65 20 74 79 70 65 20 66 6f 72  atabase type for
12820 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
12830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
12840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
12850 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 63 6f  faultDbType = co
12860 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74  nnection.Default
12870 44 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20  DbType;..       
12880 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
12890 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74   ((flags & SQLit
128a0 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
128b0 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 20  .NoGlobalTypes) 
128c0 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  == SQLiteConnect
128d0 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61  ionFlags.NoGloba
128e0 6c 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20  lTypes)..       
128f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12900 69 66 20 28 64 65 66 61 75 6c 74 44 62 54 79 70  if (defaultDbTyp
12910 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
12920 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12930 72 6e 20 28 44 62 54 79 70 65 29 64 65 66 61 75  rn (DbType)defau
12940 6c 74 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20  ltDbType;....   
12950 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
12960 44 62 54 79 70 65 20 3d 20 47 65 74 44 65 66 61  DbType = GetDefa
12970 75 6c 74 44 62 54 79 70 65 28 63 6f 6e 6e 65 63  ultDbType(connec
12980 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e  tion);....#if !N
12990 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
129a0 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
129b0 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66 61              Defa
129c0 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67  ultDbTypeWarning
129d0 28 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73  (typeName, flags
129e0 2c 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 29  , defaultDbType)
129f0 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  ;..#endif....   
12a00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
12a10 28 44 62 54 79 70 65 29 64 65 66 61 75 6c 74 44  (DbType)defaultD
12a20 62 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  bType;..        
12a30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63  }....        loc
12a40 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  k (_syncRoot).. 
12a50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12a60 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e        if (_typeN
12a70 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ames == null).. 
12a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
12a90 74 79 70 65 4e 61 6d 65 73 20 3d 20 47 65 74 53  typeNames = GetS
12aa0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 29  QLiteDbTypeMap()
12ab0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12ac0 20 69 66 20 28 74 79 70 65 4e 61 6d 65 20 21 3d   if (typeName !=
12ad0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12ae0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12af0 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
12b00 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65  ypeMapping value
12b10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12b20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61       if (_typeNa
12b30 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
12b40 74 79 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61  typeName, out va
12b50 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
12b60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12b80 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54  turn value.dataT
12b90 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
12ba0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12bb0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
12bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
12bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12be0 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20        int index 
12bf0 3d 20 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78  = typeName.Index
12c00 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20  Of('(');....    
12c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20  if ((index > 0) 
12c30 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
12c40 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70              _typ
12c50 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c  eNames.TryGetVal
12c60 75 65 28 74 79 70 65 4e 61 6d 65 2e 53 75 62 73  ue(typeName.Subs
12c70 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e  tring(0, index).
12c80 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76  TrimEnd(), out v
12c90 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
12ca0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61         return va
12cd0 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20  lue.dataType;.. 
12ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cf0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
12d00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
12d10 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
12d20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  }....        if 
12d30 28 64 65 66 61 75 6c 74 44 62 54 79 70 65 20 21  (defaultDbType !
12d40 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12d50 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54       return (DbT
12d60 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70  ype)defaultDbTyp
12d70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65  e;....        de
12d80 66 61 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65  faultDbType = Ge
12d90 74 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 63  tDefaultDbType(c
12da0 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23  onnection);....#
12db0 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f  if !NET_COMPACT_
12dc0 32 30 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e  20 && TRACE_WARN
12dd0 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66  ING..        Def
12de0 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e  aultDbTypeWarnin
12df0 67 28 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67  g(typeName, flag
12e00 73 2c 20 64 65 66 61 75 6c 74 44 62 54 79 70 65  s, defaultDbType
12e10 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20  );..#endif....  
12e20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62        return (Db
12e30 54 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79  Type)defaultDbTy
12e40 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  pe;..    }..    
12e50 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
12e60 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
12e70 20 6f 62 6a 65 63 74 20 5f 73 79 6e 63 52 6f 6f   object _syncRoo
12e80 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
12e90 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ;..    private s
12ea0 74 61 74 69 63 20 53 51 4c 69 74 65 44 62 54 79  tatic SQLiteDbTy
12eb0 70 65 4d 61 70 20 5f 74 79 70 65 4e 61 6d 65 73  peMap _typeNames
12ec0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 7d 0d 0a 0d   = null;..  }...
12ed0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
12ee0 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 68  ..  /// SQLite h
12ef0 61 73 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20  as very limited 
12f00 74 79 70 65 73 2c 20 61 6e 64 20 69 73 20 69 6e  types, and is in
12f10 68 65 72 65 6e 74 6c 79 20 74 65 78 74 2d 62 61  herently text-ba
12f20 73 65 64 2e 20 20 54 68 65 20 66 69 72 73 74 20  sed.  The first 
12f30 35 20 74 79 70 65 73 20 62 65 6c 6f 77 20 72 65  5 types below re
12f40 70 72 65 73 65 6e 74 20 74 68 65 20 73 75 6d 20  present the sum 
12f50 6f 66 20 61 6c 6c 20 74 79 70 65 73 20 53 51 4c  of all types SQL
12f60 69 74 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64 65 72  ite..  /// under
12f70 73 74 61 6e 64 73 2e 20 20 54 68 65 20 44 61 74  stands.  The Dat
12f80 65 54 69 6d 65 20 65 78 74 65 6e 73 69 6f 6e 20  eTime extension 
12f90 74 6f 20 74 68 65 20 73 70 65 63 20 69 73 20 66  to the spec is f
12fa0 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20  or internal use 
12fb0 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  only...  /// </s
12fc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
12fd0 63 20 65 6e 75 6d 20 54 79 70 65 41 66 66 69 6e  c enum TypeAffin
12fe0 69 74 79 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ity..  {..    //
12ff0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13000 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 0d 0a 20   /// Not used.. 
13010 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13020 3e 0d 0a 20 20 20 20 55 6e 69 6e 69 74 69 61 6c  >..    Uninitial
13030 69 7a 65 64 20 3d 20 30 2c 0d 0a 20 20 20 20 2f  ized = 0,..    /
13040 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13050 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65 67 65    /// All intege
13060 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66  rs in SQLite def
13070 61 75 6c 74 20 74 6f 20 49 6e 74 36 34 0d 0a 20  ault to Int64.. 
13080 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13090 3e 0d 0a 20 20 20 20 49 6e 74 36 34 20 3d 20 31  >..    Int64 = 1
130a0 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
130b0 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c  ary>..    /// Al
130c0 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  l floating point
130d0 20 6e 75 6d 62 65 72 73 20 69 6e 20 53 51 4c 69   numbers in SQLi
130e0 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20 64 6f  te default to do
130f0 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  uble..    /// </
13100 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 6f  summary>..    Do
13110 75 62 6c 65 20 3d 20 32 2c 0d 0a 20 20 20 20 2f  uble = 2,..    /
13120 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13130 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
13140 74 20 64 61 74 61 20 74 79 70 65 20 6f 66 20 53  t data type of S
13150 51 4c 69 74 65 20 69 73 20 74 65 78 74 0d 0a 20  QLite is text.. 
13160 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13170 3e 0d 0a 20 20 20 20 54 65 78 74 20 3d 20 33 2c  >..    Text = 3,
13180 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
13190 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 79 70  ry>..    /// Typ
131a0 69 63 61 6c 6c 79 20 62 6c 6f 62 20 74 79 70 65  ically blob type
131b0 73 20 61 72 65 20 6f 6e 6c 79 20 73 65 65 6e 20  s are only seen 
131c0 77 68 65 6e 20 72 65 74 75 72 6e 65 64 20 66 72  when returned fr
131d0 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 0d 0a 20  om a function.. 
131e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
131f0 3e 0d 0a 20 20 20 20 42 6c 6f 62 20 3d 20 34 2c  >..    Blob = 4,
13200 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
13210 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c  ry>..    /// Nul
13220 6c 20 74 79 70 65 73 20 63 61 6e 20 62 65 20 72  l types can be r
13230 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66 75 6e  eturned from fun
13240 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20  ctions..    /// 
13250 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13260 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20 20 2f  Null = 5,..    /
13270 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13280 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
13290 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72  nally by this pr
132a0 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20  ovider..    /// 
132b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
132c0 44 61 74 65 54 69 6d 65 20 3d 20 31 30 2c 0d 0a  DateTime = 10,..
132d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
132e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20  >..    /// Used 
132f0 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68  internally by th
13300 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20  is provider..   
13310 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13320 0a 20 20 20 20 4e 6f 6e 65 20 3d 20 31 31 2c 0d  .    None = 11,.
13330 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
13340 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
13350 68 65 73 65 20 61 72 65 20 74 68 65 20 65 76 65  hese are the eve
13360 6e 74 20 74 79 70 65 73 20 61 73 73 6f 63 69 61  nt types associa
13370 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20  ted with the..  
13380 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
13390 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45  QLiteConnectionE
133a0 76 65 6e 74 48 61 6e 64 6c 65 72 22 20 2f 3e 0d  ventHandler" />.
133b0 0a 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20  .  /// delegate 
133c0 28 61 6e 64 20 69 74 73 20 63 6f 72 72 65 73 70  (and its corresp
133d0 6f 6e 64 69 6e 67 20 65 76 65 6e 74 29 20 61 6e  onding event) an
133e0 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  d the..  /// <se
133f0 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69  e cref="Connecti
13400 6f 6e 45 76 65 6e 74 41 72 67 73 22 20 2f 3e 20  onEventArgs" /> 
13410 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  class...  /// </
13420 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
13430 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f  ic enum SQLiteCo
13440 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79 70  nnectionEventTyp
13450 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
13460 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13470 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e     /// Not used.
13480 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13490 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e  mmary>..      In
134a0 76 61 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d 0a 20  valid = -1,.... 
134b0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
134c0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  y>..      /// No
134d0 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  t used...      /
134e0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
134f0 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30       Unknown = 0
13500 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13510 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13520 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
13530 6f 6e 20 69 73 20 62 65 69 6e 67 20 6f 70 65 6e  on is being open
13540 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
13550 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
13560 20 4f 70 65 6e 69 6e 67 20 3d 20 31 2c 0d 0a 0d   Opening = 1,...
13570 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13580 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13590 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  The connection s
135a0 74 72 69 6e 67 20 68 61 73 20 62 65 65 6e 20 70  tring has been p
135b0 61 72 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  arsed...      //
135c0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
135d0 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74      ConnectionSt
135e0 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20  ring = 2,....   
135f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
13600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
13610 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f  connection was o
13620 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  pened...      //
13630 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13640 20 20 20 20 4f 70 65 6e 65 64 20 3d 20 33 2c 0d      Opened = 3,.
13650 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13660 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
13670 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
13680 22 43 68 61 6e 67 65 44 61 74 61 62 61 73 65 22  "ChangeDatabase"
13690 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 63   /> method was c
136a0 61 6c 6c 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20  alled on the..  
136b0 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69      /// connecti
136c0 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
136d0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
136e0 20 43 68 61 6e 67 65 44 61 74 61 62 61 73 65 20   ChangeDatabase 
136f0 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 4,....      //
13700 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13710 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63     /// A transac
13720 74 69 6f 6e 20 77 61 73 20 63 72 65 61 74 65 64  tion was created
13730 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65   using the conne
13740 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
13750 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13760 20 20 20 20 4e 65 77 54 72 61 6e 73 61 63 74 69      NewTransacti
13770 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20  on = 5,....     
13780 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13790 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
137a0 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 65 6e 6c  nnection was enl
137b0 69 73 74 65 64 20 69 6e 74 6f 20 61 20 74 72 61  isted into a tra
137c0 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  nsaction...     
137d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
137e0 0a 20 20 20 20 20 20 45 6e 6c 69 73 74 54 72 61  .      EnlistTra
137f0 6e 73 61 63 74 69 6f 6e 20 3d 20 36 2c 0d 0a 0d  nsaction = 6,...
13800 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
13810 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
13820 41 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 63 72  A command was cr
13830 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
13840 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
13850 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13860 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 6f 6d 6d  >..      NewComm
13870 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20  and = 7,....    
13880 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13890 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74  .      /// A dat
138a0 61 20 72 65 61 64 65 72 20 77 61 73 20 63 72 65  a reader was cre
138b0 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 63  ated using the c
138c0 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
138d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
138e0 0d 0a 20 20 20 20 20 20 4e 65 77 44 61 74 61 52  ..      NewDataR
138f0 65 61 64 65 72 20 3d 20 38 2c 0d 0a 0d 0a 20 20  eader = 8,....  
13900 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13910 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  >..      /// An 
13920 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 3c 73  instance of a <s
13930 65 65 20 63 72 65 66 3d 22 43 72 69 74 69 63 61  ee cref="Critica
13940 6c 48 61 6e 64 6c 65 22 20 2f 3e 20 64 65 72 69  lHandle" /> deri
13950 76 65 64 20 63 6c 61 73 73 20 68 61 73 0d 0a 20  ved class has.. 
13960 20 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20 63 72       /// been cr
13970 65 61 74 65 64 20 74 6f 20 77 72 61 70 20 61 20  eated to wrap a 
13980 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 2e  native resource.
13990 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
139a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
139b0 77 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20  wCriticalHandle 
139c0 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 9,....      //
139d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
139e0 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
139f0 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 63  ction is being c
13a00 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
13a10 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13a20 20 20 20 20 43 6c 6f 73 69 6e 67 20 3d 20 31 30      Closing = 10
13a30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13a40 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13a50 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
13a60 6f 6e 20 77 61 73 20 63 6c 6f 73 65 64 2e 0d 0a  on was closed...
13a70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13a80 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73  ary>..      Clos
13a90 65 64 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20  ed = 11,....    
13aa0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
13ab0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d  .      /// A com
13ac0 6d 61 6e 64 20 69 73 20 62 65 69 6e 67 20 64 69  mand is being di
13ad0 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  sposed...      /
13ae0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13af0 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67 43 6f       DisposingCo
13b00 6d 6d 61 6e 64 20 3d 20 31 32 2c 0d 0a 0d 0a 20  mmand = 12,.... 
13b10 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13b20 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
13b30 64 61 74 61 20 72 65 61 64 65 72 20 69 73 20 62  data reader is b
13b40 65 69 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a  eing disposed...
13b50 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
13b60 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70  ary>..      Disp
13b70 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72 20  osingDataReader 
13b80 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 13,....      /
13b90 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13ba0 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72      /// A data r
13bb0 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20 63  eader is being c
13bc0 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
13bd0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13be0 20 20 20 20 43 6c 6f 73 69 6e 67 44 61 74 61 52      ClosingDataR
13bf0 65 61 64 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20  eader = 14,.... 
13c00 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13c10 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
13c20 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 20  native resource 
13c30 77 61 73 20 6f 70 65 6e 65 64 20 28 69 2e 65 2e  was opened (i.e.
13c40 20 6f 62 74 61 69 6e 65 64 29 20 66 72 6f 6d 20   obtained) from 
13c50 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20  the pool...     
13c60 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13c70 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 46 72 6f  .      OpenedFro
13c80 6d 50 6f 6f 6c 20 3d 20 31 35 2c 0d 0a 0d 0a 20  mPool = 15,.... 
13c90 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
13ca0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
13cb0 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 20  native resource 
13cc0 77 61 73 20 63 6c 6f 73 65 64 20 28 69 2e 65 2e  was closed (i.e.
13cd0 20 72 65 6c 65 61 73 65 64 29 20 74 6f 20 74 68   released) to th
13ce0 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20 20 2f  e pool...      /
13cf0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13d00 20 20 20 20 20 43 6c 6f 73 65 64 54 6f 50 6f 6f       ClosedToPoo
13d10 6c 20 3d 20 31 36 0d 0a 20 20 7d 0d 0a 0d 0a 20  l = 16..  }.... 
13d20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13d30 20 20 2f 2f 2f 20 54 68 69 73 20 69 6d 70 6c 65    /// This imple
13d40 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 53 51 4c  mentation of SQL
13d50 69 74 65 20 66 6f 72 20 41 44 4f 2e 4e 45 54 20  ite for ADO.NET 
13d60 63 61 6e 20 70 72 6f 63 65 73 73 20 64 61 74 65  can process date
13d70 2f 74 69 6d 65 20 66 69 65 6c 64 73 20 69 6e 0d  /time fields in.
13d80 0a 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 73  .  /// databases
13d90 20 69 6e 20 6f 6e 65 20 6f 66 20 73 69 78 20 66   in one of six f
13da0 6f 72 6d 61 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c  ormats...  /// <
13db0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  /summary>..  ///
13dc0 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f   <remarks>..  //
13dd0 2f 20 49 53 4f 38 36 30 31 20 66 6f 72 6d 61 74  / ISO8601 format
13de0 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69   is more compati
13df0 62 6c 65 2c 20 72 65 61 64 61 62 6c 65 2c 20 66  ble, readable, f
13e00 75 6c 6c 79 2d 70 72 6f 63 65 73 73 61 62 6c 65  ully-processable
13e10 2c 20 62 75 74 20 6c 65 73 73 0d 0a 20 20 2f 2f  , but less..  //
13e20 2f 20 61 63 63 75 72 61 74 65 20 61 73 20 69 74  / accurate as it
13e30 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64   does not provid
13e40 65 20 74 69 6d 65 20 64 6f 77 6e 20 74 6f 20 66  e time down to f
13e50 72 61 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65  ractions of a se
13e60 63 6f 6e 64 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c  cond...  /// Jul
13e70 69 61 6e 44 61 79 20 69 73 20 74 68 65 20 6e 75  ianDay is the nu
13e80 6d 65 72 69 63 20 66 6f 72 6d 61 74 20 74 68 65  meric format the
13e90 20 53 51 4c 69 74 65 20 75 73 65 73 20 69 6e 74   SQLite uses int
13ea0 65 72 6e 61 6c 6c 79 20 61 6e 64 20 69 73 20 61  ernally and is a
13eb0 72 67 75 61 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74  rguably..  /// t
13ec0 68 65 20 6d 6f 73 74 20 63 6f 6d 70 61 74 69 62  he most compatib
13ed0 6c 65 20 77 69 74 68 20 33 72 64 20 70 61 72 74  le with 3rd part
13ee0 79 20 74 6f 6f 6c 73 2e 20 20 49 74 20 69 73 20  y tools.  It is 
13ef0 6e 6f 74 20 72 65 61 64 61 62 6c 65 20 61 73 20  not readable as 
13f00 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68  text..  /// with
13f10 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73  out post-process
13f20 69 6e 67 2e 20 20 54 69 63 6b 73 20 6c 65 73 73  ing.  Ticks less
13f30 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68   compatible with
13f40 20 33 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73   3rd party tools
13f50 20 74 68 61 74 0d 0a 20 20 2f 2f 2f 20 71 75 65   that..  /// que
13f60 72 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2c  ry the database,
13f70 20 61 6e 64 20 72 65 6e 64 65 72 73 20 74 68 65   and renders the
13f80 20 44 61 74 65 54 69 6d 65 20 66 69 65 6c 64 20   DateTime field 
13f90 75 6e 72 65 61 64 61 62 6c 65 20 61 73 20 74 65  unreadable as te
13fa0 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75  xt..  /// withou
13fb0 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e  t post-processin
13fc0 67 2e 20 20 55 6e 69 78 45 70 6f 63 68 20 69 73  g.  UnixEpoch is
13fd0 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65   more compatible
13fe0 20 77 69 74 68 20 55 6e 69 78 20 73 79 73 74 65   with Unix syste
13ff0 6d 73 2e 0d 0a 20 20 2f 2f 2f 20 49 6e 76 61 72  ms...  /// Invar
14000 69 61 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f  iantCulture allo
14010 77 73 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65  ws the configure
14020 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65  d format for the
14030 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75   invariant cultu
14040 72 65 0d 0a 20 20 2f 2f 2f 20 66 6f 72 6d 61 74  re..  /// format
14050 20 74 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20   to be used and 
14060 69 73 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c  is human readabl
14070 65 2e 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75  e.  CurrentCultu
14080 72 65 20 61 6c 6c 6f 77 73 20 74 68 65 0d 0a 20  re allows the.. 
14090 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20   /// configured 
140a0 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 63  format for the c
140b0 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 20 74  urrent culture t
140c0 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73  o be used and is
140d0 20 61 6c 73 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f   also human..  /
140e0 2f 2f 20 72 65 61 64 61 62 6c 65 2e 0d 0a 20 20  // readable...  
140f0 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70  ///..  /// The p
14100 72 65 66 65 72 72 65 64 20 6f 72 64 65 72 20 6f  referred order o
14110 66 20 63 68 6f 6f 73 69 6e 67 20 61 20 44 61 74  f choosing a Dat
14120 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 69 73 20  eTime format is 
14130 4a 75 6c 69 61 6e 44 61 79 2c 20 49 53 4f 38 36  JulianDay, ISO86
14140 30 31 2c 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74  01,..  /// and t
14150 68 65 6e 20 54 69 63 6b 73 2e 20 20 54 69 63 6b  hen Ticks.  Tick
14160 73 20 69 73 20 6d 61 69 6e 6c 79 20 70 72 65 73  s is mainly pres
14170 65 6e 74 20 66 6f 72 20 6c 65 67 61 63 79 20 63  ent for legacy c
14180 6f 64 65 20 73 75 70 70 6f 72 74 2e 0d 0a 20 20  ode support...  
14190 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
141a0 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
141b0 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 0d  LiteDateFormats.
141c0 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  .  {..    /// <s
141d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
141e0 20 55 73 65 20 74 68 65 20 76 61 6c 75 65 20 6f   Use the value o
141f0 66 20 44 61 74 65 54 69 6d 65 2e 54 69 63 6b 73  f DateTime.Ticks
14200 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 69 73  .  This value is
14210 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64   not recommended
14220 20 61 6e 64 20 69 73 20 6e 6f 74 20 77 65 6c 6c   and is not well
14230 20 73 75 70 70 6f 72 74 65 64 20 77 69 74 68 20   supported with 
14240 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  LINQ...    /// <
14250 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54  /summary>..    T
14260 69 63 6b 73 20 3d 20 30 2c 0d 0a 20 20 20 20 2f  icks = 0,..    /
14270 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
14280 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 49 53    /// Use the IS
14290 4f 2d 38 36 30 31 20 66 6f 72 6d 61 74 2e 20 20  O-8601 format.  
142a0 55 73 65 73 20 74 68 65 20 22 79 79 79 79 2d 4d  Uses the "yyyy-M
142b0 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
142c0 46 46 46 46 46 4b 22 20 66 6f 72 6d 61 74 20 66  FFFFFK" format f
142d0 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20  or UTC DateTime 
142e0 76 61 6c 75 65 73 20 61 6e 64 0d 0a 20 20 20 20  values and..    
142f0 2f 2f 2f 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20  /// "yyyy-MM-dd 
14300 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
14310 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63  " format for loc
14320 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  al DateTime valu
14330 65 73 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  es)...    /// </
14340 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 53  summary>..    IS
14350 4f 38 36 30 31 20 3d 20 31 2c 0d 0a 20 20 20 20  O8601 = 1,..    
14360 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14370 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72     /// The inter
14380 76 61 6c 20 6f 66 20 74 69 6d 65 20 69 6e 20 64  val of time in d
14390 61 79 73 20 61 6e 64 20 66 72 61 63 74 69 6f 6e  ays and fraction
143a0 73 20 6f 66 20 61 20 64 61 79 20 73 69 6e 63 65  s of a day since
143b0 20 4a 61 6e 75 61 72 79 20 31 2c 20 34 37 31 33   January 1, 4713
143c0 20 42 43 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f   BC...    /// </
143d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75  summary>..    Ju
143e0 6c 69 61 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20  lianDay = 2,..  
143f0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14400 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f  .    /// The who
14410 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63  le number of sec
14420 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55  onds since the U
14430 6e 69 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61  nix epoch (Janua
14440 72 79 20 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20  ry 1, 1970)...  
14450 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
14460 0d 0a 20 20 20 20 55 6e 69 78 45 70 6f 63 68 20  ..    UnixEpoch 
14470 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 3,..    /// <s
14480 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14490 20 41 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e 64   Any culture-ind
144a0 65 70 65 6e 64 65 6e 74 20 73 74 72 69 6e 67 20  ependent string 
144b0 76 61 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e  value that the .
144c0 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61  NET Framework ca
144d0 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73 20 61  n interpret as a
144e0 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65 2e   valid DateTime.
144f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14500 61 72 79 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69  ary>..    Invari
14510 61 6e 74 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d  antCulture = 4,.
14520 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14530 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20  y>..    /// Any 
14540 73 74 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61  string value tha
14550 74 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65  t the .NET Frame
14560 77 6f 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72  work can interpr
14570 65 74 20 61 73 20 61 20 76 61 6c 69 64 20 44 61  et as a valid Da
14580 74 65 54 69 6d 65 20 75 73 69 6e 67 20 74 68 65  teTime using the
14590 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
145a0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
145b0 6d 61 72 79 3e 0d 0a 20 20 20 20 43 75 72 72 65  mary>..    Curre
145c0 6e 74 43 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a  ntCulture = 5,..
145d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
145e0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
145f0 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f  efault format fo
14600 72 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e  r this provider.
14610 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
14620 61 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c  ary>..    Defaul
14630 74 20 3d 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d  t = ISO8601..  }
14640 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ....  /// <summa
14650 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20  ry>..  /// This 
14660 65 6e 75 6d 20 64 65 74 65 72 6d 69 6e 65 73 20  enum determines 
14670 68 6f 77 20 53 51 4c 69 74 65 20 74 72 65 61 74  how SQLite treat
14680 73 20 69 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69  s its journal fi
14690 6c 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  le...  /// </sum
146a0 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65  mary>..  /// <re
146b0 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79  marks>..  /// By
146c0 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20   default SQLite 
146d0 77 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20  will create and 
146e0 64 65 6c 65 74 65 20 74 68 65 20 6a 6f 75 72 6e  delete the journ
146f0 61 6c 20 66 69 6c 65 20 77 68 65 6e 20 6e 65 65  al file when nee
14700 64 65 64 20 64 75 72 69 6e 67 20 61 20 74 72 61  ded during a tra
14710 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f  nsaction...  ///
14720 20 48 6f 77 65 76 65 72 2c 20 66 6f 72 20 73 6f   However, for so
14730 6d 65 20 63 6f 6d 70 75 74 65 72 73 20 72 75 6e  me computers run
14740 6e 69 6e 67 20 63 65 72 74 61 69 6e 20 66 69 6c  ning certain fil
14750 65 73 79 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69  esystem monitori
14760 6e 67 20 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61  ng tools, the ra
14770 70 69 64 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74  pid..  /// creat
14780 69 6f 6e 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e  ion and deletion
14790 20 6f 66 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20   of the journal 
147a0 66 69 6c 65 20 63 61 6e 20 63 61 75 73 65 20 74  file can cause t
147b0 68 6f 73 65 20 70 72 6f 67 72 61 6d 73 20 74 6f  hose programs to
147c0 20 66 61 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74   fail, or to int
147d0 65 72 66 65 72 65 20 77 69 74 68 20 53 51 4c 69  erfere with SQLi
147e0 74 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f  te...  ///..  //
147f0 2f 20 49 66 20 61 20 70 72 6f 67 72 61 6d 20 6f  / If a program o
14800 72 20 76 69 72 75 73 20 73 63 61 6e 6e 65 72 20  r virus scanner 
14810 69 73 20 69 6e 74 65 72 66 65 72 69 6e 67 20 77  is interfering w
14820 69 74 68 20 53 51 4c 69 74 65 27 73 20 6a 6f 75  ith SQLite's jou
14830 72 6e 61 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d  rnal file, you m
14840 61 79 20 72 65 63 65 69 76 65 20 65 72 72 6f 72  ay receive error
14850 73 20 6c 69 6b 65 20 22 75 6e 61 62 6c 65 20 74  s like "unable t
14860 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20  o open database 
14870 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65  file"..  /// whe
14880 6e 20 73 74 61 72 74 69 6e 67 20 61 20 74 72 61  n starting a tra
14890 6e 73 61 63 74 69 6f 6e 2e 20 20 49 66 20 74 68  nsaction.  If th
148a0 69 73 20 69 73 20 68 61 70 70 65 6e 69 6e 67 2c  is is happening,
148b0 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f   you may want to
148c0 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61   change the defa
148d0 75 6c 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65  ult journal mode
148e0 20 74 6f 20 50 65 72 73 69 73 74 2e 0d 0a 20 20   to Persist...  
148f0 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a  /// </remarks>..
14900 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
14910 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45  LiteJournalModeE
14920 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  num..  {..    //
14930 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14940 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
14950 20 6d 6f 64 65 2c 20 74 68 69 73 20 63 61 75 73   mode, this caus
14960 65 73 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  es SQLite to use
14970 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 6a 6f   the existing jo
14980 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f  urnaling mode fo
14990 72 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d  r the database..
149a0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
149b0 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74  ry>..    Default
149c0 20 3d 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20   = -1,..    /// 
149d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
149e0 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63  // SQLite will c
149f0 72 65 61 74 65 20 61 6e 64 20 64 65 73 74 72 6f  reate and destro
14a00 79 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  y the journal fi
14a10 6c 65 20 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20  le as-needed... 
14a20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14a30 3e 0d 0a 20 20 20 20 44 65 6c 65 74 65 20 3d 20  >..    Delete = 
14a40 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  0,..    /// <sum
14a50 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57  mary>..    /// W
14a60 68 65 6e 20 74 68 69 73 20 69 73 20 73 65 74 2c  hen this is set,
14a70 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65   SQLite will kee
14a80 70 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  p the journal fi
14a90 6c 65 20 65 76 65 6e 20 61 66 74 65 72 20 61 20  le even after a 
14aa0 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20  transaction has 
14ab0 63 6f 6d 70 6c 65 74 65 64 2e 20 20 49 74 27 73  completed.  It's
14ac0 20 63 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62   contents will b
14ad0 65 20 65 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f  e erased,..    /
14ae0 2f 2f 20 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e  // and the journ
14af0 61 6c 20 72 65 2d 75 73 65 64 20 61 73 20 6f 66  al re-used as of
14b00 74 65 6e 20 61 73 20 6e 65 65 64 65 64 2e 20 20  ten as needed.  
14b10 49 66 20 69 74 20 69 73 20 64 65 6c 65 74 65 64  If it is deleted
14b20 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 63  , it will be rec
14b30 72 65 61 74 65 64 20 74 68 65 20 6e 65 78 74 20  reated the next 
14b40 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65  time it is neede
14b50 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
14b60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 50 65 72 73  mmary>..    Pers
14b70 69 73 74 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  ist = 1,..    //
14b80 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
14b90 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
14ba0 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 72 6f   disables the ro
14bb0 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65  llback journal e
14bc0 6e 74 69 72 65 6c 79 2e 20 20 49 6e 74 65 72 72  ntirely.  Interr
14bd0 75 70 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f  upted transactio
14be0 6e 73 20 6f 72 20 61 20 70 72 6f 67 72 61 6d 20  ns or a program 
14bf0 63 72 61 73 68 20 63 61 6e 20 63 61 75 73 65 20  crash can cause 
14c00 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f  database..    //
14c10 2f 20 63 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20  / corruption in 
14c20 74 68 69 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20  this mode!..    
14c30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14c40 20 20 20 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20      Off = 2,..  
14c50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14c60 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  .    /// SQLite 
14c70 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68  will truncate th
14c80 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74  e journal file t
14c90 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e  o zero-length in
14ca0 73 74 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e  stead of deletin
14cb0 67 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  g it...    /// <
14cc0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54  /summary>..    T
14cd0 72 75 6e 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20  runcate = 3,..  
14ce0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
14cf0 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20  .    /// SQLite 
14d00 77 69 6c 6c 20 73 74 6f 72 65 20 74 68 65 20 6a  will store the j
14d10 6f 75 72 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69  ournal in volati
14d20 6c 65 20 52 41 4d 2e 20 20 54 68 69 73 20 73 61  le RAM.  This sa
14d30 76 65 73 20 64 69 73 6b 20 49 2f 4f 20 62 75 74  ves disk I/O but
14d40 20 61 74 20 74 68 65 20 65 78 70 65 6e 73 65 20   at the expense 
14d50 6f 66 20 64 61 74 61 62 61 73 65 20 73 61 66 65  of database safe
14d60 74 79 20 61 6e 64 20 69 6e 74 65 67 72 69 74 79  ty and integrity
14d70 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  ...    /// If th
14d80 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  e application us
14d90 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61 73 68  ing SQLite crash
14da0 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65  es in the middle
14db0 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f   of a transactio
14dc0 6e 20 77 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52  n when the MEMOR
14dd0 59 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64  Y journaling mod
14de0 65 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74  e is set, then t
14df0 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61  he..    /// data
14e00 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 76  base file will v
14e10 65 72 79 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f  ery likely go co
14e20 72 72 75 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rrupt...    /// 
14e30 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14e40 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20  Memory = 4,..   
14e50 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14e60 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75      /// SQLite u
14e70 73 65 73 20 61 20 77 72 69 74 65 2d 61 68 65 61  ses a write-ahea
14e80 64 20 6c 6f 67 20 69 6e 73 74 65 61 64 20 6f 66  d log instead of
14e90 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72   a rollback jour
14ea0 6e 61 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  nal to implement
14eb0 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20   transactions.  
14ec0 54 68 65 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69  The WAL journali
14ed0 6e 67 20 6d 6f 64 65 20 69 73 20 70 65 72 73 69  ng mode is persi
14ee0 73 74 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20  stent;..    /// 
14ef0 61 66 74 65 72 20 62 65 69 6e 67 20 73 65 74 20  after being set 
14f00 69 74 20 73 74 61 79 73 20 69 6e 20 65 66 66 65  it stays in effe
14f10 63 74 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70  ct across multip
14f20 6c 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  le database conn
14f30 65 63 74 69 6f 6e 73 20 61 6e 64 20 61 66 74 65  ections and afte
14f40 72 20 63 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65  r closing and re
14f50 6f 70 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61  opening the data
14f60 62 61 73 65 2e 20 41 20 64 61 74 61 62 61 73 65  base. A database
14f70 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c  ..    /// in WAL
14f80 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65   journaling mode
14f90 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63   can only be acc
14fa0 65 73 73 65 64 20 62 79 20 53 51 4c 69 74 65 20  essed by SQLite 
14fb0 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72  version 3.7.0 or
14fc0 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f   later...    ///
14fd0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14fe0 20 57 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d   Wal = 5..  }...
14ff0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
15000 0d 0a 20 20 2f 2f 2f 20 50 6f 73 73 69 62 6c 65  ..  /// Possible
15010 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
15020 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61  "synchronous" da
15030 74 61 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20  tabase setting. 
15040 20 54 68 69 73 20 73 65 74 74 69 6e 67 20 64 65   This setting de
15050 74 65 72 6d 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20  termines..  /// 
15060 68 6f 77 20 6f 66 74 65 6e 20 74 68 65 20 64 61  how often the da
15070 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 63 61  tabase engine ca
15080 6c 6c 73 20 74 68 65 20 78 53 79 6e 63 20 6d 65  lls the xSync me
15090 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46 53 2e  thod of the VFS.
150a0 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
150b0 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65  y>..  internal e
150c0 6e 75 6d 20 53 51 4c 69 74 65 53 79 6e 63 68 72  num SQLiteSynchr
150d0 6f 6e 6f 75 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a  onousEnum..  {..
150e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
150f0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55  ry>..      /// U
15100 73 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 22  se the default "
15110 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74  synchronous" dat
15120 61 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20  abase setting.  
15130 43 75 72 72 65 6e 74 6c 79 2c 20 74 68 69 73 20  Currently, this 
15140 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20  should be..     
15150 20 2f 2f 2f 20 74 68 65 20 73 61 6d 65 20 61 73   /// the same as
15160 20 75 73 69 6e 67 20 74 68 65 20 46 55 4c 4c 20   using the FULL 
15170 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mode...      ///
15180 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15190 20 20 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c     Default = -1,
151a0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
151b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
151c0 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
151d0 65 6e 67 69 6e 65 20 63 6f 6e 74 69 6e 75 65 73  engine continues
151e0 20 77 69 74 68 6f 75 74 20 73 79 6e 63 69 6e 67   without syncing
151f0 20 61 73 20 73 6f 6f 6e 20 61 73 20 69 74 20 68   as soon as it h
15200 61 73 20 68 61 6e 64 65 64 0d 0a 20 20 20 20 20  as handed..     
15210 20 2f 2f 2f 20 64 61 74 61 20 6f 66 66 20 74 6f   /// data off to
15220 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
15230 79 73 74 65 6d 2e 20 20 49 66 20 74 68 65 20 61  ystem.  If the a
15240 70 70 6c 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69  pplication runni
15250 6e 67 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20  ng SQLite..     
15260 20 2f 2f 2f 20 63 72 61 73 68 65 73 2c 20 74 68   /// crashes, th
15270 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73  e data will be s
15280 61 66 65 2c 20 62 75 74 20 74 68 65 20 64 61 74  afe, but the dat
15290 61 62 61 73 65 20 6d 69 67 68 74 20 62 65 63 6f  abase might beco
152a0 6d 65 20 63 6f 72 72 75 70 74 65 64 0d 0a 20 20  me corrupted..  
152b0 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6f      /// if the o
152c0 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
152d0 63 72 61 73 68 65 73 20 6f 72 20 74 68 65 20 63  crashes or the c
152e0 6f 6d 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f  omputer loses po
152f0 77 65 72 20 62 65 66 6f 72 65 20 74 68 61 74 0d  wer before that.
15300 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20  .      /// data 
15310 68 61 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e  has been written
15320 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72   to the disk sur
15330 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  face...      ///
15340 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15350 20 20 20 4f 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20     Off = 0,.... 
15360 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
15370 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
15380 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
15390 65 20 77 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e  e will still syn
153a0 63 20 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72  c at the most cr
153b0 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20  itical moments, 
153c0 62 75 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c  but..      /// l
153d0 65 73 73 20 6f 66 74 65 6e 20 74 68 61 6e 20 69  ess often than i
153e0 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68  n FULL mode.  Th
153f0 65 72 65 20 69 73 20 61 20 76 65 72 79 20 73 6d  ere is a very sm
15400 61 6c 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d  all (though non-
15410 7a 65 72 6f 29 0d 0a 20 20 20 20 20 20 2f 2f 2f  zero)..      ///
15420 20 63 68 61 6e 63 65 20 74 68 61 74 20 61 20 70   chance that a p
15430 6f 77 65 72 20 66 61 69 6c 75 72 65 20 61 74 20  ower failure at 
15440 6a 75 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74  just the wrong t
15450 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70  ime could corrup
15460 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  t the..      ///
15470 20 64 61 74 61 62 61 73 65 20 69 6e 20 4e 4f 52   database in NOR
15480 4d 41 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  MAL mode...     
15490 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
154a0 0a 20 20 20 20 20 20 4e 6f 72 6d 61 6c 20 3d 20  .      Normal = 
154b0 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
154c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
154d0 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73   /// The databas
154e0 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c 20 75 73  e engine will us
154f0 65 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68  e the xSync meth
15500 6f 64 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f  od of the VFS to
15510 20 65 6e 73 75 72 65 20 74 68 61 74 0d 0a 20 20   ensure that..  
15520 20 20 20 20 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74      /// all cont
15530 65 6e 74 20 69 73 20 73 61 66 65 6c 79 20 77 72  ent is safely wr
15540 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73  itten to the dis
15550 6b 20 73 75 72 66 61 63 65 20 70 72 69 6f 72 20  k surface prior 
15560 74 6f 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a  to continuing...
15570 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65        /// This e
15580 6e 73 75 72 65 73 20 74 68 61 74 20 61 6e 20 6f  nsures that an o
15590 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
155a0 63 72 61 73 68 20 6f 72 20 70 6f 77 65 72 20 66  crash or power f
155b0 61 69 6c 75 72 65 20 77 69 6c 6c 20 6e 6f 74 0d  ailure will not.
155c0 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75  .      /// corru
155d0 70 74 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  pt the database.
155e0 20 20 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f    FULL synchrono
155f0 75 73 20 69 73 20 76 65 72 79 20 73 61 66 65 2c  us is very safe,
15600 20 62 75 74 20 69 74 20 69 73 20 61 6c 73 6f 0d   but it is also.
15610 0a 20 20 20 20 20 20 2f 2f 2f 20 73 6c 6f 77 65  .      /// slowe
15620 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  r...      /// </
15630 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15640 46 75 6c 6c 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d  Full = 2..  }...
15650 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
15660 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75  ..  /// The requ
15670 65 73 74 65 64 20 63 6f 6d 6d 61 6e 64 20 65 78  ested command ex
15680 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 54  ecution type.  T
15690 68 69 73 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69  his controls whi
156a0 63 68 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65  ch method of the
156b0 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65  ..  /// <see cre
156c0 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  f="SQLiteCommand
156d0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 77 69 6c 6c  " /> object will
156e0 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f   be called...  /
156f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15700 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
15710 69 74 65 45 78 65 63 75 74 65 54 79 70 65 0d 0a  iteExecuteType..
15720 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
15730 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15740 2f 2f 2f 20 44 6f 20 6e 6f 74 68 69 6e 67 2e 20  /// Do nothing. 
15750 20 4e 6f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20   No method will 
15760 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
15770 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15780 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30  ..      None = 0
15790 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
157a0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
157b0 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20  /// The command 
157c0 69 73 20 6e 6f 74 20 65 78 70 65 63 74 65 64 20  is not expected 
157d0 74 6f 20 72 65 74 75 72 6e 20 61 20 72 65 73 75  to return a resu
157e0 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75  lt -OR- the resu
157f0 6c 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20  lt is not..     
15800 20 2f 2f 2f 20 6e 65 65 64 65 64 2e 20 20 54 68   /// needed.  Th
15810 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
15820 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
15830 74 65 4e 6f 6e 51 75 65 72 79 28 29 22 20 2f 3e  teNonQuery()" />
15840 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   or..      /// <
15850 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
15860 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e  Command.ExecuteN
15870 6f 6e 51 75 65 72 79 28 43 6f 6d 6d 61 6e 64 42  onQuery(CommandB
15880 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 20 6d 65  ehavior)" />  me
15890 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  thod..      /// 
158a0 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
158b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
158c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e  mary>..      Non
158d0 51 75 65 72 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20  Query = 1,....  
158e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
158f0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
15900 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65   command is expe
15910 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61  cted to return a
15920 20 73 63 61 6c 61 72 20 72 65 73 75 6c 74 20 2d   scalar result -
15930 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74 20 73  OR- the result s
15940 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  hould..      ///
15950 20 62 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 61   be limited to a
15960 20 73 63 61 6c 61 72 20 72 65 73 75 6c 74 2e 20   scalar result. 
15970 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
15980 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78  SQLiteCommand.Ex
15990 65 63 75 74 65 53 63 61 6c 61 72 28 29 22 20 2f  ecuteScalar()" /
159a0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  >..      /// or 
159b0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
159c0 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
159d0 53 63 61 6c 61 72 28 43 6f 6d 6d 61 6e 64 42 65  Scalar(CommandBe
159e0 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68  havior)" /> meth
159f0 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f  od will..      /
15a00 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  // be called... 
15a10 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
15a20 72 79 3e 0d 0a 20 20 20 20 20 20 53 63 61 6c 61  ry>..      Scala
15a30 72 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20  r = 2,....      
15a40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15a50 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d       /// The com
15a60 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74 65 64  mand is expected
15a70 20 74 6f 20 72 65 74 75 72 6e 20 3c 73 65 65 20   to return <see 
15a80 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61  cref="SQLiteData
15a90 52 65 61 64 65 72 22 20 2f 3e 20 72 65 73 75 6c  Reader" /> resul
15aa0 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  t...      /// Th
15ab0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
15ac0 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
15ad0 74 65 52 65 61 64 65 72 28 29 22 20 2f 3e 20 6f  teReader()" /> o
15ae0 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  r..      /// <se
15af0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
15b00 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61  mmand.ExecuteRea
15b10 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76  der(CommandBehav
15b20 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20  ior)" /> method 
15b30 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  will..      /// 
15b40 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  be called...    
15b50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15b60 0d 0a 20 20 20 20 20 20 52 65 61 64 65 72 20 3d  ..      Reader =
15b70 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   3,....      ///
15b80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
15b90 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65    /// Use the de
15ba0 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 65 78  fault command ex
15bb0 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 55  ecution type.  U
15bc0 73 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20  sing this value 
15bd0 69 73 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20  is the same..   
15be0 20 20 20 2f 2f 2f 20 61 73 20 75 73 69 6e 67 20     /// as using 
15bf0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
15c00 51 4c 69 74 65 45 78 65 63 75 74 65 54 79 70 65  QLiteExecuteType
15c10 2e 4e 6f 6e 51 75 65 72 79 22 20 2f 3e 20 76 61  .NonQuery" /> va
15c20 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
15c30 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15c40 20 20 44 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 51    Default = NonQ
15c50 75 65 72 79 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f  uery /* TODO: Go
15c60 6f 64 20 64 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a  od default? */..
15c70 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75    }....  /// <su
15c80 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
15c90 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20 72 65  e action code re
15ca0 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68  sponsible for th
15cb0 65 20 63 75 72 72 65 6e 74 20 63 61 6c 6c 20 69  e current call i
15cc0 6e 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a  nto the authoriz
15cd0 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  er...  /// </sum
15ce0 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
15cf0 65 6e 75 6d 20 53 51 4c 69 74 65 41 75 74 68 6f  enum SQLiteAutho
15d00 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 0d  rizerActionCode.
15d10 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  .  {..      /// 
15d20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
15d30 20 2f 2f 2f 20 4e 6f 20 61 63 74 69 6f 6e 20 69   /// No action i
15d40 73 20 62 65 69 6e 67 20 70 65 72 66 6f 72 6d 65  s being performe
15d50 64 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20 73  d.  This value s
15d60 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65  hould not be use
15d70 64 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f  d from..      //
15d80 2f 20 65 78 74 65 72 6e 61 6c 20 63 6f 64 65 2e  / external code.
15d90 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
15da0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f  mmary>..      No
15db0 6e 65 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20  ne = -1,....    
15dc0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15dd0 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f  .      /// No lo
15de0 6e 67 65 72 20 75 73 65 64 2e 0d 0a 20 20 20 20  nger used...    
15df0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15e00 0d 0a 20 20 20 20 20 20 43 6f 70 79 20 3d 20 30  ..      Copy = 0
15e10 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
15e20 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
15e30 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c  /// An index wil
15e40 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
15e50 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
15e60 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
15e70 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
15e80 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74  index name and t
15e90 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
15ea0 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
15eb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
15ec0 0a 20 20 20 20 20 20 43 72 65 61 74 65 49 6e 64  .      CreateInd
15ed0 65 78 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  ex = 1,....     
15ee0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15ef0 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c        /// A tabl
15f00 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  e will be create
15f10 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
15f20 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
15f30 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
15f40 20 2f 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20   /// table name 
15f50 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
15f60 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
15f70 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
15f80 72 65 61 74 65 54 61 62 6c 65 20 3d 20 32 2c 0d  reateTable = 2,.
15f90 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
15fa0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
15fb0 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e  / A temporary in
15fc0 64 65 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61  dex will be crea
15fd0 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
15fe0 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
15ff0 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
16000 72 65 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d  re the index nam
16010 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
16020 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
16030 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
16040 20 20 20 43 72 65 61 74 65 54 65 6d 70 49 6e 64     CreateTempInd
16050 65 78 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20  ex = 3,....     
16060 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16070 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70        /// A temp
16080 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c  orary table will
16090 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68   be created.  Th
160a0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
160b0 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
160c0 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
160d0 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
160e0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
160f0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16100 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
16110 65 6d 70 54 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d  empTable = 4,...
16120 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16130 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16140 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67  A temporary trig
16150 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ger will be crea
16160 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
16170 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16180 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
16190 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20 6e  re the trigger n
161a0 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
161b0 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
161c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
161d0 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 54       CreateTempT
161e0 72 69 67 67 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20  rigger = 5,.... 
161f0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16200 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16210 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77  temporary view w
16220 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16230 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16240 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
16250 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
16260 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20  e view name and 
16270 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
16280 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16290 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74  ry>..      Creat
162a0 65 54 65 6d 70 56 69 65 77 20 3d 20 36 2c 0d 0a  eTempView = 6,..
162b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
162c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
162d0 20 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20   A trigger will 
162e0 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
162f0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16300 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16310 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72  he..      /// tr
16320 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74  igger name and t
16330 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
16340 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
16350 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
16360 74 65 54 72 69 67 67 65 72 20 3d 20 37 2c 0d 0a  teTrigger = 7,..
16370 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16380 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16390 20 41 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20   A view will be 
163a0 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
163b0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
163c0 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
163d0 76 69 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  view..      /// 
163e0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
163f0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16400 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16410 20 20 20 20 43 72 65 61 74 65 56 69 65 77 20 3d      CreateView =
16420 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   8,....      ///
16430 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16440 20 20 2f 2f 2f 20 41 20 44 45 4c 45 54 45 20 73    /// A DELETE s
16450 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
16460 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
16470 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16480 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
16490 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
164a0 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
164b0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
164c0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
164d0 0a 20 20 20 20 20 20 44 65 6c 65 74 65 20 3d 20  .      Delete = 
164e0 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  9,....      /// 
164f0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16500 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69   /// An index wi
16510 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
16520 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
16530 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
16540 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
16550 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
16560 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16570 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16580 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16590 70 49 6e 64 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a  pIndex = 10,....
165a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
165b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
165c0 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64   table will be d
165d0 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
165e0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
165f0 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74  uments are the t
16600 61 62 6c 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ables..      ///
16610 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
16620 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
16630 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16640 20 20 20 20 20 44 72 6f 70 54 61 62 6c 65 20 3d       DropTable =
16650 20 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   11,....      //
16660 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16670 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
16680 72 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65  ry index will be
16690 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
166a0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
166b0 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
166c0 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 64 65      /// the inde
166d0 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  x name and the t
166e0 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
166f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16700 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
16710 49 6e 64 65 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20  Index = 12,.... 
16720 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
16730 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
16740 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20  temporary table 
16750 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
16760 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
16770 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
16780 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  are..      /// t
16790 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
167a0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
167b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
167c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
167d0 70 54 65 6d 70 54 61 62 6c 65 20 3d 20 31 33 2c  pTempTable = 13,
167e0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
167f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
16800 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
16810 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64  rigger will be d
16820 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
16830 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
16840 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f  uments..      //
16850 2f 20 61 72 65 20 74 68 65 20 74 72 69 67 67 65  / are the trigge
16860 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74  r name and the t
16870 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  able name...    
16880 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
16890 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70  ..      DropTemp
168a0 54 72 69 67 67 65 72 20 3d 20 31 34 2c 0d 0a 0d  Trigger = 14,...
168b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
168c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
168d0 41 20 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77  A temporary view
168e0 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
168f0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
16900 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
16910 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   are..      /// 
16920 74 68 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e  the view name an
16930 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
16940 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16950 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16960 70 54 65 6d 70 56 69 65 77 20 3d 20 31 35 2c 0d  pTempView = 15,.
16970 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
16980 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
16990 2f 20 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c  / A trigger will
169a0 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
169b0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
169c0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
169d0 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  the..      /// t
169e0 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20  rigger name and 
169f0 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d  the table name..
16a00 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16a10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
16a20 70 54 72 69 67 67 65 72 20 3d 20 31 36 2c 0d 0a  pTrigger = 16,..
16a30 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
16a40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
16a50 20 41 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20   A view will be 
16a60 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63  dropped.  The ac
16a70 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
16a80 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20  guments are the 
16a90 76 69 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  view..      /// 
16aa0 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
16ab0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16ac0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16ad0 20 20 20 20 44 72 6f 70 56 69 65 77 20 3d 20 31      DropView = 1
16ae0 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  7,....      /// 
16af0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
16b00 20 2f 2f 2f 20 41 6e 20 49 4e 53 45 52 54 20 73   /// An INSERT s
16b10 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
16b20 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
16b30 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16b40 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
16b50 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
16b60 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
16b70 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
16b80 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
16b90 0a 20 20 20 20 20 20 49 6e 73 65 72 74 20 3d 20  .      Insert = 
16ba0 31 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  18,....      ///
16bb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16bc0 20 20 2f 2f 2f 20 41 20 50 52 41 47 4d 41 20 73    /// A PRAGMA s
16bd0 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
16be0 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
16bf0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
16c00 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
16c10 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 6e 61 6d   /// are the nam
16c20 65 20 6f 66 20 74 68 65 20 50 52 41 47 4d 41 20  e of the PRAGMA 
16c30 61 6e 64 20 74 68 65 20 6e 65 77 20 76 61 6c 75  and the new valu
16c40 65 20 6f 72 20 61 20 6e 75 6c 6c 20 76 61 6c 75  e or a null valu
16c50 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16c60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16c70 50 72 61 67 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a  Pragma = 19,....
16c80 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
16c90 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
16ca0 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69   table column wi
16cb0 6c 6c 20 62 65 20 72 65 61 64 2e 20 20 54 68 65  ll be read.  The
16cc0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16cd0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
16ce0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61  he..      /// ta
16cf0 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ble name and the
16d00 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20   column name... 
16d10 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16d20 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 20  ry>..      Read 
16d30 3d 20 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 20,....      /
16d40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16d50 20 20 20 20 2f 2f 2f 20 41 20 53 45 4c 45 43 54      /// A SELECT
16d60 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
16d70 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68  be executed.  Th
16d80 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
16d90 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
16da0 20 20 20 2f 2f 2f 20 61 72 65 20 62 6f 74 68 20     /// are both 
16db0 6e 75 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20  null values...  
16dc0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16dd0 79 3e 0d 0a 20 20 20 20 20 20 53 65 6c 65 63 74  y>..      Select
16de0 20 3d 20 32 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 21,....      
16df0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
16e00 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73       /// A trans
16e10 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 73  action will be s
16e20 74 61 72 74 65 64 2c 20 63 6f 6d 6d 69 74 74 65  tarted, committe
16e30 64 2c 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63  d, or rolled bac
16e40 6b 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f  k.  The..      /
16e50 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  // action-specif
16e60 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
16e70 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
16e80 20 6f 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49   operation (BEGI
16e90 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 4f  N,..      /// CO
16ea0 4d 4d 49 54 2c 20 6f 72 20 52 4f 4c 4c 42 41 43  MMIT, or ROLLBAC
16eb0 4b 29 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  K) and a null va
16ec0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
16ed0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16ee0 20 20 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20    Transaction = 
16ef0 32 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  22,....      ///
16f00 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16f10 20 20 2f 2f 2f 20 41 6e 20 55 50 44 41 54 45 20    /// An UPDATE 
16f20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62  statement will b
16f30 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65  e executed.  The
16f40 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
16f50 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
16f60 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61    /// are the ta
16f70 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ble name and the
16f80 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20   column name... 
16f90 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16fa0 72 79 3e 0d 0a 20 20 20 20 20 20 55 70 64 61 74  ry>..      Updat
16fb0 65 20 3d 20 32 33 2c 0d 0a 0d 0a 20 20 20 20 20  e = 23,....     
16fc0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
16fd0 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61        /// A data
16fe0 62 61 73 65 20 77 69 6c 6c 20 62 65 20 61 74 74  base will be att
16ff0 61 63 68 65 64 20 74 6f 20 74 68 65 20 63 6f 6e  ached to the con
17000 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63  nection.  The ac
17010 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20  tion-specific.. 
17020 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e       /// argumen
17030 74 73 20 61 72 65 20 74 68 65 20 64 61 74 61 62  ts are the datab
17040 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20 61 6e  ase file name an
17050 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
17060 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17070 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 74 74  mary>..      Att
17080 61 63 68 20 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20  ach = 24,....   
17090 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
170a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61  ..      /// A da
170b0 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65 20 64  tabase will be d
170c0 65 74 61 63 68 65 64 20 66 72 6f 6d 20 74 68 65  etached from the
170d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68   connection.  Th
170e0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
170f0 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  c..      /// arg
17100 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 64  uments are the d
17110 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64  atabase name and
17120 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a   a null value...
17130 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17140 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 61  ary>..      Deta
17150 63 68 20 3d 20 32 35 2c 0d 0a 0d 0a 20 20 20 20  ch = 25,....    
17160 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17170 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73  .      /// The s
17180 63 68 65 6d 61 20 6f 66 20 61 20 74 61 62 6c 65  chema of a table
17190 20 77 69 6c 6c 20 62 65 20 61 6c 74 65 72 65 64   will be altered
171a0 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
171b0 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
171c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
171d0 74 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d  the database nam
171e0 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
171f0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
17200 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17210 20 20 20 41 6c 74 65 72 54 61 62 6c 65 20 3d 20     AlterTable = 
17220 32 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  26,....      ///
17230 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
17240 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77    /// An index w
17250 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64 20 61  ill be deleted a
17260 6e 64 20 74 68 65 6e 20 72 65 63 72 65 61 74 65  nd then recreate
17270 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17280 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f  pecific..      /
17290 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  // arguments are
172a0 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
172b0 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
172c0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
172d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
172e0 65 69 6e 64 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a  eindex = 27,....
172f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17300 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
17310 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61   table will be a
17320 6e 61 6c 79 7a 65 64 20 74 6f 20 67 61 74 68 65  nalyzed to gathe
17330 72 73 20 73 74 61 74 69 73 74 69 63 73 20 61 62  rs statistics ab
17340 6f 75 74 20 69 74 2e 20 20 54 68 65 0d 0a 20 20  out it.  The..  
17350 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73      /// action-s
17360 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17370 73 20 61 72 65 20 74 68 65 20 74 61 62 6c 65 20  s are the table 
17380 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
17390 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
173a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
173b0 20 20 20 20 41 6e 61 6c 79 7a 65 20 3d 20 32 38      Analyze = 28
173c0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
173d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
173e0 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61  /// A virtual ta
173f0 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ble will be crea
17400 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
17410 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
17420 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
17430 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  // the table nam
17440 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65  e and the module
17450 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
17460 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17470 20 20 20 20 43 72 65 61 74 65 56 74 61 62 6c 65      CreateVtable
17480 20 3d 20 32 39 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 29,....      
17490 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
174a0 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75       /// A virtu
174b0 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  al table will be
174c0 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
174d0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
174e0 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
174f0 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
17500 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d  e name and the m
17510 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  odule name...   
17520 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17530 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 74 61  >..      DropVta
17540 62 6c 65 20 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20  ble = 30,....   
17550 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17560 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 51  ..      /// A SQ
17570 4c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  L function will 
17580 62 65 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 20  be called.  The 
17590 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
175a0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 61 0d  arguments are a.
175b0 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20  .      /// null 
175c0 76 61 6c 75 65 20 61 6e 64 20 74 68 65 20 66 75  value and the fu
175d0 6e 63 74 69 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20  nction name...  
175e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
175f0 79 3e 0d 0a 20 20 20 20 20 20 46 75 6e 63 74 69  y>..      Functi
17600 6f 6e 20 3d 20 33 31 2c 0d 0a 0d 0a 20 20 20 20  on = 31,....    
17610 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17620 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 61 76  .      /// A sav
17630 65 70 6f 69 6e 74 20 77 69 6c 6c 20 62 65 20 63  epoint will be c
17640 72 65 61 74 65 64 2c 20 72 65 6c 65 61 73 65 64  reated, released
17650 2c 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b  , or rolled back
17660 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f  .  The..      //
17670 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  / action-specifi
17680 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
17690 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
176a0 6f 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e  operation (BEGIN
176b0 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52 45 4c  ,..      /// REL
176c0 45 41 53 45 2c 20 6f 72 20 52 4f 4c 4c 42 41 43  EASE, or ROLLBAC
176d0 4b 29 20 61 6e 64 20 74 68 65 20 73 61 76 65 70  K) and the savep
176e0 6f 69 6e 74 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  oint name...    
176f0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17700 0d 0a 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e  ..      Savepoin
17710 74 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20  t = 32,....     
17720 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17730 20 20 20 20 20 20 2f 2f 2f 20 41 20 72 65 63 75        /// A recu
17740 72 73 69 76 65 20 71 75 65 72 79 20 77 69 6c 6c  rsive query will
17750 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54   be executed.  T
17760 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
17770 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
17780 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 77 6f 20      /// are two 
17790 6e 75 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20  null values...  
177a0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
177b0 79 3e 0d 0a 20 20 20 20 20 20 52 65 63 75 72 73  y>..      Recurs
177c0 69 76 65 20 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d  ive = 33..  }...
177d0 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
177e0 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 6f 73 73  ..  /// The poss
177f0 69 62 6c 65 20 72 65 74 75 72 6e 20 63 6f 64 65  ible return code
17800 73 20 66 6f 72 20 74 68 65 20 70 72 6f 67 72 65  s for the progre
17810 73 73 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a 20 20  ss callback...  
17820 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17830 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
17840 4c 69 74 65 50 72 6f 67 72 65 73 73 52 65 74 75  LiteProgressRetu
17850 72 6e 43 6f 64 65 20 2f 2a 20 69 6e 74 20 2a 2f  rnCode /* int */
17860 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f  ..  {..      ///
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 54 68 65 20 6f 70 65 72 61 74    /// The operat
17890 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e 74 69  ion should conti
178a0 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nue...      /// 
178b0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
178c0 20 20 43 6f 6e 74 69 6e 75 65 20 3d 20 30 2c 0d    Continue = 0,.
178d0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
178e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
178f0 2f 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  / The operation 
17900 73 68 6f 75 6c 64 20 62 65 20 69 6e 74 65 72 72  should be interr
17910 75 70 74 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  upted...      //
17920 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17930 20 20 20 20 49 6e 74 65 72 72 75 70 74 20 3d 20      Interrupt = 
17940 31 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  1..  }....  /// 
17950 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
17960 20 54 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65   The return code
17970 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
17980 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61   call into the a
17990 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f  uthorizer...  //
179a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
179b0 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
179c0 74 65 41 75 74 68 6f 72 69 7a 65 72 52 65 74 75  teAuthorizerRetu
179d0 72 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20  rnCode..  {..   
179e0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
179f0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
17a00 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61  action will be a
17a10 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20 20 20 20 2f  llowed...      /
17a20 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17a30 20 20 20 20 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a       Ok = 0,....
17a40 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17a50 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
17a60 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f  he overall actio
17a70 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c  n will be disall
17a80 6f 77 65 64 20 61 6e 64 20 61 6e 20 65 72 72 6f  owed and an erro
17a90 72 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62  r message will b
17aa0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 74  e..      /// ret
17ab0 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 71  urned from the q
17ac0 75 65 72 79 20 70 72 65 70 61 72 61 74 69 6f 6e  uery preparation
17ad0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
17ae0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17af0 20 20 20 20 20 20 44 65 6e 79 20 3d 20 31 2c 0d        Deny = 1,.
17b00 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
17b10 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17b20 2f 20 54 68 65 20 73 70 65 63 69 66 69 63 20 61  / The specific a
17b30 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69  ction will be di
17b40 73 61 6c 6c 6f 77 65 64 3b 20 68 6f 77 65 76 65  sallowed; howeve
17b50 72 2c 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 61  r, the overall a
17b60 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ction..      ///
17b70 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 2e 20   will continue. 
17b80 20 54 68 65 20 65 78 61 63 74 20 65 66 66 65 63   The exact effec
17b90 74 73 20 6f 66 20 74 68 69 73 20 72 65 74 75 72  ts of this retur
17ba0 6e 20 63 6f 64 65 20 76 61 72 79 20 64 65 70 65  n code vary depe
17bb0 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f  nding..      ///
17bc0 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 63   on the specific
17bd0 20 61 63 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20   action, please 
17be0 72 65 66 65 72 20 74 6f 20 74 68 65 20 53 51 4c  refer to the SQL
17bf0 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  ite core library
17c00 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f 63 75  ..      /// docu
17c10 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75  mentation for fu
17c20 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20  ther details... 
17c30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
17c40 72 79 3e 0d 0a 20 20 20 20 20 20 49 67 6e 6f 72  ry>..      Ignor
17c50 65 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  e = 2..  }....  
17c60 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17c70 20 2f 2f 2f 20 43 6c 61 73 73 20 75 73 65 64 20   /// Class used 
17c80 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 65  internally to de
17c90 74 65 72 6d 69 6e 65 20 74 68 65 20 64 61 74 61  termine the data
17ca0 74 79 70 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  type of a column
17cb0 20 69 6e 20 61 20 72 65 73 75 6c 74 73 65 74 0d   in a resultset.
17cc0 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
17cd0 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65  >..  internal se
17ce0 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74  aled class SQLit
17cf0 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20  eType..  {..    
17d00 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17d10 20 20 20 2f 2f 2f 20 54 68 65 20 44 62 54 79 70     /// The DbTyp
17d20 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c  e of the column,
17d30 20 6f 72 20 44 62 54 79 70 65 2e 4f 62 6a 65 63   or DbType.Objec
17d40 74 20 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62  t if it cannot b
17d50 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20  e determined..  
17d60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17d70 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
17d80 62 54 79 70 65 20 54 79 70 65 3b 0d 0a 20 20 20  bType Type;..   
17d90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17da0 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 66 66 69      /// The affi
17db0 6e 69 74 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  nity of a column
17dc0 2c 20 75 73 65 64 20 66 6f 72 20 65 78 70 72 65  , used for expre
17dd0 73 73 69 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54  ssions or when T
17de0 79 70 65 20 69 73 20 44 62 54 79 70 65 2e 4f 62  ype is DbType.Ob
17df0 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ject..    /// </
17e00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e  summary>..    in
17e10 74 65 72 6e 61 6c 20 54 79 70 65 41 66 66 69 6e  ternal TypeAffin
17e20 69 74 79 20 41 66 66 69 6e 69 74 79 3b 0d 0a 0d  ity Affinity;...
17e30 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
17e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e80 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
17e90 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
17ea0 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65 66 61  onstructs a defa
17eb0 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f 66 20  ult instance of 
17ec0 74 68 69 73 20 74 79 70 65 2e 0d 0a 20 20 20 20  this type...    
17ed0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17ee0 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
17ef0 65 54 79 70 65 28 29 0d 0a 20 20 20 20 7b 0d 0a  eType()..    {..
17f00 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
17f10 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ing...    }.... 
17f20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17f70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
17f80 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
17f90 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61  structs an insta
17fa0 6e 63 65 20 6f 66 20 74 68 69 73 20 74 79 70 65  nce of this type
17fb0 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
17fc0 69 65 64 20 66 69 65 6c 64 20 76 61 6c 75 65 73  ied field values
17fd0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
17fe0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
17ff0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 66 66 69  param name="affi
18000 6e 69 74 79 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  nity">..    /// 
18010 54 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  The type affinit
18020 79 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65  y to use for the
18030 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e 0d 0a   new instance...
18040 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
18050 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
18060 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d 0a 20   name="type">.. 
18070 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
18080 61 73 65 20 74 79 70 65 20 74 6f 20 75 73 65 20  ase type to use 
18090 66 6f 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74  for the new inst
180a0 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ance...    /// <
180b0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 75 62  /param>..    pub
180c0 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65 28 0d  lic SQLiteType(.
180d0 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
180e0 69 74 79 20 61 66 66 69 6e 69 74 79 2c 0d 0a 20  ity affinity,.. 
180f0 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
18100 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20  ..      )..     
18110 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 7b   : this()..    {
18120 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 41 66 66  ..      this.Aff
18130 69 6e 69 74 79 20 3d 20 61 66 66 69 6e 69 74 79  inity = affinity
18140 3b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 54 79  ;..      this.Ty
18150 70 65 20 3d 20 74 79 70 65 3b 0d 0a 20 20 20 20  pe = type;..    
18160 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f  }..  }....  ////
18170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69  /////////....  i
181c0 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
181d0 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79 70  lass SQLiteDbTyp
181e0 65 4d 61 70 0d 0a 20 20 20 20 20 20 3a 20 44 69  eMap..      : Di
181f0 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c  ctionary<string,
18200 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
18210 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20  ping>..  {..    
18220 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
18230 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 70 72  e Data..      pr
18240 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79  ivate Dictionary
18250 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44  <DbType, SQLiteD
18260 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 72 65  bTypeMapping> re
18270 76 65 72 73 65 3b 0d 0a 20 20 20 20 20 20 23 65  verse;..      #e
18280 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
18290 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
182e0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
182f0 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
18300 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53  ..      public S
18310 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 29  QLiteDbTypeMap()
18320 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 62 61  ..          : ba
18330 73 65 28 6e 65 77 20 54 79 70 65 4e 61 6d 65 53  se(new TypeNameS
18340 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 28 29 29  tringComparer())
18350 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18360 20 20 20 20 20 72 65 76 65 72 73 65 20 3d 20 6e       reverse = n
18370 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62  ew Dictionary<Db
18380 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79  Type, SQLiteDbTy
18390 70 65 4d 61 70 70 69 6e 67 3e 28 29 3b 0d 0a 20  peMapping>();.. 
183a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18400 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
18410 44 62 54 79 70 65 4d 61 70 28 0d 0a 20 20 20 20  DbTypeMap(..    
18420 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62 6c        IEnumerabl
18430 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  e<SQLiteDbTypeMa
18440 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f  pping> collectio
18450 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d 0a  n..          )..
18460 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
18470 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ()..      {..   
18480 20 20 20 20 20 20 20 41 64 64 28 63 6f 6c 6c 65         Add(colle
18490 63 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 7d  ction);..      }
184a0 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
184b0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
184c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18500 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
18510 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e 43 6f  region System.Co
18520 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69  llections.Generi
18530 63 2e 44 69 63 74 69 6f 6e 61 72 79 20 22 4f 76  c.Dictionary "Ov
18540 65 72 72 69 64 65 73 22 0d 0a 20 20 20 20 20 20  errides"..      
18550 70 75 62 6c 69 63 20 6e 65 77 20 69 6e 74 20 43  public new int C
18560 6c 65 61 72 28 29 0d 0a 20 20 20 20 20 20 7b 0d  lear()..      {.
18570 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 72  .          int r
18580 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20  esult = 0;....  
18590 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65          if (reve
185a0 72 73 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rse != null)..  
185b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
185c0 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
185d0 2b 3d 20 72 65 76 65 72 73 65 2e 43 6f 75 6e 74  += reverse.Count
185e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
185f0 20 72 65 76 65 72 73 65 2e 43 6c 65 61 72 28 29   reverse.Clear()
18600 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
18610 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 73 75  ..          resu
18620 6c 74 20 2b 3d 20 62 61 73 65 2e 43 6f 75 6e 74  lt += base.Count
18630 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 61 73  ;..          bas
18640 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d 0a 20 20  e.Clear();....  
18650 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
18660 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d 0d  esult;..      }.
18670 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
18680 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
18690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
186d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
186e0 65 67 69 6f 6e 20 53 51 4c 69 74 65 44 62 54 79  egion SQLiteDbTy
186f0 70 65 4d 61 70 70 69 6e 67 20 48 65 6c 70 65 72  peMapping Helper
18700 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
18710 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28  public void Add(
18720 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75  ..          IEnu
18730 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62  merable<SQLiteDb
18740 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c  TypeMapping> col
18750 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  lection..       
18760 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20     )..      {.. 
18770 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6c           if (col
18780 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29  lection == null)
18790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
187a0 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
187b0 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
187c0 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 29 3b 0d 0a  "collection");..
187d0 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65  ..          fore
187e0 61 63 68 20 28 53 51 4c 69 74 65 44 62 54 79 70  ach (SQLiteDbTyp
187f0 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 20 69 6e  eMapping item in
18800 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20   collection)..  
18810 20 20 20 20 20 20 20 20 20 20 20 20 41 64 64 28              Add(
18820 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  item);..      }.
18830 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18880 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
18890 69 63 20 76 6f 69 64 20 41 64 64 28 53 51 4c 69  ic void Add(SQLi
188a0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
188b0 69 74 65 6d 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  item)..      {..
188c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74            if (it
188d0 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  em == null)..   
188e0 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
188f0 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
18900 6c 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d  lException("item
18910 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
18920 20 69 66 20 28 69 74 65 6d 2e 74 79 70 65 4e 61   if (item.typeNa
18930 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me == null)..   
18940 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
18950 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63   new ArgumentExc
18960 65 70 74 69 6f 6e 28 22 69 74 65 6d 20 74 79 70  eption("item typ
18970 65 20 6e 61 6d 65 20 63 61 6e 6e 6f 74 20 62 65  e name cannot be
18980 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20 20   null");....    
18990 20 20 20 20 20 20 62 61 73 65 2e 41 64 64 28 69        base.Add(i
189a0 74 65 6d 2e 74 79 70 65 4e 61 6d 65 2c 20 69 74  tem.typeName, it
189b0 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  em);....        
189c0 20 20 69 66 20 28 69 74 65 6d 2e 70 72 69 6d 61    if (item.prima
189d0 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry)..           
189e0 20 20 20 72 65 76 65 72 73 65 2e 41 64 64 28 69     reverse.Add(i
189f0 74 65 6d 2e 64 61 74 61 54 79 70 65 2c 20 69 74  tem.dataType, it
18a00 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  em);..      }.. 
18a10 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
18a20 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67  //....      #reg
18a80 69 6f 6e 20 44 62 54 79 70 65 20 48 65 6c 70 65  ion DbType Helpe
18a90 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
18aa0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e   public bool Con
18ab0 74 61 69 6e 73 4b 65 79 28 44 62 54 79 70 65 20  tainsKey(DbType 
18ac0 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  key)..      {.. 
18ad0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76           if (rev
18ae0 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  erse == null).. 
18af0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
18b00 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
18b10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
18b20 65 76 65 72 73 65 2e 43 6f 6e 74 61 69 6e 73 4b  everse.ContainsK
18b30 65 79 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20  ey(key);..      
18b40 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
18b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b90 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
18ba0 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79 47 65 74  blic bool TryGet
18bb0 56 61 6c 75 65 28 44 62 54 79 70 65 20 6b 65 79  Value(DbType key
18bc0 2c 20 6f 75 74 20 53 51 4c 69 74 65 44 62 54 79  , out SQLiteDbTy
18bd0 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 29  peMapping value)
18be0 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
18bf0 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65       if (reverse
18c00 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
18c10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18c20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75        value = nu
18c30 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
18c40 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
18c50 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
18c60 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72  .          retur
18c70 6e 20 72 65 76 65 72 73 65 2e 54 72 79 47 65 74  n reverse.TryGet
18c80 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 76  Value(key, out v
18c90 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  alue);..      }.
18ca0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  ...      ///////
18cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18cf0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c  //....      publ
18d00 69 63 20 62 6f 6f 6c 20 52 65 6d 6f 76 65 28 44  ic bool Remove(D
18d10 62 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20  bType key)..    
18d20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
18d30 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75  f (reverse == nu
18d40 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18d50 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
18d60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
18d70 74 75 72 6e 20 72 65 76 65 72 73 65 2e 52 65 6d  turn reverse.Rem
18d80 6f 76 65 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20  ove(key);..     
18d90 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
18da0 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  gion..  }....  /
18db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
18e00 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
18e10 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62  d class SQLiteDb
18e20 54 79 70 65 4d 61 70 70 69 6e 67 0d 0a 20 20 7b  TypeMapping..  {
18e30 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53  ..    internal S
18e40 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
18e50 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ng(..        str
18e60 69 6e 67 20 6e 65 77 54 79 70 65 4e 61 6d 65 2c  ing newTypeName,
18e70 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70 65  ..        DbType
18e80 20 6e 65 77 44 61 74 61 54 79 70 65 2c 0d 0a 20   newDataType,.. 
18e90 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 65 77 50         bool newP
18ea0 72 69 6d 61 72 79 0d 0a 20 20 20 20 20 20 20 20  rimary..        
18eb0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
18ec0 74 79 70 65 4e 61 6d 65 20 3d 20 6e 65 77 54 79  typeName = newTy
18ed0 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64  peName;..      d
18ee0 61 74 61 54 79 70 65 20 3d 20 6e 65 77 44 61 74  ataType = newDat
18ef0 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 70 72  aType;..      pr
18f00 69 6d 61 72 79 20 3d 20 6e 65 77 50 72 69 6d 61  imary = newPrima
18f10 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ry;..    }....  
18f20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e    internal strin
18f30 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  g typeName;..   
18f40 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65   internal DbType
18f50 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20   dataType;..    
18f60 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 70 72  internal bool pr
18f70 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20  imary;..  }.... 
18f80 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
18f90 20 63 6c 61 73 73 20 54 79 70 65 4e 61 6d 65 53   class TypeNameS
18fa0 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20  tringComparer : 
18fb0 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65  IEqualityCompare
18fc0 72 3c 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a  r<string>..  {..
18fd0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75      #region IEqu
18fe0 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74  alityComparer<st
18ff0 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20  ring> Members.. 
19000 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45     public bool E
19010 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74  quals(..      st
19020 72 69 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20  ring left,..    
19030 20 20 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a    string right..
19040 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
19050 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
19060 69 6e 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c  ing.Equals(left,
19070 20 72 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f   right, StringCo
19080 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
19090 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20  IgnoreCase);..  
190a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
190b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
190f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75  //////....    pu
19100 62 6c 69 63 20 69 6e 74 20 47 65 74 48 61 73 68  blic int GetHash
19110 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72  Code(..      str
19120 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ing value..     
19130 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
19140 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f   //..      // NO
19150 54 45 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69  TE: The only thi
19160 6e 67 20 74 68 61 74 20 77 65 20 6d 75 73 74 20  ng that we must 
19170 67 75 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20  guarantee here, 
19180 61 63 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20  according..     
19190 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65   //       to the
191a0 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74   MSDN documentat
191b0 69 6f 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74  ion for IEqualit
191c0 79 43 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a 20  yComparer, is.. 
191d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
191e0 61 74 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e  at for two given
191f0 20 73 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75   strings, if Equ
19200 61 6c 73 20 72 65 74 75 72 6e 20 74 72 75 65 20  als return true 
19210 74 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20  then..      //  
19220 20 20 20 20 20 74 68 65 20 74 77 6f 20 73 74 72       the two str
19230 69 6e 67 73 20 6d 75 73 74 20 68 61 73 68 20 74  ings must hash t
19240 6f 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  o the same value
19250 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  ...      //..   
19260 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20     if (value != 
19270 6e 75 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41 54  null)..#if !PLAT
19280 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
19290 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 72  EWORK..        r
192a0 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f  eturn value.ToLo
192b0 77 65 72 49 6e 76 61 72 69 61 6e 74 28 29 2e 47  werInvariant().G
192c0 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23  etHashCode();..#
192d0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65  else..        re
192e0 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77  turn value.ToLow
192f0 65 72 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65  er().GetHashCode
19300 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ();..#endif..   
19310 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
19320 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
19330 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
19340 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20  ("value");..    
19350 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
19360 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a                 n..  }..}..