System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 64e6359dabb7c8a4dabc670e9db6e95b09cc421c:


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 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
0380: 74 20 44 62 54 79 70 65 20 46 61 6c 6c 62 61 63  t DbType Fallbac
0390: 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65 20 3d  kDefaultDbType =
03a0: 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 3b 0d   DbType.Object;.
03b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
03c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
03d0: 65 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75  e fallback defau
03e0: 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70 65  lt database type
03f0: 20 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65 20 63   name when one c
0400: 61 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69 6e 65  annot be obtaine
0410: 64 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20  d from..    /// 
0420: 61 6e 20 65 78 69 73 74 69 6e 67 20 63 6f 6e 6e  an existing conn
0430: 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63 65 2e  ection instance.
0440: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0450: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
0460: 61 6c 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  al static readon
0470: 6c 79 20 73 74 72 69 6e 67 20 46 61 6c 6c 62 61  ly string Fallba
0480: 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  ckDefaultTypeNam
0490: 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  e = String.Empty
04a0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
04b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
04c0: 54 68 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68  The value for th
04d0: 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28 65 2e  e Unix epoch (e.
04e0: 67 2e 20 4a 61 6e 75 61 72 79 20 31 2c 20 31 39  g. January 1, 19
04f0: 37 30 20 61 74 20 6d 69 64 6e 69 67 68 74 2c 20  70 at midnight, 
0500: 69 6e 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f 2f  in UTC)...    //
0510: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0520: 20 20 70 72 6f 74 65 63 74 65 64 20 73 74 61 74    protected stat
0530: 69 63 20 72 65 61 64 6f 6e 6c 79 20 44 61 74 65  ic readonly Date
0540: 54 69 6d 65 20 55 6e 69 78 45 70 6f 63 68 20 3d  Time UnixEpoch =
0550: 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 20 44 61  ..        new Da
0560: 74 65 54 69 6d 65 28 31 39 37 30 2c 20 31 2c 20  teTime(1970, 1, 
0570: 31 2c 20 30 2c 20 30 2c 20 30 2c 20 44 61 74 65  1, 0, 0, 0, Date
0580: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a  TimeKind.Utc);..
0590: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
05a0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
05b0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 4f 4c   value of the OL
05c0: 45 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65 70 6f  E Automation epo
05d0: 63 68 20 72 65 70 72 65 73 65 6e 74 65 64 20 61  ch represented a
05e0: 73 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 2e 0d  s a Julian day..
05f0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0600: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
0610: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
0620: 20 64 6f 75 62 6c 65 20 4f 6c 65 41 75 74 6f 6d   double OleAutom
0630: 61 74 69 6f 6e 45 70 6f 63 68 41 73 4a 75 6c 69  ationEpochAsJuli
0640: 61 6e 44 61 79 20 3d 20 32 34 31 35 30 31 38 2e  anDay = 2415018.
0650: 35 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  5;....    /// <s
0660: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0670: 20 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69   The format stri
0680: 6e 67 20 66 6f 72 20 44 61 74 65 54 69 6d 65 20  ng for DateTime 
0690: 76 61 6c 75 65 73 20 77 68 65 6e 20 75 73 69 6e  values when usin
06a0: 67 20 74 68 65 20 49 6e 76 61 72 69 61 6e 74 43  g the InvariantC
06b0: 75 6c 74 75 72 65 20 6f 72 20 43 75 72 72 65 6e  ulture or Curren
06c0: 74 43 75 6c 74 75 72 65 20 66 6f 72 6d 61 74 73  tCulture formats
06d0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
06e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61  mary>..    priva
06f0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
0700: 46 75 6c 6c 46 6f 72 6d 61 74 20 3d 20 22 79 79  FullFormat = "yy
0710: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
0720: 73 2e 66 66 66 66 66 66 66 4b 22 3b 0d 0a 0d 0a  s.fffffffK";....
0730: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0740: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72  >..    /// An ar
0750: 72 61 79 20 6f 66 20 49 53 4f 2d 38 36 30 31 20  ray of ISO-8601 
0760: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73  DateTime formats
0770: 20 74 68 61 74 20 77 65 20 73 75 70 70 6f 72 74   that we support
0780: 20 70 61 72 73 69 6e 67 2e 0d 0a 20 20 20 20 2f   parsing...    /
0790: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
07a0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
07b0: 63 20 73 74 72 69 6e 67 5b 5d 20 5f 64 61 74 65  c string[] _date
07c0: 74 69 6d 65 46 6f 72 6d 61 74 73 20 3d 20 6e 65  timeFormats = ne
07d0: 77 20 73 74 72 69 6e 67 5b 5d 20 7b 0d 0a 20 20  w string[] {..  
07e0: 20 20 20 20 22 54 48 48 6d 6d 73 73 4b 22 2c 0d      "THHmmssK",.
07f0: 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 4b 22 2c  .      "THHmmK",
0800: 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73  ..      "HH:mm:s
0810: 73 2e 46 46 46 46 46 46 46 4b 22 2c 0d 0a 20 20  s.FFFFFFFK",..  
0820: 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 4b 22 2c      "HH:mm:ssK",
0830: 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 4b 22  ..      "HH:mmK"
0840: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0850: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
0860: 46 46 46 46 46 4b 22 2c 20 2f 2a 20 4e 4f 54 45  FFFFFK", /* NOTE
0870: 3a 20 55 54 43 20 64 65 66 61 75 6c 74 20 28 35  : UTC default (5
0880: 29 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 22 79 79  ). */..      "yy
0890: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
08a0: 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79  sK",..      "yyy
08b0: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 22 2c  y-MM-dd HH:mmK",
08c0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
08d0: 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -ddTHH:mm:ss.FFF
08e0: 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFK",..      "
08f0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
0900: 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  K",..      "yyyy
0910: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 4b  -MM-ddTHH:mm:ssK
0920: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d  ",..      "yyyyM
0930: 4d 64 64 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20  MddHHmmssK",..  
0940: 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d      "yyyyMMddHHm
0950: 6d 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79  mK",..      "yyy
0960: 79 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46  yMMddTHHmmssFFFF
0970: 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22 54  FFFK",..      "T
0980: 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20 20 20  HHmmss",..      
0990: 22 54 48 48 6d 6d 22 2c 0d 0a 20 20 20 20 20 20  "THHmm",..      
09a0: 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  "HH:mm:ss.FFFFFF
09b0: 46 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d  F",..      "HH:m
09c0: 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 48  m:ss",..      "H
09d0: 48 3a 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79  H:mm",..      "y
09e0: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
09f0: 73 73 2e 46 46 46 46 46 46 46 22 2c 20 2f 2a 20  ss.FFFFFFF", /* 
0a00: 4e 4f 54 45 3a 20 4e 6f 6e 2d 55 54 43 20 64 65  NOTE: Non-UTC de
0a10: 66 61 75 6c 74 20 28 31 39 29 2e 20 2a 2f 0d 0a  fault (19). */..
0a20: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
0a30: 64 20 48 48 3a 6d 6d 3a 73 73 22 2c 0d 0a 20 20  d HH:mm:ss",..  
0a40: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
0a50: 48 48 3a 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22  HH:mm",..      "
0a60: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
0a70: 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a 20  :ss.FFFFFFF",.. 
0a80: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64       "yyyy-MM-dd
0a90: 54 48 48 3a 6d 6d 22 2c 0d 0a 20 20 20 20 20 20  THH:mm",..      
0aa0: 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  "yyyy-MM-ddTHH:m
0ab0: 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 79  m:ss",..      "y
0ac0: 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73 22 2c 0d  yyyMMddHHmmss",.
0ad0: 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64  .      "yyyyMMdd
0ae0: 48 48 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79  HHmm",..      "y
0af0: 79 79 79 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46  yyyMMddTHHmmssFF
0b00: 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFF",..      "
0b10: 79 79 79 79 2d 4d 4d 2d 64 64 22 2c 0d 0a 20 20  yyyy-MM-dd",..  
0b20: 20 20 20 20 22 79 79 79 79 4d 4d 64 64 22 2c 0d      "yyyyMMdd",.
0b30: 0a 20 20 20 20 20 20 22 79 79 2d 4d 4d 2d 64 64  .      "yy-MM-dd
0b40: 22 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  "..    };....   
0b50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0b60: 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65      /// The inte
0b70: 72 6e 61 6c 20 64 65 66 61 75 6c 74 20 66 6f 72  rnal default for
0b80: 6d 61 74 20 66 6f 72 20 55 54 43 20 44 61 74 65  mat for UTC Date
0b90: 54 69 6d 65 20 76 61 6c 75 65 73 20 77 68 65 6e  Time values when
0ba0: 20 63 6f 6e 76 65 72 74 69 6e 67 0d 0a 20 20 20   converting..   
0bb0: 20 2f 2f 2f 20 74 6f 20 61 20 73 74 72 69 6e 67   /// to a string
0bc0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
0bd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61  mary>..    priva
0be0: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
0bf0: 6c 79 20 73 74 72 69 6e 67 20 5f 64 61 74 65 74  ly string _datet
0c00: 69 6d 65 46 6f 72 6d 61 74 55 74 63 20 3d 20 5f  imeFormatUtc = _
0c10: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 5b  datetimeFormats[
0c20: 35 5d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  5];....    /// <
0c30: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0c40: 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20 64  / The internal d
0c50: 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f  efault format fo
0c60: 72 20 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65  r local DateTime
0c70: 20 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e   values when con
0c80: 76 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f  verting..    ///
0c90: 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   to a string... 
0ca0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0cb0: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
0cc0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
0cd0: 74 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46  tring _datetimeF
0ce0: 6f 72 6d 61 74 4c 6f 63 61 6c 20 3d 20 5f 64 61  ormatLocal = _da
0cf0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 5b 31 39  tetimeFormats[19
0d00: 5d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  ];....    /// <s
0d10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0d20: 20 41 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69   An UTF-8 Encodi
0d30: 6e 67 20 69 6e 73 74 61 6e 63 65 2c 20 73 6f 20  ng instance, so 
0d40: 77 65 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 73  we can convert s
0d50: 74 72 69 6e 67 73 20 74 6f 20 61 6e 64 20 66 72  trings to and fr
0d60: 6f 6d 20 55 54 46 2d 38 0d 0a 20 20 20 20 2f 2f  om UTF-8..    //
0d70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0d80: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
0d90: 20 45 6e 63 6f 64 69 6e 67 20 5f 75 74 66 38 20   Encoding _utf8 
0da0: 3d 20 6e 65 77 20 55 54 46 38 45 6e 63 6f 64 69  = new UTF8Encodi
0db0: 6e 67 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ng();..    /// <
0dc0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0dd0: 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44 61  / The default Da
0de0: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 66 6f  teTime format fo
0df0: 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2e  r this instance.
0e00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0e10: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
0e20: 61 6c 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  al SQLiteDateFor
0e30: 6d 61 74 73 20 5f 64 61 74 65 74 69 6d 65 46 6f  mats _datetimeFo
0e40: 72 6d 61 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rmat;..    /// <
0e50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0e60: 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44 61  / The default Da
0e70: 74 65 54 69 6d 65 4b 69 6e 64 20 66 6f 72 20 74  teTimeKind for t
0e80: 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  his instance... 
0e90: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0ea0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
0eb0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 5f 64 61  DateTimeKind _da
0ec0: 74 65 74 69 6d 65 4b 69 6e 64 3b 0d 0a 20 20 20  tetimeKind;..   
0ed0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0ee0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
0ef0: 75 6c 74 20 44 61 74 65 54 69 6d 65 20 66 6f 72  ult DateTime for
0f00: 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72 20 74  mat string for t
0f10: 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  his instance... 
0f20: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0f30: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
0f40: 73 74 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65  string _datetime
0f50: 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 3d 20 6e  FormatString = n
0f60: 75 6c 6c 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  ull;..    /// <s
0f70: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0f80: 20 49 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65   Initializes the
0f90: 20 63 6f 6e 76 65 72 73 69 6f 6e 20 63 6c 61 73   conversion clas
0fa0: 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  s..    /// </sum
0fb0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
0fc0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74 22  param name="fmt"
0fd0: 3e 54 68 65 20 64 65 66 61 75 6c 74 20 64 61 74  >The default dat
0fe0: 65 2f 74 69 6d 65 20 66 6f 72 6d 61 74 20 74 6f  e/time format to
0ff0: 20 75 73 65 20 66 6f 72 20 74 68 69 73 20 69 6e   use for this in
1000: 73 74 61 6e 63 65 3c 2f 70 61 72 61 6d 3e 0d 0a  stance</param>..
1010: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1020: 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44  ame="kind">The D
1030: 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75  ateTimeKind to u
1040: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
1050: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1060: 3d 22 66 6d 74 53 74 72 69 6e 67 22 3e 54 68 65  ="fmtString">The
1070: 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74   DateTime format
1080: 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c   string to use.<
1090: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
10a0: 65 72 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 76  ernal SQLiteConv
10b0: 65 72 74 28 0d 0a 20 20 20 20 20 20 20 20 53 51  ert(..        SQ
10c0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20  LiteDateFormats 
10d0: 66 6d 74 2c 0d 0a 20 20 20 20 20 20 20 20 44 61  fmt,..        Da
10e0: 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c  teTimeKind kind,
10f0: 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
1100: 20 66 6d 74 53 74 72 69 6e 67 0d 0a 20 20 20 20   fmtString..    
1110: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
1120: 20 20 20 20 5f 64 61 74 65 74 69 6d 65 46 6f 72      _datetimeFor
1130: 6d 61 74 20 3d 20 66 6d 74 3b 0d 0a 20 20 20 20  mat = fmt;..    
1140: 20 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 20    _datetimeKind 
1150: 3d 20 6b 69 6e 64 3b 0d 0a 20 20 20 20 20 20 5f  = kind;..      _
1160: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74  datetimeFormatSt
1170: 72 69 6e 67 20 3d 20 66 6d 74 53 74 72 69 6e 67  ring = fmtString
1180: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1190: 23 72 65 67 69 6f 6e 20 55 54 46 2d 38 20 43 6f  #region UTF-8 Co
11a0: 6e 76 65 72 73 69 6f 6e 20 46 75 6e 63 74 69 6f  nversion Functio
11b0: 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ns..    /// <sum
11c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
11d0: 6f 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67  onverts a string
11e0: 20 74 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f   to a UTF-8 enco
11f0: 64 65 64 20 62 79 74 65 20 61 72 72 61 79 20 73  ded byte array s
1200: 69 7a 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20  ized to include 
1210: 61 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 69  a null-terminati
1220: 6e 67 20 63 68 61 72 61 63 74 65 72 2e 0d 0a 20  ng character... 
1230: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1240: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1250: 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 54 65  m name="sourceTe
1260: 78 74 22 3e 54 68 65 20 73 74 72 69 6e 67 20 74  xt">The string t
1270: 6f 20 63 6f 6e 76 65 72 74 20 74 6f 20 55 54 46  o convert to UTF
1280: 2d 38 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  -8</param>..    
1290: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 62  /// <returns>A b
12a0: 79 74 65 20 61 72 72 61 79 20 63 6f 6e 74 61 69  yte array contai
12b0: 6e 69 6e 67 20 74 68 65 20 63 6f 6e 76 65 72 74  ning the convert
12c0: 65 64 20 73 74 72 69 6e 67 20 70 6c 75 73 20 61  ed string plus a
12d0: 6e 20 65 78 74 72 61 20 30 20 74 65 72 6d 69 6e  n extra 0 termin
12e0: 61 74 69 6e 67 20 62 79 74 65 20 61 74 20 74 68  ating byte at th
12f0: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72  e end of the arr
1300: 61 79 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ay.</returns>.. 
1310: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1320: 20 62 79 74 65 5b 5d 20 54 6f 55 54 46 38 28 73   byte[] ToUTF8(s
1330: 74 72 69 6e 67 20 73 6f 75 72 63 65 54 65 78 74  tring sourceText
1340: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
1350: 42 79 74 65 5b 5d 20 62 79 74 65 41 72 72 61 79  Byte[] byteArray
1360: 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e 6c 65  ;..      int nle
1370: 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74 42 79 74  n = _utf8.GetByt
1380: 65 43 6f 75 6e 74 28 73 6f 75 72 63 65 54 65 78  eCount(sourceTex
1390: 74 29 20 2b 20 31 3b 0d 0a 0d 0a 20 20 20 20 20  t) + 1;....     
13a0: 20 62 79 74 65 41 72 72 61 79 20 3d 20 6e 65 77   byteArray = new
13b0: 20 62 79 74 65 5b 6e 6c 65 6e 5d 3b 0d 0a 20 20   byte[nlen];..  
13c0: 20 20 20 20 6e 6c 65 6e 20 3d 20 5f 75 74 66 38      nlen = _utf8
13d0: 2e 47 65 74 42 79 74 65 73 28 73 6f 75 72 63 65  .GetBytes(source
13e0: 54 65 78 74 2c 20 30 2c 20 73 6f 75 72 63 65 54  Text, 0, sourceT
13f0: 65 78 74 2e 4c 65 6e 67 74 68 2c 20 62 79 74 65  ext.Length, byte
1400: 41 72 72 61 79 2c 20 30 29 3b 0d 0a 20 20 20 20  Array, 0);..    
1410: 20 20 62 79 74 65 41 72 72 61 79 5b 6e 6c 65 6e    byteArray[nlen
1420: 5d 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  ] = 0;....      
1430: 72 65 74 75 72 6e 20 62 79 74 65 41 72 72 61 79  return byteArray
1440: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1450: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1460: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61     /// Convert a
1470: 20 44 61 74 65 54 69 6d 65 20 74 6f 20 61 20 55   DateTime to a U
1480: 54 46 2d 38 20 65 6e 63 6f 64 65 64 2c 20 7a 65  TF-8 encoded, ze
1490: 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 62 79  ro-terminated by
14a0: 74 65 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 2f  te array...    /
14b0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14c0: 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e     /// <remarks>
14d0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 66  ..    /// This f
14e0: 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 63 6f 6e  unction is a con
14f0: 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f  venience functio
1500: 6e 2c 20 77 68 69 63 68 20 66 69 72 73 74 20 63  n, which first c
1510: 61 6c 6c 73 20 54 6f 53 74 72 69 6e 67 28 29 20  alls ToString() 
1520: 6f 6e 20 74 68 65 20 44 61 74 65 54 69 6d 65 2c  on the DateTime,
1530: 20 61 6e 64 20 74 68 65 6e 20 63 61 6c 6c 73 20   and then calls 
1540: 54 6f 55 54 46 38 28 29 20 77 69 74 68 20 74 68  ToUTF8() with th
1550: 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  e..    /// strin
1560: 67 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20 2f  g result...    /
1570: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
1580: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1590: 6d 65 3d 22 64 61 74 65 54 69 6d 65 56 61 6c 75  me="dateTimeValu
15a0: 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  e">The DateTime 
15b0: 74 6f 20 63 6f 6e 76 65 72 74 2e 3c 2f 70 61 72  to convert.</par
15c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
15d0: 74 75 72 6e 73 3e 54 68 65 20 55 54 46 2d 38 20  turns>The UTF-8 
15e0: 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2c 20  encoded string, 
15f0: 69 6e 63 6c 75 64 69 6e 67 20 61 20 30 20 74 65  including a 0 te
1600: 72 6d 69 6e 61 74 69 6e 67 20 62 79 74 65 20 61  rminating byte a
1610: 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  t the end of the
1620: 20 61 72 72 61 79 2e 3c 2f 72 65 74 75 72 6e 73   array.</returns
1630: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62 79  >..    public by
1640: 74 65 5b 5d 20 54 6f 55 54 46 38 28 44 61 74 65  te[] ToUTF8(Date
1650: 54 69 6d 65 20 64 61 74 65 54 69 6d 65 56 61 6c  Time dateTimeVal
1660: 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
1670: 20 20 72 65 74 75 72 6e 20 54 6f 55 54 46 38 28    return ToUTF8(
1680: 54 6f 53 74 72 69 6e 67 28 64 61 74 65 54 69 6d  ToString(dateTim
1690: 65 56 61 6c 75 65 29 29 3b 0d 0a 20 20 20 20 7d  eValue));..    }
16a0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
16b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
16c0: 6f 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38 20  onverts a UTF-8 
16d0: 65 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f  encoded IntPtr o
16e0: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
16f0: 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e 4e  length into a .N
1700: 45 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f  ET string..    /
1710: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1720: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1730: 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67  me="nativestring
1740: 22 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74 6f  ">The pointer to
1750: 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 72   the memory wher
1760: 65 20 74 68 65 20 55 54 46 2d 38 20 73 74 72 69  e the UTF-8 stri
1770: 6e 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f 70  ng is encoded</p
1780: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
1790: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69  param name="nati
17a0: 76 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68 65  vestringlen">The
17b0: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
17c0: 20 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72 61   to decode</para
17d0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
17e0: 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63 6f  urns>A string co
17f0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61  ntaining the tra
1800: 6e 73 6c 61 74 65 64 20 63 68 61 72 61 63 74 65  nslated characte
1810: 72 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  r(s)</returns>..
1820: 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
1830: 61 6c 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  al string ToStri
1840: 6e 67 28 49 6e 74 50 74 72 20 6e 61 74 69 76 65  ng(IntPtr native
1850: 73 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61 74 69  string, int nati
1860: 76 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a 20 20  vestringlen)..  
1870: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
1880: 6e 20 55 54 46 38 54 6f 53 74 72 69 6e 67 28 6e  n UTF8ToString(n
1890: 61 74 69 76 65 73 74 72 69 6e 67 2c 20 6e 61 74  ativestring, nat
18a0: 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a  ivestringlen);..
18b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
18c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18d0: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 55  /// Converts a U
18e0: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 49 6e 74  TF-8 encoded Int
18f0: 50 74 72 20 6f 66 20 74 68 65 20 73 70 65 63 69  Ptr of the speci
1900: 66 69 65 64 20 6c 65 6e 67 74 68 20 69 6e 74 6f  fied length into
1910: 20 61 20 2e 4e 45 54 20 73 74 72 69 6e 67 0d 0a   a .NET string..
1920: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1930: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
1940: 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73  am name="natives
1950: 74 72 69 6e 67 22 3e 54 68 65 20 70 6f 69 6e 74  tring">The point
1960: 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79  er to the memory
1970: 20 77 68 65 72 65 20 74 68 65 20 55 54 46 2d 38   where the UTF-8
1980: 20 73 74 72 69 6e 67 20 69 73 20 65 6e 63 6f 64   string is encod
1990: 65 64 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  ed</param>..    
19a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19b0: 22 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e  "nativestringlen
19c0: 22 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  ">The number of 
19d0: 62 79 74 65 73 20 74 6f 20 64 65 63 6f 64 65 3c  bytes to decode<
19e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
19f0: 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69   <returns>A stri
1a00: 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
1a10: 65 20 74 72 61 6e 73 6c 61 74 65 64 20 63 68 61  e translated cha
1a20: 72 61 63 74 65 72 28 73 29 3c 2f 72 65 74 75 72  racter(s)</retur
1a30: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
1a40: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 55 54  static string UT
1a50: 46 38 54 6f 53 74 72 69 6e 67 28 49 6e 74 50 74  F8ToString(IntPt
1a60: 72 20 6e 61 74 69 76 65 73 74 72 69 6e 67 2c 20  r nativestring, 
1a70: 69 6e 74 20 6e 61 74 69 76 65 73 74 72 69 6e 67  int nativestring
1a80: 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  len)..    {..   
1a90: 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72     if (nativestr
1aa0: 69 6e 67 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ing == IntPtr.Ze
1ab0: 72 6f 20 7c 7c 20 6e 61 74 69 76 65 73 74 72 69  ro || nativestri
1ac0: 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74 75  nglen == 0) retu
1ad0: 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 3b  rn String.Empty;
1ae0: 0d 0a 20 20 20 20 20 20 69 66 20 28 6e 61 74 69  ..      if (nati
1af0: 76 65 73 74 72 69 6e 67 6c 65 6e 20 3c 20 30 29  vestringlen < 0)
1b00: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
1b10: 20 20 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c     nativestringl
1b20: 65 6e 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  en = 0;....     
1b30: 20 20 20 77 68 69 6c 65 20 28 4d 61 72 73 68 61     while (Marsha
1b40: 6c 2e 52 65 61 64 42 79 74 65 28 6e 61 74 69 76  l.ReadByte(nativ
1b50: 65 73 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73  estring, natives
1b60: 74 72 69 6e 67 6c 65 6e 29 20 21 3d 20 30 29 0d  tringlen) != 0).
1b70: 0a 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76  .          nativ
1b80: 65 73 74 72 69 6e 67 6c 65 6e 2b 2b 3b 0d 0a 0d  estringlen++;...
1b90: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 74  .        if (nat
1ba0: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 3d 20  ivestringlen == 
1bb0: 30 29 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67  0) return String
1bc0: 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 7d  .Empty;..      }
1bd0: 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74 65 5b 5d  ....      byte[]
1be0: 20 62 79 74 65 41 72 72 61 79 20 3d 20 6e 65 77   byteArray = new
1bf0: 20 62 79 74 65 5b 6e 61 74 69 76 65 73 74 72 69   byte[nativestri
1c00: 6e 67 6c 65 6e 5d 3b 0d 0a 0d 0a 20 20 20 20 20  nglen];....     
1c10: 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28 6e 61   Marshal.Copy(na
1c20: 74 69 76 65 73 74 72 69 6e 67 2c 20 62 79 74 65  tivestring, byte
1c30: 41 72 72 61 79 2c 20 30 2c 20 6e 61 74 69 76 65  Array, 0, native
1c40: 73 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a 0d 0a 20  stringlen);.... 
1c50: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 75 74 66       return _utf
1c60: 38 2e 47 65 74 53 74 72 69 6e 67 28 62 79 74 65  8.GetString(byte
1c70: 41 72 72 61 79 2c 20 30 2c 20 6e 61 74 69 76 65  Array, 0, native
1c80: 73 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20  stringlen);..   
1c90: 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 23 65 6e 64   }......    #end
1ca0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 23 72  region....    #r
1cb0: 65 67 69 6f 6e 20 44 61 74 65 54 69 6d 65 20 43  egion DateTime C
1cc0: 6f 6e 76 65 72 73 69 6f 6e 20 46 75 6e 63 74 69  onversion Functi
1cd0: 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ons..    /// <su
1ce0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1cf0: 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e  Converts a strin
1d00: 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d  g into a DateTim
1d10: 65 2c 20 75 73 69 6e 67 20 74 68 65 20 44 61 74  e, using the Dat
1d20: 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74  eTimeFormat, Dat
1d30: 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20  eTimeKind,..    
1d40: 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65  /// and DateTime
1d50: 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65  FormatString spe
1d60: 63 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 63  cified for the c
1d70: 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69  onnection when i
1d80: 74 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20  t was opened... 
1d90: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
1da0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61  >..    /// <rema
1db0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63  rks>..    /// Ac
1dc0: 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36 30 31  ceptable ISO8601
1dd0: 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74   DateTime format
1de0: 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20  s are:..    /// 
1df0: 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c  <list type="bull
1e00: 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  et">..    /// <i
1e10: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1e20: 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72  >THHmmssK</descr
1e30: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
1e40: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
1e50: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
1e60: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
1e70: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1e80: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1e90: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  on>HH:mm:ss.FFFF
1ea0: 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFK</descriptio
1eb0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
1ec0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
1ed0: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c  ption>HH:mm:ssK<
1ee0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
1ef0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
1f00: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1f10: 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70  >HH:mmK</descrip
1f20: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
1f30: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
1f40: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
1f50: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -dd HH:mm:ss.FFF
1f60: 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69  FFFFK</descripti
1f70: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
1f80: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
1f90: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
1fa0: 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  d HH:mm:ssK</des
1fb0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
1fc0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1fd0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
1fe0: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f  y-MM-dd HH:mmK</
1ff0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
2000: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
2010: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
2020: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
2030: 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65  :ss.FFFFFFFK</de
2040: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2050: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2060: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2070: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c  yy-MM-ddTHH:mmK<
2080: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2090: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
20a0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
20b0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
20c0: 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  m:ssK</descripti
20d0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
20e0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
20f0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
2100: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  HmmssK</descript
2110: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2120: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2130: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
2140: 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69  HHmmK</descripti
2150: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
2160: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2170: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54  iption>yyyyMMddT
2180: 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f  HHmmssFFFFFFFK</
2190: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
21a0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
21b0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
21c0: 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70  THHmmss</descrip
21d0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
21e0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
21f0: 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f  cription>THHmm</
2200: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
2210: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
2220: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
2230: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
2240: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2250: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2260: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2270: 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63  n>HH:mm:ss</desc
2280: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2290: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
22a0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
22b0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
22c0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
22d0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
22e0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
22f0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
2300: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
2310: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
2320: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
2330: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
2340: 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :ss</description
2350: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2360: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
2370: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
2380: 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69  HH:mm</descripti
2390: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
23a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
23b0: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
23c0: 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  dTHH:mm:ss.FFFFF
23d0: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
23e0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
23f0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2400: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
2410: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
2420: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2430: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
2440: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
2450: 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72  THH:mm:ss</descr
2460: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2470: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2480: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
2490: 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72  MddHHmmss</descr
24a0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
24b0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
24c0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
24d0: 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70  MddHHmm</descrip
24e0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
24f0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
2500: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
2510: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 3c  dTHHmmssFFFFFFF<
2520: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2530: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2540: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2550: 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73  >yyyy-MM-dd</des
2560: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2570: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2580: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
2590: 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70 74 69  yMMdd</descripti
25a0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
25b0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
25c0: 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c  iption>yy-MM-dd<
25d0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
25e0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tem>..    /// </
25f0: 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  list>..    /// I
2600: 66 20 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e  f the string can
2610: 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64 20 74  not be matched t
2620: 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  o one of the abo
2630: 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d  ve formats -OR-.
2640: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 44 61 74  .    /// the Dat
2650: 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e  eTimeFormatStrin
2660: 67 20 69 66 20 6f 6e 65 20 77 61 73 20 70 72 6f  g if one was pro
2670: 76 69 64 65 64 2c 20 61 6e 20 65 78 63 65 70 74  vided, an except
2680: 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f  ion will..    //
2690: 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20  / be thrown...  
26a0: 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e    /// </remarks>
26b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
26c0: 20 6e 61 6d 65 3d 22 64 61 74 65 54 65 78 74 22   name="dateText"
26d0: 3e 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74  >The string cont
26e0: 61 69 6e 69 6e 67 20 65 69 74 68 65 72 20 61 20  aining either a 
26f0: 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d  long integer num
2700: 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73  ber of 100-nanos
2710: 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63  econd units sinc
2720: 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73 74 65  e..    /// Syste
2730: 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61  m.DateTime.MinVa
2740: 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61  lue, a Julian da
2750: 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74  y double, an int
2760: 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73  eger number of s
2770: 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65  econds since the
2780: 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a   Unix epoch, a..
2790: 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d      /// culture-
27a0: 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d  independent form
27b0: 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74  atted date and t
27c0: 69 6d 65 20 73 74 72 69 6e 67 2c 20 61 20 66 6f  ime string, a fo
27d0: 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64  rmatted date and
27e0: 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20   time string in 
27f0: 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
2800: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72   /// culture, or
2810: 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d   an ISO8601-form
2820: 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61  at string.</para
2830: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
2840: 75 72 6e 73 3e 41 20 44 61 74 65 54 69 6d 65 20  urns>A DateTime 
2850: 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d  value</returns>.
2860: 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61 74 65  .    public Date
2870: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
2880: 73 74 72 69 6e 67 20 64 61 74 65 54 65 78 74 29  string dateText)
2890: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
28a0: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65  eturn ToDateTime
28b0: 28 64 61 74 65 54 65 78 74 2c 20 5f 64 61 74 65  (dateText, _date
28c0: 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64 61 74  timeFormat, _dat
28d0: 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65  etimeKind, _date
28e0: 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67  timeFormatString
28f0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
2900: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2910: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
2920: 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61   a string into a
2930: 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67   DateTime, using
2940: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44   the specified D
2950: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a  ateTimeFormat,..
2960: 20 20 20 20 2f 2f 2f 20 44 61 74 65 54 69 6d 65      /// DateTime
2970: 4b 69 6e 64 20 61 6e 64 20 44 61 74 65 54 69 6d  Kind and DateTim
2980: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 2e 0d 0a  eFormatString...
2990: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29a0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
29b0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  arks>..    /// A
29c0: 63 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36 30  cceptable ISO860
29d0: 31 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  1 DateTime forma
29e0: 74 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f  ts are:..    ///
29f0: 20 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c   <list type="bul
2a00: 6c 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  let">..    /// <
2a10: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2a20: 6e 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63  n>THHmmssK</desc
2a30: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2a40: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2a50: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
2a60: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
2a70: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2a80: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2a90: 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  ion>HH:mm:ss.FFF
2aa0: 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69  FFFFK</descripti
2ab0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
2ac0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2ad0: 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b  iption>HH:mm:ssK
2ae0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2af0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2b00: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2b10: 6e 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69  n>HH:mmK</descri
2b20: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2b30: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2b40: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
2b50: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-dd HH:mm:ss.FF
2b60: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
2b70: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2b80: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2b90: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
2ba0: 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65  dd HH:mm:ssK</de
2bb0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2bc0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2bd0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2be0: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c  yy-MM-dd HH:mmK<
2bf0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2c00: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2c10: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2c20: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
2c30: 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64  m:ss.FFFFFFFK</d
2c40: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
2c50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
2c60: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
2c70: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b  yyy-MM-ddTHH:mmK
2c80: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2c90: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2ca0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2cb0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
2cc0: 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  mm:ssK</descript
2cd0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2ce0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2cf0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
2d00: 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70  HHmmssK</descrip
2d10: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
2d20: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
2d30: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
2d40: 64 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74  dHHmmK</descript
2d50: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2d60: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2d70: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
2d80: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c  THHmmssFFFFFFFK<
2d90: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2da0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2db0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2dc0: 3e 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69  >THHmmss</descri
2dd0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2de0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2df0: 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c  scription>THHmm<
2e00: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2e10: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2e20: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2e30: 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  >HH:mm:ss.FFFFFF
2e40: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
2e50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
2e60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
2e70: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73  on>HH:mm:ss</des
2e80: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2e90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2ea0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
2eb0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
2ec0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2ed0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2ee0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
2ef0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
2f00: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2f10: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2f20: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2f30: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
2f40: 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  m:ss</descriptio
2f50: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2f60: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
2f70: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
2f80: 20 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74   HH:mm</descript
2f90: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2fa0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2fb0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
2fc0: 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  ddTHH:mm:ss.FFFF
2fd0: 46 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFF</description
2fe0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2ff0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
3000: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54  tion>yyyy-MM-ddT
3010: 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69  HH:mm</descripti
3020: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
3030: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
3040: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
3050: 64 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63  dTHH:mm:ss</desc
3060: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
3070: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
3080: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
3090: 4d 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63  MMddHHmmss</desc
30a0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
30b0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
30c0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
30d0: 4d 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69  MMddHHmm</descri
30e0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
30f0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
3100: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
3110: 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46  ddTHHmmssFFFFFFF
3120: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
3130: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
3140: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
3150: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65  n>yyyy-MM-dd</de
3160: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
3170: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
3180: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
3190: 79 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70 74  yyMMdd</descript
31a0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
31b0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
31c0: 72 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64  ription>yy-MM-dd
31d0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
31e0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
31f0: 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /list>..    /// 
3200: 49 66 20 74 68 65 20 73 74 72 69 6e 67 20 63 61  If the string ca
3210: 6e 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64 20  nnot be matched 
3220: 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62  to one of the ab
3230: 6f 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52 2d  ove formats -OR-
3240: 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 44 61  ..    /// the Da
3250: 74 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  teTimeFormatStri
3260: 6e 67 20 69 66 20 6f 6e 65 20 77 61 73 20 70 72  ng if one was pr
3270: 6f 76 69 64 65 64 2c 20 61 6e 20 65 78 63 65 70  ovided, an excep
3280: 74 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20 2f  tion will..    /
3290: 2f 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20  // be thrown... 
32a0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73     /// </remarks
32b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
32c0: 6d 20 6e 61 6d 65 3d 22 64 61 74 65 54 65 78 74  m name="dateText
32d0: 22 3e 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e  ">The string con
32e0: 74 61 69 6e 69 6e 67 20 65 69 74 68 65 72 20 61  taining either a
32f0: 20 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75   long integer nu
3300: 6d 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f  mber of 100-nano
3310: 73 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e  second units sin
3320: 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73 74  ce..    /// Syst
3330: 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56  em.DateTime.MinV
3340: 61 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20 64  alue, a Julian d
3350: 61 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e  ay double, an in
3360: 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20  teger number of 
3370: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68  seconds since th
3380: 65 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 0d  e Unix epoch, a.
3390: 0a 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65  .    /// culture
33a0: 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72  -independent for
33b0: 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20  matted date and 
33c0: 74 69 6d 65 20 73 74 72 69 6e 67 2c 20 61 20 66  time string, a f
33d0: 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e  ormatted date an
33e0: 64 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e  d time string in
33f0: 20 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20   the current..  
3400: 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20 6f    /// culture, o
3410: 72 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72  r an ISO8601-for
3420: 6d 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61 72  mat string.</par
3430: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
3440: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
3450: 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61 74 65  ">The SQLiteDate
3460: 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c  Formats to use.<
3470: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
3480: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
3490: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
34a0: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
34b0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
34c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61  aram name="forma
34d0: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74  tString">The Dat
34e0: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72  eTime format str
34f0: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ing to use.</par
3500: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
3510: 74 75 72 6e 73 3e 41 20 44 61 74 65 54 69 6d 65  turns>A DateTime
3520: 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e   value</returns>
3530: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
3540: 74 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44  tic DateTime ToD
3550: 61 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20  ateTime(..      
3560: 20 20 73 74 72 69 6e 67 20 64 61 74 65 54 65 78    string dateTex
3570: 74 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  t,..        SQLi
3580: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6f  teDateFormats fo
3590: 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 44  rmat,..        D
35a0: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
35b0: 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
35c0: 67 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a  g formatString..
35d0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
35e0: 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  ..        switch
35f0: 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20   (format)..     
3600: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3610: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74    case SQLiteDat
3620: 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d  eFormats.Ticks:.
3630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3640: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3650: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
3660: 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72  oDateTime(Conver
3670: 74 2e 54 6f 49 6e 74 36 34 28 0d 0a 20 20 20 20  t.ToInt64(..    
3680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3690: 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 43 75      dateText, Cu
36a0: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
36b0: 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e  antCulture), kin
36c0: 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
36d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36e0: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
36f0: 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69 61  ateFormats.Julia
3700: 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 20  nDay:..         
3710: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3730: 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28  turn ToDateTime(
3740: 43 6f 6e 76 65 72 74 2e 54 6f 44 6f 75 62 6c 65  Convert.ToDouble
3750: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3760: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
3770: 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
3780: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
3790: 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20  e), kind);..    
37a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
37b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
37c0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
37d0: 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20 20  s.UnixEpoch:..  
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
37f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3800: 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61       return ToDa
3810: 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54  teTime(Convert.T
3820: 6f 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20  oInt32(..       
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3840: 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75   dateText, Cultu
3850: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
3860: 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b  Culture), kind);
3870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3880: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
3890: 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65   case SQLiteDate
38a0: 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e  Formats.Invarian
38b0: 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20  tCulture:..     
38c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
38d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38e0: 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69    if (formatStri
38f0: 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ng != null)..   
3900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3910: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
3920: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
3930: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
3940: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
3950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3960: 20 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72     dateText, for
3970: 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20  matString,..    
3980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3990: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
39a0: 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72  FormatInfo.Invar
39b0: 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20  iantInfo,..     
39c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39d0: 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44         kind == D
39e0: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20  ateTimeKind.Utc 
39f0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a10: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
3a20: 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72  s.AdjustToUniver
3a30: 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  sal :..         
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a50: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
3a60: 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20  tyles.None),..  
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a80: 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b            kind);
3a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3aa0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54      return DateT
3ad0: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28  ime.SpecifyKind(
3ae0: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 28 0d  DateTime.Parse(.
3af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
3b10: 65 54 65 78 74 2c 20 44 61 74 65 54 69 6d 65 46  eText, DateTimeF
3b20: 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69  ormatInfo.Invari
3b30: 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20  antInfo,..      
3b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b50: 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61        kind == Da
3b60: 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f  teTimeKind.Utc ?
3b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b90: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73    DateTimeStyles
3ba0: 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73  .AdjustToUnivers
3bb0: 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  al :..          
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74        DateTimeSt
3be0: 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20  yles.None),..   
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c00: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d           kind);.
3c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3c20: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
3c30: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
3c40: 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75  ormats.CurrentCu
3c50: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
3c60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
3c80: 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  f (formatString 
3c90: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
3ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cb0: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
3cc0: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61  e.SpecifyKind(Da
3cd0: 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63  teTime.ParseExac
3ce0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d00: 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d 61 74  dateText, format
3d10: 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20  String,..       
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d30: 20 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72       DateTimeFor
3d40: 6d 61 74 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49  matInfo.CurrentI
3d50: 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nfo,..          
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d70: 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69    kind == DateTi
3d80: 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20  meKind.Utc ?..  
3d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
3db0: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a  teTimeStyles.Adj
3dc0: 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a  ustToUniversal :
3dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3df0: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73    DateTimeStyles
3e00: 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20  .None),..       
3e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e20: 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20       kind);..   
3e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e40: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
3e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3e60: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
3e70: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
3e80: 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20  ime.Parse(..    
3e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ea0: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74          dateText
3eb0: 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  , DateTimeFormat
3ec0: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f  Info.CurrentInfo
3ed0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
3ef0: 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b  ind == DateTimeK
3f00: 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20  ind.Utc ?..     
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f20: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
3f30: 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74  imeStyles.Adjust
3f40: 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20  ToUniversal :.. 
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
3f70: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f  ateTimeStyles.No
3f80: 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ne),..          
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fa0: 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20    kind);..      
3fb0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3fc0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
3fd0: 3a 20 2f 2a 20 49 53 4f 2d 38 36 30 31 20 2a 2f  : /* ISO-8601 */
3fe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3ff0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4000: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72           if (for
4010: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
4020: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4030: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4040: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
4050: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
4060: 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20  .ParseExact(..  
4070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4080: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
4090: 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  xt, formatString
40a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
40c0: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
40d0: 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c  o.InvariantInfo,
40e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
40f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
4100: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
4110: 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20  nd.Utc ?..      
4120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4130: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
4140: 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54  meStyles.AdjustT
4150: 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20  oUniversal :..  
4160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
4180: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e  teTimeStyles.Non
4190: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20   kind);..       
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
41d0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
41e0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
41f0: 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69  n DateTime.Speci
4200: 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e  fyKind(DateTime.
4210: 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20  ParseExact(..   
4220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4230: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78           dateTex
4240: 74 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d  t, _datetimeForm
4250: 61 74 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ats,..          
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4270: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
4280: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e  Info.InvariantIn
4290: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
42a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42b0: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
42c0: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
42d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
42f0: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
4300: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
4310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4330: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
4340: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
4350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4360: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
4370: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4380: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
4390: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
43a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
43b0: 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 61 6e 64  nverts a juliand
43c0: 61 79 20 76 61 6c 75 65 20 69 6e 74 6f 20 61 20  ay value into a 
43d0: 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f  DateTime..    //
43e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
43f0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4400: 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68  e="julianDay">Th
4410: 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65  e value to conve
4420: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
4430: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 2e  /// <returns>A .
4440: 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f 72 65  NET DateTime</re
4450: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
4460: 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61  ic DateTime ToDa
4470: 74 65 54 69 6d 65 28 64 6f 75 62 6c 65 20 6a 75  teTime(double ju
4480: 6c 69 61 6e 44 61 79 29 0d 0a 20 20 20 20 7b 0d  lianDay)..    {.
4490: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f  .      return To
44a0: 44 61 74 65 54 69 6d 65 28 6a 75 6c 69 61 6e 44  DateTime(julianD
44b0: 61 79 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e  ay, _datetimeKin
44c0: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
44d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
44e0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
44f0: 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61  s a julianday va
4500: 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54  lue into a DateT
4510: 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ime..    /// </s
4520: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4530: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75   <param name="ju
4540: 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c  lianDay">The val
4550: 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70  ue to convert</p
4560: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
4570: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64  param name="kind
4580: 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69  ">The DateTimeKi
4590: 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  nd to use.</para
45a0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
45b0: 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61 74 65  urns>A .NET Date
45c0: 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  Time</returns>..
45d0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
45e0: 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74  c DateTime ToDat
45f0: 65 54 69 6d 65 28 64 6f 75 62 6c 65 20 6a 75 6c  eTime(double jul
4600: 69 61 6e 44 61 79 2c 20 44 61 74 65 54 69 6d 65  ianDay, DateTime
4610: 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20  Kind kind)..    
4620: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
4630: 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69  n DateTime.Speci
4640: 66 79 4b 69 6e 64 28 0d 0a 20 20 20 20 20 20 20  fyKind(..       
4650: 20 20 20 20 20 44 61 74 65 54 69 6d 65 2e 46 72       DateTime.Fr
4660: 6f 6d 4f 41 44 61 74 65 28 6a 75 6c 69 61 6e 44  omOADate(julianD
4670: 61 79 20 2d 20 4f 6c 65 41 75 74 6f 6d 61 74 69  ay - OleAutomati
4680: 6f 6e 45 70 6f 63 68 41 73 4a 75 6c 69 61 6e 44  onEpochAsJulianD
4690: 61 79 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  ay), kind);..   
46a0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
46b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
46c0: 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
46d0: 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f  ecified number o
46e0: 66 20 73 65 63 6f 6e 64 73 20 66 72 6f 6d 20 74  f seconds from t
46f0: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 69 6e  he Unix epoch in
4700: 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  to a..    /// <s
4710: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
4720: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
4730: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4740: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4750: 20 6e 61 6d 65 3d 22 73 65 63 6f 6e 64 73 22 3e   name="seconds">
4760: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75  ..    /// The nu
4770: 6d 62 65 72 20 6f 66 20 77 68 6f 6c 65 20 73 65  mber of whole se
4780: 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20  conds since the 
4790: 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20  Unix epoch...   
47a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
47b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
47c0: 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20 20 20  me="kind">..    
47d0: 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63 20 6f  /// Either Utc o
47e0: 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a 20  r Local time... 
47f0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
4800: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
4810: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  s>..    /// The 
4820: 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22 44  new <see cref="D
4830: 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75  ateTime" /> valu
4840: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
4850: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
4860: 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61 74 65  rnal static Date
4870: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
4880: 69 6e 74 20 73 65 63 6f 6e 64 73 2c 20 44 61 74  int seconds, Dat
4890: 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d  eTimeKind kind).
48a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
48b0: 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e  return DateTime.
48c0: 53 70 65 63 69 66 79 4b 69 6e 64 28 55 6e 69 78  SpecifyKind(Unix
48d0: 45 70 6f 63 68 2e 41 64 64 53 65 63 6f 6e 64 73  Epoch.AddSeconds
48e0: 28 73 65 63 6f 6e 64 73 29 2c 20 6b 69 6e 64 29  (seconds), kind)
48f0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
4900: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4910: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
4920: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 75  the specified nu
4930: 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 20 73 69  mber of ticks si
4940: 6e 63 65 20 74 68 65 20 65 70 6f 63 68 20 69 6e  nce the epoch in
4950: 74 6f 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  to a..    /// <s
4960: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
4970: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
4980: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4990: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
49a0: 20 6e 61 6d 65 3d 22 74 69 63 6b 73 22 3e 0d 0a   name="ticks">..
49b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
49c0: 65 72 20 6f 66 20 77 68 6f 6c 65 20 74 69 63 6b  er of whole tick
49d0: 73 20 73 69 6e 63 65 20 74 68 65 20 65 70 6f 63  s since the epoc
49e0: 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  h...    /// </pa
49f0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
4a00: 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22  aram name="kind"
4a10: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69 74 68 65  >..    /// Eithe
4a20: 72 20 55 74 63 20 6f 72 20 4c 6f 63 61 6c 20 74  r Utc or Local t
4a30: 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ime...    /// </
4a40: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
4a50: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
4a60: 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73 65 65 20  // The new <see 
4a70: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
4a80: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
4a90: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
4aa0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
4ab0: 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61  ic DateTime ToDa
4ac0: 74 65 54 69 6d 65 28 6c 6f 6e 67 20 74 69 63 6b  teTime(long tick
4ad0: 73 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  s, DateTimeKind 
4ae0: 6b 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  kind)..    {..  
4af0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
4b00: 20 44 61 74 65 54 69 6d 65 28 74 69 63 6b 73 2c   DateTime(ticks,
4b10: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a   kind);..    }..
4b20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
4b30: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
4b40: 76 65 72 74 73 20 61 20 44 61 74 65 54 69 6d 65  verts a DateTime
4b50: 20 73 74 72 75 63 74 20 74 6f 20 61 20 4a 75 6c   struct to a Jul
4b60: 69 61 6e 44 61 79 20 64 6f 75 62 6c 65 0d 0a 20  ianDay double.. 
4b70: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4b80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
4b90: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54  m name="value">T
4ba0: 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63  he DateTime to c
4bb0: 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a  onvert</param>..
4bc0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4bd0: 3e 54 68 65 20 4a 75 6c 69 61 6e 44 61 79 20 76  >The JulianDay v
4be0: 61 6c 75 65 20 74 68 65 20 44 61 74 65 74 69 6d  alue the Datetim
4bf0: 65 20 72 65 70 72 65 73 65 6e 74 73 3c 2f 72 65  e represents</re
4c00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
4c10: 69 63 20 73 74 61 74 69 63 20 64 6f 75 62 6c 65  ic static double
4c20: 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 44 61 74   ToJulianDay(Dat
4c30: 65 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20 20  eTime value)..  
4c40: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
4c50: 6e 20 76 61 6c 75 65 2e 54 6f 4f 41 44 61 74 65  n value.ToOADate
4c60: 28 29 20 2b 20 4f 6c 65 41 75 74 6f 6d 61 74 69  () + OleAutomati
4c70: 6f 6e 45 70 6f 63 68 41 73 4a 75 6c 69 61 6e 44  onEpochAsJulianD
4c80: 61 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ay;..    }....  
4c90: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4ca0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
4cb0: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72  s a DateTime str
4cc0: 75 63 74 20 74 6f 20 74 68 65 20 77 68 6f 6c 65  uct to the whole
4cd0: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
4ce0: 64 73 20 73 69 6e 63 65 20 74 68 65 0d 0a 20 20  ds since the..  
4cf0: 20 20 2f 2f 2f 20 55 6e 69 78 20 65 70 6f 63 68    /// Unix epoch
4d00: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
4d10: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
4d20: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
4d30: 65 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  e">The DateTime 
4d40: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
4d50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
4d60: 75 72 6e 73 3e 54 68 65 20 77 68 6f 6c 65 20 6e  urns>The whole n
4d70: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
4d80: 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
4d90: 65 70 6f 63 68 3c 2f 72 65 74 75 72 6e 73 3e 0d  epoch</returns>.
4da0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
4db0: 69 63 20 6c 6f 6e 67 20 54 6f 55 6e 69 78 45 70  ic long ToUnixEp
4dc0: 6f 63 68 28 44 61 74 65 54 69 6d 65 20 76 61 6c  och(DateTime val
4dd0: 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  ue)..    {..    
4de0: 20 20 20 20 72 65 74 75 72 6e 20 28 76 61 6c 75      return (valu
4df0: 65 2e 53 75 62 74 72 61 63 74 28 55 6e 69 78 45  e.Subtract(UnixE
4e00: 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20 54 69  poch).Ticks / Ti
4e10: 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50 65 72 53  meSpan.TicksPerS
4e20: 65 63 6f 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a  econd);..    }..
4e30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
4e40: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74  ry>..    /// Ret
4e50: 75 72 6e 73 20 74 68 65 20 44 61 74 65 54 69 6d  urns the DateTim
4e60: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
4e70: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 73  to use for the s
4e80: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
4e90: 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eKind...    /// 
4ea0: 49 66 20 3c 70 61 72 61 6d 72 65 66 20 6e 61 6d  If <paramref nam
4eb0: 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22  e="formatString"
4ec0: 20 2f 3e 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c   /> is not null,
4ed0: 20 69 74 20 77 69 6c 6c 20 62 65 20 72 65 74 75   it will be retu
4ee0: 72 6e 65 64 20 76 65 72 62 61 74 69 6d 2e 0d 0a  rned verbatim...
4ef0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
4f00: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
4f10: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54  am name="kind">T
4f20: 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  he DateTimeKind 
4f30: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
4f40: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4f50: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69  name="formatStri
4f60: 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  ng">The DateTime
4f70: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74   format string t
4f80: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
4f90: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4fa0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44  >..    /// The D
4fb0: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
4fc0: 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f 72  tring to use for
4fd0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44   the specified D
4fe0: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20  ateTimeKind...  
4ff0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
5000: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
5010: 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44  atic string GetD
5020: 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61  ateTimeKindForma
5030: 74 28 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  t(..        Date
5040: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a  TimeKind kind,..
5050: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
5060: 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20  ormatString..   
5070: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
5080: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61         if (forma
5090: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29  tString != null)
50a0: 20 72 65 74 75 72 6e 20 66 6f 72 6d 61 74 53 74   return formatSt
50b0: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 72  ring;..        r
50c0: 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d 3d 20 44  eturn (kind == D
50d0: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29  ateTimeKind.Utc)
50e0: 20 3f 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d   ? _datetimeForm
50f0: 61 74 55 74 63 20 3a 20 5f 64 61 74 65 74 69 6d  atUtc : _datetim
5100: 65 46 6f 72 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20  eFormatLocal;.. 
5110: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
5120: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
5130: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74  // Converts a st
5140: 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65  ring into a Date
5150: 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20  Time, using the 
5160: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 20  DateTimeFormat, 
5170: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20  DateTimeKind,.. 
5180: 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74 65 54     /// and DateT
5190: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
51a0: 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 74 68  specified for th
51b0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65  e connection whe
51c0: 6e 20 69 74 20 77 61 73 20 6f 70 65 6e 65 64 2e  n it was opened.
51d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
51e0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
51f0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74 65 56  aram name="dateV
5200: 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65 54 69  alue">The DateTi
5210: 6d 65 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  me value to conv
5220: 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ert</param>..   
5230: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45 69   /// <returns>Ei
5240: 74 68 65 72 20 61 20 73 74 72 69 6e 67 20 63 6f  ther a string co
5250: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6c 6f 6e  ntaining the lon
5260: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
5270: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
5280: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 20 53  nd units since S
5290: 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65 2e 4d  ystem.DateTime.M
52a0: 69 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20 20 20  inValue, a..    
52b0: 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  /// Julian day d
52c0: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
52d0: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
52e0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
52f0: 69 78 20 65 70 6f 63 68 2c 20 61 20 63 75 6c 74  ix epoch, a cult
5300: 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20  ure-independent 
5310: 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65 20 61  formatted date a
5320: 6e 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f  nd time..    ///
5330: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
5340: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
5350: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
5360: 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
5370: 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30 31 2d  , or an ISO8601-
5380: 66 6f 72 6d 61 74 20 64 61 74 65 2f 74 69 6d 65  format date/time
5390: 20 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75 72 6e   string.</return
53a0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
53b0: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 44  tring ToString(D
53c0: 61 74 65 54 69 6d 65 20 64 61 74 65 56 61 6c 75  ateTime dateValu
53d0: 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  e)..    {..     
53e0: 20 20 20 72 65 74 75 72 6e 20 54 6f 53 74 72 69     return ToStri
53f0: 6e 67 28 64 61 74 65 56 61 6c 75 65 2c 20 5f 64  ng(dateValue, _d
5400: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 2c 20 5f  atetimeFormat, _
5410: 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64  datetimeKind, _d
5420: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
5430: 69 6e 67 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ing);..    }....
5440: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5450: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
5460: 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74  rts a string int
5470: 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73  o a DateTime, us
5480: 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65  ing the DateTime
5490: 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65  Format, DateTime
54a0: 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61  Kind,..    /// a
54b0: 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  nd DateTimeForma
54c0: 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65  tString specifie
54d0: 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  d for the connec
54e0: 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73  tion when it was
54f0: 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f   opened...    //
5500: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5510: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5520: 65 3d 22 64 61 74 65 56 61 6c 75 65 22 3e 54 68  e="dateValue">Th
5530: 65 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  e DateTime value
5540: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
5550: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
5560: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
5570: 22 3e 54 68 65 20 53 51 4c 69 74 65 44 61 74 65  ">The SQLiteDate
5580: 46 6f 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c  Formats to use.<
5590: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
55a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
55b0: 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65  nd">The DateTime
55c0: 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61  Kind to use.</pa
55d0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
55e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61  aram name="forma
55f0: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74  tString">The Dat
5600: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72  eTime format str
5610: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ing to use.</par
5620: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
5630: 74 75 72 6e 73 3e 45 69 74 68 65 72 20 61 20 73  turns>Either a s
5640: 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
5650: 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65 67 65   the long intege
5660: 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30 30 2d  r number of 100-
5670: 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69 74 73  nanosecond units
5680: 20 73 69 6e 63 65 20 53 79 73 74 65 6d 2e 44 61   since System.Da
5690: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
56a0: 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69   a..    /// Juli
56b0: 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c 20 61  an day double, a
56c0: 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  n integer number
56d0: 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63   of seconds sinc
56e0: 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68  e the Unix epoch
56f0: 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  , a culture-inde
5700: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
5710: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 0d  d date and time.
5720: 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 2c  .    /// string,
5730: 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74   a formatted dat
5740: 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e  e and time strin
5750: 67 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  g in the current
5760: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
5770: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 64  ISO8601-format d
5780: 61 74 65 2f 74 69 6d 65 20 73 74 72 69 6e 67 2e  ate/time string.
5790: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
57a0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
57b0: 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 0d 0a  ring ToString(..
57c0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
57d0: 20 64 61 74 65 56 61 6c 75 65 2c 0d 0a 20 20 20   dateValue,..   
57e0: 20 20 20 20 20 53 51 4c 69 74 65 44 61 74 65 46       SQLiteDateF
57f0: 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 2c 0d 0a  ormats format,..
5800: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
5810: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
5820: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
5830: 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  tString..       
5840: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
5850: 20 20 20 73 77 69 74 63 68 20 28 66 6f 72 6d 61     switch (forma
5860: 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  t)..        {.. 
5870: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5880: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
5890: 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 20 20 20  s.Ticks:..      
58a0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
58b0: 20 64 61 74 65 56 61 6c 75 65 2e 54 69 63 6b 73   dateValue.Ticks
58c0: 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
58d0: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
58e0: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
58f0: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
5900: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a 75 6c  eDateFormats.Jul
5910: 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20 20 20  ianDay:..       
5920: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5930: 54 6f 4a 75 6c 69 61 6e 44 61 79 28 64 61 74 65  ToJulianDay(date
5940: 56 61 6c 75 65 29 2e 54 6f 53 74 72 69 6e 67 28  Value).ToString(
5950: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61  CultureInfo.Inva
5960: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  riantCulture);..
5970: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
5980: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
5990: 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20  ts.UnixEpoch:.. 
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
59b0: 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29 28 64 61  eturn ((long)(da
59c0: 74 65 56 61 6c 75 65 2e 53 75 62 74 72 61 63 74  teValue.Subtract
59d0: 28 55 6e 69 78 45 70 6f 63 68 29 2e 54 69 63 6b  (UnixEpoch).Tick
59e0: 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e 54 69 63  s / TimeSpan.Tic
59f0: 6b 73 50 65 72 53 65 63 6f 6e 64 29 29 2e 54 6f  ksPerSecond)).To
5a00: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
5a10: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
5a20: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 49 6e  teDateFormats.In
5a30: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 3a 0d  variantCulture:.
5a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5a50: 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75   return dateValu
5a60: 65 2e 54 6f 53 74 72 69 6e 67 28 28 66 6f 72 6d  e.ToString((form
5a70: 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c  atString != null
5a80: 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
5a90: 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74 53           formatS
5aa0: 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d  tring : FullForm
5ab0: 61 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  at, CultureInfo.
5ac0: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
5ad0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
5ae0: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
5af0: 6f 72 6d 61 74 73 2e 43 75 72 72 65 6e 74 43 75  ormats.CurrentCu
5b00: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
5b10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
5b20: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
5b30: 67 28 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  g((formatString 
5b40: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b60: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  formatString : F
5b70: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
5b80: 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75  reInfo.CurrentCu
5b90: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
5ba0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20       default:.. 
5bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5bc0: 65 74 75 72 6e 20 28 64 61 74 65 56 61 6c 75 65  eturn (dateValue
5bd0: 2e 4b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d  .Kind == DateTim
5be0: 65 4b 69 6e 64 2e 55 6e 73 70 65 63 69 66 69 65  eKind.Unspecifie
5bf0: 64 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  d) ?..          
5c00: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
5c10: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 64  me.SpecifyKind(d
5c20: 61 74 65 56 61 6c 75 65 2c 20 6b 69 6e 64 29 2e  ateValue, kind).
5c30: 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ToString(..     
5c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c50: 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69     GetDateTimeKi
5c60: 6e 64 46 6f 72 6d 61 74 28 6b 69 6e 64 2c 20 66  ndFormat(kind, f
5c70: 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20  ormatString),.. 
5c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c90: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
5ca0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
5cb0: 43 75 6c 74 75 72 65 29 20 3a 20 64 61 74 65 56  Culture) : dateV
5cc0: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 0d 0a  alue.ToString(..
5cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ce0: 20 20 20 20 20 20 20 20 47 65 74 44 61 74 65 54          GetDateT
5cf0: 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 64 61  imeKindFormat(da
5d00: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c 20 66 6f  teValue.Kind, fo
5d10: 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20  rmatString),..  
5d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d30: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
5d40: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
5d50: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
5d60: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
5d70: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5d80: 0a 20 20 20 20 2f 2f 2f 20 49 6e 74 65 72 6e 61  .    /// Interna
5d90: 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6f  l function to co
5da0: 6e 76 65 72 74 20 61 20 55 54 46 2d 38 20 65 6e  nvert a UTF-8 en
5db0: 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20  coded IntPtr of 
5dc0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c 65  the specified le
5dd0: 6e 67 74 68 20 74 6f 20 61 20 44 61 74 65 54 69  ngth to a DateTi
5de0: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  me...    /// </s
5df0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5e00: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
5e10: 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 63 6f  /// This is a co
5e20: 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69  nvenience functi
5e30: 6f 6e 2c 20 77 68 69 63 68 20 66 69 72 73 74 20  on, which first 
5e40: 63 61 6c 6c 73 20 54 6f 53 74 72 69 6e 67 28 29  calls ToString()
5e50: 20 6f 6e 20 74 68 65 20 49 6e 74 50 74 72 20 74   on the IntPtr t
5e60: 6f 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20  o convert it to 
5e70: 61 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 63  a string, then c
5e80: 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f  alls..    /// To
5e90: 44 61 74 65 54 69 6d 65 28 29 20 6f 6e 20 74 68  DateTime() on th
5ea0: 65 20 73 74 72 69 6e 67 20 74 6f 20 72 65 74 75  e string to retu
5eb0: 72 6e 20 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a  rn a DateTime...
5ec0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b      /// </remark
5ed0: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  s>..    /// <par
5ee0: 61 6d 20 6e 61 6d 65 3d 22 70 74 72 22 3e 41 20  am name="ptr">A 
5ef0: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 55  pointer to the U
5f00: 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74 72  TF-8 encoded str
5f10: 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ing</param>..   
5f20: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
5f30: 3d 22 6c 65 6e 22 3e 54 68 65 20 6c 65 6e 67 74  ="len">The lengt
5f40: 68 20 69 6e 20 62 79 74 65 73 20 6f 66 20 74 68  h in bytes of th
5f50: 65 20 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e  e string</param>
5f60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
5f70: 6e 73 3e 54 68 65 20 70 61 72 73 65 64 20 44 61  ns>The parsed Da
5f80: 74 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65  teTime value</re
5f90: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
5fa0: 72 6e 61 6c 20 44 61 74 65 54 69 6d 65 20 54 6f  rnal DateTime To
5fb0: 44 61 74 65 54 69 6d 65 28 49 6e 74 50 74 72 20  DateTime(IntPtr 
5fc0: 70 74 72 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a 20  ptr, int len).. 
5fd0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
5fe0: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 54 6f  rn ToDateTime(To
5ff0: 53 74 72 69 6e 67 28 70 74 72 2c 20 6c 65 6e 29  String(ptr, len)
6000: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  );..    }..    #
6010: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6020: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6030: 20 20 20 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65      /// Smart me
6040: 74 68 6f 64 20 6f 66 20 73 70 6c 69 74 74 69 6e  thod of splittin
6050: 67 20 61 20 73 74 72 69 6e 67 2e 20 20 53 6b 69  g a string.  Ski
6060: 70 73 20 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e  ps quoted elemen
6070: 74 73 2c 20 72 65 6d 6f 76 65 73 20 74 68 65 20  ts, removes the 
6080: 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f  quotes...    ///
6090: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
60a0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
60b0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c      /// This spl
60c0: 69 74 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b  it function work
60d0: 73 20 73 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20  s somewhat like 
60e0: 74 68 65 20 53 74 72 69 6e 67 2e 53 70 6c 69 74  the String.Split
60f0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74  () function in t
6100: 68 61 74 20 69 74 20 62 72 65 61 6b 73 20 61 70  hat it breaks ap
6110: 61 72 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74  art a string int
6120: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 70 69 65 63 65  o..    /// piece
6130: 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  s and returns th
6140: 65 20 70 69 65 63 65 73 20 61 73 20 61 6e 20 61  e pieces as an a
6150: 72 72 61 79 2e 20 20 54 68 65 20 70 72 69 6d 61  rray.  The prima
6160: 72 79 20 64 69 66 66 65 72 65 6e 63 65 73 20 61  ry differences a
6170: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
6180: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
6190: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
61a0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e  ><description>On
61b0: 6c 79 20 6f 6e 65 20 63 68 61 72 61 63 74 65 72  ly one character
61c0: 20 63 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64   can be provided
61d0: 20 61 73 20 61 20 73 65 70 61 72 61 74 6f 72 20   as a separator 
61e0: 63 68 61 72 61 63 74 65 72 3c 2f 64 65 73 63 72  character</descr
61f0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
6200: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
6210: 65 73 63 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65  escription>Quote
6220: 64 20 74 65 78 74 20 69 6e 73 69 64 65 20 74 68  d text inside th
6230: 65 20 73 74 72 69 6e 67 20 69 73 20 73 6b 69 70  e string is skip
6240: 70 65 64 20 6f 76 65 72 20 77 68 65 6e 20 73 65  ped over when se
6250: 61 72 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20  arching for the 
6260: 73 65 70 61 72 61 74 6f 72 2c 20 61 6e 64 20 74  separator, and t
6270: 68 65 20 71 75 6f 74 65 73 20 61 72 65 20 72 65  he quotes are re
6280: 6d 6f 76 65 64 2e 3c 2f 64 65 73 63 72 69 70 74  moved.</descript
6290: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
62a0: 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20   /// </list>..  
62b0: 20 20 2f 2f 2f 20 54 68 75 73 2c 20 69 66 20 73    /// Thus, if s
62c0: 70 6c 69 74 74 69 6e 67 20 74 68 65 20 66 6f 6c  plitting the fol
62d0: 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f  lowing string lo
62e0: 6f 6b 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d  oking for a comm
62f0: 61 3a 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  a:<br/>..    ///
6300: 20 4f 6e 65 2c 54 77 6f 2c 20 22 54 68 72 65 65   One,Two, "Three
6310: 2c 20 46 6f 75 72 22 2c 20 46 69 76 65 3c 62 72  , Four", Five<br
6320: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
6330: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72  >..    /// The r
6340: 65 73 75 6c 74 69 6e 67 20 61 72 72 61 79 20 77  esulting array w
6350: 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f  ould contain<br/
6360: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f  >..    /// [0] O
6370: 6e 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ne<br/>..    ///
6380: 20 5b 31 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20   [1] Two<br/>.. 
6390: 20 20 20 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65     /// [2] Three
63a0: 2c 20 46 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20  , Four<br/>..   
63b0: 20 2f 2f 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72   /// [3] Five<br
63c0: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f  />..    /// <br/
63d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20  >..    /// Note 
63e0: 74 68 61 74 20 74 68 65 20 6c 65 61 64 69 6e 67  that the leading
63f0: 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 73 70   and trailing sp
6400: 61 63 65 73 20 77 65 72 65 20 72 65 6d 6f 76 65  aces were remove
6410: 64 20 66 72 6f 6d 20 65 61 63 68 20 69 74 65 6d  d from each item
6420: 20 64 75 72 69 6e 67 20 74 68 65 20 73 70 6c 69   during the spli
6430: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
6440: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  marks>..    /// 
6450: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
6460: 72 63 65 22 3e 53 6f 75 72 63 65 20 73 74 72 69  rce">Source stri
6470: 6e 67 20 74 6f 20 73 70 6c 69 74 20 61 70 61 72  ng to split apar
6480: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
6490: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
64a0: 73 65 70 61 72 61 74 6f 72 22 3e 53 65 70 61 72  separator">Separ
64b0: 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 3c 2f  ator character</
64c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
64d0: 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69 6e  <returns>A strin
64e0: 67 20 61 72 72 61 79 20 6f 66 20 74 68 65 20 73  g array of the s
64f0: 70 6c 69 74 20 75 70 20 65 6c 65 6d 65 6e 74 73  plit up elements
6500: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
6510: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
6520: 72 69 6e 67 5b 5d 20 53 70 6c 69 74 28 73 74 72  ring[] Split(str
6530: 69 6e 67 20 73 6f 75 72 63 65 2c 20 63 68 61 72  ing source, char
6540: 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20   separator)..   
6550: 20 7b 0d 0a 20 20 20 20 20 20 63 68 61 72 5b 5d   {..      char[]
6560: 20 74 6f 6b 73 20 3d 20 6e 65 77 20 63 68 61 72   toks = new char
6570: 5b 32 5d 20 7b 20 27 5c 22 27 2c 20 73 65 70 61  [2] { '\"', sepa
6580: 72 61 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20  rator };..      
6590: 63 68 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65  char[] quot = ne
65a0: 77 20 63 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27  w char[1] { '\"'
65b0: 20 7d 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e   };..      int n
65c0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73   = 0;..      Lis
65d0: 74 3c 73 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e  t<string> ls = n
65e0: 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28  ew List<string>(
65f0: 29 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67  );..      string
6600: 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69   s;....      whi
6610: 6c 65 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74  le (source.Lengt
6620: 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d  h > 0)..      {.
6630: 0a 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75  .        n = sou
6640: 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74  rce.IndexOfAny(t
6650: 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20  oks, n);..      
6660: 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62    if (n == -1) b
6670: 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69  reak;..        i
6680: 66 20 28 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20  f (source[n] == 
6690: 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20  toks[0])..      
66a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f    {..          /
66b0: 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65  /source = source
66c0: 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a  .Remove(n, 1);..
66d0: 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f            n = so
66e0: 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28  urce.IndexOfAny(
66f0: 71 75 6f 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20  quot, n + 1);.. 
6700: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d           if (n =
6710: 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20  = -1)..         
6720: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6730: 2f 2f 73 6f 75 72 63 65 20 3d 20 22 5c 22 22 20  //source = "\"" 
6740: 2b 20 73 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20  + source;..     
6750: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
6760: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
6770: 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20        n++;..    
6780: 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d        //source =
6790: 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e   source.Remove(n
67a0: 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  , 1);..        }
67b0: 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
67c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
67d0: 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e       s = source.
67e0: 53 75 62 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e  Substring(0, n).
67f0: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
6800: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
6810: 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71  > 1 && s[0] == q
6820: 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65  uot[0] && s[s.Le
6830: 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30  ngth - 1] == s[0
6840: 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ])..            
6850: 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28  s = s.Substring(
6860: 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29  1, s.Length - 2)
6870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73  ;....          s
6880: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 53  ource = source.S
6890: 75 62 73 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e  ubstring(n + 1).
68a0: 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20  Trim();..       
68b0: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
68c0: 3e 20 30 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d  > 0) ls.Add(s);.
68d0: 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 30  .          n = 0
68e0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
68f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 20      }..      if 
6900: 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e  (source.Length >
6910: 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   0)..      {..  
6920: 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65        s = source
6930: 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20  .Trim();..      
6940: 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e    if (s.Length >
6950: 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75   1 && s[0] == qu
6960: 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e  ot[0] && s[s.Len
6970: 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d  gth - 1] == s[0]
6980: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d  )..          s =
6990: 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20   s.Substring(1, 
69a0: 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a  s.Length - 2);..
69b0: 20 20 20 20 20 20 20 20 6c 73 2e 41 64 64 28 73          ls.Add(s
69c0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
69d0: 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
69e0: 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73   = new string[ls
69f0: 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20  .Count];..      
6a00: 6c 73 2e 43 6f 70 79 54 6f 28 61 72 2c 20 30 29  ls.CopyTo(ar, 0)
6a10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ;....      retur
6a20: 6e 20 61 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  n ar;..    }....
6a30: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6a40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74  >..    /// Split
6a50: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
6a60: 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74  string into mult
6a70: 69 70 6c 65 20 73 74 72 69 6e 67 73 20 62 61 73  iple strings bas
6a80: 65 64 20 6f 6e 20 61 20 73 65 70 61 72 61 74 6f  ed on a separato
6a90: 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72  r..    /// and r
6aa0: 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c  eturns the resul
6ab0: 74 20 61 73 20 61 6e 20 61 72 72 61 79 20 6f 66  t as an array of
6ac0: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f   strings...    /
6ad0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
6ae0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6af0: 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20  me="value">..   
6b00: 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20   /// The string 
6b10: 74 6f 20 73 70 6c 69 74 20 69 6e 74 6f 20 70 69  to split into pi
6b20: 65 63 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68  eces based on th
6b30: 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72  e separator char
6b40: 61 63 74 65 72 2e 20 20 49 66 0d 0a 20 20 20 20  acter.  If..    
6b50: 2f 2f 2f 20 74 68 69 73 20 73 74 72 69 6e 67 20  /// this string 
6b60: 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69  is null, null wi
6b70: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65 74  ll always be ret
6b80: 75 72 6e 65 64 2e 20 20 49 66 20 74 68 69 73 20  urned.  If this 
6b90: 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f  string is..    /
6ba0: 2f 2f 20 65 6d 70 74 79 2c 20 61 6e 20 61 72 72  // empty, an arr
6bb0: 61 79 20 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e  ay of zero strin
6bc0: 67 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  gs will always b
6bd0: 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20  e returned...   
6be0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6bf0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6c00: 6d 65 3d 22 73 65 70 61 72 61 74 6f 72 22 3e 0d  me="separator">.
6c10: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 68 61  .    /// The cha
6c20: 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20 64  racter used to d
6c30: 69 76 69 64 65 20 74 68 65 20 6f 72 69 67 69 6e  ivide the origin
6c40: 61 6c 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 73  al string into s
6c50: 75 62 2d 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20  ub-strings...   
6c60: 20 2f 2f 2f 20 54 68 69 73 20 63 68 61 72 61 63   /// This charac
6c70: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 61 20  ter cannot be a 
6c80: 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64  backslash or a d
6c90: 6f 75 62 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68  ouble-quote; oth
6ca0: 65 72 77 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20  erwise, no..    
6cb0: 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65  /// work will be
6cc0: 20 70 65 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e   performed and n
6cd0: 75 6c 6c 20 77 69 6c 6c 20 62 65 20 72 65 74 75  ull will be retu
6ce0: 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rned...    /// <
6cf0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6d00: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65   <param name="ke
6d10: 65 70 51 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f  epQuote">..    /
6d20: 2f 2f 20 49 66 20 74 68 69 73 20 70 61 72 61 6d  // If this param
6d30: 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  eter is non-zero
6d40: 2c 20 61 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f  , all double-quo
6d50: 74 65 20 63 68 61 72 61 63 74 65 72 73 20 77 69  te characters wi
6d60: 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72  ll be..    /// r
6d70: 65 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20 72  etained in the r
6d80: 65 74 75 72 6e 65 64 20 6c 69 73 74 20 6f 66 20  eturned list of 
6d90: 73 74 72 69 6e 67 73 3b 20 6f 74 68 65 72 77 69  strings; otherwi
6da0: 73 65 2c 20 74 68 65 79 20 77 69 6c 6c 20 62 65  se, they will be
6db0: 0d 0a 20 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65  ..    /// droppe
6dc0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
6dd0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
6de0: 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72  aram name="error
6df0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e  ">..    /// Upon
6e00: 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70   failure, this p
6e10: 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65  arameter will be
6e20: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e   modified to con
6e30: 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69  tain an appropri
6e40: 61 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72  ate..    /// err
6e50: 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20  or message...   
6e60: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
6e70: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6e80: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
6e90: 77 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e  w array of strin
6ea0: 67 73 20 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68  gs or null if th
6eb0: 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 69  e input string i
6ec0: 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d  s null -OR- the.
6ed0: 0a 20 20 20 20 2f 2f 2f 20 73 65 70 61 72 61 74  .    /// separat
6ee0: 6f 72 20 63 68 61 72 61 63 74 65 72 20 69 73 20  or character is 
6ef0: 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61  a backslash or a
6f00: 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f   double-quote -O
6f10: 52 2d 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20  R- the string.. 
6f20: 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20     /// contains 
6f30: 61 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 62 61  an unbalanced ba
6f40: 63 6b 73 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c  ckslash or doubl
6f50: 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  e-quote characte
6f60: 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  r...    /// </re
6f70: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
6f80: 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72 69  rnal static stri
6f90: 6e 67 5b 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a  ng[] NewSplit(..
6fa0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
6fb0: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 63  alue,..        c
6fc0: 68 61 72 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a  har separator,..
6fd0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65          bool kee
6fe0: 70 51 75 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20  pQuote,..       
6ff0: 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
7000: 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  r..        )..  
7010: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e    {..        con
7020: 73 74 20 63 68 61 72 20 45 73 63 61 70 65 43 68  st char EscapeCh
7030: 61 72 20 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20  ar = '\\';..    
7040: 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 51      const char Q
7050: 75 6f 74 65 43 68 61 72 20 3d 20 27 5c 22 27 3b  uoteChar = '\"';
7060: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
7070: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
7080: 20 49 74 20 69 73 20 69 6c 6c 65 67 61 6c 20 66   It is illegal f
7090: 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  or the separator
70a0: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
70b0: 20 65 69 74 68 65 72 20 61 0d 0a 20 20 20 20 20   either a..     
70c0: 20 20 20 2f 2f 20 20 20 20 20 20 20 62 61 63 6b     //       back
70d0: 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c  slash or a doubl
70e0: 65 2d 71 75 6f 74 65 20 62 65 63 61 75 73 65 20  e-quote because 
70f0: 62 6f 74 68 20 6f 66 20 74 68 6f 73 65 20 63 68  both of those ch
7100: 61 72 61 63 74 65 72 73 0d 0a 20 20 20 20 20 20  aracters..      
7110: 20 20 2f 2f 20 20 20 20 20 20 20 61 72 65 20 75    //       are u
7120: 73 65 64 20 66 6f 72 20 65 73 63 61 70 69 6e 67  sed for escaping
7130: 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65 72   other character
7140: 73 20 28 65 2e 67 2e 20 74 68 65 20 73 65 70 61  s (e.g. the sepa
7150: 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  rator..        /
7160: 2f 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65  /       characte
7170: 72 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  r)...        //.
7180: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 73 65  .        if ((se
7190: 70 61 72 61 74 6f 72 20 3d 3d 20 45 73 63 61 70  parator == Escap
71a0: 65 43 68 61 72 29 20 7c 7c 20 28 73 65 70 61 72  eChar) || (separ
71b0: 61 74 6f 72 20 3d 3d 20 51 75 6f 74 65 43 68 61  ator == QuoteCha
71c0: 72 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  r))..        {..
71d0: 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
71e0: 72 20 3d 20 22 73 65 70 61 72 61 74 6f 72 20 63  r = "separator c
71f0: 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20  haracter cannot 
7200: 62 65 20 74 68 65 20 65 73 63 61 70 65 20 6f 72  be the escape or
7210: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
7220: 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s";..           
7230: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
7240: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7250: 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
7260: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
7270: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  {..            e
7280: 72 72 6f 72 20 3d 20 22 73 74 72 69 6e 67 20 76  rror = "string v
7290: 61 6c 75 65 20 74 6f 20 73 70 6c 69 74 20 63 61  alue to split ca
72a0: 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a  nnot be null";..
72b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
72c0: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
72d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
72e0: 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75  nt length = valu
72f0: 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  e.Length;....   
7300: 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20       if (length 
7310: 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20  == 0)..         
7320: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 73 74     return new st
7330: 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20  ring[0];....    
7340: 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e      List<string>
7350: 20 6c 69 73 74 20 3d 20 6e 65 77 20 4c 69 73 74   list = new List
7360: 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20  <string>();..   
7370: 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
7380: 65 72 20 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77  er element = new
7390: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
73a0: 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69  ;..        int i
73b0: 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20  ndex = 0;..     
73c0: 20 20 20 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d     bool escape =
73d0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
73e0: 20 62 6f 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61   bool quote = fa
73f0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
7400: 77 68 69 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c  while (index < l
7410: 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20  ength)..        
7420: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
7430: 68 61 72 20 63 68 61 72 61 63 74 65 72 20 3d 20  har character = 
7440: 76 61 6c 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d  value[index++];.
7450: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
7460: 66 20 28 65 73 63 61 70 65 29 0d 0a 20 20 20 20  f (escape)..    
7470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7480: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
74a0: 2f 20 48 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e  / HACK: Only con
74b0: 73 69 64 65 72 20 74 68 65 20 65 73 63 61 70 65  sider the escape
74c0: 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62 65   character to be
74d0: 20 61 6e 20 61 63 74 75 61 6c 0d 0a 20 20 20 20   an actual..    
74e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
74f0: 20 20 20 20 20 22 65 73 63 61 70 65 22 20 69 66       "escape" if
7500: 20 69 74 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20   it is followed 
7510: 62 79 20 61 20 72 65 73 65 72 76 65 64 20 63 68  by a reserved ch
7520: 61 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20  aracter;..      
7530: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
7540: 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 65 6d     otherwise, em
7550: 69 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  it the original 
7560: 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72  escape character
7570: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20   and..          
7580: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
7590: 68 65 20 63 75 72 72 65 6e 74 20 63 68 61 72 61  he current chara
75a0: 63 74 65 72 20 69 6e 20 61 6e 20 65 66 66 6f 72  cter in an effor
75b0: 74 20 74 6f 20 68 65 6c 70 20 70 72 65 73 65 72  t to help preser
75c0: 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
75d0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
75e0: 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67   original string
75f0: 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20   content...     
7600: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
7610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7620: 66 20 28 28 63 68 61 72 61 63 74 65 72 20 21 3d  f ((character !=
7630: 20 45 73 63 61 70 65 43 68 61 72 29 20 26 26 0d   EscapeChar) &&.
7640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7650: 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72 20       (character 
7660: 21 3d 20 51 75 6f 74 65 43 68 61 72 29 20 26 26  != QuoteChar) &&
7670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7680: 20 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72        (character
7690: 20 21 3d 20 73 65 70 61 72 61 74 6f 72 29 29 0d   != separator)).
76a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
76b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
76c0: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e          element.
76d0: 41 70 70 65 6e 64 28 45 73 63 61 70 65 43 68 61  Append(EscapeCha
76e0: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
76f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
7700: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
7710: 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74  t.Append(charact
7720: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
7730: 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 66        escape = f
7740: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
7750: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
7760: 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72 61    else if (chara
7770: 63 74 65 72 20 3d 3d 20 45 73 63 61 70 65 43 68  cter == EscapeCh
7780: 61 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ar)..           
7790: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
77a0: 20 20 20 20 65 73 63 61 70 65 20 3d 20 74 72 75      escape = tru
77b0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
77c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
77d0: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
77e0: 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 0d  r == QuoteChar).
77f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
7800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7810: 69 66 20 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a  if (keepQuote)..
7820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7830: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65      element.Appe
7840: 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a  nd(character);..
7850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7860: 20 20 71 75 6f 74 65 20 3d 20 21 71 75 6f 74 65    quote = !quote
7870: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
7880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
7890: 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72  se if (character
78a0: 20 3d 3d 20 73 65 70 61 72 61 74 6f 72 29 0d 0a   == separator)..
78b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
78c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
78d0: 66 20 28 71 75 6f 74 65 29 0d 0a 20 20 20 20 20  f (quote)..     
78e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
78f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7900: 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64    element.Append
7910: 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20  (character);..  
7920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
7930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7940: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
7950: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
7970: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
7980: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20  oString());..   
7990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
79a0: 20 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20   element.Length 
79b0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
79c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
79d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
79e0: 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
79f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7a00: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
7a10: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
7a20: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
7a30: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
7a40: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
7a50: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e       // NOTE: An
7a60: 20 75 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61   unbalanced esca
7a70: 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72  pe or quote char
7a80: 61 63 74 65 72 20 69 6e 20 74 68 65 20 73 74 72  acter in the str
7a90: 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ing is..        
7aa0: 2f 2f 20 20 20 20 20 20 20 63 6f 6e 73 69 64 65  //       conside
7ab0: 72 65 64 20 74 6f 20 62 65 20 61 20 66 61 74 61  red to be a fata
7ac0: 6c 20 65 72 72 6f 72 3b 20 74 68 65 72 65 66 6f  l error; therefo
7ad0: 72 65 2c 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e  re, return null.
7ae0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
7af0: 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70 65        if (escape
7b00: 20 7c 7c 20 71 75 6f 74 65 29 0d 0a 20 20 20 20   || quote)..    
7b10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7b20: 20 20 20 65 72 72 6f 72 20 3d 20 22 75 6e 62 61     error = "unba
7b30: 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f 72  lanced escape or
7b40: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
7b50: 20 66 6f 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20   found";..      
7b60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
7b70: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
7b80: 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65  .        if (ele
7b90: 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29  ment.Length > 0)
7ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69  ..            li
7bb0: 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54  st.Add(element.T
7bc0: 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20  oString());.... 
7bd0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69         return li
7be0: 73 74 2e 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20  st.ToArray();.. 
7bf0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
7c00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7c10: 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20 72  // Queries and r
7c20: 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e  eturns the strin
7c30: 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
7c40: 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63 74 2c 20   for an object, 
7c50: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f  using the..    /
7c60: 2f 2f 20 73 70 65 63 69 66 69 65 64 20 28 6f 72  // specified (or
7c70: 20 63 75 72 72 65 6e 74 29 20 66 6f 72 6d 61 74   current) format
7c80: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
7c90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7ca0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7cb0: 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20  ame="obj">..    
7cc0: 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 69  /// The object i
7cd0: 6e 73 74 61 6e 63 65 20 74 6f 20 72 65 74 75 72  nstance to retur
7ce0: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70  n the string rep
7cf0: 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 2e  resentation for.
7d00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
7d10: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
7d20: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65  am name="provide
7d30: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  r">..    /// The
7d40: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
7d50: 20 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c   to use -OR- nul
7d60: 6c 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74  l if the current
7d70: 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72   format provider
7d80: 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 74 68   for..    /// th
7d90: 65 20 74 68 72 65 61 64 20 73 68 6f 75 6c 64 20  e thread should 
7da0: 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e  be used instead.
7db0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
7dc0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
7dd0: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
7de0: 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73  he string repres
7df0: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  entation for the
7e00: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
7e10: 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74 68   -OR- null if th
7e20: 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63  e..    /// objec
7e30: 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 61 6c  t instance is al
7e40: 73 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f  so null...    //
7e50: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
7e60: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
7e70: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 57  string ToStringW
7e80: 69 74 68 50 72 6f 76 69 64 65 72 28 0d 0a 20 20  ithProvider(..  
7e90: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a        object obj
7ea0: 2c 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d  ,..        IForm
7eb0: 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69  atProvider provi
7ec0: 64 65 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  der..        )..
7ed0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
7ee0: 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d  f (obj == null).
7ef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
7f00: 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 6e 75 6c  urn null; /* nul
7f10: 6c 20 2d 2d 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d  l --> null */...
7f20: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
7f30: 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20   is string)..   
7f40: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7f50: 28 73 74 72 69 6e 67 29 6f 62 6a 3b 20 2f 2a 20  (string)obj; /* 
7f60: 69 64 65 6e 74 69 74 79 20 2a 2f 0d 0a 0d 0a 20  identity */.... 
7f70: 20 20 20 20 20 20 20 49 43 6f 6e 76 65 72 74 69         IConverti
7f80: 62 6c 65 20 63 6f 6e 76 65 72 74 69 62 6c 65 20  ble convertible 
7f90: 3d 20 6f 62 6a 20 61 73 20 49 43 6f 6e 76 65 72  = obj as IConver
7fa0: 74 69 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tible;....      
7fb0: 20 20 69 66 20 28 63 6f 6e 76 65 72 74 69 62 6c    if (convertibl
7fc0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
7fd0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
7fe0: 6f 6e 76 65 72 74 69 62 6c 65 2e 54 6f 53 74 72  onvertible.ToStr
7ff0: 69 6e 67 28 70 72 6f 76 69 64 65 72 29 3b 0d 0a  ing(provider);..
8000: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
8010: 20 6f 62 6a 2e 54 6f 53 74 72 69 6e 67 28 29 3b   obj.ToString();
8020: 20 2f 2a 20 6e 6f 74 20 49 43 6f 6e 76 65 72 74   /* not IConvert
8030: 69 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 7d 0d 0a  ible */..    }..
8040: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
8050: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74 74  ry>..    /// Att
8060: 65 6d 70 74 73 20 74 6f 20 63 6f 6e 76 65 72 74  empts to convert
8070: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 6f 62   an arbitrary ob
8080: 6a 65 63 74 20 74 6f 20 74 68 65 20 42 6f 6f 6c  ject to the Bool
8090: 65 61 6e 20 64 61 74 61 20 74 79 70 65 2e 0d 0a  ean data type...
80a0: 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 6f 62 6a      /// Null obj
80b0: 65 63 74 20 76 61 6c 75 65 73 20 61 72 65 20 63  ect values are c
80c0: 6f 6e 76 65 72 74 65 64 20 74 6f 20 66 61 6c 73  onverted to fals
80d0: 65 2e 20 20 54 68 72 6f 77 73 20 61 6e 20 65 78  e.  Throws an ex
80e0: 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  ception..    ///
80f0: 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a   upon failure...
8100: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8110: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
8120: 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a  am name="obj">..
8130: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65      /// The obje
8140: 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  ct value to conv
8150: 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ert...    /// </
8160: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
8170: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f  <param name="pro
8180: 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f  vider">..    ///
8190: 20 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f 76   The format prov
81a0: 69 64 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20 20  ider to use...  
81b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
81c0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
81d0: 61 6d 65 3d 22 76 69 61 46 72 61 6d 65 77 6f 72  ame="viaFramewor
81e0: 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  k">..    /// If 
81f0: 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 20 73 74 72 69  non-zero, a stri
8200: 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65  ng value will be
8210: 20 63 6f 6e 76 65 72 74 65 64 20 75 73 69 6e 67   converted using
8220: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   the..    /// <s
8230: 65 65 20 63 72 65 66 3d 22 43 6f 6e 76 65 72 74  ee cref="Convert
8240: 2e 54 6f 42 6f 6f 6c 65 61 6e 28 4f 62 6a 65 63  .ToBoolean(Objec
8250: 74 2c 20 49 46 6f 72 6d 61 74 50 72 6f 76 69 64  t, IFormatProvid
8260: 65 72 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  er)" />..    ///
8270: 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77 69   method; otherwi
8280: 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72 65  se, the <see cre
8290: 66 3d 22 54 6f 42 6f 6f 6c 65 61 6e 28 53 74 72  f="ToBoolean(Str
82a0: 69 6e 67 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  ing)" />..    //
82b0: 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  / method will be
82c0: 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20   used...    /// 
82d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
82e0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
82f0: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74   /// The convert
8300: 65 64 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  ed boolean value
8310: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
8320: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
8330: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
8340: 54 6f 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20  ToBoolean(..    
8350: 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d      object obj,.
8360: 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61 74  .        IFormat
8370: 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64 65  Provider provide
8380: 72 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  r,..        bool
8390: 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 0d 0a 20   viaFramework.. 
83a0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
83b0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62 6a  .        if (obj
83c0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
83d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
83e0: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
83f0: 54 79 70 65 43 6f 64 65 20 74 79 70 65 43 6f 64  TypeCode typeCod
8400: 65 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  e = Type.GetType
8410: 43 6f 64 65 28 6f 62 6a 2e 47 65 74 54 79 70 65  Code(obj.GetType
8420: 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ());....        
8430: 73 77 69 74 63 68 20 28 74 79 70 65 43 6f 64 65  switch (typeCode
8440: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
8450: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
8460: 79 70 65 43 6f 64 65 2e 45 6d 70 74 79 3a 0d 0a  ypeCode.Empty:..
8470: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
8480: 20 54 79 70 65 43 6f 64 65 2e 44 42 4e 75 6c 6c   TypeCode.DBNull
8490: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
84a0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
84b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
84c0: 73 65 20 54 79 70 65 43 6f 64 65 2e 42 6f 6f 6c  se TypeCode.Bool
84d0: 65 61 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ean:..          
84e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 62 6f        return (bo
84f0: 6f 6c 29 6f 62 6a 3b 0d 0a 20 20 20 20 20 20 20  ol)obj;..       
8500: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
8510: 64 65 2e 43 68 61 72 3a 0d 0a 20 20 20 20 20 20  de.Char:..      
8520: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8530: 20 28 28 63 68 61 72 29 6f 62 6a 29 20 21 3d 20   ((char)obj) != 
8540: 28 63 68 61 72 29 30 20 3f 20 74 72 75 65 20 3a  (char)0 ? true :
8550: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
8560: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
8570: 64 65 2e 53 42 79 74 65 3a 0d 0a 20 20 20 20 20  de.SByte:..     
8580: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8590: 6e 20 28 28 73 62 79 74 65 29 6f 62 6a 29 20 21  n ((sbyte)obj) !
85a0: 3d 20 28 73 62 79 74 65 29 30 20 3f 20 74 72 75  = (sbyte)0 ? tru
85b0: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
85c0: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
85d0: 65 43 6f 64 65 2e 42 79 74 65 3a 0d 0a 20 20 20  eCode.Byte:..   
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
85f0: 75 72 6e 20 28 28 62 79 74 65 29 6f 62 6a 29 20  urn ((byte)obj) 
8600: 21 3d 20 28 62 79 74 65 29 30 20 3f 20 74 72 75  != (byte)0 ? tru
8610: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
8620: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
8630: 65 43 6f 64 65 2e 49 6e 74 31 36 3a 0d 0a 20 20  eCode.Int16:..  
8640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8650: 74 75 72 6e 20 28 28 73 68 6f 72 74 29 6f 62 6a  turn ((short)obj
8660: 29 20 21 3d 20 28 73 68 6f 72 74 29 30 20 3f 20  ) != (short)0 ? 
8670: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
8680: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
8690: 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 31 36 3a  TypeCode.UInt16:
86a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
86b0: 20 20 72 65 74 75 72 6e 20 28 28 75 73 68 6f 72    return ((ushor
86c0: 74 29 6f 62 6a 29 20 21 3d 20 28 75 73 68 6f 72  t)obj) != (ushor
86d0: 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  t)0 ? true : fal
86e0: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
86f0: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 49   case TypeCode.I
8700: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
8710: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
8720: 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 69 6e 74  int)obj) != (int
8730: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
8740: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
8750: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49  case TypeCode.UI
8760: 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt32:..         
8770: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
8780: 75 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 75 69  uint)obj) != (ui
8790: 6e 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  nt)0 ? true : fa
87a0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
87b0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
87c0: 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20 20  Int64:..        
87d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
87e0: 28 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 6c  (long)obj) != (l
87f0: 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20 66  ong)0 ? true : f
8800: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
8810: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
8820: 2e 55 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20  .UInt64:..      
8830: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
8840: 20 28 28 75 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d   ((ulong)obj) !=
8850: 20 28 75 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65   (ulong)0 ? true
8860: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
8870: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
8880: 43 6f 64 65 2e 53 69 6e 67 6c 65 3a 0d 0a 20 20  Code.Single:..  
8890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
88a0: 74 75 72 6e 20 28 28 66 6c 6f 61 74 29 6f 62 6a  turn ((float)obj
88b0: 29 20 21 3d 20 28 66 6c 6f 61 74 29 30 2e 30 20  ) != (float)0.0 
88c0: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
88d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
88e0: 65 20 54 79 70 65 43 6f 64 65 2e 44 6f 75 62 6c  e TypeCode.Doubl
88f0: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
8900: 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 6f 75      return ((dou
8910: 62 6c 65 29 6f 62 6a 29 20 21 3d 20 28 64 6f 75  ble)obj) != (dou
8920: 62 6c 65 29 30 2e 30 20 3f 20 74 72 75 65 20 3a  ble)0.0 ? true :
8930: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
8940: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
8950: 64 65 2e 44 65 63 69 6d 61 6c 3a 0d 0a 20 20 20  de.Decimal:..   
8960: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
8970: 75 72 6e 20 28 28 64 65 63 69 6d 61 6c 29 6f 62  urn ((decimal)ob
8980: 6a 29 20 21 3d 20 44 65 63 69 6d 61 6c 2e 5a 65  j) != Decimal.Ze
8990: 72 6f 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  ro ? true : fals
89a0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
89b0: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53 74  case TypeCode.St
89c0: 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20 20  ring:..         
89d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 69         return vi
89e0: 61 46 72 61 6d 65 77 6f 72 6b 20 3f 0d 0a 20 20  aFramework ?..  
89f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a00: 20 20 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c    Convert.ToBool
8a10: 65 61 6e 28 6f 62 6a 2c 20 70 72 6f 76 69 64 65  ean(obj, provide
8a20: 72 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  r) :..          
8a30: 20 20 20 20 20 20 20 20 20 20 54 6f 42 6f 6f 6c            ToBool
8a40: 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68  ean(ToStringWith
8a50: 50 72 6f 76 69 64 65 72 28 6f 62 6a 2c 20 70 72  Provider(obj, pr
8a60: 6f 76 69 64 65 72 29 29 3b 0d 0a 20 20 20 20 20  ovider));..     
8a70: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d         default:.
8a80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8a90: 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74   throw new SQLit
8aa0: 65 45 78 63 65 70 74 69 6f 6e 28 53 74 72 69 6e  eException(Strin
8ab0: 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
8ad0: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
8ae0: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
8af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b00: 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65 72 74 20  "Cannot convert 
8b10: 74 79 70 65 20 7b 30 7d 20 74 6f 20 62 6f 6f 6c  type {0} to bool
8b20: 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ean",..         
8b30: 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 43             typeC
8b40: 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode));..        
8b50: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
8b60: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8b70: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61     /// Convert a
8b80: 20 76 61 6c 75 65 20 74 6f 20 74 72 75 65 20 6f   value to true o
8b90: 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f  r false...    //
8ba0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8bb0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8bc0: 65 3d 22 73 6f 75 72 63 65 22 3e 41 20 73 74 72  e="source">A str
8bd0: 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72 20 72 65  ing or number re
8be0: 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20  presenting true 
8bf0: 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e  or false</param>
8c00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
8c10: 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ns></returns>.. 
8c20: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
8c30: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28   bool ToBoolean(
8c40: 6f 62 6a 65 63 74 20 73 6f 75 72 63 65 29 0d 0a  object source)..
8c50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
8c60: 28 73 6f 75 72 63 65 20 69 73 20 62 6f 6f 6c 29  (source is bool)
8c70: 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 73 6f   return (bool)so
8c80: 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  urce;....      r
8c90: 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65 61 6e 28  eturn ToBoolean(
8ca0: 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76  ToStringWithProv
8cb0: 69 64 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  ider(..         
8cc0: 20 73 6f 75 72 63 65 2c 20 43 75 6c 74 75 72 65   source, Culture
8cd0: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
8ce0: 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20 20 7d 0d  lture));..    }.
8cf0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
8d00: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
8d10: 6e 76 65 72 74 20 61 20 73 74 72 69 6e 67 20 74  nvert a string t
8d20: 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 2e  o true or false.
8d30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8d40: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
8d50: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63  aram name="sourc
8d60: 65 22 3e 41 20 73 74 72 69 6e 67 20 72 65 70 72  e">A string repr
8d70: 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20 6f 72  esenting true or
8d80: 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a   false</param>..
8d90: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
8da0: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
8db0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
8dc0: 20 20 20 20 2f 2f 2f 20 22 79 65 73 22 2c 20 22      /// "yes", "
8dd0: 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22 2c 20 22  no", "y", "n", "
8de0: 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22 2c 20 22  0", "1", "on", "
8df0: 6f 66 66 22 20 61 73 20 77 65 6c 6c 20 61 73 20  off" as well as 
8e00: 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53 74 72  Boolean.FalseStr
8e10: 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65 61 6e 2e  ing and Boolean.
8e20: 54 72 75 65 53 74 72 69 6e 67 20 77 69 6c 6c 20  TrueString will 
8e30: 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20  all be..    /// 
8e40: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 70  converted to a p
8e50: 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e 20 76 61  roper boolean va
8e60: 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lue...    /// </
8e70: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 70 75  remarks>..    pu
8e80: 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c  blic static bool
8e90: 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74 72 69 6e   ToBoolean(strin
8ea0: 67 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b  g source)..    {
8eb0: 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72 69  ..      if (Stri
8ec0: 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63  ng.Compare(sourc
8ed0: 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74 72 69  e, bool.TrueStri
8ee0: 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ng, StringCompar
8ef0: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
8f00: 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72 65  reCase) == 0) re
8f10: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
8f20: 20 20 65 6c 73 65 20 69 66 20 28 53 74 72 69 6e    else if (Strin
8f30: 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65  g.Compare(source
8f40: 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53 74 72 69  , bool.FalseStri
8f50: 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72  ng, StringCompar
8f60: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f  ison.OrdinalIgno
8f70: 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72 65  reCase) == 0) re
8f80: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
8f90: 20 20 20 20 20 73 77 69 74 63 68 28 73 6f 75 72       switch(sour
8fa0: 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74 75  ce.ToLower(Cultu
8fb0: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
8fc0: 43 75 6c 74 75 72 65 29 29 0d 0a 20 20 20 20 20  Culture))..     
8fd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65   {..        case
8fe0: 20 22 79 65 73 22 3a 0d 0a 20 20 20 20 20 20 20   "yes":..       
8ff0: 20 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20 20   case "y":..    
9000: 20 20 20 20 63 61 73 65 20 22 31 22 3a 0d 0a 20      case "1":.. 
9010: 20 20 20 20 20 20 20 63 61 73 65 20 22 6f 6e 22         case "on"
9020: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  :..          ret
9030: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
9040: 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a 20     case "no":.. 
9050: 20 20 20 20 20 20 20 63 61 73 65 20 22 6e 22 3a         case "n":
9060: 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ..        case "
9070: 30 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73  0":..        cas
9080: 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20  e "off":..      
9090: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
90a0: 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61 75  ;..        defau
90b0: 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 74  lt:..          t
90c0: 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
90d0: 74 45 78 63 65 70 74 69 6f 6e 28 22 73 6f 75 72  tException("sour
90e0: 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ce");..      }..
90f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65      }....    #re
9100: 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e 76 65 72  gion Type Conver
9110: 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sions..    /// <
9120: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
9130: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 53 51 4c  / Converts a SQL
9140: 69 74 65 54 79 70 65 20 74 6f 20 61 20 2e 4e 45  iteType to a .NE
9150: 54 20 54 79 70 65 20 6f 62 6a 65 63 74 0d 0a 20  T Type object.. 
9160: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9170: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
9180: 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68 65 20 53  m name="t">The S
9190: 51 4c 69 74 65 54 79 70 65 20 74 6f 20 63 6f 6e  QLiteType to con
91a0: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
91b0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52    /// <returns>R
91c0: 65 74 75 72 6e 73 20 61 20 2e 4e 45 54 20 54 79  eturns a .NET Ty
91d0: 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65 74 75 72  pe object</retur
91e0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
91f0: 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 53 51  l static Type SQ
9200: 4c 69 74 65 54 79 70 65 54 6f 54 79 70 65 28 53  LiteTypeToType(S
9210: 51 4c 69 74 65 54 79 70 65 20 74 29 0d 0a 20 20  QLiteType t)..  
9220: 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 74    {..      if (t
9230: 2e 54 79 70 65 20 3d 3d 20 44 62 54 79 70 65 2e  .Type == DbType.
9240: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 20  Object)..       
9250: 20 72 65 74 75 72 6e 20 5f 61 66 66 69 6e 69 74   return _affinit
9260: 79 74 6f 74 79 70 65 5b 28 69 6e 74 29 74 2e 41  ytotype[(int)t.A
9270: 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20 20 20 20  ffinity];..     
9280: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72   else..        r
9290: 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e 76  eturn SQLiteConv
92a0: 65 72 74 2e 44 62 54 79 70 65 54 6f 54 79 70 65  ert.DbTypeToType
92b0: 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20 20 20 7d  (t.Type);..    }
92c0: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
92d0: 73 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 61  static Type[] _a
92e0: 66 66 69 6e 69 74 79 74 6f 74 79 70 65 20 3d 20  ffinitytotype = 
92f0: 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  {..      typeof(
9300: 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 55 6e  object),   // Un
9310: 69 6e 69 74 69 61 6c 69 7a 65 64 20 28 30 29 0d  initialized (0).
9320: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
9330: 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36  t64),    // Int6
9340: 34 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79 70  4 (1)..      typ
9350: 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20 20 20 2f  eof(Double),   /
9360: 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d 0a 20 20  / Double (2)..  
9370: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
9380: 67 29 2c 20 20 20 2f 2f 20 54 65 78 74 20 28 33  g),   // Text (3
9390: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
93a0: 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 6c  byte[]),   // Bl
93b0: 6f 62 20 28 34 29 0d 0a 20 20 20 20 20 20 74 79  ob (4)..      ty
93c0: 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20  peof(object),   
93d0: 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a 20 20 20  // Null (5)..   
93e0: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
93f0: 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  me), // DateTime
9400: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70   (10)..      typ
9410: 65 6f 66 28 6f 62 6a 65 63 74 29 20 20 20 20 2f  eof(object)    /
9420: 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a 20 20 20  / None (11)..   
9430: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   };....    /// <
9440: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
9450: 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 69 6e  / For a given in
9460: 74 72 69 6e 73 69 63 20 74 79 70 65 2c 20 72 65  trinsic type, re
9470: 74 75 72 6e 20 61 20 44 62 54 79 70 65 0d 0a 20  turn a DbType.. 
9480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9490: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
94a0: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
94b0: 20 6e 61 74 69 76 65 20 74 79 70 65 20 74 6f 20   native type to 
94c0: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
94d0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
94e0: 73 3e 54 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  s>The correspond
94f0: 69 6e 67 20 28 63 6c 6f 73 65 73 74 20 6d 61 74  ing (closest mat
9500: 63 68 29 20 44 62 54 79 70 65 3c 2f 72 65 74 75  ch) DbType</retu
9510: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
9520: 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65  al static DbType
9530: 20 54 79 70 65 54 6f 44 62 54 79 70 65 28 54 79   TypeToDbType(Ty
9540: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
9550: 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74        TypeCode t
9560: 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  c = Type.GetType
9570: 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20 20  Code(typ);..    
9580: 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70 65    if (tc == Type
9590: 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20  Code.Object)..  
95a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
95b0: 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66  f (typ == typeof
95c0: 28 62 79 74 65 5b 5d 29 29 20 72 65 74 75 72 6e  (byte[])) return
95d0: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 3b 0d   DbType.Binary;.
95e0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70  .        if (typ
95f0: 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29   == typeof(Guid)
9600: 29 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e  ) return DbType.
9610: 47 75 69 64 3b 0d 0a 20 20 20 20 20 20 20 20 72  Guid;..        r
9620: 65 74 75 72 6e 20 44 62 54 79 70 65 2e 53 74 72  eturn DbType.Str
9630: 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ing;..      }.. 
9640: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70       return _typ
9650: 65 74 6f 64 62 74 79 70 65 5b 28 69 6e 74 29 74  etodbtype[(int)t
9660: 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  c];..    }....  
9670: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
9680: 20 44 62 54 79 70 65 5b 5d 20 5f 74 79 70 65 74   DbType[] _typet
9690: 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a 20 20 20  odbtype = {..   
96a0: 20 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74     DbType.Object
96b0: 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30 29  ,   // Empty (0)
96c0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
96d0: 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f 62 6a 65  inary,   // Obje
96e0: 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20 44 62  ct (1)..      Db
96f0: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
9700: 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20 20  / DBNull (2)..  
9710: 20 20 20 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65      DbType.Boole
9720: 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  an,  // Boolean 
9730: 28 33 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  (3)..      DbTyp
9740: 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 43  e.SByte,    // C
9750: 68 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20 44  har (4)..      D
9760: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
9770: 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20  // SByte (5)..  
9780: 20 20 20 20 44 62 54 79 70 65 2e 42 79 74 65 2c      DbType.Byte,
9790: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36 29       // Byte (6)
97a0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49  ..      DbType.I
97b0: 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49 6e 74 31  nt16,    // Int1
97c0: 36 20 28 37 29 0d 0a 20 20 20 20 20 20 44 62 54  6 (7)..      DbT
97d0: 79 70 65 2e 55 49 6e 74 31 36 2c 20 20 20 2f 2f  ype.UInt16,   //
97e0: 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20 20   UInt16 (8)..   
97f0: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c     DbType.Int32,
9800: 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 39 29      // Int32 (9)
9810: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
9820: 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55 49 6e 74  Int32,   // UInt
9830: 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20 44  32 (10)..      D
9840: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 20 20 20  bType.Int64,    
9850: 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20  // Int64 (11).. 
9860: 20 20 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74       DbType.UInt
9870: 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74 36 34 20  64,   // UInt64 
9880: 28 31 32 29 0d 0a 20 20 20 20 20 20 44 62 54 79  (12)..      DbTy
9890: 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20 2f 2f 20  pe.Single,   // 
98a0: 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20  Single (13)..   
98b0: 20 20 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65     DbType.Double
98c0: 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31  ,   // Double (1
98d0: 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  4)..      DbType
98e0: 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f 20 44 65  .Decimal,  // De
98f0: 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20  cimal (15)..    
9900: 20 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d    DbType.DateTim
9910: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
9920: 31 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  16)..      DbTyp
9930: 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 3f  e.Object,   // ?
9940: 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20 44 62  ? (17)..      Db
9950: 54 79 70 65 2e 53 74 72 69 6e 67 20 20 20 20 2f  Type.String    /
9960: 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a 20  / String (18).. 
9970: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
9980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
9990: 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20  /// Returns the 
99a0: 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f 72 20 74  ColumnSize for t
99b0: 68 65 20 67 69 76 65 6e 20 44 62 54 79 70 65 0d  he given DbType.
99c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
99d0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
99e0: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54  ram name="typ">T
99f0: 68 65 20 44 62 54 79 70 65 20 74 6f 20 67 65 74  he DbType to get
9a00: 20 74 68 65 20 73 69 7a 65 20 6f 66 3c 2f 70 61   the size of</pa
9a10: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
9a20: 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73  eturns></returns
9a30: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
9a40: 73 74 61 74 69 63 20 69 6e 74 20 44 62 54 79 70  static int DbTyp
9a50: 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65 28 44 62  eToColumnSize(Db
9a60: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
9a70: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
9a80: 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69  dbtypetocolumnsi
9a90: 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20  ze[(int)typ];.. 
9aa0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
9ab0: 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 5b 5d  ate static int[]
9ac0: 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e   _dbtypetocolumn
9ad0: 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20  size = {..      
9ae0: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
9af0: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
9b00: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
9b10: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
9b20: 31 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20  1)..      1,    
9b30: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
9b40: 28 32 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20  (2)..      1,   
9b50: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 6f 6f 6c           // Bool
9b60: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 38  ean (3)..      8
9b70: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
9b80: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
9b90: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
9ba0: 20 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20    // Date (5).. 
9bb0: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
9bc0: 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28     // DateTime (
9bd0: 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  6)..      8,    
9be0: 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d          // Decim
9bf0: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 38 2c  al (7)..      8,
9c00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
9c10: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
9c20: 20 31 36 2c 20 20 20 20 20 20 20 20 20 20 20 2f   16,           /
9c30: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
9c40: 20 20 32 2c 20 20 20 20 20 20 20 20 20 20 20 20    2,            
9c50: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
9c60: 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20       4,         
9c70: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
9c80: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
9c90: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
9ca0: 31 32 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  12)..      int.M
9cb0: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  axValue, // Obje
9cc0: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 31  ct (13)..      1
9cd0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
9ce0: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
9cf0: 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20    4,            
9d00: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
9d10: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
9d20: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
9d30: 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  6)..      8,    
9d40: 20 20 20 20 20 20 20 20 2f 2f 20 54 69 6d 65 20          // Time 
9d50: 28 31 37 29 0d 0a 20 20 20 20 20 20 32 2c 20 20  (17)..      2,  
9d60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
9d70: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
9d80: 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  4,            //
9d90: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
9da0: 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20      8,          
9db0: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
9dc0: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
9dd0: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
9de0: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
9df0: 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f  int.MaxValue, //
9e00: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
9e10: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
9e20: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
9e30: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
9e40: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
9e50: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
9e60: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
9e70: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 20 20    int.MaxValue  
9e80: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
9e90: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72   };....    inter
9ea0: 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63  nal static objec
9eb0: 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69  t DbTypeToNumeri
9ec0: 63 50 72 65 63 69 73 69 6f 6e 28 44 62 54 79 70  cPrecision(DbTyp
9ed0: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
9ee0: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74       return _dbt
9ef0: 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63  ypetonumericprec
9f00: 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79 70 5d 3b  ision[(int)typ];
9f10: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70  ..    }....    p
9f20: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62  rivate static ob
9f30: 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f  ject[] _dbtypeto
9f40: 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e  numericprecision
9f50: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
9f60: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
9f70: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
9f80: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
9f90: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
9fa0: 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20 20        3,        
9fb0: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
9fc0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
9fd0: 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  lue, // Boolean 
9fe0: 28 33 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20  (3)..      19,  
9ff0: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
a000: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
a010: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
a020: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
a030: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
a040: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
a050: 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20        53,       
a060: 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28      // Decimal (
a070: 37 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20  7)..      53,   
a080: 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c          // Doubl
a090: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (8)..      DBN
a0a0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47 75  ull.Value, // Gu
a0b0: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 35 2c  id (9)..      5,
a0c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
a0d0: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
a0e0: 20 31 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f   10,           /
a0f0: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
a100: 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20      19,         
a110: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
a120: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
a130: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
a140: 31 33 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20  13)..      3,   
a150: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
a160: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 32 34  e (14)..      24
a170: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53  ,           // S
a180: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
a190: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
a1a0: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
a1b0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
a1c0: 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29  ue, // Time (17)
a1d0: 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20 20  ..      5,      
a1e0: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
a1f0: 28 31 38 29 0d 0a 20 20 20 20 20 20 31 30 2c 20  (18)..      10, 
a200: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
a210: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
a220: 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  19,           //
a230: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
a240: 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20 20      53,         
a250: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
a260: 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (21)..      DBNu
a270: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
a280: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
a290: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 44  th (22)..      D
a2a0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
a2b0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
a2c0: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44 42  h (23)..      DB
a2d0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f  Null.Value, // ?
a2e0: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44 42  ? (24)..      DB
a2f0: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 58  Null.Value  // X
a300: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
a310: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
a320: 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62  static object Db
a330: 54 79 70 65 54 6f 4e 75 6d 65 72 69 63 53 63 61  TypeToNumericSca
a340: 6c 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a  le(DbType typ)..
a350: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
a360: 75 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d  urn _dbtypetonum
a370: 65 72 69 63 73 63 61 6c 65 5b 28 69 6e 74 29 74  ericscale[(int)t
a380: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  yp];..    }.... 
a390: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
a3a0: 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79  c object[] _dbty
a3b0: 70 65 74 6f 6e 75 6d 65 72 69 63 73 63 61 6c 65  petonumericscale
a3c0: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e 75   = {..      DBNu
a3d0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
a3e0: 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20  iString (0)..   
a3f0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
a400: 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a   // Binary (1)..
a410: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
a420: 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d      // Byte (2).
a430: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
a440: 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20  lue, // Boolean 
a450: 28 33 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20  (3)..      4,   
a460: 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72           // Curr
a470: 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20  ency (4)..      
a480: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
a490: 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20   Date (5)..     
a4a0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
a4b0: 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a  / DateTime (6)..
a4c0: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
a4d0: 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28  ue, // Decimal (
a4e0: 37 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  7)..      DBNull
a4f0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f 75 62 6c  .Value, // Doubl
a500: 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42 4e  e (8)..      DBN
a510: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47 75  ull.Value, // Gu
a520: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 30 2c  id (9)..      0,
a530: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49              // I
a540: 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20  nt16 (10)..     
a550: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
a560: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
a570: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
a580: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d    // Int64 (12).
a590: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
a5a0: 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28  lue, // Object (
a5b0: 31 33 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  13)..      0,   
a5c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74           // SByt
a5d0: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 42  e (14)..      DB
a5e0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53  Null.Value, // S
a5f0: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
a600: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
a610: 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a  // String (16)..
a620: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
a630: 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29  ue, // Time (17)
a640: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
a650: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20        // UInt16 
a660: 28 31 38 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (18)..      0,  
a670: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
a680: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
a690: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
a6a0: 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20   UInt64 (20)..  
a6b0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
a6c0: 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20    // VarNumeric 
a6d0: 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (21)..      DBNu
a6e0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73  ll.Value, // Ans
a6f0: 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67  iStringFixedLeng
a700: 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 44  th (22)..      D
a710: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
a720: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
a730: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44 42  h (23)..      DB
a740: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 3f  Null.Value, // ?
a750: 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44 42  ? (24)..      DB
a760: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 58  Null.Value  // X
a770: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d  ml (25)..    };.
a780: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
a790: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
a7a0: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65 66  termines the def
a7b0: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79  ault database ty
a7c0: 70 65 20 6e 61 6d 65 20 74 6f 20 62 65 20 75 73  pe name to be us
a7d0: 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
a7e0: 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
a7f0: 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
a800: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
a810: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
a820: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
a830: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
a840: 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74  fault database t
a850: 79 70 65 20 6e 61 6d 65 20 74 6f 20 75 73 65 2e  ype name to use.
a860: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
a870: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
a880: 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
a890: 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e 61  GetDefaultTypeNa
a8a0: 6d 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  me()..    {..   
a8b0: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
a8c0: 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  e = UnsafeNative
a8d0: 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74 69  Methods.GetSetti
a8e0: 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  ngValue(..      
a8f0: 20 20 20 20 20 20 22 55 73 65 5f 53 51 4c 69 74        "Use_SQLit
a900: 65 43 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c 74  eConvert_Default
a910: 54 79 70 65 4e 61 6d 65 22 2c 20 6e 75 6c 6c 29  TypeName", null)
a920: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
a930: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
a940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
a950: 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61  urn FallbackDefa
a960: 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a  ultTypeName;....
a970: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
a980: 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  alue;..    }....
a990: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a9a0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
a9b0: 6d 69 6e 65 73 20 74 68 65 20 74 79 70 65 20 6e  mines the type n
a9c0: 61 6d 65 20 66 6f 72 20 74 68 65 20 67 69 76 65  ame for the give
a9d0: 6e 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65  n database value
a9e0: 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
a9f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
aa00: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
aa10: 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68 65  "connection">The
aa20: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74   connection cont
aa30: 65 78 74 20 66 6f 72 20 63 75 73 74 6f 6d 20 74  ext for custom t
aa40: 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69 66  ype mappings, if
aa50: 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20   any.</param>.. 
aa60: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
aa70: 6d 65 3d 22 64 62 54 79 70 65 22 3e 54 68 65 20  me="dbType">The 
aa80: 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74  database value t
aa90: 79 70 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ype.</param>..  
aaa0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
aab0: 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66 6c  e="flags">The fl
aac0: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
aad0: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
aae0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
aaf0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
ab00: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
ab10: 74 79 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e 20  type name or an 
ab20: 65 6d 70 74 79 20 73 74 72 69 6e 67 20 69 66 20  empty string if 
ab30: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
ab40: 65 72 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72 6e  ermined.</return
ab50: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
ab60: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44   static string D
ab70: 62 54 79 70 65 54 6f 54 79 70 65 4e 61 6d 65 28  bTypeToTypeName(
ab80: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
ab90: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
aba0: 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
abb0: 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d 0a  DbType dbType,..
abc0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
abd0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
abe0: 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
abf0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
ac00: 74 72 69 6e 67 20 64 65 66 61 75 6c 74 54 79 70  tring defaultTyp
ac10: 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61 75  eName = GetDefau
ac20: 6c 74 54 79 70 65 4e 61 6d 65 28 29 3b 0d 0a 0d  ltTypeName();...
ac30: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
ac40: 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
ac50: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
ac60: 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c           flags |
ac70: 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61  = connection.Fla
ac80: 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  gs;....         
ac90: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
aca0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
acb0: 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74  Flags.UseConnect
acc0: 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c  ionTypes) == SQL
acd0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
ace0: 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  gs.UseConnection
acf0: 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20  Types)..        
ad00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ad10: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
ad20: 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f  ypeMap connectio
ad30: 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e  nTypeNames = con
ad40: 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d  nection._typeNam
ad50: 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  es;....         
ad60: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
ad70: 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21  ctionTypeNames !
ad80: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ad90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ada0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
adb0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
adc0: 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20  ing value;....  
add0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ade0: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
adf0: 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
ae00: 56 61 6c 75 65 28 64 62 54 79 70 65 2c 20 6f 75  Value(dbType, ou
ae10: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
ae20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae30: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
ae40: 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  typeName;..     
ae50: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
ae60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ae80: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65      // NOTE: Use
ae90: 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61 74   the default dat
aea0: 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20  abase type name 
aeb0: 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
aec0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
aed0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
aee0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
aef0: 54 79 70 65 4e 61 6d 65 20 3d 20 63 6f 6e 6e 65  TypeName = conne
af00: 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79 70  ction.DefaultTyp
af10: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  eName;..        
af20: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
af30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  ....        if (
af40: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
af50: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e  onnectionFlags.N
af60: 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d  oGlobalTypes) ==
af70: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
af80: 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54  nFlags.NoGlobalT
af90: 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20  ypes)..         
afa0: 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c     return defaul
afb0: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  tTypeName;....  
afc0: 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e        lock (_syn
afd0: 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 20  cRoot)..        
afe0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
aff0: 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d 3d  f (_typeNames ==
b000: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
b010: 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d          _typeNam
b020: 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44 62  es = GetSQLiteDb
b030: 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20  TypeMap();....  
b040: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
b050: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61  DbTypeMapping va
b060: 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
b070: 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d      if (_typeNam
b080: 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 64  es.TryGetValue(d
b090: 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75 65  bType, out value
b0a0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
b0b0: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
b0c0: 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  .typeName;..    
b0d0: 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e 45      }....#if !NE
b0e0: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
b0f0: 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20  TRACE_WARNING.. 
b100: 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
b110: 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
b120: 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57  tionFlags.TraceW
b130: 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74  arning) == SQLit
b140: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
b150: 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29 0d 0a  .TraceWarning)..
b160: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b170: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
b180: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
b190: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
b1a0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
b1b0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
b1c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
b1d0: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
b1e0: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
b1f0: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
b200: 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30 7d 5c  ault name \"{0}\
b210: 22 20 66 6f 72 20 74 79 70 65 20 7b 31 7d 2e 22  " for type {1}."
b220: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
b230: 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61     defaultTypeNa
b240: 6d 65 2c 20 64 62 54 79 70 65 29 29 3b 0d 0a 20  me, dbType));.. 
b250: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
b260: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
b270: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
b280: 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  me;..    }....  
b290: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b2a0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
b2b0: 20 61 20 44 62 54 79 70 65 20 74 6f 20 61 20 54   a DbType to a T
b2c0: 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ype..    /// </s
b2d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
b2e0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
b2f0: 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f  p">The DbType to
b300: 20 63 6f 6e 76 65 72 74 20 66 72 6f 6d 3c 2f 70   convert from</p
b310: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
b320: 72 65 74 75 72 6e 73 3e 54 68 65 20 63 6c 6f 73  returns>The clos
b330: 65 73 74 2d 6d 61 74 63 68 20 2e 4e 45 54 20 74  est-match .NET t
b340: 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ype</returns>.. 
b350: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b360: 69 63 20 54 79 70 65 20 44 62 54 79 70 65 54 6f  ic Type DbTypeTo
b370: 54 79 70 65 28 44 62 54 79 70 65 20 74 79 70 29  Type(DbType typ)
b380: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
b390: 65 74 75 72 6e 20 5f 64 62 74 79 70 65 54 6f 54  eturn _dbtypeToT
b3a0: 79 70 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a  ype[(int)typ];..
b3b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
b3c0: 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65  vate static Type
b3d0: 5b 5d 20 5f 64 62 74 79 70 65 54 6f 54 79 70 65  [] _dbtypeToType
b3e0: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65   = {..      type
b3f0: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
b400: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
b410: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62 79  .      typeof(by
b420: 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 69 6e 61  te[]),   // Bina
b430: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79  ry (1)..      ty
b440: 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20 20  peof(byte),     
b450: 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20  // Byte (2)..   
b460: 20 20 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 2c     typeof(bool),
b470: 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20       // Boolean 
b480: 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (3)..      typeo
b490: 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f 20  f(decimal),  // 
b4a0: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
b4b0: 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54      typeof(DateT
b4c0: 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 20 28 35  ime), // Date (5
b4d0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b4e0: 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61  DateTime), // Da
b4f0: 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20  teTime (6)..    
b500: 20 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61 6c    typeof(decimal
b510: 29 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28  ),  // Decimal (
b520: 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  7)..      typeof
b530: 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44  (double),   // D
b540: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
b550: 20 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20 20   typeof(Guid),  
b560: 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a     // Guid (9)..
b570: 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74        typeof(Int
b580: 31 36 29 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36  16),    // Int16
b590: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70   (10)..      typ
b5a0: 65 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20 2f  eof(Int32),    /
b5b0: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
b5c0: 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34      typeof(Int64
b5d0: 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28  ),    // Int64 (
b5e0: 31 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  12)..      typeo
b5f0: 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20  f(object),   // 
b600: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
b610: 20 20 20 74 79 70 65 6f 66 28 73 62 79 74 65 29     typeof(sbyte)
b620: 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31  ,    // SByte (1
b630: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  4)..      typeof
b640: 28 66 6c 6f 61 74 29 2c 20 20 20 20 2f 2f 20 53  (float),    // S
b650: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
b660: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
b670: 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ,   // String (1
b680: 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  6)..      typeof
b690: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 54  (DateTime), // T
b6a0: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
b6b0: 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c 20  typeof(UInt16), 
b6c0: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29    // UInt16 (18)
b6d0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 55  ..      typeof(U
b6e0: 49 6e 74 33 32 29 2c 20 20 20 2f 2f 20 55 49 6e  Int32),   // UIn
b6f0: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
b700: 74 79 70 65 6f 66 28 55 49 6e 74 36 34 29 2c 20  typeof(UInt64), 
b710: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
b720: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64  ..      typeof(d
b730: 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 56 61 72  ouble),   // Var
b740: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
b750: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
b760: 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74 72  g),   // AnsiStr
b770: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
b780: 32 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  22)..      typeo
b790: 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20  f(string),   // 
b7a0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
b7b0: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74 79  h (23)..      ty
b7c0: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
b7d0: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
b7e0: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
b7f0: 2c 20 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ,   // Xml (25).
b800: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
b810: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
b820: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
b830: 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 74  n type, return t
b840: 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68  he closest-match
b850: 20 53 51 4c 69 74 65 20 54 79 70 65 41 66 66 69   SQLite TypeAffi
b860: 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c 79  nity, which only
b870: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20 76   understands a v
b880: 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62 73  ery limited subs
b890: 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20 20  et of types...  
b8a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
b8b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
b8c0: 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20   name="typ">The 
b8d0: 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74 65  type to evaluate
b8e0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
b8f0: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 53  / <returns>The S
b900: 51 4c 69 74 65 20 74 79 70 65 20 61 66 66 69 6e  QLite type affin
b910: 69 74 79 20 66 6f 72 20 74 68 61 74 20 74 79 70  ity for that typ
b920: 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  e.</returns>..  
b930: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
b940: 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 54  c TypeAffinity T
b950: 79 70 65 54 6f 41 66 66 69 6e 69 74 79 28 54 79  ypeToAffinity(Ty
b960: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
b970: 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74        TypeCode t
b980: 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  c = Type.GetType
b990: 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20 20  Code(typ);..    
b9a0: 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70 65    if (tc == Type
b9b0: 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20  Code.Object)..  
b9c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
b9d0: 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66  f (typ == typeof
b9e0: 28 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79 70 20  (byte[]) || typ 
b9f0: 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29 29  == typeof(Guid))
ba00: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
ba10: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  rn TypeAffinity.
ba20: 42 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20 20 65  Blob;..        e
ba30: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 72  lse..          r
ba40: 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69  eturn TypeAffini
ba50: 74 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20 20 20  ty.Text;..      
ba60: 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
ba70: 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74  _typecodeAffinit
ba80: 69 65 73 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a 20  ies[(int)tc];.. 
ba90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
baa0: 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65 41  ate static TypeA
bab0: 66 66 69 6e 69 74 79 5b 5d 20 5f 74 79 70 65 63  ffinity[] _typec
bac0: 6f 64 65 41 66 66 69 6e 69 74 69 65 73 20 3d 20  odeAffinities = 
bad0: 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  {..      TypeAff
bae0: 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20  inity.Null,     
baf0: 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20  // Empty (0)..  
bb00: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
bb10: 2e 42 6c 6f 62 2c 20 20 20 20 20 2f 2f 20 4f 62  .Blob,     // Ob
bb20: 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20  ject (1)..      
bb30: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c  TypeAffinity.Nul
bb40: 6c 2c 20 20 20 20 20 2f 2f 20 44 42 4e 75 6c 6c  l,     // DBNull
bb50: 20 28 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (2)..      Type
bb60: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
bb70: 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33     // Boolean (3
bb80: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
bb90: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
bba0: 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20  // Char (4)..   
bbb0: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
bbc0: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 53 42 79  Int64,    // SBy
bbd0: 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 54 79  te (5)..      Ty
bbe0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
bbf0: 2c 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36 29  ,    // Byte (6)
bc00: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
bc10: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
bc20: 2f 20 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20  / Int16 (7)..   
bc30: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
bc40: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e  Int64,    // UIn
bc50: 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 54  t16 (8)..      T
bc60: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
bc70: 34 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28  4,    // Int32 (
bc80: 39 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  9)..      TypeAf
bc90: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
bca0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 30 29 0d   // UInt32 (10).
bcb0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
bcc0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
bcd0: 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20 20 20   Int64 (11)..   
bce0: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
bcf0: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e  Int64,    // UIn
bd00: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
bd10: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75  TypeAffinity.Dou
bd20: 62 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c 65  ble,   // Single
bd30: 20 28 31 33 29 0d 0a 20 20 20 20 20 20 54 79 70   (13)..      Typ
bd40: 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65  eAffinity.Double
bd50: 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31  ,   // Double (1
bd60: 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  4)..      TypeAf
bd70: 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20  finity.Double,  
bd80: 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29   // Decimal (15)
bd90: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
bda0: 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 20 2f  nity.DateTime, /
bdb0: 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d  / DateTime (16).
bdc0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
bdd0: 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f  ity.Null,     //
bde0: 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20   ?? (17)..      
bdf0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
be00: 74 20 20 20 20 20 20 2f 2f 20 53 74 72 69 6e 67  t      // String
be10: 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d   (18)..    };...
be20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
be30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c  y>..    /// Buil
be40: 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  ds and returns a
be50: 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67 20   map containing 
be60: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6c  the database col
be70: 75 6d 6e 20 74 79 70 65 73 0d 0a 20 20 20 20 2f  umn types..    /
be80: 2f 2f 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79  // recognized by
be90: 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d   this provider..
bea0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
beb0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
bec0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
bed0: 41 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67  A map containing
bee0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
bef0: 6c 75 6d 6e 20 74 79 70 65 73 20 72 65 63 6f 67  lumn types recog
bf00: 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a 20  nized by this.. 
bf10: 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 72 2e     /// provider.
bf20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
bf30: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
bf40: 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 44  e static SQLiteD
bf50: 62 54 79 70 65 4d 61 70 20 47 65 74 53 51 4c 69  bTypeMap GetSQLi
bf60: 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20  teDbTypeMap().. 
bf70: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
bf80: 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 44  turn new SQLiteD
bf90: 62 54 79 70 65 4d 61 70 28 6e 65 77 20 53 51 4c  bTypeMap(new SQL
bfa0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
bfb0: 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  [] {..          
bfc0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
bfd0: 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 49 4e  peMapping("BIGIN
bfe0: 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  T", DbType.Int64
bff0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c000: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c010: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c020: 42 49 47 55 49 4e 54 22 2c 20 44 62 54 79 70 65  BIGUINT", DbType
c030: 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  .UInt64, false),
c040: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c050: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c060: 70 70 69 6e 67 28 22 42 49 4e 41 52 59 22 2c 20  pping("BINARY", 
c070: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
c080: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
c090: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c0a0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 54  TypeMapping("BIT
c0b0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
c0c0: 6e 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  n, true),..     
c0d0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c0e0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c0f0: 42 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 42 69  BLOB", DbType.Bi
c100: 6e 61 72 79 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nary, true),..  
c110: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
c120: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
c130: 67 28 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70 65  g("BOOL", DbType
c140: 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29  .Boolean, false)
c150: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c160: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c170: 61 70 70 69 6e 67 28 22 42 4f 4f 4c 45 41 4e 22  apping("BOOLEAN"
c180: 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e  , DbType.Boolean
c190: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c1a0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c1b0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c1c0: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e  CHAR", DbType.An
c1d0: 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  siStringFixedLen
c1e0: 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gth, true),..   
c1f0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c200: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c210: 28 22 43 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e  ("CLOB", DbType.
c220: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
c230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
c240: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
c250: 70 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 2c 20  ping("COUNTER", 
c260: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61  DbType.Int64, fa
c270: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
c280: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
c290: 79 70 65 4d 61 70 70 69 6e 67 28 22 43 55 52 52  ypeMapping("CURR
c2a0: 45 4e 43 59 22 2c 20 44 62 54 79 70 65 2e 44 65  ENCY", DbType.De
c2b0: 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a  cimal, false),..
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
c2d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
c2e0: 69 6e 67 28 22 44 41 54 45 22 2c 20 44 62 54 79  ing("DATE", DbTy
c2f0: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
c300: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
c310: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c320: 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45 54  peMapping("DATET
c330: 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74  IME", DbType.Dat
c340: 65 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d 0a 20  eTime, true),.. 
c350: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
c360: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
c370: 6e 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 44 62  ng("DECIMAL", Db
c380: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 74 72  Type.Decimal, tr
c390: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
c3a0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c3b0: 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42 4c  peMapping("DOUBL
c3c0: 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c  E", DbType.Doubl
c3d0: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
c3e0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c3f0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c400: 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65 2e  "FLOAT", DbType.
c410: 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d  Double, false),.
c420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
c430: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
c440: 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c 20  ping("GENERAL", 
c450: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
c460: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
c470: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c480: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55 49  TypeMapping("GUI
c490: 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c  D", DbType.Guid,
c4a0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c4b0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c4c0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
c4d0: 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70 65  DENTITY", DbType
c4e0: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
c4f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
c500: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
c510: 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44 62  ping("IMAGE", Db
c520: 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c  Type.Binary, fal
c530: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
c540: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c550: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22 2c  peMapping("INT",
c560: 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 74   DbType.Int32, t
c570: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
c580: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
c590: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 38  ypeMapping("INT8
c5a0: 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c  ", DbType.SByte,
c5b0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c5c0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c5d0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
c5e0: 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49 6e  NT16", DbType.In
c5f0: 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t16, false),..  
c600: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
c610: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
c620: 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79 70  g("INT32", DbTyp
c630: 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  e.Int32, false),
c640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c650: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c660: 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20 44  pping("INT64", D
c670: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
c680: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
c690: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c6a0: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47  peMapping("INTEG
c6b0: 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  ER", DbType.Int6
c6c0: 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  4, true),..     
c6d0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c6e0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c6f0: 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
c700: 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29 2c  e.SByte, false),
c710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c720: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c730: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31 36  pping("INTEGER16
c740: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c  ", DbType.Int16,
c750: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c760: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c770: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
c780: 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
c790: 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  e.Int32, false),
c7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c7b0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c7c0: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36 34  pping("INTEGER64
c7d0: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
c7e0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c7f0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c800: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
c810: 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65 2e  OGICAL", DbType.
c820: 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c  Boolean, false),
c830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c840: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c850: 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44 62  pping("LONG", Db
c860: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
c870: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c880: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c890: 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43 48  eMapping("LONGCH
c8a0: 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  AR", DbType.Stri
c8b0: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
c8c0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c8d0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c8e0: 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62 54  ("LONGTEXT", DbT
c8f0: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
c900: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c910: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c920: 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56 41  eMapping("LONGVA
c930: 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  RCHAR", DbType.S
c940: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
c950: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
c960: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
c970: 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54 79  ing("MEMO", DbTy
c980: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
c990: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
c9a0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
c9b0: 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22 2c  Mapping("MONEY",
c9c0: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
c9d0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c9e0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c9f0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
ca00: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74  CHAR", DbType.St
ca10: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c  ringFixedLength,
ca20: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
ca30: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
ca40: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 4f  bTypeMapping("NO
ca50: 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  TE", DbType.Stri
ca60: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
ca70: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
ca80: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
ca90: 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70 65  ("NTEXT", DbType
caa0: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
cab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
cac0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
cad0: 70 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c 20  pping("NUMBER", 
cae0: 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20  DbType.Decimal, 
caf0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
cb00: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
cb10: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55  bTypeMapping("NU
cb20: 4d 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e 44  MERIC", DbType.D
cb30: 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
cb40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
cb50: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
cb60: 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22 2c  ping("NVARCHAR",
cb70: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
cb80: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
cb90: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
cba0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c 45  TypeMapping("OLE
cbb0: 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65 2e  OBJECT", DbType.
cbc0: 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
cbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
cbe0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
cbf0: 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54 79  ping("RAW", DbTy
cc00: 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65  pe.Binary, false
cc10: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
cc20: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
cc30: 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c 20  Mapping("REAL", 
cc40: 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 74  DbType.Double, t
cc50: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
cc60: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
cc70: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e 47  ypeMapping("SING
cc80: 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e 67  LE", DbType.Sing
cc90: 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  le, true),..    
cca0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ccb0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ccc0: 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62 54  "SMALLDATE", DbT
ccd0: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61  ype.DateTime, fa
cce0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ccf0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
cd00: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c  ypeMapping("SMAL
cd10: 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e  LINT", DbType.In
cd20: 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  t16, true),..   
cd30: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
cd40: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cd50: 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44 62  ("SMALLUINT", Db
cd60: 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72 75  Type.UInt16, tru
cd70: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
cd80: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
cd90: 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e 47  eMapping("STRING
cda0: 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
cdb0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
cdc0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
cdd0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
cde0: 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74  TEXT", DbType.St
cdf0: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
ce00: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
ce10: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
ce20: 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79 70  ng("TIME", DbTyp
ce30: 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73  e.DateTime, fals
ce40: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ce50: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ce60: 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53 54  eMapping("TIMEST
ce70: 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61 74  AMP", DbType.Dat
ce80: 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  eTime, false),..
ce90: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
cea0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ceb0: 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20 44  ing("TINYINT", D
cec0: 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75 65  bType.Byte, true
ced0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
cee0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
cef0: 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49 4e  Mapping("TINYSIN
cf00: 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65  T", DbType.SByte
cf10: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
cf20: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
cf30: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
cf40: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  INT", DbType.UIn
cf50: 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  t32, true),..   
cf60: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
cf70: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cf80: 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70 65  ("UINT8", DbType
cf90: 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  .Byte, false),..
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
cfb0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
cfc0: 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44 62  ing("UINT16", Db
cfd0: 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c  Type.UInt16, fal
cfe0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
cff0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
d000: 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 33  peMapping("UINT3
d010: 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33  2", DbType.UInt3
d020: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
d030: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
d040: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
d050: 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70 65  "UINT64", DbType
d060: 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  .UInt64, false),
d070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
d080: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
d090: 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20 44  pping("ULONG", D
d0a0: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61  bType.UInt64, fa
d0b0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
d0c0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
d0d0: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49 51  ypeMapping("UNIQ
d0e0: 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20 44  UEIDENTIFIER", D
d0f0: 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75 65  bType.Guid, true
d100: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
d110: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
d120: 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45  Mapping("UNSIGNE
d130: 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70  DINTEGER", DbTyp
d140: 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29 2c  e.UInt64, true),
d150: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
d160: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
d170: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
d180: 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70 65  NTEGER8", DbType
d190: 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  .Byte, false),..
d1a0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
d1b0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
d1c0: 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54  ing("UNSIGNEDINT
d1d0: 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e  EGER16", DbType.
d1e0: 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d  UInt16, false),.
d1f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
d200: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
d210: 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
d220: 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70 65  TEGER32", DbType
d230: 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  .UInt32, false),
d240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
d250: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
d260: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
d270: 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79 70  NTEGER64", DbTyp
d280: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
d290: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
d2a0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
d2b0: 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41 52  apping("VARBINAR
d2c0: 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  Y", DbType.Binar
d2d0: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
d2e0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
d2f0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
d300: 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 70  "VARCHAR", DbTyp
d310: 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74 72  e.AnsiString, tr
d320: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
d330: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
d340: 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43 48  peMapping("VARCH
d350: 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e 73  AR2", DbType.Ans
d360: 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  iString, false),
d370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
d380: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
d390: 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20 44  pping("YESNO", D
d3a0: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66  bType.Boolean, f
d3b0: 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20 7d  alse)..        }
d3c0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
d3d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d3e0: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
d3f0: 65 73 20 69 66 20 61 20 64 61 74 61 62 61 73 65  es if a database
d400: 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64 65   type is conside
d410: 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72 69  red to be a stri
d420: 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ng...    /// </s
d430: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d440: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
d450: 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  pe">..    /// Th
d460: 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20  e database type 
d470: 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 2f  to check...    /
d480: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
d490: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
d4a0: 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
d4b0: 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65   if the database
d4c0: 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64 65   type is conside
d4d0: 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72 69  red to be a stri
d4e0: 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20 20 20 2f 2f  ng, zero..    //
d4f0: 2f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  / otherwise...  
d500: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
d510: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
d520: 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 74 72  tatic bool IsStr
d530: 69 6e 67 44 62 54 79 70 65 28 0d 0a 20 20 20 20  ingDbType(..    
d540: 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65 0d      DbType type.
d550: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
d560: 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63  {..        switc
d570: 68 20 28 74 79 70 65 29 0d 0a 20 20 20 20 20 20  h (type)..      
d580: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d590: 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e 73   case DbType.Ans
d5a0: 69 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20  iString:..      
d5b0: 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79 70        case DbTyp
d5c0: 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20  e.String:..     
d5d0: 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79         case DbTy
d5e0: 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69 78  pe.AnsiStringFix
d5f0: 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20  edLength:..     
d600: 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79         case DbTy
d610: 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c 65  pe.StringFixedLe
d620: 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20 20  ngth:..         
d630: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
d640: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
d650: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
d660: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
d670: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
d680: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
d690: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d6a0: 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
d6b0: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
d6c0: 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70  <see cref="DbTyp
d6d0: 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62  e" /> value to b
d6e0: 65 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20  e used when a.. 
d6f0: 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65     /// per-conne
d700: 63 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e  ction value is n
d710: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
d720: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d730: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
d740: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
d750: 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63  e default <see c
d760: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
d770: 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
d780: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d790: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
d7a0: 74 61 74 69 63 20 44 62 54 79 70 65 20 47 65 74  tatic DbType Get
d7b0: 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 29 0d  DefaultDbType().
d7c0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
d7d0: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 55  string value = U
d7e0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
d7f0: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
d800: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
d810: 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76   "Use_SQLiteConv
d820: 65 72 74 5f 44 65 66 61 75 6c 74 44 62 54 79 70  ert_DefaultDbTyp
d830: 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  e", null);....  
d840: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
d850: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
d860: 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c        return Fal
d870: 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79  lbackDefaultDbTy
d880: 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6f  pe;....        o
d890: 62 6a 65 63 74 20 65 6e 75 6d 56 61 6c 75 65 20  bject enumValue 
d8a0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
d8b0: 6f 6e 2e 54 72 79 50 61 72 73 65 45 6e 75 6d 28  on.TryParseEnum(
d8c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 79  ..            ty
d8d0: 70 65 6f 66 28 44 62 54 79 70 65 29 2c 20 76 61  peof(DbType), va
d8e0: 6c 75 65 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20  lue, true);.... 
d8f0: 20 20 20 20 20 20 20 69 66 20 28 21 28 65 6e 75         if (!(enu
d900: 6d 56 61 6c 75 65 20 69 73 20 44 62 54 79 70 65  mValue is DbType
d910: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
d920: 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44  return FallbackD
d930: 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d  efaultDbType;...
d940: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
d950: 28 44 62 54 79 70 65 29 65 6e 75 6d 56 61 6c 75  (DbType)enumValu
d960: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
d970: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d980: 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e      /// Determin
d990: 65 73 20 69 66 20 74 68 65 20 73 70 65 63 69 66  es if the specif
d9a0: 69 65 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75  ied textual valu
d9b0: 65 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20  e appears to be 
d9c0: 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  a..    /// <see 
d9d0: 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e  cref="DBNull" />
d9e0: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f   value...    ///
d9f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
da00: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
da10: 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f  ="text">..    //
da20: 2f 20 54 68 65 20 74 65 78 74 75 61 6c 20 76 61  / The textual va
da30: 6c 75 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d  lue to inspect..
da40: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
da50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
da60: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f  rns>..    /// No
da70: 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65  n-zero if the te
da80: 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20  xt looks like a 
da90: 3c 73 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c  <see cref="DBNul
daa0: 6c 22 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20  l" /> value,..  
dab0: 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72    /// zero other
dac0: 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  wise...    /// <
dad0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
dae0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62  nternal static b
daf0: 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75 6c  ool LooksLikeNul
db00: 6c 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  l(..        stri
db10: 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20  ng text..       
db20: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
db30: 20 20 20 72 65 74 75 72 6e 20 28 74 65 78 74 20     return (text 
db40: 3d 3d 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d  == null);..    }
db50: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
db60: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
db70: 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65  etermines if the
db80: 20 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75   specified textu
db90: 61 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73  al value appears
dba0: 20 74 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20 2f   to be an..    /
dbb0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  // <see cref="In
dbc0: 74 36 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  t64" /> value...
dbd0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
dbe0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
dbf0: 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d  am name="text">.
dc00: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78  .    /// The tex
dc10: 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e  tual value to in
dc20: 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20  spect...    /// 
dc30: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
dc40: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
dc50: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
dc60: 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20   the text looks 
dc70: 6c 69 6b 65 20 61 6e 20 3c 73 65 65 20 63 72 65  like an <see cre
dc80: 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c  f="Int64" /> val
dc90: 75 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72  ue,..    /// zer
dca0: 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
dcb0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
dcc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
dcd0: 74 61 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73  tatic bool Looks
dce0: 4c 69 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20 20  LikeInt64(..    
dcf0: 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d      string text.
dd00: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
dd10: 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20  {..        long 
dd20: 6c 6f 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69  longValue;....#i
dd30: 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  f !PLATFORM_COMP
dd40: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
dd50: 20 20 20 20 20 20 69 66 20 28 21 6c 6f 6e 67 2e        if (!long.
dd60: 54 72 79 50 61 72 73 65 28 0d 0a 20 20 20 20 20  TryParse(..     
dd70: 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c             text,
dd80: 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e   NumberStyles.In
dd90: 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e  teger, CultureIn
dda0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
ddb0: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
ddc0: 20 20 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56 61        out longVa
ddd0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  lue))..        {
dde0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
ddf0: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
de00: 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20       }..#else.. 
de10: 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
de20: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
de30: 20 20 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20 6c     longValue = l
de40: 6f 6e 67 2e 50 61 72 73 65 28 0d 0a 20 20 20 20  ong.Parse(..    
de50: 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74              text
de60: 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49  , NumberStyles.I
de70: 6e 74 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49  nteger, CultureI
de80: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
de90: 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  ture);..        
dea0: 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68  }..        catch
deb0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
dec0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
ded0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
dee0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
def0: 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
df00: 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ng.Equals(..    
df10: 20 20 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75          longValu
df20: 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75  e.ToString(Cultu
df30: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
df40: 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d  Culture), text,.
df50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72  .            Str
df60: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
df70: 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a  dinal);..    }..
df80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
df90: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
dfa0: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73  ermines if the s
dfb0: 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c  pecified textual
dfc0: 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74   value appears t
dfd0: 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  o be a..    /// 
dfe0: 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c  <see cref="Doubl
dff0: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
e000: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
e010: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
e020: 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20   name="text">.. 
e030: 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
e040: 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70  al value to insp
e050: 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
e060: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
e070: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
e080: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
e090: 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69  he text looks li
e0a0: 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  ke a <see cref="
e0b0: 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65  Double" /> value
e0c0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20  ,..    /// zero 
e0d0: 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
e0e0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
e0f0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e100: 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69  tic bool LooksLi
e110: 6b 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  keDouble(..     
e120: 20 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a     string text..
e130: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
e140: 0d 0a 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65  ..        double
e150: 20 64 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a 0d   doubleValue;...
e160: 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43  .#if !PLATFORM_C
e170: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
e180: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 64 6f  .        if (!do
e190: 75 62 6c 65 2e 54 72 79 50 61 72 73 65 28 0d 0a  uble.TryParse(..
e1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1b0: 74 65 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c  text, NumberStyl
e1c0: 65 73 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62 65  es.Float | Numbe
e1d0: 72 53 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68 6f  rStyles.AllowTho
e1e0: 75 73 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20 20  usands,..       
e1f0: 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65           Culture
e200: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
e210: 6c 74 75 72 65 2c 20 6f 75 74 20 64 6f 75 62 6c  lture, out doubl
e220: 65 56 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20  eValue))..      
e230: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e240: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
e250: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65          }..#else
e260: 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
e270: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e280: 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75        doubleValu
e290: 65 20 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73 65  e = double.Parse
e2a0: 28 74 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e  (text, CultureIn
e2b0: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
e2c0: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ure);..        }
e2d0: 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
e2e0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
e2f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
e300: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alse;..        }
e310: 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
e320: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
e330: 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  g.Equals(..     
e340: 20 20 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c         doubleVal
e350: 75 65 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74  ue.ToString(Cult
e360: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
e370: 74 43 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c  tCulture), text,
e380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74  ..            St
e390: 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
e3a0: 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d  rdinal);..    }.
e3b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
e3c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65  ary>..    /// De
e3d0: 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20  termines if the 
e3e0: 73 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61  specified textua
e3f0: 6c 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20  l value appears 
e400: 74 6f 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f  to be a..    ///
e410: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
e420: 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  Time" /> value..
e430: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
e440: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
e450: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72  ram name="conver
e460: 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  t">..    /// The
e470: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
e480: 74 65 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f 62  teConvert" /> ob
e490: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
e4a0: 6e 66 69 67 75 72 65 64 20 77 69 74 68 0d 0a 20  nfigured with.. 
e4b0: 20 20 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73 65     /// the chose
e4c0: 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  n <see cref="Dat
e4d0: 65 54 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61 74  eTime" /> format
e4e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
e4f0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
e500: 72 61 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e  ram name="text">
e510: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65  ..    /// The te
e520: 78 74 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69  xtual value to i
e530: 6e 73 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  nspect...    ///
e540: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
e550: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
e560: 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
e570: 66 20 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73  f the text looks
e580: 20 6c 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65   like a <see cre
e590: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
e5a0: 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  in the..    /// 
e5b0: 63 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61  configured forma
e5c0: 74 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73  t, zero otherwis
e5d0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
e5e0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
e5f0: 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
e600: 20 4c 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54 69   LooksLikeDateTi
e610: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  me(..        SQL
e620: 69 74 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76 65  iteConvert conve
e630: 72 74 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72  rt,..        str
e640: 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20  ing text..      
e650: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
e660: 20 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74 20      if (convert 
e670: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
e680: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
e690: 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74  se;....        t
e6a0: 72 79 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ry..        {.. 
e6b0: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
e6c0: 69 6d 65 20 64 61 74 65 54 69 6d 65 56 61 6c 75  ime dateTimeValu
e6d0: 65 20 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44 61  e = convert.ToDa
e6e0: 74 65 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a 0d  teTime(text);...
e6f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
e700: 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d  (String.Equals(.
e710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e720: 20 20 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f 53       convert.ToS
e730: 74 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61  tring(dateTimeVa
e740: 6c 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lue),..         
e750: 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c             text,
e760: 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
e770: 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20  n.Ordinal))..   
e780: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e790: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
e7a0: 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
e7b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e7c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63   }..        catc
e7d0: 68 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  h..        {..  
e7e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
e7f0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
e800: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72    }....        r
e810: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
e820: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
e830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
e840: 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74 79  / For a given ty
e850: 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72 6e 20  pe name, return 
e860: 61 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20  a closest-match 
e870: 2e 4e 45 54 20 74 79 70 65 0d 0a 20 20 20 20 2f  .NET type..    /
e880: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e890: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
e8a0: 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
e8b0: 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63  The connection c
e8c0: 6f 6e 74 65 78 74 20 66 6f 72 20 63 75 73 74 6f  ontext for custo
e8d0: 6d 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c  m type mappings,
e8e0: 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e   if any.</param>
e8f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
e900: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 54 68 65   name="name">The
e910: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 79 70   name of the typ
e920: 65 20 74 6f 20 6d 61 74 63 68 3c 2f 70 61 72 61  e to match</para
e930: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
e940: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
e950: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
e960: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
e970: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
e980: 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d  object.</param>.
e990: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
e9a0: 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 79 70  s>The .NET DBTyp
e9b0: 65 20 74 68 65 20 74 65 78 74 20 65 76 61 6c 75  e the text evalu
e9c0: 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72 6e  ates to.</return
e9d0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
e9e0: 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20 54   static DbType T
e9f0: 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 65 28  ypeNameToDbType(
ea00: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
ea10: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
ea20: 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
ea30: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
ea40: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
ea50: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
ea60: 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  s..        )..  
ea70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 62 54    {..        DbT
ea80: 79 70 65 20 64 65 66 61 75 6c 74 44 62 54 79 70  ype defaultDbTyp
ea90: 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62  e = GetDefaultDb
eaa0: 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Type();....     
eab0: 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f     if (connectio
eac0: 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n != null)..    
ead0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
eae0: 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e     flags |= conn
eaf0: 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d  ection.Flags;...
eb00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
eb10: 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
eb20: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
eb30: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  UseConnectionTyp
eb40: 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  es) == SQLiteCon
eb50: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65  nectionFlags.Use
eb60: 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29  ConnectionTypes)
eb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
eb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb90: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
eba0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e   connectionTypeN
ebb0: 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f  ames = connectio
ebc0: 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d  n._typeNames;...
ebd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ebe0: 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54   if (connectionT
ebf0: 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c  ypeNames != null
ec00: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ec10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ec20: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61            if (na
ec30: 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ec60: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
ec70: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
ec80: 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
ec90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eca0: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
ecb0: 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
ecc0: 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20  Value(name, out 
ecd0: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
ece0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecf0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ed00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed10: 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74  return value.dat
ed20: 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  aType;..        
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed40: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
ed50: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
ed60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ed70: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ed80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed90: 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
eda0: 78 20 3d 20 6e 61 6d 65 2e 49 6e 64 65 78 4f 66  x = name.IndexOf
edb0: 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ('(');....      
edc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
edd0: 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78        if ((index
ede0: 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20   > 0) &&..      
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee00: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
ee10: 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72  tionTypeNames.Tr
ee20: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2e 53  yGetValue(name.S
ee30: 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65  ubstring(0, inde
ee40: 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75  x).TrimEnd(), ou
ee50: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ee80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ee90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
eea0: 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b   value.dataType;
eeb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
eed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eee0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ef00: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
ef10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
ef20: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ef30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
ef40: 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66  OTE: Use the def
ef50: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79  ault database ty
ef60: 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  pe for the conne
ef70: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
ef80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
ef90: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
efa0: 75 6c 74 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e  ultDbType = conn
efb0: 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62  ection.DefaultDb
efc0: 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
efd0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
efe0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
eff0: 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f  flags & SQLiteCo
f000: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
f010: 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d 20  GlobalTypes) == 
f020: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
f030: 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
f040: 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  pes)..          
f050: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
f060: 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
f070: 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f     lock (_syncRo
f080: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ot)..        {..
f090: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f0a0: 5f 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75  _typeNames == nu
f0b0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
f0c0: 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20       _typeNames 
f0d0: 3d 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70  = GetSQLiteDbTyp
f0e0: 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  eMap();....     
f0f0: 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20         if (name 
f100: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
f110: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
f120: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
f130: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
f140: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
f150: 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65         if (_type
f160: 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75  Names.TryGetValu
f170: 65 28 6e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75  e(name, out valu
f180: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
f190: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
f1a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
f1b0: 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
f1c0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
f1d0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
f1e0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
f1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f210: 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
f220: 6e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27  name.IndexOf('('
f230: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
f240: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69            if ((i
f250: 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20  ndex > 0) &&..  
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f270: 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73        _typeNames
f280: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
f290: 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69  e.Substring(0, i
f2a0: 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c  ndex).TrimEnd(),
f2b0: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
f2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
f2f0: 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79  urn value.dataTy
f300: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
f310: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f320: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f330: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
f340: 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21        }....#if !
f350: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
f360: 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
f370: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74  .        if (!St
f380: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
f390: 74 79 28 6e 61 6d 65 29 20 26 26 0d 0a 20 20 20  ty(name) &&..   
f3a0: 20 20 20 20 20 20 20 20 20 28 28 66 6c 61 67 73           ((flags
f3b0: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
f3c0: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
f3d0: 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65  rning) == SQLite
f3e0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
f3f0: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d 0a  TraceWarning))..
f400: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f410: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
f420: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
f430: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
f440: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
f450: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
f460: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
f470: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
f480: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
f490: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
f4a0: 61 75 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f  ault type {0} fo
f4b0: 72 20 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22  r name \"{1}\"."
f4c0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
f4d0: 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
f4e0: 2c 20 6e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20  , name));..     
f4f0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
f500: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
f510: 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20  efaultDbType;.. 
f520: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
f530: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 70 72 69 76  gion....    priv
f540: 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63  ate static objec
f550: 74 20 5f 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  t _syncRoot = ne
f560: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 20 20 20  w object();..   
f570: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
f580: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20  SQLiteDbTypeMap 
f590: 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 6e 75 6c  _typeNames = nul
f5a0: 6c 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  l;..  }....  ///
f5b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
f5c0: 2f 20 53 51 4c 69 74 65 20 68 61 73 20 76 65 72  / SQLite has ver
f5d0: 79 20 6c 69 6d 69 74 65 64 20 74 79 70 65 73 2c  y limited types,
f5e0: 20 61 6e 64 20 69 73 20 69 6e 68 65 72 65 6e 74   and is inherent
f5f0: 6c 79 20 74 65 78 74 2d 62 61 73 65 64 2e 20 20  ly text-based.  
f600: 54 68 65 20 66 69 72 73 74 20 35 20 74 79 70 65  The first 5 type
f610: 73 20 62 65 6c 6f 77 20 72 65 70 72 65 73 65 6e  s below represen
f620: 74 20 74 68 65 20 73 75 6d 20 6f 66 20 61 6c 6c  t the sum of all
f630: 20 74 79 70 65 73 20 53 51 4c 69 74 65 0d 0a 20   types SQLite.. 
f640: 20 2f 2f 2f 20 75 6e 64 65 72 73 74 61 6e 64 73   /// understands
f650: 2e 20 20 54 68 65 20 44 61 74 65 54 69 6d 65 20  .  The DateTime 
f660: 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68 65  extension to the
f670: 20 73 70 65 63 20 69 73 20 66 6f 72 20 69 6e 74   spec is for int
f680: 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2e 0d  ernal use only..
f690: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
f6a0: 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
f6b0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 0d 0a 20   TypeAffinity.. 
f6c0: 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   {..    /// <sum
f6d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  mary>..    /// N
f6e0: 6f 74 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f 2f  ot used..    ///
f6f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f700: 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 3d   Uninitialized =
f710: 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   0,..    /// <su
f720: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
f730: 41 6c 6c 20 69 6e 74 65 67 65 72 73 20 69 6e 20  All integers in 
f740: 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20 74  SQLite default t
f750: 6f 20 49 6e 74 36 34 0d 0a 20 20 20 20 2f 2f 2f  o Int64..    ///
f760: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f770: 20 49 6e 74 36 34 20 3d 20 31 2c 0d 0a 20 20 20   Int64 = 1,..   
f780: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f790: 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f 61      /// All floa
f7a0: 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
f7b0: 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66  rs in SQLite def
f7c0: 61 75 6c 74 20 74 6f 20 64 6f 75 62 6c 65 0d 0a  ault to double..
f7d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
f7e0: 79 3e 0d 0a 20 20 20 20 44 6f 75 62 6c 65 20 3d  y>..    Double =
f7f0: 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   2,..    /// <su
f800: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
f810: 54 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61  The default data
f820: 20 74 79 70 65 20 6f 66 20 53 51 4c 69 74 65 20   type of SQLite 
f830: 69 73 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f  is text..    ///
f840: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f850: 20 54 65 78 74 20 3d 20 33 2c 0d 0a 20 20 20 20   Text = 3,..    
f860: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f870: 20 20 20 2f 2f 2f 20 54 79 70 69 63 61 6c 6c 79     /// Typically
f880: 20 62 6c 6f 62 20 74 79 70 65 73 20 61 72 65 20   blob types are 
f890: 6f 6e 6c 79 20 73 65 65 6e 20 77 68 65 6e 20 72  only seen when r
f8a0: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 61 20 66  eturned from a f
f8b0: 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  unction..    ///
f8c0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
f8d0: 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a 20 20 20 20   Blob = 4,..    
f8e0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f8f0: 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70 65     /// Null type
f900: 73 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e 65  s can be returne
f910: 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73  d from functions
f920: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
f930: 61 72 79 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20 3d  ary>..    Null =
f940: 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   5,..    /// <su
f950: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
f960: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
f970: 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72  by this provider
f980: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
f990: 61 72 79 3e 0d 0a 20 20 20 20 44 61 74 65 54 69  ary>..    DateTi
f9a0: 6d 65 20 3d 20 31 30 2c 0d 0a 20 20 20 20 2f 2f  me = 10,..    //
f9b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f9c0: 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e   /// Used intern
f9d0: 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72 6f  ally by this pro
f9e0: 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c  vider..    /// <
f9f0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e  /summary>..    N
fa00: 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d 0a  one = 11,..  }..
fa10: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
fa20: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20 61  >..  /// These a
fa30: 72 65 20 74 68 65 20 65 76 65 6e 74 20 74 79 70  re the event typ
fa40: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
fa50: 74 68 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73  th the..  /// <s
fa60: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
fa70: 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 48 61  onnectionEventHa
fa80: 6e 64 6c 65 72 22 20 2f 3e 0d 0a 20 20 2f 2f 2f  ndler" />..  ///
fa90: 20 64 65 6c 65 67 61 74 65 20 28 61 6e 64 20 69   delegate (and i
faa0: 74 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ts corresponding
fab0: 20 65 76 65 6e 74 29 20 61 6e 64 20 74 68 65 0d   event) and the.
fac0: 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66  .  /// <see cref
fad0: 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  ="ConnectionEven
fae0: 74 41 72 67 73 22 20 2f 3e 20 63 6c 61 73 73 2e  tArgs" /> class.
faf0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
fb00: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
fb10: 6d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  m SQLiteConnecti
fb20: 6f 6e 45 76 65 6e 74 54 79 70 65 0d 0a 20 20 7b  onEventType..  {
fb30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
fb40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
fb50: 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20 20   Not used...    
fb60: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
fb70: 0d 0a 20 20 20 20 20 20 49 6e 76 61 6c 69 64 20  ..      Invalid 
fb80: 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = -1,....      /
fb90: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
fba0: 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64      /// Not used
fbb0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
fbc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55  ummary>..      U
fbd0: 6e 6b 6e 6f 77 6e 20 3d 20 30 2c 0d 0a 0d 0a 20  nknown = 0,.... 
fbe0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
fbf0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
fc00: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
fc10: 62 65 69 6e 67 20 6f 70 65 6e 65 64 2e 0d 0a 20  being opened... 
fc20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
fc30: 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 69  ry>..      Openi
fc40: 6e 67 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  ng = 1,....     
fc50: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
fc60: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
fc70: 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
fc80: 68 61 73 20 62 65 65 6e 20 70 61 72 73 65 64 2e  has been parsed.
fc90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
fca0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f  mmary>..      Co
fcb0: 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d  nnectionString =
fcc0: 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   2,....      ///
fcd0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
fce0: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
fcf0: 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e  tion was opened.
fd00: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
fd10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70  mmary>..      Op
fd20: 65 6e 65 64 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20  ened = 3,....   
fd30: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
fd40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
fd50: 3c 73 65 65 20 63 72 65 66 3d 22 43 68 61 6e 67  <see cref="Chang
fd60: 65 44 61 74 61 62 61 73 65 22 20 2f 3e 20 6d 65  eDatabase" /> me
fd70: 74 68 6f 64 20 77 61 73 20 63 61 6c 6c 65 64 20  thod was called 
fd80: 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  on the..      //
fd90: 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  / connection... 
fda0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
fdb0: 72 79 3e 0d 0a 20 20 20 20 20 20 43 68 61 6e 67  ry>..      Chang
fdc0: 65 44 61 74 61 62 61 73 65 20 3d 20 34 2c 0d 0a  eDatabase = 4,..
fdd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
fde0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
fdf0: 20 41 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77   A transaction w
fe00: 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  as created using
fe10: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
fe20: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
fe30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
fe40: 77 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 35  wTransaction = 5
fe50: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
fe60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
fe70: 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
fe80: 6f 6e 20 77 61 73 20 65 6e 6c 69 73 74 65 64 20  on was enlisted 
fe90: 69 6e 74 6f 20 61 20 74 72 61 6e 73 61 63 74 69  into a transacti
fea0: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
feb0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
fec0: 20 45 6e 6c 69 73 74 54 72 61 6e 73 61 63 74 69   EnlistTransacti
fed0: 6f 6e 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20 20  on = 6,....     
fee0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
fef0: 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d        /// A comm
ff00: 61 6e 64 20 77 61 73 20 63 72 65 61 74 65 64 20  and was created 
ff10: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
ff20: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
ff30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ff40: 20 20 20 4e 65 77 43 6f 6d 6d 61 6e 64 20 3d 20     NewCommand = 
ff50: 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  7,....      /// 
ff60: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ff70: 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64   /// A data read
ff80: 65 72 20 77 61 73 20 63 72 65 61 74 65 64 20 75  er was created u
ff90: 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74  sing the connect
ffa0: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
ffb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ffc0: 20 20 4e 65 77 44 61 74 61 52 65 61 64 65 72 20    NewDataReader 
ffd0: 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 8,....      //
ffe0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
fff0: 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 73 74 61 6e     /// An instan
10000 63 65 20 6f 66 20 61 20 3c 73 65 65 20 63 72 65  ce of a <see cre
10010 66 3d 22 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  f="CriticalHandl
10020 65 22 20 2f 3e 20 64 65 72 69 76 65 64 20 63 6c  e" /> derived cl
10030 61 73 73 20 68 61 73 0d 0a 20 20 20 20 20 20 2f  ass has..      /
10040 2f 2f 20 62 65 65 6e 20 63 72 65 61 74 65 64 20  // been created 
10050 74 6f 20 77 72 61 70 20 61 20 6e 61 74 69 76 65  to wrap a native
10060 20 72 65 73 6f 75 72 63 65 2e 0d 0a 20 20 20 20   resource...    
10070 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10080 0d 0a 20 20 20 20 20 20 4e 65 77 43 72 69 74 69  ..      NewCriti
10090 63 61 6c 48 61 6e 64 6c 65 20 3d 20 39 2c 0d 0a  calHandle = 9,..
100a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
100b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
100c0 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
100d0 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e  is being closed.
100e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
100f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c  mmary>..      Cl
10100 6f 73 69 6e 67 20 3d 20 31 30 2c 0d 0a 0d 0a 20  osing = 10,.... 
10110 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10120 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
10130 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  e connection was
10140 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20   closed...      
10150 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10160 20 20 20 20 20 20 43 6c 6f 73 65 64 20 3d 20 31        Closed = 1
10170 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
10180 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10190 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 69   /// A command i
101a0 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64  s being disposed
101b0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
101c0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
101d0 69 73 70 6f 73 69 6e 67 43 6f 6d 6d 61 6e 64 20  isposingCommand 
101e0 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 12,....      /
101f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10200 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72      /// A data r
10210 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20 64  eader is being d
10220 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
10230 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10240 20 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67 44        DisposingD
10250 61 74 61 52 65 61 64 65 72 20 3d 20 31 33 2c 0d  ataReader = 13,.
10260 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
10270 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10280 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72 20  / A data reader 
10290 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e  is being closed.
102a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
102b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c  mmary>..      Cl
102c0 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72 20  osingDataReader 
102d0 3d 20 31 34 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  = 14..  }....  /
102e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
102f0 2f 2f 2f 20 54 68 69 73 20 69 6d 70 6c 65 6d 65  /// This impleme
10300 6e 74 61 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74  ntation of SQLit
10310 65 20 66 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61  e for ADO.NET ca
10320 6e 20 70 72 6f 63 65 73 73 20 64 61 74 65 2f 74  n process date/t
10330 69 6d 65 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20  ime fields in.. 
10340 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 73 20 69   /// databases i
10350 6e 20 6f 6e 65 20 6f 66 20 73 69 78 20 66 6f 72  n one of six for
10360 6d 61 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  mats...  /// </s
10370 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c  ummary>..  /// <
10380 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20  remarks>..  /// 
10390 49 53 4f 38 36 30 31 20 66 6f 72 6d 61 74 20 69  ISO8601 format i
103a0 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c  s more compatibl
103b0 65 2c 20 72 65 61 64 61 62 6c 65 2c 20 66 75 6c  e, readable, ful
103c0 6c 79 2d 70 72 6f 63 65 73 73 61 62 6c 65 2c 20  ly-processable, 
103d0 62 75 74 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20  but less..  /// 
103e0 61 63 63 75 72 61 74 65 20 61 73 20 69 74 20 64  accurate as it d
103f0 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20  oes not provide 
10400 74 69 6d 65 20 64 6f 77 6e 20 74 6f 20 66 72 61  time down to fra
10410 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f  ctions of a seco
10420 6e 64 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61  nd...  /// Julia
10430 6e 44 61 79 20 69 73 20 74 68 65 20 6e 75 6d 65  nDay is the nume
10440 72 69 63 20 66 6f 72 6d 61 74 20 74 68 65 20 53  ric format the S
10450 51 4c 69 74 65 20 75 73 65 73 20 69 6e 74 65 72  QLite uses inter
10460 6e 61 6c 6c 79 20 61 6e 64 20 69 73 20 61 72 67  nally and is arg
10470 75 61 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65  uably..  /// the
10480 20 6d 6f 73 74 20 63 6f 6d 70 61 74 69 62 6c 65   most compatible
10490 20 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20   with 3rd party 
104a0 74 6f 6f 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f  tools.  It is no
104b0 74 20 72 65 61 64 61 62 6c 65 20 61 73 20 74 65  t readable as te
104c0 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75  xt..  /// withou
104d0 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e  t post-processin
104e0 67 2e 20 20 54 69 63 6b 73 20 6c 65 73 73 20 63  g.  Ticks less c
104f0 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 33  ompatible with 3
10500 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73 20 74  rd party tools t
10510 68 61 74 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79  hat..  /// query
10520 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 61   the database, a
10530 6e 64 20 72 65 6e 64 65 72 73 20 74 68 65 20 44  nd renders the D
10540 61 74 65 54 69 6d 65 20 66 69 65 6c 64 20 75 6e  ateTime field un
10550 72 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74  readable as text
10560 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20  ..  /// without 
10570 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e  post-processing.
10580 20 20 55 6e 69 78 45 70 6f 63 68 20 69 73 20 6d    UnixEpoch is m
10590 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 77  ore compatible w
105a0 69 74 68 20 55 6e 69 78 20 73 79 73 74 65 6d 73  ith Unix systems
105b0 2e 0d 0a 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61  ...  /// Invaria
105c0 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73  ntCulture allows
105d0 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
105e0 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 69  format for the i
105f0 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65  nvariant culture
10600 0d 0a 20 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74  ..  /// format t
10610 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73  o be used and is
10620 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e   human readable.
10630 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65    CurrentCulture
10640 20 61 6c 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f   allows the..  /
10650 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f  // configured fo
10660 72 6d 61 74 20 66 6f 72 20 74 68 65 20 63 75 72  rmat for the cur
10670 72 65 6e 74 20 63 75 6c 74 75 72 65 20 74 6f 20  rent culture to 
10680 62 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 61  be used and is a
10690 6c 73 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f  lso human..  ///
106a0 20 72 65 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f   readable...  //
106b0 2f 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 72 65  /..  /// The pre
106c0 66 65 72 72 65 64 20 6f 72 64 65 72 20 6f 66 20  ferred order of 
106d0 63 68 6f 6f 73 69 6e 67 20 61 20 44 61 74 65 54  choosing a DateT
106e0 69 6d 65 20 66 6f 72 6d 61 74 20 69 73 20 4a 75  ime format is Ju
106f0 6c 69 61 6e 44 61 79 2c 20 49 53 4f 38 36 30 31  lianDay, ISO8601
10700 2c 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65  ,..  /// and the
10710 6e 20 54 69 63 6b 73 2e 20 20 54 69 63 6b 73 20  n Ticks.  Ticks 
10720 69 73 20 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e  is mainly presen
10730 74 20 66 6f 72 20 6c 65 67 61 63 79 20 63 6f 64  t for legacy cod
10740 65 20 73 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f  e support...  //
10750 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
10760 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
10770 74 65 44 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20  teDateFormats.. 
10780 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   {..    /// <sum
10790 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
107a0 73 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  se the value of 
107b0 44 61 74 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20  DateTime.Ticks. 
107c0 20 54 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e   This value is n
107d0 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61  ot recommended a
107e0 6e 64 20 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73  nd is not well s
107f0 75 70 70 6f 72 74 65 64 20 77 69 74 68 20 4c 49  upported with LI
10800 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  NQ...    /// </s
10810 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 69 63  ummary>..    Tic
10820 6b 73 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  ks = 0,..    ///
10830 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10840 2f 2f 2f 20 55 73 65 20 74 68 65 20 49 53 4f 2d  /// Use the ISO-
10850 38 36 30 31 20 66 6f 72 6d 61 74 2e 20 20 55 73  8601 format.  Us
10860 65 73 20 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d  es the "yyyy-MM-
10870 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
10880 46 46 46 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72  FFFK" format for
10890 20 55 54 43 20 44 61 74 65 54 69 6d 65 20 76 61   UTC DateTime va
108a0 6c 75 65 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  lues and..    //
108b0 2f 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  / "yyyy-MM-dd HH
108c0 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 20  :mm:ss.FFFFFFF" 
108d0 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c  format for local
108e0 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73   DateTime values
108f0 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  )...    /// </su
10900 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38  mmary>..    ISO8
10910 36 30 31 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  601 = 1,..    //
10920 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10930 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 76 61   /// The interva
10940 6c 20 6f 66 20 74 69 6d 65 20 69 6e 20 64 61 79  l of time in day
10950 73 20 61 6e 64 20 66 72 61 63 74 69 6f 6e 73 20  s and fractions 
10960 6f 66 20 61 20 64 61 79 20 73 69 6e 63 65 20 4a  of a day since J
10970 61 6e 75 61 72 79 20 31 2c 20 34 37 31 33 20 42  anuary 1, 4713 B
10980 43 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  C...    /// </su
10990 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69  mmary>..    Juli
109a0 61 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20  anDay = 2,..    
109b0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
109c0 20 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65     /// The whole
109d0 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
109e0 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
109f0 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61 72 79  x epoch (January
10a00 20 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20 20 20   1, 1970)...    
10a10 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10a20 20 20 20 20 55 6e 69 78 45 70 6f 63 68 20 3d 20      UnixEpoch = 
10a30 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  3,..    /// <sum
10a40 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
10a50 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70  ny culture-indep
10a60 65 6e 64 65 6e 74 20 73 74 72 69 6e 67 20 76 61  endent string va
10a70 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45  lue that the .NE
10a80 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20  T Framework can 
10a90 69 6e 74 65 72 70 72 65 74 20 61 73 20 61 20 76  interpret as a v
10aa0 61 6c 69 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a  alid DateTime...
10ab0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10ac0 79 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69 61 6e  y>..    Invarian
10ad0 74 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20  tCulture = 4,.. 
10ae0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
10af0 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74  ..    /// Any st
10b00 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20  ring value that 
10b10 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
10b20 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74  rk can interpret
10b30 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65   as a valid Date
10b40 54 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 63  Time using the c
10b50 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d  urrent culture..
10b60 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
10b70 72 79 3e 0d 0a 20 20 20 20 43 75 72 72 65 6e 74  ry>..    Current
10b80 43 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20  Culture = 5,..  
10b90 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10ba0 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
10bb0 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20  ault format for 
10bc0 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a  this provider...
10bd0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
10be0 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20  y>..    Default 
10bf0 3d 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a  = ISO8601..  }..
10c00 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
10c10 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e  >..  /// This en
10c20 75 6d 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f  um determines ho
10c30 77 20 53 51 4c 69 74 65 20 74 72 65 61 74 73 20  w SQLite treats 
10c40 69 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  its journal file
10c50 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
10c60 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61  ry>..  /// <rema
10c70 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64  rks>..  /// By d
10c80 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20 77 69  efault SQLite wi
10c90 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65  ll create and de
10ca0 6c 65 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c  lete the journal
10cb0 20 66 69 6c 65 20 77 68 65 6e 20 6e 65 65 64 65   file when neede
10cc0 64 20 64 75 72 69 6e 67 20 61 20 74 72 61 6e 73  d during a trans
10cd0 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48  action...  /// H
10ce0 6f 77 65 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65  owever, for some
10cf0 20 63 6f 6d 70 75 74 65 72 73 20 72 75 6e 6e 69   computers runni
10d00 6e 67 20 63 65 72 74 61 69 6e 20 66 69 6c 65 73  ng certain files
10d10 79 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67  ystem monitoring
10d20 20 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61 70 69   tools, the rapi
10d30 64 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f  d..  /// creatio
10d40 6e 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f  n and deletion o
10d50 66 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  f the journal fi
10d60 6c 65 20 63 61 6e 20 63 61 75 73 65 20 74 68 6f  le can cause tho
10d70 73 65 20 70 72 6f 67 72 61 6d 73 20 74 6f 20 66  se programs to f
10d80 61 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72  ail, or to inter
10d90 66 65 72 65 20 77 69 74 68 20 53 51 4c 69 74 65  fere with SQLite
10da0 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20  ...  ///..  /// 
10db0 49 66 20 61 20 70 72 6f 67 72 61 6d 20 6f 72 20  If a program or 
10dc0 76 69 72 75 73 20 73 63 61 6e 6e 65 72 20 69 73  virus scanner is
10dd0 20 69 6e 74 65 72 66 65 72 69 6e 67 20 77 69 74   interfering wit
10de0 68 20 53 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e  h SQLite's journ
10df0 61 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79  al file, you may
10e00 20 72 65 63 65 69 76 65 20 65 72 72 6f 72 73 20   receive errors 
10e10 6c 69 6b 65 20 22 75 6e 61 62 6c 65 20 74 6f 20  like "unable to 
10e20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 66 69  open database fi
10e30 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20  le"..  /// when 
10e40 73 74 61 72 74 69 6e 67 20 61 20 74 72 61 6e 73  starting a trans
10e50 61 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 69 73  action.  If this
10e60 20 69 73 20 68 61 70 70 65 6e 69 6e 67 2c 20 79   is happening, y
10e70 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 63  ou may want to c
10e80 68 61 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c  hange the defaul
10e90 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74  t journal mode t
10ea0 6f 20 50 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f  o Persist...  //
10eb0 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
10ec0 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
10ed0 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75  teJournalModeEnu
10ee0 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20  m..  {..    /// 
10ef0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
10f00 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d  // The default m
10f10 6f 64 65 2c 20 74 68 69 73 20 63 61 75 73 65 73  ode, this causes
10f20 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 74   SQLite to use t
10f30 68 65 20 65 78 69 73 74 69 6e 67 20 6a 6f 75 72  he existing jour
10f40 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20  naling mode for 
10f50 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20  the database... 
10f60 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10f70 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d  >..    Default =
10f80 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   -1,..    /// <s
10f90 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
10fa0 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63 72 65   SQLite will cre
10fb0 61 74 65 20 61 6e 64 20 64 65 73 74 72 6f 79 20  ate and destroy 
10fc0 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
10fd0 20 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20   as-needed...   
10fe0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10ff0 0a 20 20 20 20 44 65 6c 65 74 65 20 3d 20 30 2c  .    Delete = 0,
11000 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
11010 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65  ry>..    /// Whe
11020 6e 20 74 68 69 73 20 69 73 20 73 65 74 2c 20 53  n this is set, S
11030 51 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65 70 20  QLite will keep 
11040 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
11050 20 65 76 65 6e 20 61 66 74 65 72 20 61 20 74 72   even after a tr
11060 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 63 6f  ansaction has co
11070 6d 70 6c 65 74 65 64 2e 20 20 49 74 27 73 20 63  mpleted.  It's c
11080 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62 65 20  ontents will be 
11090 65 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f  erased,..    ///
110a0 20 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c   and the journal
110b0 20 72 65 2d 75 73 65 64 20 61 73 20 6f 66 74 65   re-used as ofte
110c0 6e 20 61 73 20 6e 65 65 64 65 64 2e 20 20 49 66  n as needed.  If
110d0 20 69 74 20 69 73 20 64 65 6c 65 74 65 64 2c 20   it is deleted, 
110e0 69 74 20 77 69 6c 6c 20 62 65 20 72 65 63 72 65  it will be recre
110f0 61 74 65 64 20 74 68 65 20 6e 65 78 74 20 74 69  ated the next ti
11100 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e  me it is needed.
11110 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
11120 61 72 79 3e 0d 0a 20 20 20 20 50 65 72 73 69 73  ary>..    Persis
11130 74 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  t = 1,..    /// 
11140 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
11150 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  // This option d
11160 69 73 61 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c  isables the roll
11170 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74  back journal ent
11180 69 72 65 6c 79 2e 20 20 49 6e 74 65 72 72 75 70  irely.  Interrup
11190 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
111a0 20 6f 72 20 61 20 70 72 6f 67 72 61 6d 20 63 72   or a program cr
111b0 61 73 68 20 63 61 6e 20 63 61 75 73 65 20 64 61  ash can cause da
111c0 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20  tabase..    /// 
111d0 63 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20 74 68  corruption in th
111e0 69 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f  is mode!..    //
111f0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11200 20 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20    Off = 2,..    
11210 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11220 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
11230 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68 65 20  ll truncate the 
11240 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20  journal file to 
11250 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74  zero-length inst
11260 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e 67 20  ead of deleting 
11270 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  it...    /// </s
11280 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 72 75  ummary>..    Tru
11290 6e 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20  ncate = 3,..    
112a0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
112b0 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
112c0 6c 6c 20 73 74 6f 72 65 20 74 68 65 20 6a 6f 75  ll store the jou
112d0 72 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65  rnal in volatile
112e0 20 52 41 4d 2e 20 20 54 68 69 73 20 73 61 76 65   RAM.  This save
112f0 73 20 64 69 73 6b 20 49 2f 4f 20 62 75 74 20 61  s disk I/O but a
11300 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
11310 20 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79   database safety
11320 20 61 6e 64 20 69 6e 74 65 67 72 69 74 79 2e 0d   and integrity..
11330 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20  .    /// If the 
11340 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e  application usin
11350 67 20 53 51 4c 69 74 65 20 63 72 61 73 68 65 73  g SQLite crashes
11360 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
11370 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  f a transaction 
11380 77 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20  when the MEMORY 
11390 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20  journaling mode 
113a0 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65  is set, then the
113b0 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61  ..    /// databa
113c0 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 76 65 72  se file will ver
113d0 79 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72  y likely go corr
113e0 75 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  upt...    /// </
113f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65  summary>..    Me
11400 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f  mory = 4,..    /
11410 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
11420 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65    /// SQLite use
11430 73 20 61 20 77 72 69 74 65 2d 61 68 65 61 64 20  s a write-ahead 
11440 6c 6f 67 20 69 6e 73 74 65 61 64 20 6f 66 20 61  log instead of a
11450 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
11460 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  l to implement t
11470 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 54 68  ransactions.  Th
11480 65 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67  e WAL journaling
11490 20 6d 6f 64 65 20 69 73 20 70 65 72 73 69 73 74   mode is persist
114a0 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66  ent;..    /// af
114b0 74 65 72 20 62 65 69 6e 67 20 73 65 74 20 69 74  ter being set it
114c0 20 73 74 61 79 73 20 69 6e 20 65 66 66 65 63 74   stays in effect
114d0 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65   across multiple
114e0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
114f0 74 69 6f 6e 73 20 61 6e 64 20 61 66 74 65 72 20  tions and after 
11500 63 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65 6f 70  closing and reop
11510 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ening the databa
11520 73 65 2e 20 41 20 64 61 74 61 62 61 73 65 0d 0a  se. A database..
11530 20 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a      /// in WAL j
11540 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63  ournaling mode c
11550 61 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63 65 73  an only be acces
11560 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 76 65  sed by SQLite ve
11570 72 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c  rsion 3.7.0 or l
11580 61 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ater...    /// <
11590 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57  /summary>..    W
115a0 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20  al = 5..  }.... 
115b0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
115c0 20 20 2f 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76    /// Possible v
115d0 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 22 73  alues for the "s
115e0 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61  ynchronous" data
115f0 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 54  base setting.  T
11600 68 69 73 20 73 65 74 74 69 6e 67 20 64 65 74 65  his setting dete
11610 72 6d 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f  rmines..  /// ho
11620 77 20 6f 66 74 65 6e 20 74 68 65 20 64 61 74 61  w often the data
11630 62 61 73 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c  base engine call
11640 73 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68  s the xSync meth
11650 6f 64 20 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a  od of the VFS...
11660 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11670 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
11680 6d 20 53 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e  m SQLiteSynchron
11690 6f 75 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  ousEnum..  {..  
116a0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
116b0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  >..      /// Use
116c0 20 74 68 65 20 64 65 66 61 75 6c 74 20 22 73 79   the default "sy
116d0 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62  nchronous" datab
116e0 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 43 75  ase setting.  Cu
116f0 72 72 65 6e 74 6c 79 2c 20 74 68 69 73 20 73 68  rrently, this sh
11700 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f  ould be..      /
11710 2f 2f 20 74 68 65 20 73 61 6d 65 20 61 73 20 75  // the same as u
11720 73 69 6e 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f  sing the FULL mo
11730 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  de...      /// <
11740 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11750 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a   Default = -1,..
11760 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
11770 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
11780 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   The database en
11790 67 69 6e 65 20 63 6f 6e 74 69 6e 75 65 73 20 77  gine continues w
117a0 69 74 68 6f 75 74 20 73 79 6e 63 69 6e 67 20 61  ithout syncing a
117b0 73 20 73 6f 6f 6e 20 61 73 20 69 74 20 68 61 73  s soon as it has
117c0 20 68 61 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f   handed..      /
117d0 2f 2f 20 64 61 74 61 20 6f 66 66 20 74 6f 20 74  // data off to t
117e0 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
117f0 74 65 6d 2e 20 20 49 66 20 74 68 65 20 61 70 70  tem.  If the app
11800 6c 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67  lication running
11810 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f   SQLite..      /
11820 2f 2f 20 63 72 61 73 68 65 73 2c 20 74 68 65 20  // crashes, the 
11830 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73 61 66  data will be saf
11840 65 2c 20 62 75 74 20 74 68 65 20 64 61 74 61 62  e, but the datab
11850 61 73 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65  ase might become
11860 20 63 6f 72 72 75 70 74 65 64 0d 0a 20 20 20 20   corrupted..    
11870 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6f 70 65    /// if the ope
11880 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72  rating system cr
11890 61 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d  ashes or the com
118a0 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65  puter loses powe
118b0 72 20 62 65 66 6f 72 65 20 74 68 61 74 0d 0a 20  r before that.. 
118c0 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 68 61       /// data ha
118d0 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 74  s been written t
118e0 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61  o the disk surfa
118f0 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ce...      /// <
11900 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11910 20 4f 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20   Off = 0,....   
11920 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11930 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
11940 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
11950 77 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20  will still sync 
11960 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74  at the most crit
11970 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75  ical moments, bu
11980 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73  t..      /// les
11990 73 20 6f 66 74 65 6e 20 74 68 61 6e 20 69 6e 20  s often than in 
119a0 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72  FULL mode.  Ther
119b0 65 20 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c  e is a very smal
119c0 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65  l (though non-ze
119d0 72 6f 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ro)..      /// c
119e0 68 61 6e 63 65 20 74 68 61 74 20 61 20 70 6f 77  hance that a pow
119f0 65 72 20 66 61 69 6c 75 72 65 20 61 74 20 6a 75  er failure at ju
11a00 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74 69 6d  st the wrong tim
11a10 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70 74 20  e could corrupt 
11a20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  the..      /// d
11a30 61 74 61 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41  atabase in NORMA
11a40 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f  L mode...      /
11a50 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11a60 20 20 20 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c       Normal = 1,
11a70 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
11a80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
11a90 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
11aa0 65 6e 67 69 6e 65 20 77 69 6c 6c 20 75 73 65 20  engine will use 
11ab0 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64  the xSync method
11ac0 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f 20 65   of the VFS to e
11ad0 6e 73 75 72 65 20 74 68 61 74 0d 0a 20 20 20 20  nsure that..    
11ae0 20 20 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e    /// all conten
11af0 74 20 69 73 20 73 61 66 65 6c 79 20 77 72 69 74  t is safely writ
11b00 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ten to the disk 
11b10 73 75 72 66 61 63 65 20 70 72 69 6f 72 20 74 6f  surface prior to
11b20 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20   continuing...  
11b30 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73      /// This ens
11b40 75 72 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65  ures that an ope
11b50 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72  rating system cr
11b60 61 73 68 20 6f 72 20 70 6f 77 65 72 20 66 61 69  ash or power fai
11b70 6c 75 72 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20  lure will not.. 
11b80 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74       /// corrupt
11b90 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
11ba0 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73  FULL synchronous
11bb0 20 69 73 20 76 65 72 79 20 73 61 66 65 2c 20 62   is very safe, b
11bc0 75 74 20 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20  ut it is also.. 
11bd0 20 20 20 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e       /// slower.
11be0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11bf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75  mmary>..      Fu
11c00 6c 6c 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20  ll = 2..  }.... 
11c10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11c20 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
11c30 74 65 64 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63  ted command exec
11c40 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 54 68 69  ution type.  Thi
11c50 73 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68  s controls which
11c60 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a   method of the..
11c70 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
11c80 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20  "SQLiteCommand" 
11c90 2f 3e 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62  /> object will b
11ca0 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f  e called...  ///
11cb0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70   </summary>..  p
11cc0 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74  ublic enum SQLit
11cd0 65 45 78 65 63 75 74 65 54 79 70 65 0d 0a 20 20  eExecuteType..  
11ce0 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
11cf0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11d00 2f 20 44 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e  / Do nothing.  N
11d10 6f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  o method will be
11d20 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
11d30 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11d40 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d        None = 0,.
11d50 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
11d60 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11d70 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
11d80 20 6e 6f 74 20 65 78 70 65 63 74 65 64 20 74 6f   not expected to
11d90 20 72 65 74 75 72 6e 20 61 20 72 65 73 75 6c 74   return a result
11da0 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74   -OR- the result
11db0 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   is not..      /
11dc0 2f 2f 20 6e 65 65 64 65 64 2e 20 20 54 68 65 20  // needed.  The 
11dd0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
11de0 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
11df0 4e 6f 6e 51 75 65 72 79 28 29 22 20 2f 3e 20 6f  NonQuery()" /> o
11e00 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  r..      /// <se
11e10 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
11e20 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e  mmand.ExecuteNon
11e30 51 75 65 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68  Query(CommandBeh
11e40 61 76 69 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68  avior)" />  meth
11e50 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  od..      /// wi
11e60 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  ll be called... 
11e70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11e80 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75  ry>..      NonQu
11e90 65 72 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20  ery = 1,....    
11ea0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11eb0 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
11ec0 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74  ommand is expect
11ed0 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20 73  ed to return a s
11ee0 63 61 6c 61 72 20 72 65 73 75 6c 74 20 2d 4f 52  calar result -OR
11ef0 2d 20 74 68 65 20 72 65 73 75 6c 74 20 73 68 6f  - the result sho
11f00 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  uld..      /// b
11f10 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 61 20 73  e limited to a s
11f20 63 61 6c 61 72 20 72 65 73 75 6c 74 2e 20 20 54  calar result.  T
11f30 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
11f40 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63  LiteCommand.Exec
11f50 75 74 65 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d  uteScalar()" />.
11f60 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73  .      /// or <s
11f70 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
11f80 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63  ommand.ExecuteSc
11f90 61 6c 61 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61  alar(CommandBeha
11fa0 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64  vior)" /> method
11fb0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   will..      ///
11fc0 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20   be called...   
11fd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11fe0 3e 0d 0a 20 20 20 20 20 20 53 63 61 6c 61 72 20  >..      Scalar 
11ff0 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
12000 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12010 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61     /// The comma
12020 6e 64 20 69 73 20 65 78 70 65 63 74 65 64 20 74  nd is expected t
12030 6f 20 72 65 74 75 72 6e 20 3c 73 65 65 20 63 72  o return <see cr
12040 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
12050 61 64 65 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e  ader" /> result.
12060 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
12070 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
12080 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
12090 52 65 61 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d  Reader()" /> or.
120a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
120b0 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
120c0 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61 64 65  and.ExecuteReade
120d0 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  r(CommandBehavio
120e0 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  r)" /> method wi
120f0 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
12100 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
12110 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12120 20 20 20 20 20 20 52 65 61 64 65 72 20 3d 20 33        Reader = 3
12130 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
12140 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12150 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61  /// Use the defa
12160 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63  ult command exec
12170 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 55 73 69  ution type.  Usi
12180 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 69 73  ng this value is
12190 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20   the same..     
121a0 20 2f 2f 2f 20 61 73 20 75 73 69 6e 67 20 74 68   /// as using th
121b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
121c0 69 74 65 45 78 65 63 75 74 65 54 79 70 65 2e 4e  iteExecuteType.N
121d0 6f 6e 51 75 65 72 79 22 20 2f 3e 20 76 61 6c 75  onQuery" /> valu
121e0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
121f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12200 44 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65  Default = NonQue
12210 72 79 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64  ry /* TODO: Good
12220 20 64 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20   default? */..  
12230 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
12240 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
12250 61 63 74 69 6f 6e 20 63 6f 64 65 20 72 65 73 70  action code resp
12260 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20  onsible for the 
12270 63 75 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74  current call int
12280 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  o the authorizer
12290 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
122a0 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
122b0 75 6d 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69  um SQLiteAuthori
122c0 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20  zerActionCode.. 
122d0 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
122e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
122f0 2f 2f 20 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20  // No action is 
12300 62 65 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e  being performed.
12310 20 20 54 68 69 73 20 76 61 6c 75 65 20 73 68 6f    This value sho
12320 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20  uld not be used 
12330 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  from..      /// 
12340 65 78 74 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a  external code...
12350 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12360 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
12370 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = -1,....      
12380 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12390 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67       /// No long
123a0 65 72 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  er used...      
123b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
123c0 20 20 20 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d        Copy = 0,.
123d0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
123e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
123f0 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20  / An index will 
12400 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
12410 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
12420 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
12430 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e  he..      /// in
12440 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  dex name and the
12450 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
12460 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f      ///..      /
12470 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12480 20 20 20 20 20 43 72 65 61 74 65 49 6e 64 65 78       CreateIndex
12490 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
124a0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
124b0 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
124c0 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
124d0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
124e0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
124f0 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
12500 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  // table name an
12510 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
12520 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
12530 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
12540 61 74 65 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d  ateTable = 2,...
12550 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
12560 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
12570 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65  A temporary inde
12580 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  x will be create
12590 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
125a0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
125b0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
125c0 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
125d0 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
125e0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
125f0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12600 20 43 72 65 61 74 65 54 65 6d 70 49 6e 64 65 78   CreateTempIndex
12610 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 3,....      /
12620 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12630 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72      /// A tempor
12640 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62  ary table will b
12650 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
12660 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
12670 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
12680 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
12690 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
126a0 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
126b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
126c0 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
126d0 70 54 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20  pTable = 4,.... 
126e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
126f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
12700 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65  temporary trigge
12710 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  r will be create
12720 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
12730 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
12740 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
12750 20 74 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d   the trigger nam
12760 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
12770 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
12780 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12790 20 20 20 43 72 65 61 74 65 54 65 6d 70 54 72 69     CreateTempTri
127a0 67 67 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20  gger = 5,....   
127b0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
127c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
127d0 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c  mporary view wil
127e0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
127f0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
12800 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
12810 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
12820 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20  view name and a 
12830 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
12840 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12850 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
12860 65 6d 70 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a  empView = 6,....
12870 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12880 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
12890 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
128a0 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
128b0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
128c0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
128d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67  ..      /// trig
128e0 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
128f0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
12900 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12910 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
12920 54 72 69 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a  Trigger = 7,....
12930 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12940 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
12950 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72   view will be cr
12960 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
12970 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
12980 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69  ments are the vi
12990 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ew..      /// na
129a0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
129b0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
129c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
129d0 20 20 43 72 65 61 74 65 56 69 65 77 20 3d 20 38    CreateView = 8
129e0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
129f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12a00 2f 2f 2f 20 41 20 44 45 4c 45 54 45 20 73 74 61  /// A DELETE sta
12a10 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
12a20 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
12a30 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
12a40 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
12a50 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
12a60 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
12a70 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
12a80 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12a90 20 20 20 20 20 44 65 6c 65 74 65 20 3d 20 39 2c       Delete = 9,
12aa0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
12ab0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
12ac0 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c  // An index will
12ad0 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
12ae0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
12af0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
12b00 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  the..      /// i
12b10 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68  ndex name and th
12b20 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20  e table name... 
12b30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12b40 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 49  ry>..      DropI
12b50 6e 64 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20  ndex = 10,....  
12b60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12b70 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
12b80 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
12b90 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
12ba0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
12bb0 65 6e 74 73 20 61 72 65 20 74 68 65 20 74 61 62  ents are the tab
12bc0 6c 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e  les..      /// n
12bd0 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
12be0 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
12bf0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12c00 20 20 20 44 72 6f 70 54 61 62 6c 65 20 3d 20 31     DropTable = 1
12c10 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
12c20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12c30 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
12c40 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64   index will be d
12c50 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
12c60 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
12c70 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20  uments are..    
12c80 20 20 2f 2f 2f 20 74 68 65 20 69 6e 64 65 78 20    /// the index 
12c90 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
12ca0 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
12cb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12cc0 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 49 6e        DropTempIn
12cd0 64 65 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20  dex = 12,....   
12ce0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12cf0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
12d00 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69  mporary table wi
12d10 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
12d20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
12d30 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
12d40 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
12d50 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
12d60 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
12d70 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12d80 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
12d90 65 6d 70 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a  empTable = 13,..
12da0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
12db0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
12dc0 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69   A temporary tri
12dd0 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f  gger will be dro
12de0 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
12df0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
12e00 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
12e10 61 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20  are the trigger 
12e20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
12e30 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
12e40 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12e50 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 54 72        DropTempTr
12e60 69 67 67 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20  igger = 14,.... 
12e70 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12e80 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
12e90 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77  temporary view w
12ea0 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20  ill be dropped. 
12eb0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
12ec0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
12ed0 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
12ee0 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20  e view name and 
12ef0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
12f00 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12f10 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
12f20 65 6d 70 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d  empView = 15,...
12f30 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
12f40 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
12f50 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62  A trigger will b
12f60 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
12f70 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
12f80 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
12f90 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69  e..      /// tri
12fa0 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68  gger name and th
12fb0 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20  e table name... 
12fc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
12fd0 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
12fe0 72 69 67 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a  rigger = 16,....
12ff0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
13000 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
13010 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72   view will be dr
13020 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
13030 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
13040 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69  ments are the vi
13050 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ew..      /// na
13060 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
13070 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
13080 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13090 20 20 44 72 6f 70 56 69 65 77 20 3d 20 31 37 2c    DropView = 17,
130a0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
130b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
130c0 2f 2f 20 41 6e 20 49 4e 53 45 52 54 20 73 74 61  // An INSERT sta
130d0 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
130e0 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
130f0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
13100 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
13110 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
13120 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
13130 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
13140 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
13150 20 20 20 20 20 49 6e 73 65 72 74 20 3d 20 31 38       Insert = 18
13160 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13170 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13180 2f 2f 2f 20 41 20 50 52 41 47 4d 41 20 73 74 61  /// A PRAGMA sta
13190 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
131a0 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
131b0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
131c0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
131d0 2f 2f 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20  // are the name 
131e0 6f 66 20 74 68 65 20 50 52 41 47 4d 41 20 61 6e  of the PRAGMA an
131f0 64 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20  d the new value 
13200 6f 72 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  or a null value.
13210 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
13220 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 50 72  mmary>..      Pr
13230 61 67 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20  agma = 19,....  
13240 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
13250 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
13260 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c  able column will
13270 20 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 61   be read.  The a
13280 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
13290 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
132a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c  ..      /// tabl
132b0 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63  e name and the c
132c0 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20  olumn name...   
132d0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
132e0 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 20 3d 20  >..      Read = 
132f0 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  20,....      ///
13300 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13310 20 20 2f 2f 2f 20 41 20 53 45 4c 45 43 54 20 73    /// A SELECT s
13320 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
13330 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
13340 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
13350 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
13360 20 2f 2f 2f 20 61 72 65 20 62 6f 74 68 20 6e 75   /// are both nu
13370 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  ll values...    
13380 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13390 0d 0a 20 20 20 20 20 20 53 65 6c 65 63 74 20 3d  ..      Select =
133a0 20 32 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   21,....      //
133b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
133c0 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63     /// A transac
133d0 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 73 74 61  tion will be sta
133e0 72 74 65 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c  rted, committed,
133f0 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e   or rolled back.
13400 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f    The..      ///
13410 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
13420 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
13430 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f  he name of the o
13440 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c  peration (BEGIN,
13450 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d  ..      /// COMM
13460 49 54 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  IT, or ROLLBACK)
13470 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
13480 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
13490 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
134a0 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32  Transaction = 22
134b0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
134c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
134d0 2f 2f 2f 20 41 6e 20 55 50 44 41 54 45 20 73 74  /// An UPDATE st
134e0 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20  atement will be 
134f0 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61  executed.  The a
13500 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
13510 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
13520 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c  /// are the tabl
13530 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63  e name and the c
13540 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20  olumn name...   
13550 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
13560 3e 0d 0a 20 20 20 20 20 20 55 70 64 61 74 65 20  >..      Update 
13570 3d 20 32 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 23,....      /
13580 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13590 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61      /// A databa
135a0 73 65 20 77 69 6c 6c 20 62 65 20 61 74 74 61 63  se will be attac
135b0 68 65 64 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65  hed to the conne
135c0 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69  ction.  The acti
135d0 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20  on-specific..   
135e0 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
135f0 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73   are the databas
13600 65 20 66 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20  e file name and 
13610 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
13620 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13630 72 79 3e 0d 0a 20 20 20 20 20 20 41 74 74 61 63  ry>..      Attac
13640 68 20 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20  h = 24,....     
13650 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13660 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61        /// A data
13670 62 61 73 65 20 77 69 6c 6c 20 62 65 20 64 65 74  base will be det
13680 61 63 68 65 64 20 66 72 6f 6d 20 74 68 65 20 63  ached from the c
13690 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20  onnection.  The 
136a0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d  action-specific.
136b0 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d  .      /// argum
136c0 65 6e 74 73 20 61 72 65 20 74 68 65 20 64 61 74  ents are the dat
136d0 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 61  abase name and a
136e0 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
136f0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13700 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 61 63 68  y>..      Detach
13710 20 3d 20 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 25,....      
13720 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13730 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 63 68       /// The sch
13740 65 6d 61 20 6f 66 20 61 20 74 61 62 6c 65 20 77  ema of a table w
13750 69 6c 6c 20 62 65 20 61 6c 74 65 72 65 64 2e 20  ill be altered. 
13760 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
13770 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
13780 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
13790 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  e database name 
137a0 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
137b0 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
137c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
137d0 20 41 6c 74 65 72 54 61 62 6c 65 20 3d 20 32 36   AlterTable = 26
137e0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
137f0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13800 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c  /// An index wil
13810 6c 20 62 65 20 64 65 6c 65 74 65 64 20 61 6e 64  l be deleted and
13820 20 74 68 65 6e 20 72 65 63 72 65 61 74 65 64 2e   then recreated.
13830 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
13840 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f  cific..      ///
13850 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
13860 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e  he index name an
13870 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
13880 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
13890 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 69  mary>..      Rei
138a0 6e 64 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20  ndex = 27,....  
138b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
138c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
138d0 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6e 61  able will be ana
138e0 6c 79 7a 65 64 20 74 6f 20 67 61 74 68 65 72 73  lyzed to gathers
138f0 20 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75   statistics abou
13900 74 20 69 74 2e 20 20 54 68 65 0d 0a 20 20 20 20  t it.  The..    
13910 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65    /// action-spe
13920 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
13930 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
13940 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
13950 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
13960 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13970 20 20 41 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d    Analyze = 28,.
13980 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
13990 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
139a0 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c  / A virtual tabl
139b0 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  e will be create
139c0 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
139d0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
139e0 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
139f0 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
13a00 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e  and the module n
13a10 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
13a20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
13a30 20 20 43 72 65 61 74 65 56 74 61 62 6c 65 20 3d    CreateVtable =
13a40 20 32 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   29,....      //
13a50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13a60 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c     /// A virtual
13a70 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64   table will be d
13a80 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
13a90 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
13aa0 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20  uments are..    
13ab0 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20    /// the table 
13ac0 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f 64  name and the mod
13ad0 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ule name...     
13ae0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
13af0 0a 20 20 20 20 20 20 44 72 6f 70 56 74 61 62 6c  .      DropVtabl
13b00 65 20 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20  e = 30,....     
13b10 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13b20 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20        /// A SQL 
13b30 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
13b40 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 20 61 63   called.  The ac
13b50 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
13b60 67 75 6d 65 6e 74 73 20 61 72 65 20 61 0d 0a 20  guments are a.. 
13b70 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61       /// null va
13b80 6c 75 65 20 61 6e 64 20 74 68 65 20 66 75 6e 63  lue and the func
13b90 74 69 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  tion name...    
13ba0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13bb0 0d 0a 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e  ..      Function
13bc0 20 3d 20 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 31,....      
13bd0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13be0 20 20 20 20 20 2f 2f 2f 20 41 20 73 61 76 65 70       /// A savep
13bf0 6f 69 6e 74 20 77 69 6c 6c 20 62 65 20 63 72 65  oint will be cre
13c00 61 74 65 64 2c 20 72 65 6c 65 61 73 65 64 2c 20  ated, released, 
13c10 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  or rolled back. 
13c20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
13c30 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
13c40 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
13c50 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70  e name of the op
13c60 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d  eration (BEGIN,.
13c70 0a 20 20 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41  .      /// RELEA
13c80 53 45 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  SE, or ROLLBACK)
13c90 20 61 6e 64 20 74 68 65 20 73 61 76 65 70 6f 69   and the savepoi
13ca0 6e 74 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  nt name...      
13cb0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
13cc0 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e 74 20        Savepoint 
13cd0 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 32,....      /
13ce0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
13cf0 20 20 20 20 2f 2f 2f 20 41 20 72 65 63 75 72 73      /// A recurs
13d00 69 76 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62  ive query will b
13d10 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65  e executed.  The
13d20 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
13d30 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
13d40 20 20 2f 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75    /// are two nu
13d50 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  ll values...    
13d60 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
13d70 0d 0a 20 20 20 20 20 20 52 65 63 75 72 73 69 76  ..      Recursiv
13d80 65 20 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20  e = 33..  }.... 
13d90 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
13da0 20 20 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e    /// The return
13db0 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 63 75   code for the cu
13dc0 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20  rrent call into 
13dd0 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d  the authorizer..
13de0 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
13df0 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
13e00 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
13e10 72 52 65 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b  rReturnCode..  {
13e20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
13e30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
13e40 20 54 68 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c   The action will
13e50 20 62 65 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20   be allowed...  
13e60 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
13e70 79 3e 0d 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30  y>..      Ok = 0
13e80 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
13e90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
13ea0 2f 2f 2f 20 54 68 65 20 6f 76 65 72 61 6c 6c 20  /// The overall 
13eb0 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64  action will be d
13ec0 69 73 61 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e  isallowed and an
13ed0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77   error message w
13ee0 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  ill be..      //
13ef0 2f 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  / returned from 
13f00 74 68 65 20 71 75 65 72 79 20 70 72 65 70 61 72  the query prepar
13f10 61 74 69 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20  ation method... 
13f20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
13f30 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 20  ry>..      Deny 
13f40 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
13f50 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13f60 20 20 20 2f 2f 2f 20 54 68 65 20 73 70 65 63 69     /// The speci
13f70 66 69 63 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20  fic action will 
13f80 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68  be disallowed; h
13f90 6f 77 65 76 65 72 2c 20 74 68 65 20 6f 76 65 72  owever, the over
13fa0 61 6c 6c 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20  all action..    
13fb0 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69    /// will conti
13fc0 6e 75 65 2e 20 20 54 68 65 20 65 78 61 63 74 20  nue.  The exact 
13fd0 65 66 66 65 63 74 73 20 6f 66 20 74 68 69 73 20  effects of this 
13fe0 72 65 74 75 72 6e 20 63 6f 64 65 20 76 61 72 79  return code vary
13ff0 20 64 65 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20   depending..    
14000 20 20 2f 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65    /// on the spe
14010 63 69 66 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c  cific action, pl
14020 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 68  ease refer to th
14030 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
14040 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
14050 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
14060 6f 72 20 66 75 74 68 65 72 20 64 65 74 61 69 6c  or futher detail
14070 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
14080 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14090 49 67 6e 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d  Ignore = 2..  }.
140a0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
140b0 79 3e 0d 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20  y>..  /// Class 
140c0 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  used internally 
140d0 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
140e0 20 64 61 74 61 74 79 70 65 20 6f 66 20 61 20 63   datatype of a c
140f0 6f 6c 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c  olumn in a resul
14100 74 73 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  tset..  /// </su
14110 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
14120 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
14130 53 51 4c 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d  SQLiteType..  {.
14140 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
14150 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
14160 44 62 54 79 70 65 20 6f 66 20 74 68 65 20 63 6f  DbType of the co
14170 6c 75 6d 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e  lumn, or DbType.
14180 4f 62 6a 65 63 74 20 69 66 20 69 74 20 63 61 6e  Object if it can
14190 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
141a0 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  d..    /// </sum
141b0 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
141c0 6e 61 6c 20 44 62 54 79 70 65 20 54 79 70 65 3b  nal DbType Type;
141d0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
141e0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
141f0 20 61 66 66 69 6e 69 74 79 20 6f 66 20 61 20 63   affinity of a c
14200 6f 6c 75 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20  olumn, used for 
14210 65 78 70 72 65 73 73 69 6f 6e 73 20 6f 72 20 77  expressions or w
14220 68 65 6e 20 54 79 70 65 20 69 73 20 44 62 54 79  hen Type is DbTy
14230 70 65 2e 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe.Object..    /
14240 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
14250 20 20 20 69 6e 74 65 72 6e 61 6c 20 54 79 70 65     internal Type
14260 41 66 66 69 6e 69 74 79 20 41 66 66 69 6e 69 74  Affinity Affinit
14270 79 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  y;....    //////
14280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
142d0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
142e0 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61  /// Constructs a
142f0 20 64 65 66 61 75 6c 74 20 69 6e 73 74 61 6e 63   default instanc
14300 65 20 6f 66 20 74 68 69 73 20 74 79 70 65 2e 0d  e of this type..
14310 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14320 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
14330 53 51 4c 69 74 65 54 79 70 65 28 29 0d 0a 20 20  SQLiteType()..  
14340 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 20 64 6f    {..      // do
14350 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d   nothing...    }
14360 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
14370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ///....    /// <
143c0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
143d0 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
143e0 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
143f0 20 74 79 70 65 20 77 69 74 68 20 74 68 65 20 73   type with the s
14400 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 20 76  pecified field v
14410 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  alues...    /// 
14420 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14430 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
14440 22 61 66 66 69 6e 69 74 79 22 3e 0d 0a 20 20 20  "affinity">..   
14450 20 2f 2f 2f 20 54 68 65 20 74 79 70 65 20 61 66   /// The type af
14460 66 69 6e 69 74 79 20 74 6f 20 75 73 65 20 66 6f  finity to use fo
14470 72 20 74 68 65 20 6e 65 77 20 69 6e 73 74 61 6e  r the new instan
14480 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ce...    /// </p
14490 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
144a0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65  param name="type
144b0 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
144c0 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74 6f  database type to
144d0 20 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77   use for the new
144e0 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
144f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
14500 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 54    public SQLiteT
14510 79 70 65 28 0d 0a 20 20 20 20 20 20 54 79 70 65  ype(..      Type
14520 41 66 66 69 6e 69 74 79 20 61 66 66 69 6e 69 74  Affinity affinit
14530 79 2c 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  y,..      DbType
14540 20 74 79 70 65 0d 0a 20 20 20 20 20 20 29 0d 0a   type..      )..
14550 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a        : this()..
14560 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 68 69      {..      thi
14570 73 2e 41 66 66 69 6e 69 74 79 20 3d 20 61 66 66  s.Affinity = aff
14580 69 6e 69 74 79 3b 0d 0a 20 20 20 20 20 20 74 68  inity;..      th
14590 69 73 2e 54 79 70 65 20 3d 20 74 79 70 65 3b 0d  is.Type = type;.
145a0 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20  .    }..  }.... 
145b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14600 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61  ..  internal sea
14610 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
14620 44 62 54 79 70 65 4d 61 70 0d 0a 20 20 20 20 20  DbTypeMap..     
14630 20 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74   : Dictionary<st
14640 72 69 6e 67 2c 20 53 51 4c 69 74 65 44 62 54 79  ring, SQLiteDbTy
14650 70 65 4d 61 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d  peMapping>..  {.
14660 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
14670 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20  rivate Data..   
14680 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
14690 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c 20 53 51  onary<DbType, SQ
146a0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
146b0 67 3e 20 72 65 76 65 72 73 65 3b 0d 0a 20 20 20  g> reverse;..   
146c0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
146d0 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
146e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14720 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
14730 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
14740 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 70 75 62  ctors..      pub
14750 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  lic SQLiteDbType
14760 4d 61 70 28 29 0d 0a 20 20 20 20 20 20 20 20 20  Map()..         
14770 20 3a 20 62 61 73 65 28 6e 65 77 20 54 79 70 65   : base(new Type
14780 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72  NameStringCompar
14790 65 72 28 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  er())..      {..
147a0 20 20 20 20 20 20 20 20 20 20 72 65 76 65 72 73            revers
147b0 65 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61  e = new Dictiona
147c0 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74  ry<DbType, SQLit
147d0 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 28  eDbTypeMapping>(
147e0 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  );..      }.... 
147f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
14840 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 53  ..      public S
14850 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 0d  QLiteDbTypeMap(.
14860 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e 75 6d  .          IEnum
14870 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 62 54  erable<SQLiteDbT
14880 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c  ypeMapping> coll
14890 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ection..        
148a0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a    )..          :
148b0 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 7b   this()..      {
148c0 0d 0a 20 20 20 20 20 20 20 20 20 20 41 64 64 28  ..          Add(
148d0 63 6f 6c 6c 65 63 74 69 6f 6e 29 3b 0d 0a 20 20  collection);..  
148e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e      }..      #en
148f0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
14900 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14950 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74      #region Syst
14960 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47  em.Collections.G
14970 65 6e 65 72 69 63 2e 44 69 63 74 69 6f 6e 61 72  eneric.Dictionar
14980 79 20 22 4f 76 65 72 72 69 64 65 73 22 0d 0a 20  y "Overrides".. 
14990 20 20 20 20 20 70 75 62 6c 69 63 20 6e 65 77 20       public new 
149a0 69 6e 74 20 43 6c 65 61 72 28 29 0d 0a 20 20 20  int Clear()..   
149b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
149c0 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d  int result = 0;.
149d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
149e0 28 72 65 76 65 72 73 65 20 21 3d 20 6e 75 6c 6c  (reverse != null
149f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  )..          {..
14a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
14a10 73 75 6c 74 20 2b 3d 20 72 65 76 65 72 73 65 2e  sult += reverse.
14a20 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  Count;..        
14a30 20 20 20 20 20 20 72 65 76 65 72 73 65 2e 43 6c        reverse.Cl
14a40 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ear();..        
14a50 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
14a60 20 72 65 73 75 6c 74 20 2b 3d 20 62 61 73 65 2e   result += base.
14a70 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20  Count;..        
14a80 20 20 62 61 73 65 2e 43 6c 65 61 72 28 29 3b 0d    base.Clear();.
14a90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
14aa0 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
14ab0 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
14ac0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
14ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14b20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74     #region SQLit
14b30 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 48  eDbTypeMapping H
14b40 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
14b50 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
14b60 20 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20   Add(..         
14b70 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c   IEnumerable<SQL
14b80 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
14b90 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20  > collection..  
14ba0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
14bb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
14bc0 20 28 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20   (collection == 
14bd0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
14be0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
14bf0 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
14c00 74 69 6f 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e  tion("collection
14c10 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
14c20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65   foreach (SQLite
14c30 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74  DbTypeMapping it
14c40 65 6d 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e  em in collection
14c50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
14c60 20 41 64 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20   Add(item);..   
14c70 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
14c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cc0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14cd0 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64   public void Add
14ce0 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70  (SQLiteDbTypeMap
14cf0 70 69 6e 67 20 69 74 65 6d 29 0d 0a 20 20 20 20  ping item)..    
14d00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69    {..          i
14d10 66 20 28 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29  f (item == null)
14d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14d30 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
14d40 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28  ntNullException(
14d50 22 69 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20  "item");....    
14d60 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 74        if (item.t
14d70 79 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  ypeName == null)
14d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14d90 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
14da0 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65  ntException("ite
14db0 6d 20 74 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e  m type name cann
14dc0 6f 74 20 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d  ot be null");...
14dd0 0a 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e  .          base.
14de0 41 64 64 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d  Add(item.typeNam
14df0 65 2c 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20  e, item);....   
14e00 20 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e         if (item.
14e10 70 72 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20  primary)..      
14e20 20 20 20 20 20 20 20 20 72 65 76 65 72 73 65 2e          reverse.
14e30 41 64 64 28 69 74 65 6d 2e 64 61 74 61 54 79 70  Add(item.dataTyp
14e40 65 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20  e, item);..     
14e50 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
14e60 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
14e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14ec0 20 23 72 65 67 69 6f 6e 20 44 62 54 79 70 65 20   #region DbType 
14ed0 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a  Helper Methods..
14ee0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
14ef0 6c 20 43 6f 6e 74 61 69 6e 73 4b 65 79 28 44 62  l ContainsKey(Db
14f00 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20 20 20  Type key)..     
14f10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66   {..          if
14f20 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c   (reverse == nul
14f30 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14f40 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
14f50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
14f60 75 72 6e 20 72 65 76 65 72 73 65 2e 43 6f 6e 74  urn reverse.Cont
14f70 61 69 6e 73 4b 65 79 28 6b 65 79 29 3b 0d 0a 20  ainsKey(key);.. 
14f80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
14f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
14fe0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54     public bool T
14ff0 72 79 47 65 74 56 61 6c 75 65 28 44 62 54 79 70  ryGetValue(DbTyp
15000 65 20 6b 65 79 2c 20 6f 75 74 20 53 51 4c 69 74  e key, out SQLit
15010 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
15020 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  alue)..      {..
15030 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
15040 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
15050 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15060 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
15070 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
15080 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
15090 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
150a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
150b0 72 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e 54  return reverse.T
150c0 72 79 47 65 74 56 61 6c 75 65 28 6b 65 79 2c 20  ryGetValue(key, 
150d0 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  out value);..   
150e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
150f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15130 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
15140 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 6d   public bool Rem
15150 6f 76 65 28 44 62 54 79 70 65 20 6b 65 79 29 0d  ove(DbType key).
15160 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
15170 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
15180 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
15190 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
151a0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
151b0 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73     return revers
151c0 65 2e 52 65 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a  e.Remove(key);..
151d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 23        }..      #
151e0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a  endregion..  }..
151f0 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..  ////////////
15200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15240 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  /....  internal 
15250 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
15260 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
15270 0d 0a 20 20 7b 0d 0a 20 20 20 20 69 6e 74 65 72  ..  {..    inter
15280 6e 61 6c 20 53 51 4c 69 74 65 44 62 54 79 70 65  nal SQLiteDbType
15290 4d 61 70 70 69 6e 67 28 0d 0a 20 20 20 20 20 20  Mapping(..      
152a0 20 20 73 74 72 69 6e 67 20 6e 65 77 54 79 70 65    string newType
152b0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 44  Name,..        D
152c0 62 54 79 70 65 20 6e 65 77 44 61 74 61 54 79 70  bType newDataTyp
152d0 65 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  e,..        bool
152e0 20 6e 65 77 50 72 69 6d 61 72 79 0d 0a 20 20 20   newPrimary..   
152f0 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
15300 20 20 20 20 20 74 79 70 65 4e 61 6d 65 20 3d 20       typeName = 
15310 6e 65 77 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  newTypeName;..  
15320 20 20 20 20 64 61 74 61 54 79 70 65 20 3d 20 6e      dataType = n
15330 65 77 44 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  ewDataType;..   
15340 20 20 20 70 72 69 6d 61 72 79 20 3d 20 6e 65 77     primary = new
15350 50 72 69 6d 61 72 79 3b 0d 0a 20 20 20 20 7d 0d  Primary;..    }.
15360 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
15370 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b  string typeName;
15380 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
15390 62 54 79 70 65 20 64 61 74 61 54 79 70 65 3b 0d  bType dataType;.
153a0 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f  .    internal bo
153b0 6f 6c 20 70 72 69 6d 61 72 79 3b 0d 0a 20 20 7d  ol primary;..  }
153c0 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73  ....  internal s
153d0 65 61 6c 65 64 20 63 6c 61 73 73 20 54 79 70 65  ealed class Type
153e0 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 61 72  NameStringCompar
153f0 65 72 20 3a 20 49 45 71 75 61 6c 69 74 79 43 6f  er : IEqualityCo
15400 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 0d 0a  mparer<string>..
15410 20 20 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e    {..    #region
15420 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72   IEqualityCompar
15430 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65  er<string> Membe
15440 72 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  rs..    public b
15450 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20  ool Equals(..   
15460 20 20 20 73 74 72 69 6e 67 20 6c 65 66 74 2c 0d     string left,.
15470 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 72 69  .      string ri
15480 67 68 74 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20  ght..      )..  
15490 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
154a0 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  n String.Equals(
154b0 6c 65 66 74 2c 20 72 69 67 68 74 2c 20 53 74 72  left, right, Str
154c0 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
154d0 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
154e0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
154f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15540 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65     public int Ge
15550 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20  tHashCode(..    
15560 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a    string value..
15570 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
15580 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
15590 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 6e 6c  // NOTE: The onl
155a0 79 20 74 68 69 6e 67 20 74 68 61 74 20 77 65 20  y thing that we 
155b0 6d 75 73 74 20 67 75 61 72 61 6e 74 65 65 20 68  must guarantee h
155c0 65 72 65 2c 20 61 63 63 6f 72 64 69 6e 67 0d 0a  ere, according..
155d0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
155e0 6f 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d  o the MSDN docum
155f0 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 49 45 71  entation for IEq
15600 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 2c 20  ualityComparer, 
15610 69 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  is..      //    
15620 20 20 20 74 68 61 74 20 66 6f 72 20 74 77 6f 20     that for two 
15630 67 69 76 65 6e 20 73 74 72 69 6e 67 73 2c 20 69  given strings, i
15640 66 20 45 71 75 61 6c 73 20 72 65 74 75 72 6e 20  f Equals return 
15650 74 72 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20  true then..     
15660 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 74 77   //       the tw
15670 6f 20 73 74 72 69 6e 67 73 20 6d 75 73 74 20 68  o strings must h
15680 61 73 68 20 74 6f 20 74 68 65 20 73 61 6d 65 20  ash to the same 
15690 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
156a0 0d 0a 20 20 20 20 20 20 69 66 20 28 76 61 6c 75  ..      if (valu
156b0 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 23 69 66 20  e != null)..#if 
156c0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
156d0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
156e0 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
156f0 2e 54 6f 4c 6f 77 65 72 49 6e 76 61 72 69 61 6e  .ToLowerInvarian
15700 74 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65 28  t().GetHashCode(
15710 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  );..#else..     
15720 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
15730 54 6f 4c 6f 77 65 72 28 29 2e 47 65 74 48 61 73  ToLower().GetHas
15740 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6e 64 69 66  hCode();..#endif
15750 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20  ..      else..  
15760 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
15770 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
15780 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
15790 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
157a0 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a  region..  }..}..